From 54fe7a5948e7bc31d491928c56e7a3003782149d Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Mon, 10 Aug 2026 22:18:12 +0000 Subject: [PATCH 01/13] Add extensible Slop Cop Dev Note checks --- .github/workflows/slop-cop-report.yml | 279 +++ .github/workflows/slop-cop.yml | 403 ++++ AGENTS.md | 16 +- dev-tools/README.md | 9 + dev-tools/slop-cop/AGENTS.md | 17 + dev-tools/slop-cop/README.md | 63 + .../slop-cop/benchmarks/dev-note-history.toml | 53 + dev-tools/slop-cop/docs/ci.md | 92 + dev-tools/slop-cop/docs/rules.md | 140 ++ dev-tools/slop-cop/docs/scoring.md | 114 + dev-tools/slop-cop/pyproject.toml | 48 + dev-tools/slop-cop/slop-cop.toml | 433 ++++ dev-tools/slop-cop/src/slop_cop/__init__.py | 10 + dev-tools/slop-cop/src/slop_cop/benchmarks.py | 148 ++ dev-tools/slop-cop/src/slop_cop/cli.py | 511 +++++ dev-tools/slop-cop/src/slop_cop/config.py | 378 ++++ dev-tools/slop-cop/src/slop_cop/document.py | 642 ++++++ dev-tools/slop-cop/src/slop_cop/engine.py | 362 ++++ dev-tools/slop-cop/src/slop_cop/findings.py | 242 +++ dev-tools/slop-cop/src/slop_cop/report.py | 623 ++++++ .../slop-cop/src/slop_cop/rules/__init__.py | 23 + dev-tools/slop-cop/src/slop_cop/rules/api.py | 220 ++ .../src/slop_cop/rules/builtins/__init__.py | 20 + .../src/slop_cop/rules/builtins/_helpers.py | 51 + .../src/slop_cop/rules/builtins/artifacts.py | 49 + .../slop_cop/rules/builtins/attribution.py | 23 + .../src/slop_cop/rules/builtins/endings.py | 23 + .../src/slop_cop/rules/builtins/repetition.py | 224 ++ .../src/slop_cop/rules/builtins/rhetoric.py | 103 + .../src/slop_cop/rules/builtins/structure.py | 106 + .../src/slop_cop/rules/builtins/vocabulary.py | 25 + .../src/slop_cop/rules/custom/__init__.py | 5 + .../src/slop_cop/rules/declarative.py | 102 + .../slop-cop/src/slop_cop/rules/registry.py | 157 ++ dev-tools/slop-cop/src/slop_cop/runtime.py | 199 ++ dev-tools/slop-cop/src/slop_cop/scoring.py | 164 ++ .../tests/fixtures/markdown/all-contexts.md | 27 + dev-tools/slop-cop/tests/golden/.gitkeep | 1 + dev-tools/slop-cop/tests/rule_cases.toml | 257 +++ dev-tools/slop-cop/tests/test_benchmarks.py | 62 + dev-tools/slop-cop/tests/test_cli.py | 173 ++ dev-tools/slop-cop/tests/test_config.py | 218 ++ dev-tools/slop-cop/tests/test_document.py | 124 ++ dev-tools/slop-cop/tests/test_engine.py | 64 + dev-tools/slop-cop/tests/test_report.py | 175 ++ .../slop-cop/tests/test_rule_contract.py | 37 + .../slop-cop/tests/test_rule_extension.py | 309 +++ dev-tools/slop-cop/tests/test_rules.py | 86 + dev-tools/slop-cop/tests/test_runtime.py | 213 ++ dev-tools/slop-cop/tests/test_scoring.py | 74 + dev-tools/slop-cop/uv.lock | 589 ++++++ plans/slop-cop.md | 1855 +++++++++++++++++ 52 files changed, 10335 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/slop-cop-report.yml create mode 100644 .github/workflows/slop-cop.yml create mode 100644 dev-tools/README.md create mode 100644 dev-tools/slop-cop/AGENTS.md create mode 100644 dev-tools/slop-cop/README.md create mode 100644 dev-tools/slop-cop/benchmarks/dev-note-history.toml create mode 100644 dev-tools/slop-cop/docs/ci.md create mode 100644 dev-tools/slop-cop/docs/rules.md create mode 100644 dev-tools/slop-cop/docs/scoring.md create mode 100644 dev-tools/slop-cop/pyproject.toml create mode 100644 dev-tools/slop-cop/slop-cop.toml create mode 100644 dev-tools/slop-cop/src/slop_cop/__init__.py create mode 100644 dev-tools/slop-cop/src/slop_cop/benchmarks.py create mode 100644 dev-tools/slop-cop/src/slop_cop/cli.py create mode 100644 dev-tools/slop-cop/src/slop_cop/config.py create mode 100644 dev-tools/slop-cop/src/slop_cop/document.py create mode 100644 dev-tools/slop-cop/src/slop_cop/engine.py create mode 100644 dev-tools/slop-cop/src/slop_cop/findings.py create mode 100644 dev-tools/slop-cop/src/slop_cop/report.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/__init__.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/api.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/__init__.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/artifacts.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/endings.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/builtins/vocabulary.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/custom/__init__.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/declarative.py create mode 100644 dev-tools/slop-cop/src/slop_cop/rules/registry.py create mode 100644 dev-tools/slop-cop/src/slop_cop/runtime.py create mode 100644 dev-tools/slop-cop/src/slop_cop/scoring.py create mode 100644 dev-tools/slop-cop/tests/fixtures/markdown/all-contexts.md create mode 100644 dev-tools/slop-cop/tests/golden/.gitkeep create mode 100644 dev-tools/slop-cop/tests/rule_cases.toml create mode 100644 dev-tools/slop-cop/tests/test_benchmarks.py create mode 100644 dev-tools/slop-cop/tests/test_cli.py create mode 100644 dev-tools/slop-cop/tests/test_config.py create mode 100644 dev-tools/slop-cop/tests/test_document.py create mode 100644 dev-tools/slop-cop/tests/test_engine.py create mode 100644 dev-tools/slop-cop/tests/test_report.py create mode 100644 dev-tools/slop-cop/tests/test_rule_contract.py create mode 100644 dev-tools/slop-cop/tests/test_rule_extension.py create mode 100644 dev-tools/slop-cop/tests/test_rules.py create mode 100644 dev-tools/slop-cop/tests/test_runtime.py create mode 100644 dev-tools/slop-cop/tests/test_scoring.py create mode 100644 dev-tools/slop-cop/uv.lock create mode 100644 plans/slop-cop.md diff --git a/.github/workflows/slop-cop-report.yml b/.github/workflows/slop-cop-report.yml new file mode 100644 index 00000000..11ca9978 --- /dev/null +++ b/.github/workflows/slop-cop-report.yml @@ -0,0 +1,279 @@ +name: Slop Cop report + +"on": + workflow_run: + workflows: [Slop Cop] + types: [completed] + +permissions: + actions: read + contents: read + pull-requests: write + issues: write + +concurrency: + group: slop-cop-report-${{ github.event.workflow_run.head_sha }} + cancel-in-progress: true + +jobs: + comment: + name: Publish Slop Cop report + if: >- + github.event.workflow_run.event == 'pull_request' || + github.event.workflow_run.event == 'pull_request_review' + runs-on: ubuntu-latest + steps: + - name: Resolve trusted artifact + id: artifact + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const run = context.payload.workflow_run; + const { data } = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: run.id, + per_page: 100, + }); + const matches = data.artifacts.flatMap((artifact) => { + const match = artifact.name.match(/^slop-cop-pr-([1-9][0-9]*)-([0-9a-f]{40})$/); + return match ? [{artifact, number: Number(match[1]), head: match[2]}] : []; + }); + if (matches.length !== 1) { + core.setFailed(`Expected one Slop Cop PR artifact, found ${matches.length}.`); + return; + } + const selected = matches[0]; + if (selected.artifact.size_in_bytes > 11 * 1024 * 1024) { + core.setFailed('Slop Cop artifact exceeds its size limit.'); + return; + } + const { data: pullRequest } = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: selected.number, + }); + if (run.pull_requests.length !== 1 || run.pull_requests[0].number !== selected.number) { + core.setFailed('Artifact PR is not the workflow run pull request.'); + return; + } + if (selected.head !== pullRequest.head.sha) { + core.notice('Ignoring a stale Slop Cop run.'); + core.setOutput('stale', 'true'); + return; + } + core.setOutput('name', selected.artifact.name); + core.setOutput('id', String(selected.artifact.id)); + core.setOutput('number', String(selected.number)); + core.setOutput('head_sha', pullRequest.head.sha); + core.setOutput('stale', 'false'); + + - name: Download report artifact + if: steps.artifact.outputs.stale == 'false' + uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: ${{ steps.artifact.outputs.name }} + path: report + repository: ${{ github.repository }} + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ github.token }} + + - name: Validate report and update sticky comment + if: steps.artifact.outputs.stale == 'false' + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + env: + ARTIFACT_ID: ${{ steps.artifact.outputs.id }} + HEAD_SHA: ${{ steps.artifact.outputs.head_sha }} + PR_NUMBER: ${{ steps.artifact.outputs.number }} + REPORT_JSON: report/report.json + with: + script: | + const fs = require('fs'); + const raw = fs.readFileSync(process.env.REPORT_JSON, 'utf8'); + if (Buffer.byteLength(raw, 'utf8') > 5 * 1024 * 1024) { + core.setFailed('report.json exceeds its size limit.'); + return; + } + const report = JSON.parse(raw); + const number = Number(process.env.PR_NUMBER); + const run = context.payload.workflow_run; + const headSha = process.env.HEAD_SHA; + const { data: currentPullRequest } = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: number, + }); + if (currentPullRequest.head.sha !== headSha) { + core.notice('Ignoring a Slop Cop report superseded by a newer revision.'); + return; + } + const controls = /[\u0000-\u001f\u007f-\u009f]/u; + const plainObject = (value, label) => { + if (value === null || typeof value !== 'object' || Array.isArray(value)) { + throw new Error(`Invalid ${label}.`); + } + return value; + }; + const text = (value, label, limit = 1000, pattern = null) => { + if (typeof value !== 'string' || value.length < 1 || value.length > limit || + controls.test(value) || (pattern && !pattern.test(value))) { + throw new Error(`Invalid ${label}.`); + } + return value; + }; + const integer = (value, label, minimum, maximum) => { + if (!Number.isInteger(value) || value < minimum || value > maximum) { + throw new Error(`Invalid ${label}.`); + } + return value; + }; + const optionalScore = (value, label) => value === null + ? null : integer(value, label, 0, 100); + const bool = (value, label) => { + if (typeof value !== 'boolean') throw new Error(`Invalid ${label}.`); + return value; + }; + const markdown = (value, label, limit = 1000) => text(value, label, limit) + .replaceAll('\\', '\\\\').replaceAll('`', '\\`') + .replaceAll('*', '\\*').replaceAll('_', '\\_') + .replaceAll('[', '\\[').replaceAll(']', '\\]') + .replaceAll('(', '\\(').replaceAll(')', '\\)') + .replaceAll('<', '<').replaceAll('>', '>') + .replaceAll('|', '\\|').replaceAll('@', '@'); + plainObject(report, 'report'); + if (report.schema_version !== 1 || report.pull_request_number !== number || + report.head_sha !== headSha) throw new Error('Report identity is invalid.'); + text(report.head_sha, 'head SHA', 40, /^[0-9a-f]{40}$/); + text(report.base_sha, 'base SHA', 40, /^[0-9a-f]{40}$/); + if (!['complete', 'incomplete', 'error', 'not_applicable'].includes(report.analysis_state) || + !['pass', 'fail', 'overridden', 'not_applicable'].includes(report.decision)) { + throw new Error('Report state is invalid.'); + } + integer(report.threshold, 'threshold', 0, 100); + optionalScore(report.score, 'score'); + if (!Array.isArray(report.files) || report.files.length > 100 || + !Array.isArray(report.rule_errors) || report.rule_errors.length > 20000 || + !Array.isArray(report.external_audits) || report.external_audits.length > 20000) { + throw new Error('Report collection is invalid.'); + } + let findingCount = 0; + for (const file of report.files) { + plainObject(file, 'file result'); + text(file.path, 'file path', 4096, + /^docs\/dev-notes\/posts\/[A-Za-z0-9][A-Za-z0-9._/-]*\.md$/); + if (file.path.includes('..') || file.path.includes('//')) throw new Error('Invalid path.'); + optionalScore(file.score, 'file score'); + if (file.base !== null) { + plainObject(file.base, 'base comparison'); + optionalScore(file.base.score, 'base score'); + } + if (!Array.isArray(file.findings)) throw new Error('Report findings are invalid.'); + findingCount += file.findings.length; + for (const finding of file.findings) { + plainObject(finding, 'finding'); + text(finding.rule_id, 'rule ID', 128, + /^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)+$/); + if (finding.line !== null) integer(finding.line, 'finding line', 1, 10000000); + if (finding.column !== null) integer(finding.column, 'finding column', 1, 10000000); + bool(finding.suppressed, 'suppressed state'); + bool(finding.blocking, 'blocking state'); + bool(finding.chargeable, 'chargeable state'); + } + } + if (findingCount > 20000) throw new Error('Report has too many findings.'); + if (report.decision === 'not_applicable') { + if (report.analysis_state !== 'not_applicable' || report.score !== null || + report.files.length !== 0) { + throw new Error('Not-applicable report fields disagree.'); + } + } else if (report.files.length === 0 || report.score === null) { + throw new Error('Applicable report is missing scored files.'); + } + + if ((report.decision === 'overridden') !== (report.override !== null)) { + throw new Error('Override decision and metadata disagree.'); + } + if (report.override !== null) { + const override = plainObject(report.override, 'override'); + const reviewer = text(override.reviewer, 'override reviewer', 256, + /^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/); + const reason = text(override.reason, 'override reason', 1000); + const reviewId = integer(override.review_id, 'override review ID', 1, Number.MAX_SAFE_INTEGER); + const reviewUrl = text(override.review_url, 'override review URL', 2048, + /^https:\/\/github\.com\//); + if (override.head_sha !== headSha) throw new Error('Override is stale.'); + const { data: review } = await github.rest.pulls.getReview({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: number, + review_id: reviewId, + }); + const marker = String(review.body || '').match(/^Slop-Cop-Override:\s*(\S.*)$/mi); + if (review.state !== 'APPROVED' || review.commit_id !== headSha || + review.user?.login !== reviewer || review.html_url !== reviewUrl || + !marker || marker[1].trim() !== reason) { + throw new Error('Override review is invalid or stale.'); + } + const { data: permission } = await github.rest.repos.getCollaboratorPermissionLevel({ + owner: context.repo.owner, + repo: context.repo.repo, + username: reviewer, + }); + if (!['write', 'maintain', 'admin'].includes(permission.permission)) { + throw new Error('Override reviewer is not currently authorized.'); + } + } + + const marker = ''; + const shortSha = headSha.slice(0, 7); + const displayScore = (value) => value === null ? '—' : String(value); + let body; + if (report.decision === 'not_applicable') { + body = `${marker}\n### Slop Cop\n\nNo Dev Note required analysis for \`${shortSha}\`.`; + } else { + const rows = report.files.map((file) => + `| ${markdown(file.path, 'file path', 4096)} | ${displayScore(file.score)} | ` + + `${displayScore(file.base?.score ?? null)} |`); + const findings = report.files.flatMap((file) => (file.findings || []) + .filter((finding) => !finding.suppressed && (finding.blocking || finding.chargeable)) + .map((finding) => ({file, finding}))).slice(0, 5); + const top = findings.length + ? '\n\nTop findings:\n' + findings.map(({file, finding}) => + `- \`${markdown(finding.rule_id, 'rule ID', 128)}\` at ` + + `${markdown(file.path, 'file path', 4096)}:${String(finding.line ?? 1)}`) + .join('\n') + : ''; + const override = report.override + ? `\n\nOverride by **${markdown(report.override.reviewer, 'reviewer', 256)}**: ` + + markdown(report.override.reason, 'override reason') + : ''; + const artifactUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${run.id}/artifacts/${process.env.ARTIFACT_ID}`; + body = `${marker}\n### Slop Cop: ${report.decision.toUpperCase()}\n\n` + + `Score **${displayScore(report.score)}**, threshold **${String(report.threshold)}**.\n\n` + + '| Dev Note | Head | Base |\n| --- | ---: | ---: |\n' + rows.join('\n') + top + override + + `\n\n[Download the HTML report artifact](${artifactUrl}). Built from \`${shortSha}\`; retained for 14 days.`; + } + if (body.length > 60000) throw new Error('Comment exceeds its size limit.'); + const comments = await github.paginate(github.rest.issues.listComments, { + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: number, + per_page: 100, + }); + const existing = comments.find((comment) => + comment.user?.type === 'Bot' && comment.body?.includes(marker)); + if (existing) { + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: existing.id, + body, + }); + } else if (report.decision !== 'not_applicable') { + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: number, + body, + }); + } diff --git a/.github/workflows/slop-cop.yml b/.github/workflows/slop-cop.yml new file mode 100644 index 00000000..e9027c3c --- /dev/null +++ b/.github/workflows/slop-cop.yml @@ -0,0 +1,403 @@ +name: Slop Cop + +"on": + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + pull_request_review: + types: [submitted, dismissed] + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + issues: read + +concurrency: + group: slop-cop-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + analyze: + name: Slop Cop / Dev Notes + runs-on: ubuntu-latest + steps: + - name: Resolve trusted inputs + id: inputs + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const fs = require('fs'); + const isPullRequest = ['pull_request', 'pull_request_review'].includes(context.eventName); + if (!isPullRequest) { + const metadata = { + pull_request_number: null, + base_sha: context.sha, + head_sha: context.sha, + head_repository: `${context.repo.owner}/${context.repo.repo}`, + changed_notes: [], + tool_changed: false, + override: null, + }; + fs.writeFileSync(`${process.env.RUNNER_TEMP}/slop-cop-inputs.json`, JSON.stringify(metadata)); + core.setOutput('is_pull_request', 'false'); + core.setOutput('base_sha', context.sha); + core.setOutput('head_sha', context.sha); + return; + } + + const pullRequest = context.payload.pull_request; + const files = await github.paginate(github.rest.pulls.listFiles, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pullRequest.number, + per_page: 100, + }); + const changedNotes = files + .filter(({ status, filename }) => + status !== 'removed' && + filename.startsWith('docs/dev-notes/posts/') && + filename.endsWith('.md')) + .map(({ filename, previous_filename }) => ({ + path: filename, + base_path: previous_filename || filename, + })) + .sort((left, right) => left.path.localeCompare(right.path)); + const toolChanged = files.some(({ filename }) => + filename.startsWith('dev-tools/slop-cop/') || + filename === '.github/workflows/slop-cop.yml' || + filename === '.github/workflows/slop-cop-report.yml'); + + const reviews = await github.paginate(github.rest.pulls.listReviews, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pullRequest.number, + per_page: 100, + }); + const candidates = reviews + .filter((review) => review.state === 'APPROVED' && review.commit_id === pullRequest.head.sha) + .sort((left, right) => String(right.submitted_at).localeCompare(String(left.submitted_at))); + let override = null; + for (const review of candidates) { + const match = String(review.body || '').match(/^Slop-Cop-Override:\s*(\S.*)$/mi); + if (!match) continue; + const reason = match[1].trim(); + if (!reason || reason.length > 1000 || /[\u0000-\u001f\u007f-\u009f]/u.test(reason)) { + continue; + } + const permission = await github.rest.repos.getCollaboratorPermissionLevel({ + owner: context.repo.owner, + repo: context.repo.repo, + username: review.user.login, + }); + if (!['write', 'maintain', 'admin'].includes(permission.data.permission)) continue; + override = { + reviewer: review.user.login, + reason, + review_id: review.id, + review_url: review.html_url, + head_sha: pullRequest.head.sha, + }; + break; + } + const metadata = { + pull_request_number: pullRequest.number, + base_sha: pullRequest.base.sha, + head_sha: pullRequest.head.sha, + head_repository: pullRequest.head.repo.full_name, + changed_notes: changedNotes, + tool_changed: toolChanged, + override, + }; + fs.writeFileSync(`${process.env.RUNNER_TEMP}/slop-cop-inputs.json`, JSON.stringify(metadata)); + core.setOutput('is_pull_request', 'true'); + core.setOutput('number', String(pullRequest.number)); + core.setOutput('base_sha', pullRequest.base.sha); + core.setOutput('head_sha', pullRequest.head.sha); + core.setOutput('head_repository', pullRequest.head.repo.full_name); + core.setOutput('tool_changed', String(toolChanged)); + + - name: Check out trusted analyzer + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: ${{ steps.inputs.outputs.base_sha }} + path: trusted + persist-credentials: false + + - name: Check out candidate revision + if: steps.inputs.outputs.is_pull_request == 'true' + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + repository: ${{ steps.inputs.outputs.head_repository }} + ref: ${{ steps.inputs.outputs.head_sha }} + path: candidate + persist-credentials: false + fetch-depth: 0 + + - name: Set up uv and Python + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + version: "0.11.31" + python-version: "3.12" + + - name: Select analyzer and content roots + id: roots + shell: bash + run: | + if [[ "${{ steps.inputs.outputs.is_pull_request }}" == "true" ]]; then + echo "content=$GITHUB_WORKSPACE/candidate" >> "$GITHUB_OUTPUT" + if [[ -f "$GITHUB_WORKSPACE/trusted/dev-tools/slop-cop/pyproject.toml" ]]; then + echo "analyzer=$GITHUB_WORKSPACE/trusted" >> "$GITHUB_OUTPUT" + echo "bootstrap=false" >> "$GITHUB_OUTPUT" + else + echo "analyzer=$GITHUB_WORKSPACE/candidate" >> "$GITHUB_OUTPUT" + echo "bootstrap=true" >> "$GITHUB_OUTPUT" + fi + else + echo "content=$GITHUB_WORKSPACE/trusted" >> "$GITHUB_OUTPUT" + echo "analyzer=$GITHUB_WORKSPACE/trusted" >> "$GITHUB_OUTPUT" + echo "bootstrap=false" >> "$GITHUB_OUTPUT" + fi + + - name: Install trusted analyzer + run: uv sync --frozen --project "${{ steps.roots.outputs.analyzer }}/dev-tools/slop-cop" + + - name: Run trusted analysis + id: analysis + continue-on-error: true + env: + ANALYZER_ROOT: ${{ steps.roots.outputs.analyzer }} + CONTENT_ROOT: ${{ steps.roots.outputs.content }} + INPUTS_JSON: ${{ runner.temp }}/slop-cop-inputs.json + REPORT_DIR: ${{ runner.temp }}/slop-cop-report + REPOSITORY: ${{ github.repository }} + shell: bash + run: | + python - <<'PY' + import json + import os + import subprocess + from pathlib import Path + + metadata = json.loads(Path(os.environ["INPUTS_JSON"]).read_text()) + analyzer = Path(os.environ["ANALYZER_ROOT"]) + content = Path(os.environ["CONTENT_ROOT"]) + notes = metadata["changed_notes"] + paths = [note["path"] for note in notes] + if metadata["pull_request_number"] is None: + paths = sorted( + path.relative_to(content).as_posix() + for path in (content / "docs/dev-notes/posts").glob("*.md") + ) + override_path = Path(os.environ["REPORT_DIR"]).parent / "override.json" + command = [ + "uv", "run", "--project", str(analyzer / "dev-tools/slop-cop"), + "slop-cop", "check", + "--config", str(analyzer / "dev-tools/slop-cop/slop-cop.toml"), + "--repository-root", str(content), + "--html-dir", os.environ["REPORT_DIR"], + "--repository", os.environ["REPOSITORY"], + "--base-sha", metadata["base_sha"], + "--head-sha", metadata["head_sha"], + ] + if metadata["pull_request_number"] is not None: + import shutil + baseline = Path(os.environ["REPORT_DIR"]).parent / "slop-cop-baseline" + baseline.mkdir(parents=True, exist_ok=True) + for note in notes: + source = Path.cwd() / "trusted" / note["base_path"] + if not source.exists(): + continue + if source.is_symlink() or not source.is_file(): + raise SystemExit(f"Invalid baseline input: {note['base_path']}") + destination = baseline / note["path"] + destination.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(source, destination) + command.extend([ + "--pull-request-number", str(metadata["pull_request_number"]), + "--baseline-root", str(baseline), + ]) + if metadata["override"] is not None: + override_path.write_text(json.dumps(metadata["override"])) + command.extend(["--override-json", str(override_path)]) + command.extend(str(content / path) for path in paths) + raise SystemExit(subprocess.run(command, check=False).returncode) + PY + + - name: Note bootstrap analysis + if: steps.roots.outputs.bootstrap == 'true' + run: echo "This introducing run used the candidate analyzer because no base analyzer exists." >> "$GITHUB_STEP_SUMMARY" + + - name: Test candidate implementation + id: candidate + if: steps.inputs.outputs.tool_changed == 'true' + continue-on-error: true + working-directory: candidate/dev-tools/slop-cop + run: | + uv sync --frozen + uv run pytest + uv run ruff check . + uv run ruff format --check . + uv run mypy src tests + uv run slop-cop validate-rules + uv run slop-cop benchmark --repository-root ../.. + uv run slop-cop check \ + --config slop-cop.toml \ + --repository-root ../.. \ + ../../docs/dev-notes/posts/*.md + + - name: Create an error report after an early analysis failure + if: always() + env: + BASE_SHA: ${{ steps.inputs.outputs.base_sha }} + HEAD_SHA: ${{ steps.inputs.outputs.head_sha }} + PR_NUMBER: ${{ steps.inputs.outputs.number }} + REPORT_DIR: ${{ runner.temp }}/slop-cop-report + REPOSITORY: ${{ github.repository }} + shell: bash + run: | + if [[ -f "$REPORT_DIR/report.json" ]]; then + exit 0 + fi + python - <<'PY' + import html + import hashlib + import json + import os + from pathlib import Path + + event = json.loads(Path(os.environ["GITHUB_EVENT_PATH"]).read_text()) + pull_request = event.get("pull_request") or {} + base_sha = os.environ.get("BASE_SHA") or pull_request.get("base", {}).get("sha") + head_sha = os.environ.get("HEAD_SHA") or pull_request.get("head", {}).get("sha") + number_value = os.environ.get("PR_NUMBER") or pull_request.get("number") + if not base_sha or not head_sha: + base_sha = head_sha = event.get("after") or os.environ.get("GITHUB_SHA") + number = int(number_value) if number_value else None + threshold = 80 + message = "Slop Cop did not complete its analysis." + source_path = "docs/dev-notes/posts/analysis-error.md" + error = { + "rule_id": None, + "source_path": source_path, + "error_code": "analysis_failed", + "message": message, + "fatal": True, + } + file_result = { + "path": source_path, + "analysis_state": "error", + "decision": "fail", + "score": 0, + "threshold": threshold, + "hard_fail": False, + "metrics": { + "source_bytes": 0, + "source_code_points": 0, + "analyzable_words": 0, + "analyzable_sentences": 0, + "analyzable_paragraphs": 0, + "masked_code_points": 0, + }, + "findings": [], + "suppressions": [], + "rule_costs": [], + "category_costs": [], + "errors": [error], + "base": None, + } + result = { + "schema_version": 1, + "analysis_state": "error", + "decision": "fail", + "score": 0, + "threshold": threshold, + "repository": os.environ["REPOSITORY"], + "pull_request_number": number, + "base_sha": base_sha, + "head_sha": head_sha, + "tool_version": "unavailable", + "config_digest": hashlib.sha256(b"slop-cop-analysis-unavailable").hexdigest(), + "files": [file_result], + "rule_errors": [error], + "external_audits": [], + "override": None, + } + report_dir = Path(os.environ["REPORT_DIR"]) + report_dir.mkdir(parents=True, exist_ok=True) + (report_dir / "report.json").write_text( + json.dumps(result, ensure_ascii=False, indent=2, sort_keys=True) + "\n" + ) + escaped_message = html.escape(message) + escaped_head = html.escape(str(head_sha)) + page = f""" + + + Slop Cop error report

Slop Cop report

ERROR

+

{escaped_message}

Head revision: {escaped_head}

+

The required check failed. Review the analysis workflow logs.

\n""" + (report_dir / "index.html").write_text(page) + PY + + - name: Add bounded annotations and job summary + if: always() + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + env: + REPORT_JSON: ${{ runner.temp }}/slop-cop-report/report.json + with: + script: | + const fs = require('fs'); + const report = JSON.parse(fs.readFileSync(process.env.REPORT_JSON, 'utf8')); + const findings = (report.files || []).flatMap((file) => + (file.findings || []) + .filter((finding) => !finding.suppressed && (finding.blocking || finding.chargeable)) + .map((finding) => ({ file, finding }))); + for (const { file, finding } of findings.slice(0, 50)) { + core.warning(`${finding.rule_id}: ${String(finding.advice || '').slice(0, 300)}`, { + file: file.path, + startLine: finding.line || 1, + startColumn: finding.column || 1, + }); + } + await core.summary + .addHeading('Slop Cop') + .addRaw(`**${String(report.decision).toUpperCase()}** — score ${report.score ?? '—'}, threshold ${report.threshold}\n\n`) + .addTable([ + [{data: 'Path', header: true}, {data: 'Head', header: true}, {data: 'Base', header: true}], + ...(report.files || []).map((file) => [file.path, String(file.score ?? '—'), String(file.base?.score ?? '—')]), + ]) + .write(); + + - name: Upload report + if: always() + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + with: + name: slop-cop-pr-${{ steps.inputs.outputs.number || github.event.pull_request.number || 'main' }}-${{ steps.inputs.outputs.head_sha || github.event.pull_request.head.sha || github.sha }} + path: ${{ runner.temp }}/slop-cop-report + if-no-files-found: error + retention-days: 14 + + - name: Enforce saved result + if: always() + env: + CANDIDATE_OUTCOME: ${{ steps.candidate.outcome }} + REPORT_JSON: ${{ runner.temp }}/slop-cop-report/report.json + run: | + python - <<'PY' + import json + import os + from pathlib import Path + + path = Path(os.environ["REPORT_JSON"]) + if not path.is_file(): + raise SystemExit("Slop Cop did not produce report.json") + result = json.loads(path.read_text()) + if result.get("decision") not in {"pass", "overridden", "not_applicable"}: + raise SystemExit(f"Slop Cop decision: {result.get('decision')}") + if os.environ.get("CANDIDATE_OUTCOME") == "failure": + raise SystemExit("Candidate Slop Cop validation failed") + PY diff --git a/AGENTS.md b/AGENTS.md index 85d4fe96..b602af49 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,20 +9,24 @@ documentation for work that uses OpenShell as its runtime. - Put self-contained implementations and experiments in `projects//`. - Put project-specific user guides and references in `projects//docs/`. +- Put repository development and CI tools in `dev-tools//`, with + tool-specific documentation beside the tool. - Put cross-project user-facing documentation in `docs/documentation/`. - Put Dev Notes (human-written technical notes) `docs/dev-notes/`. - Put agent-facing repository maintenance workflows in `docs/development/`. -Before changing a project, read that project's `README.md` and `pyproject.toml`; -projects are self-contained and may have different platforms, dependencies, and -validation commands. Before changing anything under `docs/` or `zensical.toml`, -read `docs/development/index.md`. +Before changing a project or development tool, read its `README.md` and +`pyproject.toml`; each is self-contained and may have different platforms, +dependencies, and validation commands. Before changing anything under `docs/` +or `zensical.toml`, read `docs/development/index.md`. ## Repository rules - Make the smallest change that satisfies the task and preserve unrelated work. - Prefer explicit, clear names and language over concise but ambiguous alternatives. Value concision when it does not reduce clarity. +- Use absolute imports in handwritten Python package code. Generated sources + may retain the import style produced by their generator. - Use `uv` for Python dependency management, environments, locking, builds, and command execution unless a project explicitly documents an exception. Treat `pyproject.toml` and the committed `uv.lock` as the dependency sources of truth. @@ -41,8 +45,8 @@ read `docs/development/index.md`. ## Validation -- For project changes, run the checks documented by that project's README from - the project directory. +- For project and development-tool changes, run the checks documented by its + README from that directory. - For documentation changes, run `python3 tests/test_render_dev_notes.py` and `scripts/build-docs.sh`, then serve the generated site as described in `docs/development/index.md`. diff --git a/dev-tools/README.md b/dev-tools/README.md new file mode 100644 index 00000000..6d0992a5 --- /dev/null +++ b/dev-tools/README.md @@ -0,0 +1,9 @@ +# Development tools + +This directory contains repository-owned tooling for development, validation, +and continuous integration. Each tool has its own dependencies, documentation, +and validation commands. + +Current tools: + +- `slop-cop`: Editorial policy checks and CI reporting for Dev Notes. diff --git a/dev-tools/slop-cop/AGENTS.md b/dev-tools/slop-cop/AGENTS.md new file mode 100644 index 00000000..5a287ce2 --- /dev/null +++ b/dev-tools/slop-cop/AGENTS.md @@ -0,0 +1,17 @@ +# Slop Cop development instructions + +- Keep documentation, comments, names, tests, and output focused on current + behavior and repository requirements. Do not include design history or + comparisons with other tools. +- Preserve the three rule extension paths: declarative phrase rules, + declarative bounded-regex rules, and Python rules exported explicitly from + `slop_cop.rules.custom.CUSTOM_RULES`. +- Keep detection separate from scoring. Rules return bounded signals; only the + scorer determines points and policy decisions. +- Preserve exact source offsets through Markdown projection. Add focused + positive, counterexample, masking, and boundary tests with every change. +- Use `uv` for dependency management and execution. Run Ruff, mypy, and pytest + before handing off changes. +- Do not add package discovery, entry-point loading, provider-specific model + integrations, automatic rewriting, or persisted generated reports. + diff --git a/dev-tools/slop-cop/README.md b/dev-tools/slop-cop/README.md new file mode 100644 index 00000000..caedf464 --- /dev/null +++ b/dev-tools/slop-cop/README.md @@ -0,0 +1,63 @@ +# Slop Cop + +Slop Cop reviews Dev Notes for configured editorial signals. It reports precise +findings, calculates a transparent score, and enforces the repository threshold. +The score is not an estimate of who or what wrote the document. + +## Run locally + +Install the locked environment from this directory: + +```bash +uv sync --locked +``` + +Check one or more Dev Notes: + +```bash +uv run slop-cop check \ + --config slop-cop.toml \ + ../../docs/dev-notes/posts/example.md +``` + +Create the same machine and HTML reports used in CI: + +```bash +uv run slop-cop check \ + --config slop-cop.toml \ + --html-dir /tmp/slop-cop-report \ + --json /tmp/slop-cop-report/report.json \ + ../../docs/dev-notes/posts/example.md +``` + +Inspect and test rules: + +```bash +uv run slop-cop list-rules +uv run slop-cop explain rhetoric.not-just +uv run slop-cop validate-rules +uv run slop-cop benchmark --repository-root ../.. +uv run slop-cop check --only-rule rhetoric.not-just path/to/fixture.md +``` + +`check` returns `0` when all files pass, `1` when analysis completes but policy +fails, and `2` for input, configuration, Markdown-projection, or +report-generation failures. +Requested reports are written before a policy-failure exit. + +## Documentation + +- [Rules and custom logic](docs/rules.md) +- [Scoring](docs/scoring.md) +- [CI, artifacts, suppressions, and overrides](docs/ci.md) + +Run the project checks with: + +```bash +uv run pytest +uv run ruff check . +uv run ruff format --check . +uv run mypy src tests +uv run slop-cop validate-rules +uv run slop-cop benchmark --repository-root ../.. +``` diff --git a/dev-tools/slop-cop/benchmarks/dev-note-history.toml b/dev-tools/slop-cop/benchmarks/dev-note-history.toml new file mode 100644 index 00000000..ea45a71e --- /dev/null +++ b/dev-tools/slop-cop/benchmarks/dev-note-history.toml @@ -0,0 +1,53 @@ +[[benchmark]] +name = "2026-07-13 initial draft" +revision = "2b8ae6ef4b74a1eeafa767f9d9f0238af17bdcd5" +path = "docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +source_url = "https://github.com/NVIDIA/OpenShell-Research/blob/2b8ae6ef4b74a1eeafa767f9d9f0238af17bdcd5/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +expected_decision = "fail" +min_score = 70 +max_score = 79 + +[[benchmark]] +name = "2026-07-14 revised draft" +revision = "808336e88d418e36364d57d6fda87e47e21dba82" +path = "docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +source_url = "https://github.com/NVIDIA/OpenShell-Research/blob/808336e88d418e36364d57d6fda87e47e21dba82/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +expected_decision = "pass" +min_score = 80 +max_score = 89 + +[[benchmark]] +name = "2026-07-16 revised draft" +revision = "95a17f58c65df19166d92e70346cb7574ec84871" +path = "docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +source_url = "https://github.com/NVIDIA/OpenShell-Research/blob/95a17f58c65df19166d92e70346cb7574ec84871/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +expected_decision = "pass" +min_score = 84 +max_score = 91 + +[[benchmark]] +name = "2026-07-17 revised draft" +revision = "be515c9c2684e1e3febec058f1a9e0e90da16a72" +path = "docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +source_url = "https://github.com/NVIDIA/OpenShell-Research/blob/be515c9c2684e1e3febec058f1a9e0e90da16a72/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +expected_decision = "pass" +min_score = 88 +max_score = 94 + +[[benchmark]] +name = "2026-07-18 revised draft" +revision = "069696b0a28ffd0cd77e1e043a532f81b9cec3e2" +path = "docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +source_url = "https://github.com/NVIDIA/OpenShell-Research/blob/069696b0a28ffd0cd77e1e043a532f81b9cec3e2/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md" +expected_decision = "pass" +min_score = 94 +max_score = 100 + +[[benchmark]] +name = "2026-07-20 published draft" +revision = "b0d481796b8a0492053c7b3cac0c65444a2e99be" +path = "docs/dev-notes/posts/2026-07-20-policy-controlling-reachy-mini-with-openshell.md" +source_url = "https://github.com/NVIDIA/OpenShell-Research/blob/b0d481796b8a0492053c7b3cac0c65444a2e99be/docs/dev-notes/posts/2026-07-20-policy-controlling-reachy-mini-with-openshell.md" +expected_decision = "pass" +min_score = 92 +max_score = 98 diff --git a/dev-tools/slop-cop/docs/ci.md b/dev-tools/slop-cop/docs/ci.md new file mode 100644 index 00000000..6d9904f9 --- /dev/null +++ b/dev-tools/slop-cop/docs/ci.md @@ -0,0 +1,92 @@ +# CI integration + +The `Slop Cop` workflow analyzes Dev Notes and uploads `index.html` and +`report.json` as a 14-day artifact. The `Slop Cop report` workflow validates that +artifact and updates one sticky PR comment. Generated reports are not committed. + +## Enforcement boundary + +For a pull request, the required analysis runs Slop Cop code, configuration, +and dependencies from the PR base revision against the candidate Dev Notes. +Candidate Slop Cop changes are tested separately without credentials and scan +the complete candidate Dev Note corpus as a non-authoritative preview. + +The `pull_request` event can use workflow orchestration changed by the pull +request. Base-revision analyzer selection does not protect that orchestration by +itself. Enforce `.github/workflows/slop-cop.yml` as an organization or +repository-ruleset required workflow using its default-branch definition. Add +both Slop Cop workflow files to the repository's protected workflow paths and +require designated review for changes to them. A branch-protection check name +without this ruleset protection does not establish the same boundary. + +The analysis workflow has read-only permissions. It runs for every PR so the +required check is present even when no Dev Note changed. A non-applicable run +has a null score and creates no misleading clean score. + +The trusted reporting workflow runs from the default branch after analysis. It +never executes PR-supplied code. It accepts exactly one artifact associated with +the completed run, checks the PR number and current head SHA, revalidates any +override through the GitHub API, rejects unknown JSON schemas and oversized or +malformed data, and treats every report string as untrusted before creating +Markdown. Stale runs do not update the comment. + +## Artifact and comment + +The artifact is named `slop-cop-pr--` and contains: + +```text +slop-cop-report/ +├── index.html +└── report.json +``` + +Download the artifact from the sticky PR comment or the analysis run. Open +`index.html` locally; it is self-contained and requires no network or +JavaScript. The PR comment shows the decision, threshold, per-file scores, base +deltas, top findings, override details, analyzed revision, and expiration note. + +## Suppress one finding + +Place a standalone directive immediately before the next scanned prose block: + +```html + +``` + +Name stable rule IDs and supply a concrete reason. The directive suppresses the +first named finding in that block. Unknown IDs, missing reasons, unused +directives, and file-wide wildcards are errors. Suppressions remain visible in +terminal, JSON, and HTML output. + +## Override one revision + +An authorized maintainer can override a result by approving the exact current +head revision with this line in the review body: + +```text +Slop-Cop-Override: +``` + +The reviewer must currently have write, maintain, or admin permission. A new +commit makes the review stale. The override changes the CI decision to +`OVERRIDDEN`; it does not change the score, hide findings, or mark an incomplete +analysis complete. The report records the reviewer, reason, review, and head +revision. + +## External rules + +Built-in and declarative rules are offline. A configured custom rule can send +selected projected prose to its named service. Required external rules fail +closed when a credential or service is unavailable. Ordinary Actions secrets +are unavailable to fork PR workflows, so enabling a required external rule +must account for that behavior. The workflow never executes candidate rule code +with repository secrets. + +## Required check rollout + +The introducing PR has neither a base-revision analyzer nor a default-branch +required-workflow definition, so it cannot enforce itself. Validate it with the +complete local suite and designated workflow review. After merge, configure the +ruleset required workflow and protected workflow paths, require a successful +full-corpus push run, then exercise passing, failing, stale, override, rename, +deletion, and non-applicable PR revisions before treating the check as enforced. diff --git a/dev-tools/slop-cop/docs/rules.md b/dev-tools/slop-cop/docs/rules.md new file mode 100644 index 00000000..3235b83d --- /dev/null +++ b/dev-tools/slop-cop/docs/rules.md @@ -0,0 +1,140 @@ +# Rules + +Rules detect editorial signals. Repository configuration determines whether a +signal is advisory, chargeable, or blocking and how it affects the score. + +## Manage declarative rules + +Use a declarative rule for a literal phrase or bounded regular expression. Add +the rule block to `slop-cop.toml` and add positive and counterexample cases to +`tests/rule_cases.toml`. No engine or renderer change is required. + +Each rule has a stable ID, positive integer version, category, title, rationale, +advice, severity, allowance, and explicit scoring values. Increment the version +when matching behavior or external-response interpretation changes. + +To disable a rule, set `enabled = false`. To remove one, remove its definition, +cases, exceptions, and source suppressions in the same change. Run +`slop-cop validate-rules` to find dangling references and missing coverage. + +Declarative regular expressions are limited to 500 characters. They may use the +configured `IGNORECASE`, `MULTILINE`, `DOTALL`, and `VERBOSE` flags. Inline +flags, backreferences, recursive constructs, conditionals, and lookbehind are +rejected. Matching has a bounded timeout. + +## Add custom Python logic + +Use a custom Python rule when detection requires an algorithm or an external +service. Create one module under `src/slop_cop/rules/custom/`, export one rule +instance, and add it to `CUSTOM_RULES` in that directory's `__init__.py`. + +```python +from slop_cop.rules.api import ( + FunctionRule, + RuleContext, + RuleEvaluation, + RuleMetadata, + RuleRuntime, + RuleSignal, +) + +METADATA = RuleMetadata( + id="custom.repeated-claim-opener", + version=1, + category="repetition", + title="Repeated claim opener", + rationale="Repeated claim openings make consecutive paragraphs formulaic.", + advice="Vary the paragraph structure or combine the claims.", +) + + +async def evaluate(context: RuleContext, runtime: RuleRuntime) -> RuleEvaluation: + signals = tuple( + RuleSignal(start=item.start, end=item.end, key=item.normalized) + for item in context.repeated_sentence_starts(minimum_count=3) + ) + return RuleEvaluation(signals=signals) + + +RULE = FunctionRule(metadata=METADATA, evaluator=evaluate) +``` + +Register it explicitly: + +```python +from .repeated_claim_opener import RULE as REPEATED_CLAIM_OPENER + +CUSTOM_RULES = (REPEATED_CLAIM_OPENER,) +``` + +Add the scoring policy separately: + +```toml +[rules."custom.repeated-claim-opener"] +enabled = true +severity = "warning" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 3 +repeat_cost = 2 +cap = 9 +on_error = "fail" +``` + +The engine supplies Markdown projection, source mapping, segmentation, +suppressions, scoring, and reporting. The custom evaluator only returns bounded +signals and optional audit data. It cannot set the score, threshold, decision, +or override state. + +Add positive and counterexample entries to `tests/rule_cases.toml`. The shared +contract suite validates IDs, metadata, result bounds, spans, ordering, and +fixture coverage for built-in, declarative, and custom rules. + +## Call an external judge + +An external custom rule declares a named service in its metadata and obtains it +through `RuleRuntime`: + +```python +response = await runtime.service("editorial_judge").post_json( + {"schema_version": 1, "prose": context.projected_prose} +) +result = JudgeResponse.model_validate(response.data) +signal = RuleSignal.document( + key=result.label, + units=result.strength, + detail=result.explanation, + evidence=context.map_exact_quotes(result.evidence), +) +return RuleEvaluation( + signals=(signal,), + audit={**response.audit, "judge_revision": result.judge_revision}, +) +``` + +Configure the service in trusted repository configuration: + +```toml +[services.editorial_judge] +url = "https://judge.internal.example/v1/evaluate" +token_env = "SLOP_COP_EDITORIAL_JUDGE_TOKEN" +timeout_seconds = 20 +max_response_bytes = 65536 +max_attempts = 1 +required_judge_revision = "editorial-v1" +``` + +The custom rule owns its request data, strict response model, and conversion to +signals. The runtime owns the allowed origin, authentication, deadlines, +redirect rejection, response limit, idempotency key, and content-safe audit +record. A required CI rule must use this runtime instead of direct sockets, +subprocesses, SDK transports, or an unconfigured destination. + +Document-scoped signals do not participate in passage-density calculations. +Emit exact source spans when local concentration matters. Evidence quotations +are display evidence and do not add scoring units. + +Use `on_error = "fail"` for an external rule that affects the required CI +threshold. Use `advisory` only for a zero-point experiment. Tests must use a fake +transport and cover clean, chargeable, malformed, oversized, wrong-revision, +timeout, and transport outcomes. diff --git a/dev-tools/slop-cop/docs/scoring.md b/dev-tools/slop-cop/docs/scoring.md new file mode 100644 index 00000000..268460fb --- /dev/null +++ b/dev-tools/slop-cop/docs/scoring.md @@ -0,0 +1,114 @@ +# Scoring + +Slop Cop starts each file at 100 and subtracts bounded category costs. The +default Dev Notes threshold is 80. A score describes configured editorial +signals; it is not a probability, authorship judgment, or factuality grade. + +## Rule cost + +Rules emit signals. After suppressions and overlap deduplication, Slop Cop sums +their bounded units and applies the rule allowance: + +```text +document_excess = max(0, units - allowance(document)) + +base_cost = 0 when excess is 0 +base_cost = first_cost + repeat_cost * (excess - 1) otherwise +``` + +An allowance may combine a fixed count with a document-density allowance based +on the rule's natural opportunity: words, sentences, or paragraphs. A phrase +rule and a sentence-opening rule therefore do not share an arbitrary universal +denominator. + +## Passage density + +Selected rules and categories also inspect rolling word, sentence, or paragraph +windows. Slop Cop finds the single densest window and charges a bounded density +cost from its peak excess: + +```text +peak_excess = max(0, signals_in_window - allowed_units) + +density_cost = 0 + when peak_excess is 0 +else min(density_cap, + density_first_cost + density_repeat_cost * (peak_excess - 1)) +``` + +Only primary, unsuppressed, exact source spans enter these windows. The peak is +charged once even when overlapping windows contain the same findings. Appending +clean prose cannot lower an existing peak. Document-scoped external judgments +do not enter passage-density calculations. + +The final rule cost is capped: + +```text +rule_cost = min(rule_cap, base_cost + density_cost) +``` + +This permits two occurrences spread across a long note while still charging a +cluster in three neighboring paragraphs when that rule's policy says +concentration matters. + +## Category and file decisions + +Related rules share a category cap. An optional category-density cost can +capture a cluster of several distinct weak signals: + +```text +category_cost = min(category_cap, + sum(rule_costs) + category_density_cost) +score = max(0, round(100 - sum(category_costs))) +``` + +A file passes only when its score meets the threshold, it has no unsuppressed +blocking finding, and required analysis completed. An advisory external error +marks the analysis incomplete without manufacturing a penalty. A required +external error fails the analysis. + +Each changed Dev Note is scored independently. The PR score is the lowest file +score, and every changed file must pass. A clean second file cannot conceal a +failing first file. Base scores and finding changes appear for comparison, but +only the head result controls enforcement. + +## Tune policy + +Tune allowances, costs, density windows, and caps in `slop-cop.toml`; do not put +score calculations inside detector code. Every scored change needs fixtures at +the zero, first, repeat, density, and cap boundaries. Confirm that: + +- a common isolated construction does not fail a clean note; +- a concentrated passage costs more than the same findings spread apart; +- clean appended prose does not dilute an existing density cost; +- overlapping detectors do not double charge one source span; +- one weak category cannot exceed its cap; +- the accepted Dev Note remains at or above 80 without a blanket exception; +- dense multi-category fixtures remain below 80. + +Keep unresolved or context-sensitive rules advisory with zero points until +their counterexamples and score boundaries are reliable. + +## Calibration benchmarks + +`benchmarks/dev-note-history.toml` records immutable Git revisions, expected +decisions, and acceptable score ranges. `slop-cop benchmark` loads each source +with `git show`, scores it with the active configuration, and fails when a score +or decision leaves its declared range. This makes calibration drift a tested +policy change instead of an incidental result of editing rule weights. + +The current references follow one Dev Note through revision and publication: + +| Reference | Expected score | Baseline score | +| --- | ---: | ---: | +| [2026-07-13 initial draft](https://github.com/NVIDIA/OpenShell-Research/blob/2b8ae6ef4b74a1eeafa767f9d9f0238af17bdcd5/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md) | 70–79, fail | 76 | +| [2026-07-14 revised draft](https://github.com/NVIDIA/OpenShell-Research/blob/808336e88d418e36364d57d6fda87e47e21dba82/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md) | 80–89, pass | 86 | +| [2026-07-16 revised draft](https://github.com/NVIDIA/OpenShell-Research/blob/95a17f58c65df19166d92e70346cb7574ec84871/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md) | 84–91, pass | 88 | +| [2026-07-17 revised draft](https://github.com/NVIDIA/OpenShell-Research/blob/be515c9c2684e1e3febec058f1a9e0e90da16a72/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md) | 88–94, pass | 91 | +| [2026-07-18 revised draft](https://github.com/NVIDIA/OpenShell-Research/blob/069696b0a28ffd0cd77e1e043a532f81b9cec3e2/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md) | 94–100, pass | 97 | +| [2026-07-20 published draft](https://github.com/NVIDIA/OpenShell-Research/blob/b0d481796b8a0492053c7b3cac0c65444a2e99be/docs/dev-notes/posts/2026-07-20-policy-controlling-reachy-mini-with-openshell.md) | 92–98, pass | 95 | + +Add references that represent a deliberate editorial judgment and a stable Git +revision. Use ranges wide enough for targeted detector improvements but narrow +enough to catch a material scoring regression. A scoring change must update the +manifest only when the new result is intentional and supported by the source. diff --git a/dev-tools/slop-cop/pyproject.toml b/dev-tools/slop-cop/pyproject.toml new file mode 100644 index 00000000..6583df23 --- /dev/null +++ b/dev-tools/slop-cop/pyproject.toml @@ -0,0 +1,48 @@ +[project] +name = "slop-cop" +version = "0.1.0" +description = "Editorial policy checks for OpenShell Dev Notes" +license = "Apache-2.0" +requires-python = ">=3.12" +dependencies = [ + "httpx>=0.28.1,<0.29", + "pydantic>=2.11.0,<3", + "regex>=2025.7.34", +] + +[project.scripts] +slop-cop = "slop_cop.cli:main" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[dependency-groups] +dev = [ + "mypy>=1.17.1,<2", + "pytest>=8.4.1,<9", + "pytest-asyncio>=1.1.0,<2", + "ruff>=0.12.8,<0.13", + "types-regex>=2025.7.34.20250731", +] + +[tool.pytest.ini_options] +addopts = "-q" +testpaths = ["tests"] +asyncio_mode = "auto" + +[tool.ruff] +line-length = 100 +target-version = "py312" + +[tool.ruff.lint] +select = ["E", "F", "I", "UP", "B", "SIM", "RUF", "TID252"] +allowed-confusables = ["’", "”"] + +[tool.ruff.lint.flake8-tidy-imports] +ban-relative-imports = "all" + +[tool.mypy] +python_version = "3.12" +strict = true +packages = ["slop_cop"] diff --git a/dev-tools/slop-cop/slop-cop.toml b/dev-tools/slop-cop/slop-cop.toml new file mode 100644 index 00000000..f326f4d6 --- /dev/null +++ b/dev-tools/slop-cop/slop-cop.toml @@ -0,0 +1,433 @@ +schema_version = 1 +profile = "dev-notes" +threshold = 80 +paths = ["docs/dev-notes/posts/*.md"] + +[contexts] +scan_blockquotes = false +scan_headings = true +scan_captions = true + +[categories.artifact] +cap = 100 + +[categories.rhetoric] +cap = 25 + +[categories.rhetoric.density] +unit = "paragraph" +window = 3 +allowed_units = 3 +first_cost = 2 +repeat_cost = 1 +cap = 5 + +[categories.vocabulary] +cap = 15 + +[categories.vocabulary.density] +unit = "paragraph" +window = 3 +allowed_units = 3 +first_cost = 1 +repeat_cost = 1 +cap = 4 + +[categories.repetition] +cap = 25 + +[categories.repetition.density] +unit = "paragraph" +window = 3 +allowed_units = 4 +first_cost = 2 +repeat_cost = 1 +cap = 5 + +[categories.attribution] +cap = 15 + +[categories.ending] +cap = 15 + +[categories.structure] +cap = 0 + +[rules."artifact.ai-disclosure"] +severity = "error" +blocking = true +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 100 +repeat_cost = 100 +cap = 100 + +[rules."artifact.chat-preamble"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 15 +repeat_cost = 10 +cap = 35 + +[rules."artifact.continuation-offer"] +severity = "error" +blocking = true +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 100 +repeat_cost = 100 +cap = 100 + +[rules."artifact.placeholder"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 8 +repeat_cost = 5 +cap = 20 + +[rules."artifact.instruction-residue"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 10 +repeat_cost = 6 +cap = 25 + +[rules."rhetoric.not-but"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 3 +repeat_cost = 2 +cap = 9 + +[rules."rhetoric.not-but".document_density] +unit = "word" +interval = 1000 +allowed_units = 1 + +[rules."rhetoric.not-but".density] +unit = "paragraph" +window = 3 +allowed_units = 1 +first_cost = 2 +repeat_cost = 2 +cap = 6 + +[rules."rhetoric.not-just"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 3 +repeat_cost = 2 +cap = 9 + +[rules."rhetoric.not-just".document_density] +unit = "word" +interval = 1500 +allowed_units = 1 + +[rules."rhetoric.not-just".density] +unit = "paragraph" +window = 3 +allowed_units = 1 +first_cost = 2 +repeat_cost = 2 +cap = 6 + +[rules."rhetoric.no-no"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 3 +repeat_cost = 2 +cap = 9 + +[rules."rhetoric.no-no".density] +unit = "paragraph" +window = 3 +allowed_units = 1 +first_cost = 2 +repeat_cost = 2 +cap = 6 + +[rules."rhetoric.imperative-reframe"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 3 +repeat_cost = 2 +cap = 9 + +[rules."rhetoric.imperative-reframe".density] +unit = "paragraph" +window = 3 +allowed_units = 1 +first_cost = 2 +repeat_cost = 2 +cap = 6 + +[rules."rhetoric.dramatic-fragment"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."rhetoric.throat-clearing"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."rhetoric.testament"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."rhetoric.crucial-role"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."rhetoric.landscape-metaphor"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."rhetoric.formulaic-certainty"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."rhetoric.parallel-negation"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."vocabulary.stock.delves"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 1 +repeat_cost = 1 +cap = 4 + +[rules."vocabulary.stock.tapestry"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 1 +repeat_cost = 1 +cap = 4 + +[rules."vocabulary.stock.realm"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 1 +repeat_cost = 1 +cap = 4 + +[rules."vocabulary.stock.underscore"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 1 +repeat_cost = 1 +cap = 4 + +[rules."vocabulary.stock.navigate"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 1 +repeat_cost = 1 +cap = 4 + +[rules."vocabulary.stock.multifaceted"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 1 +repeat_cost = 1 +cap = 4 + +[rules."repetition.ngram"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 2 +first_cost = 3 +repeat_cost = 2 +cap = 10 + +[rules."repetition.ngram".density] +unit = "paragraph" +window = 5 +allowed_units = 2 +first_cost = 2 +repeat_cost = 1 +cap = 4 + +[rules."repetition.sentence-opener"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 6 +repeat_cost = 3 +cap = 15 + +[rules."repetition.sentence-opener".density] +unit = "sentence" +window = 5 +allowed_units = 2 +first_cost = 2 +repeat_cost = 1 +cap = 6 + +[rules."repetition.template-shape"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 6 +repeat_cost = 3 +cap = 15 + +[rules."repetition.template-shape".density] +unit = "paragraph" +window = 3 +allowed_units = 2 +first_cost = 3 +repeat_cost = 2 +cap = 6 + +[rules."repetition.emphatic-fragments"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 6 +repeat_cost = 3 +cap = 15 + +[rules."repetition.emphatic-fragments".density] +unit = "sentence" +window = 5 +allowed_units = 2 +first_cost = 3 +repeat_cost = 2 +cap = 6 + +[rules."repetition.hedge-stack"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 2 +repeat_cost = 2 +cap = 8 + +[rules."repetition.question-answer"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 2 +repeat_cost = 2 +cap = 8 + +[rules."attribution.vague-authority"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 2 +repeat_cost = 2 +cap = 8 + +[rules."attribution.citationless-study"] +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 2 +repeat_cost = 2 +cap = 8 + +[rules."ending.participial-tail"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."ending.generic-explanation"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."structure.bold-leadins"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."structure.triad"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."structure.bullet-run"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."structure.horizontal-rules"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[rules."structure.duplicate-title"] +severity = "info" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 0 +repeat_cost = 0 +cap = 0 + +[vocabulary] +allowed_terms = ["OpenShell", "Dev Note"] + +[custom_rules] + +[services] diff --git a/dev-tools/slop-cop/src/slop_cop/__init__.py b/dev-tools/slop-cop/src/slop_cop/__init__.py new file mode 100644 index 00000000..88f73165 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/__init__.py @@ -0,0 +1,10 @@ +"""Editorial policy checks for OpenShell Dev Notes.""" + +from importlib.metadata import PackageNotFoundError, version + +try: + __version__ = version("slop-cop") +except PackageNotFoundError: + __version__ = "0.1.0" + +__all__ = ["__version__"] diff --git a/dev-tools/slop-cop/src/slop_cop/benchmarks.py b/dev-tools/slop-cop/src/slop_cop/benchmarks.py new file mode 100644 index 00000000..4f9e056e --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/benchmarks.py @@ -0,0 +1,148 @@ +"""Historical score calibration.""" + +from __future__ import annotations + +import re +import subprocess +import tomllib +from collections.abc import Callable +from pathlib import Path, PurePosixPath +from typing import Literal +from urllib.parse import urlsplit + +from pydantic import Field, field_validator, model_validator + +from slop_cop.config import SlopCopConfig, StrictModel +from slop_cop.document import build_document +from slop_cop.engine import analyze_document +from slop_cop.findings import Decision +from slop_cop.rules.registry import RuleRegistry + +_REVISION = re.compile(r"^[0-9a-f]{40}$") + + +class BenchmarkReference(StrictModel): + """One immutable document revision and its acceptable result.""" + + name: str = Field(min_length=1, max_length=100) + revision: str + path: str = Field(min_length=1, max_length=4_096) + source_url: str = Field(min_length=1, max_length=4_096) + expected_decision: Literal["pass", "fail"] + min_score: int = Field(ge=0, le=100) + max_score: int = Field(ge=0, le=100) + + @field_validator("revision") + @classmethod + def validate_revision(cls, value: str) -> str: + if not _REVISION.fullmatch(value): + raise ValueError("benchmark revision must be a 40-character lowercase commit SHA") + return value + + @field_validator("path") + @classmethod + def validate_path(cls, value: str) -> str: + path = PurePosixPath(value) + if path.is_absolute() or ".." in path.parts or path.suffix.casefold() != ".md": + raise ValueError("benchmark path must be a repository-relative Markdown path") + return value + + @field_validator("source_url") + @classmethod + def validate_source_url(cls, value: str) -> str: + parsed = urlsplit(value) + if parsed.scheme != "https" or parsed.hostname != "github.com": + raise ValueError("benchmark source_url must be an HTTPS GitHub URL") + return value + + @model_validator(mode="after") + def validate_range(self) -> BenchmarkReference: + if self.min_score > self.max_score: + raise ValueError("benchmark min_score cannot exceed max_score") + if f"/blob/{self.revision}/{self.path}" not in self.source_url: + raise ValueError("benchmark source_url must identify its revision and path") + return self + + +class BenchmarkManifest(StrictModel): + """Strict calibration manifest.""" + + benchmark: tuple[BenchmarkReference, ...] = Field(min_length=1) + + @field_validator("benchmark", mode="before") + @classmethod + def convert_toml_array(cls, value: object) -> object: + if isinstance(value, list): + return tuple(value) + return value + + +class BenchmarkResult(StrictModel): + """Observed result for one calibration reference.""" + + reference: BenchmarkReference + score: int + decision: Decision + within_range: bool + + +SourceLoader = Callable[[BenchmarkReference], bytes] + + +def load_benchmark_manifest(path: Path) -> BenchmarkManifest: + """Load and validate a benchmark manifest.""" + + return BenchmarkManifest.model_validate(tomllib.loads(path.read_text(encoding="utf-8"))) + + +def git_source_loader(repository_root: Path) -> SourceLoader: + """Return a loader for committed benchmark sources.""" + + def load(reference: BenchmarkReference) -> bytes: + completed = subprocess.run( + ["git", "show", f"{reference.revision}:{reference.path}"], + cwd=repository_root, + check=False, + capture_output=True, + ) + if completed.returncode != 0: + detail = completed.stderr.decode("utf-8", errors="replace").strip() + raise ValueError(f"cannot load benchmark {reference.name!r}: {detail}") + return completed.stdout + + return load + + +async def evaluate_benchmarks( + manifest: BenchmarkManifest, + *, + config: SlopCopConfig, + registry: RuleRegistry, + source_loader: SourceLoader, +) -> tuple[BenchmarkResult, ...]: + """Score every reference and compare it with the declared calibration range.""" + + results: list[BenchmarkResult] = [] + for reference in manifest.benchmark: + document = build_document( + reference.path, + source_loader(reference), + contexts=config.contexts, + max_source_bytes=config.source_max_bytes, + ) + observed = (await analyze_document(document, registry, config)).file_result + if observed.score is None: + raise ValueError(f"benchmark {reference.name!r} produced no score") + within_range = ( + reference.min_score <= observed.score <= reference.max_score + and observed.decision.value == reference.expected_decision + ) + results.append( + BenchmarkResult( + reference=reference, + score=observed.score, + decision=observed.decision, + within_range=within_range, + ) + ) + return tuple(results) diff --git a/dev-tools/slop-cop/src/slop_cop/cli.py b/dev-tools/slop-cop/src/slop_cop/cli.py new file mode 100644 index 00000000..0c16a2bb --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/cli.py @@ -0,0 +1,511 @@ +"""Command-line interface for Slop Cop.""" + +from __future__ import annotations + +import argparse +import asyncio +import json +import os +import re +import subprocess +import sys +from collections import defaultdict, deque +from collections.abc import Mapping, Sequence +from pathlib import Path +from typing import Any + +from pydantic import ValidationError + +from slop_cop import __version__ +from slop_cop.benchmarks import ( + evaluate_benchmarks, + git_source_loader, + load_benchmark_manifest, +) +from slop_cop.config import SlopCopConfig, load_config +from slop_cop.document import Document, build_document +from slop_cop.engine import EngineOutput, analyze_document +from slop_cop.findings import ( + AnalysisState, + BaseComparison, + Decision, + ExternalAudit, + Finding, + FindingChange, + OverrideRecord, + RuleExecutionError, + RunResult, +) +from slop_cop.report import ( + ReportError, + terminal_report, + write_json_report, + write_report_directory, +) +from slop_cop.rules.registry import RuleKind, RuleRegistry, build_registry + +EXIT_OK = 0 +EXIT_POLICY = 1 +EXIT_ERROR = 2 +_REVISION = re.compile(r"^[A-Za-z0-9][A-Za-z0-9._/-]{0,255}$") + + +def _default_config() -> Path: + return Path(__file__).resolve().parents[2] / "slop-cop.toml" + + +def _default_benchmarks() -> Path: + return Path(__file__).resolve().parents[2] / "benchmarks" / "dev-note-history.toml" + + +def _parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + prog="slop-cop", + description="Review Dev Notes for configured editorial signals.", + ) + parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}") + subparsers = parser.add_subparsers(dest="command", required=True) + + def add_config(command: argparse.ArgumentParser) -> None: + command.add_argument("--config", type=Path, default=_default_config()) + + check = subparsers.add_parser("check", help="Analyze one or more Dev Notes.") + add_config(check) + check.add_argument("paths", nargs="*", help="Markdown paths beneath the repository root.") + check.add_argument("--repository-root", type=Path) + baseline = check.add_mutually_exclusive_group() + baseline.add_argument("--baseline-ref") + baseline.add_argument("--baseline-root", type=Path) + check.add_argument("--html-dir", type=Path) + check.add_argument("--json", dest="json_path", type=Path) + check.add_argument("--only-rule") + check.add_argument("--repository") + check.add_argument("--pull-request-number", type=int) + check.add_argument("--base-sha") + check.add_argument("--head-sha") + check.add_argument("--override-json", type=Path) + + list_rules = subparsers.add_parser("list-rules", help="List configured rules.") + add_config(list_rules) + list_rules.add_argument("--kind", choices=("builtin", "declarative", "custom")) + + explain = subparsers.add_parser("explain", help="Explain one configured rule.") + add_config(explain) + explain.add_argument("rule_id") + + validate = subparsers.add_parser( + "validate-rules", help="Validate configuration and rule registry." + ) + add_config(validate) + validate.add_argument("--cases", type=Path) + + benchmark = subparsers.add_parser( + "benchmark", help="Check scores against historical calibration references." + ) + add_config(benchmark) + benchmark.add_argument("--manifest", type=Path, default=_default_benchmarks()) + benchmark.add_argument("--repository-root", type=Path) + return parser + + +def _repository_root(value: Path | None) -> Path: + if value is not None: + root = value.resolve(strict=True) + if not root.is_dir(): + raise ValueError(f"repository root is not a directory: {root}") + return root + current = Path.cwd().resolve() + for candidate in (current, *current.parents): + if (candidate / ".git").exists(): + return candidate + return current + + +def _resolve_input(root: Path, value: str) -> tuple[str, Path]: + supplied = Path(value) + unresolved = supplied if supplied.is_absolute() else Path.cwd() / supplied + lexical = Path(os.path.abspath(unresolved)) + try: + lexical_relative = lexical.relative_to(root) + except ValueError as error: + raise ValueError(f"input is outside the repository root: {value}") from error + current = root + for part in lexical_relative.parts: + current /= part + if current.is_symlink(): + raise ValueError(f"input must not contain symlinks: {value}") + physical = lexical.resolve(strict=True) + try: + relative = physical.relative_to(root) + except ValueError as error: + raise ValueError(f"input is outside the repository root: {value}") from error + if physical.is_symlink() or not physical.is_file(): + raise ValueError(f"input must be a regular non-symlink file: {value}") + if relative.suffix.casefold() != ".md": + raise ValueError(f"input must be a Markdown file: {value}") + return relative.as_posix(), physical + + +def _load_head_document(config: SlopCopConfig, logical: str, physical: Path) -> Document: + return build_document( + logical, + physical.read_bytes(), + contexts=config.contexts, + max_source_bytes=config.source_max_bytes, + ) + + +def _load_base_document( + config: SlopCopConfig, + logical: str, + *, + root: Path, + baseline_root: Path | None, + baseline_ref: str | None, +) -> Document | None: + content: bytes | None = None + if baseline_root is not None: + if baseline_root.is_symlink(): + raise ValueError(f"baseline root must not be a symlink: {baseline_root}") + base_root = baseline_root.resolve(strict=True) + unresolved_candidate = base_root / logical + current = base_root + for part in Path(logical).parts: + current /= part + if current.is_symlink(): + raise ValueError(f"baseline input must not contain symlinks: {logical}") + candidate = unresolved_candidate.resolve(strict=False) + try: + candidate.relative_to(base_root) + except ValueError as error: + raise ValueError(f"baseline path escapes its root: {logical}") from error + if candidate.exists(): + if candidate.is_symlink() or not candidate.is_file(): + raise ValueError(f"baseline input is not a regular non-symlink file: {logical}") + content = candidate.read_bytes() + elif baseline_ref is not None: + if ( + not _REVISION.fullmatch(baseline_ref) + or ".." in baseline_ref + or baseline_ref.startswith("-") + ): + raise ValueError("baseline ref contains unsupported characters") + completed = subprocess.run( + ["git", "show", f"{baseline_ref}:{logical}"], + cwd=root, + check=False, + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, + ) + if completed.returncode == 0: + content = completed.stdout + if content is None: + return None + return build_document( + logical, + content, + contexts=config.contexts, + max_source_bytes=config.source_max_bytes, + ) + + +def _finding_changes(base: tuple[Finding, ...], head: tuple[Finding, ...]) -> FindingChange: + def key(finding: Finding) -> tuple[str, str, str]: + return finding.rule_id, finding.normalized_key, finding.score_group + + base_by_key: dict[tuple[str, str, str], deque[Finding]] = defaultdict(deque) + for finding in base: + base_by_key[key(finding)].append(finding) + added: list[Finding] = [] + persistent: list[Finding] = [] + for finding in head: + matches = base_by_key[key(finding)] + if matches: + matches.popleft() + persistent.append(finding) + else: + added.append(finding) + removed = [finding for matches in base_by_key.values() for finding in matches] + return FindingChange(added=tuple(added), removed=tuple(removed), persistent=tuple(persistent)) + + +async def _analyze( + document: Document, + registry: RuleRegistry, + config: SlopCopConfig, + base_document: Document | None, +) -> tuple[EngineOutput, Document]: + output = await analyze_document(document, registry, config) + if base_document is None: + return output, document + try: + base = await analyze_document(base_document, registry, config) + comparison = BaseComparison( + score=base.file_result.score, + delta=( + output.file_result.score - base.file_result.score + if output.file_result.score is not None and base.file_result.score is not None + else None + ), + analysis_state=base.file_result.analysis_state, + findings=_finding_changes(base.file_result.findings, output.file_result.findings), + errors=base.file_result.errors, + ) + except Exception as error: + comparison = BaseComparison( + analysis_state=AnalysisState.INCOMPLETE, + errors=( + RuleExecutionError( + source_path=document.path, + error_code="base_analysis_failed", + message=f"base comparison could not complete: {type(error).__name__}", + fatal=False, + ), + ), + ) + return EngineOutput( + file_result=output.file_result.model_copy(update={"base": comparison}), + external_audits=output.external_audits, + ), document + + +def _external_audit(value: Mapping[str, Any]) -> ExternalAudit: + return ExternalAudit( + rule_id=str(value["rule_id"]), + rule_version=int(value["rule_version"]), + service=str(value.get("service", "unknown")), + endpoint_hostname=str(value.get("endpoint_hostname") or value.get("hostname") or "unknown"), + content_digest=str(value.get("content_digest") or value.get("request_content_hash")), + request_schema_version=str(value.get("request_schema_version", "1")), + response_schema_version=( + str(value["response_schema_version"]) + if value.get("response_schema_version") is not None + else None + ), + service_request_id=( + str(value.get("service_request_id") or value.get("request_id")) + if value.get("service_request_id") or value.get("request_id") + else None + ), + judge_revision=( + str(value["judge_revision"]) if value.get("judge_revision") is not None else None + ), + attempts=int(value.get("attempts", 1)), + latency_ms=round(float(value.get("latency_ms", 0))), + outcome=str(value.get("outcome", "unknown")), + response_digest=( + str(value["response_digest"]) if value.get("response_digest") is not None else None + ), + ) + + +def _load_override(path: Path | None, head_sha: str | None) -> OverrideRecord | None: + if path is None: + return None + try: + value = json.loads(path.read_text(encoding="utf-8")) + override = OverrideRecord.model_validate(value) + except (OSError, UnicodeError, json.JSONDecodeError, ValidationError) as error: + raise ValueError(f"invalid override record: {error}") from error + if not head_sha or override.head_sha != head_sha: + raise ValueError("override review is not attached to the analyzed head revision") + return override + + +async def _check(args: argparse.Namespace) -> int: + config = load_config(args.config) + if not args.paths: + result = RunResult( + analysis_state=AnalysisState.NOT_APPLICABLE, + decision=Decision.NOT_APPLICABLE, + score=None, + threshold=config.threshold, + repository=args.repository, + pull_request_number=args.pull_request_number, + base_sha=args.base_sha, + head_sha=args.head_sha, + tool_version=__version__, + config_digest=config.digest, + ) + sys.stdout.write(terminal_report(result)) + if args.html_dir: + write_report_directory(result, args.html_dir) + if args.json_path: + write_json_report(result, args.json_path) + return EXIT_OK + root = _repository_root(args.repository_root) + registry = build_registry(config) + if args.only_rule: + registry = RuleRegistry((registry.by_id(args.only_rule),)) + resolved = [_resolve_input(root, value) for value in args.paths] + baseline_root = args.baseline_root.resolve(strict=True) if args.baseline_root else None + tasks = [] + sources: dict[str, str] = {} + for logical, physical in resolved: + document = _load_head_document(config, logical, physical) + sources[logical] = document.source + base = _load_base_document( + config, + logical, + root=root, + baseline_root=baseline_root, + baseline_ref=args.baseline_ref, + ) + tasks.append(_analyze(document, registry, config, base)) + analyzed = await asyncio.gather(*tasks) + file_results = tuple(output.file_result for output, _ in analyzed) + scores = [result.score for result in file_results if result.score is not None] + score = min(scores) if scores else None + if any(result.analysis_state is AnalysisState.ERROR for result in file_results): + analysis_state = AnalysisState.ERROR + elif any(result.analysis_state is AnalysisState.INCOMPLETE for result in file_results): + analysis_state = AnalysisState.INCOMPLETE + else: + analysis_state = AnalysisState.COMPLETE + decision = ( + Decision.PASS + if all(result.decision is Decision.PASS for result in file_results) + else Decision.FAIL + ) + override = _load_override(args.override_json, args.head_sha) + if override is not None: + decision = Decision.OVERRIDDEN + audits = tuple( + _external_audit(audit) for output, _ in analyzed for audit in output.external_audits + ) + result = RunResult( + analysis_state=analysis_state, + decision=decision, + score=score, + threshold=config.threshold, + repository=args.repository, + pull_request_number=args.pull_request_number, + base_sha=args.base_sha, + head_sha=args.head_sha, + tool_version=__version__, + config_digest=config.digest, + files=file_results, + external_audits=audits, + override=override, + ) + sys.stdout.write(terminal_report(result)) + if args.html_dir: + write_report_directory(result, args.html_dir, sources=sources) + if args.json_path: + write_json_report(result, args.json_path) + return EXIT_OK if result.decision in {Decision.PASS, Decision.OVERRIDDEN} else EXIT_POLICY + + +def _list_rules(config: SlopCopConfig, kind: RuleKind | None) -> int: + registry = build_registry(config) + for configured in registry.list(kind): + metadata = configured.metadata + state = "enabled" if configured.policy.enabled else "disabled" + network = "" + if metadata.execution_kind == "external": + service = configured.policy.service or "unconfigured" + service_config = config.services.get(service) + host = service_config.url if service_config is not None else "unconfigured" + network = f"; sends selected prose to {host}" + print(f"{metadata.id}\t{configured.kind}\t{state}\t{metadata.title}{network}") + return EXIT_OK + + +def _explain(config: SlopCopConfig, rule_id: str) -> int: + configured = build_registry(config).by_id(rule_id) + metadata = configured.metadata + print(f"{metadata.id} (version {metadata.version})") + print(f"Title: {metadata.title}") + print(f"Category: {metadata.category}") + print(f"Kind: {configured.kind}; execution: {metadata.execution_kind}") + print(f"Rationale: {metadata.rationale}") + print(f"Action: {metadata.advice}") + print("Policy:") + print(json.dumps(configured.policy.model_dump(mode="json"), indent=2, sort_keys=True)) + if metadata.execution_kind == "external": + service = configured.policy.service + endpoint = config.services[service].url if service else "unconfigured" + print(f"Content transfer: sends selected prose to {endpoint}") + return EXIT_OK + + +def _validate_cases(registry: RuleRegistry, path: Path) -> None: + import tomllib + + if not path.exists(): + raise ValueError(f"rule case file does not exist: {path}") + values = tomllib.loads(path.read_text(encoding="utf-8")).get("case", []) + coverage: dict[str, set[str]] = defaultdict(set) + for value in values: + rule_id = str(value.get("rule_id", "")) + registry.by_id(rule_id) + coverage[rule_id].add(str(value.get("kind", ""))) + for configured in registry.enabled(): + if configured.policy.cap > 0 and coverage[configured.metadata.id] < { + "positive", + "counterexample", + }: + raise ValueError( + f"scored rule {configured.metadata.id!r} lacks positive and counterexample cases" + ) + + +def _validate(config: SlopCopConfig, config_path: Path, cases: Path | None) -> int: + registry = build_registry(config) + effective_cases = cases + if effective_cases is None: + candidate = config_path.resolve().parent / "tests" / "rule_cases.toml" + if candidate.exists(): + effective_cases = candidate + if effective_cases is not None: + _validate_cases(registry, effective_cases) + print(f"Valid: {len(registry.rules)} rules; configuration {config.digest}") + return EXIT_OK + + +async def _benchmark(config: SlopCopConfig, args: argparse.Namespace) -> int: + root = _repository_root(args.repository_root) + manifest = load_benchmark_manifest(args.manifest) + results = await evaluate_benchmarks( + manifest, + config=config, + registry=build_registry(config), + source_loader=git_source_loader(root), + ) + print("score expected decision reference") + for result in results: + reference = result.reference + status = "ok" if result.within_range else "DRIFT" + expected = f"{reference.min_score}-{reference.max_score}" + print( + f"{result.score:>5} {expected:>8} {result.decision.value:<8} " + f"{status:<5} {reference.name}" + ) + return EXIT_OK if all(result.within_range for result in results) else EXIT_POLICY + + +def main(argv: Sequence[str] | None = None) -> int: + args = _parser().parse_args(argv) + try: + if args.command == "check": + return asyncio.run(_check(args)) + config = load_config(args.config) + if args.command == "list-rules": + return _list_rules(config, args.kind) + if args.command == "explain": + return _explain(config, args.rule_id) + if args.command == "validate-rules": + return _validate(config, args.config, args.cases) + if args.command == "benchmark": + return asyncio.run(_benchmark(config, args)) + except KeyError as error: + print(f"slop-cop: unknown rule {error.args[0]!r}", file=sys.stderr) + return EXIT_ERROR + except (OSError, UnicodeError, ValueError, ValidationError, ReportError) as error: + print(f"slop-cop: {error}", file=sys.stderr) + return EXIT_ERROR + return EXIT_ERROR + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/dev-tools/slop-cop/src/slop_cop/config.py b/dev-tools/slop-cop/src/slop_cop/config.py new file mode 100644 index 00000000..c690ce90 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/config.py @@ -0,0 +1,378 @@ +"""Validated Slop Cop configuration.""" + +from __future__ import annotations + +import hashlib +import json +import re +import tomllib +from enum import StrEnum +from pathlib import Path, PurePosixPath +from typing import Annotated, Any, Literal +from urllib.parse import urlsplit + +import regex +from pydantic import ( + BaseModel, + ConfigDict, + Field, + StringConstraints, + TypeAdapter, + field_validator, + model_validator, +) + +MAX_SOURCE_BYTES = 1_048_576 +MAX_SIGNALS_PER_RULE_FILE = 5_000 +MAX_REGEX_PATTERN_LENGTH = 500 +MAX_EXTERNAL_RESPONSE_BYTES = 1_048_576 +DEFAULT_EXTERNAL_RESPONSE_BYTES = 65_536 +MAX_EXTERNAL_CONCURRENCY = 4 +MAX_EXTERNAL_FILE_SECONDS = 60.0 + +RuleId = Annotated[ + str, + StringConstraints( + strip_whitespace=True, + min_length=3, + max_length=128, + pattern=r"^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)+$", + ), +] +CategoryId = Annotated[ + str, + StringConstraints( + strip_whitespace=True, + min_length=2, + max_length=64, + pattern=r"^[a-z][a-z0-9-]*$", + ), +] +ServiceName = Annotated[ + str, + StringConstraints( + strip_whitespace=True, + min_length=1, + max_length=64, + pattern=r"^[a-z][a-z0-9_]*$", + ), +] +ShortText = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=1_000)] + + +class StrictModel(BaseModel): + """Base for immutable configuration records with no ignored keys.""" + + model_config = ConfigDict(extra="forbid", frozen=True, strict=True) + + +class Severity(StrEnum): + INFO = "info" + WARNING = "warning" + ERROR = "error" + + +class ErrorPolicy(StrEnum): + FAIL = "fail" + ADVISORY = "advisory" + + +class DensityUnit(StrEnum): + WORD = "word" + SENTENCE = "sentence" + PARAGRAPH = "paragraph" + + +class ContextConfig(StrictModel): + scan_blockquotes: bool = False + scan_headings: bool = True + scan_captions: bool = True + + +class DocumentDensityPolicy(StrictModel): + unit: DensityUnit + interval: int = Field(ge=1, le=1_000_000) + allowed_units: int = Field(ge=0, le=MAX_SIGNALS_PER_RULE_FILE) + + +class PassageDensityPolicy(StrictModel): + unit: DensityUnit + window: int = Field(ge=1, le=100_000) + allowed_units: int = Field(ge=0, le=MAX_SIGNALS_PER_RULE_FILE) + first_cost: float = Field(ge=0, le=100) + repeat_cost: float = Field(ge=0, le=100) + cap: float = Field(ge=0, le=100) + + @model_validator(mode="after") + def validate_costs(self) -> PassageDensityPolicy: + if self.cap == 0 and (self.first_cost or self.repeat_cost): + raise ValueError("density costs must be zero when density cap is zero") + if self.cap > 0 and self.first_cost > self.cap: + raise ValueError("density first_cost cannot exceed density cap") + return self + + +class CategoryPolicy(StrictModel): + cap: float = Field(ge=0, le=100) + density: PassageDensityPolicy | None = None + + @model_validator(mode="after") + def validate_density_cap(self) -> CategoryPolicy: + if self.density is not None and self.density.cap > self.cap: + raise ValueError("category density cap cannot exceed category cap") + return self + + +class RulePolicy(StrictModel): + enabled: bool = True + severity: Severity + blocking: bool = False + on_error: ErrorPolicy = ErrorPolicy.FAIL + service: ServiceName | None = None + max_signal_units: int = Field(ge=1, le=MAX_SIGNALS_PER_RULE_FILE) + fixed_allowance: int = Field(ge=0, le=MAX_SIGNALS_PER_RULE_FILE) + first_cost: float = Field(ge=0, le=100) + repeat_cost: float = Field(ge=0, le=100) + cap: float = Field(ge=0, le=100) + document_density: DocumentDensityPolicy | None = None + density: PassageDensityPolicy | None = None + settings: dict[str, Any] = Field(default_factory=dict) + + @model_validator(mode="after") + def validate_policy(self) -> RulePolicy: + if self.first_cost > self.cap: + raise ValueError("first_cost cannot exceed rule cap") + if self.severity is Severity.INFO and (self.blocking or self.cap != 0): + raise ValueError("info rules must be advisory with zero cost") + if self.severity is Severity.ERROR and not self.blocking: + raise ValueError("error rules must be blocking") + if self.blocking and self.severity is not Severity.ERROR: + raise ValueError("blocking rules must use error severity") + if self.cap == 0 and (self.first_cost or self.repeat_cost): + raise ValueError("rule costs must be zero when rule cap is zero") + if self.density is not None and self.density.cap > self.cap: + raise ValueError("density cap cannot exceed rule cap") + return self + + +class ServiceConfig(StrictModel): + url: str = Field(min_length=1, max_length=2_048) + token_env: str = Field(pattern=r"^[A-Z][A-Z0-9_]{1,127}$") + timeout_seconds: float = Field(default=20.0, gt=0, le=60.0) + max_response_bytes: int = Field( + default=DEFAULT_EXTERNAL_RESPONSE_BYTES, + ge=1, + le=MAX_EXTERNAL_RESPONSE_BYTES, + ) + max_attempts: int = Field(default=1, ge=1, le=3) + required_judge_revision: str = Field(min_length=1, max_length=128) + + @field_validator("url") + @classmethod + def validate_url(cls, value: str) -> str: + parsed = urlsplit(value) + if parsed.username or parsed.password or parsed.fragment or not parsed.hostname: + raise ValueError( + "service URL must be an absolute origin without credentials or fragment" + ) + loopback = parsed.hostname in {"127.0.0.1", "::1", "localhost"} + if parsed.scheme != "https" and not (parsed.scheme == "http" and loopback): + raise ValueError("service URL must use HTTPS; HTTP is allowed only for loopback tests") + return value + + +class VocabularyConfig(StrictModel): + allowed_terms: tuple[str, ...] = () + + @field_validator("allowed_terms") + @classmethod + def validate_terms(cls, values: tuple[str, ...]) -> tuple[str, ...]: + cleaned = tuple(value.strip() for value in values) + if any(not value or len(value) > 128 for value in cleaned): + raise ValueError("allowed terms must contain 1 to 128 characters") + if len({value.casefold() for value in cleaned}) != len(cleaned): + raise ValueError("allowed terms must be unique without regard to case") + return cleaned + + +class DeclarativeRuleBase(StrictModel): + id: RuleId + version: int = Field(ge=1) + category: CategoryId + severity: Severity + title: ShortText + rationale: ShortText + advice: ShortText + enabled: bool = True + blocking: bool = False + on_error: ErrorPolicy = ErrorPolicy.FAIL + max_signal_units: int = Field(ge=1, le=MAX_SIGNALS_PER_RULE_FILE) + fixed_allowance: int = Field(ge=0, le=MAX_SIGNALS_PER_RULE_FILE) + first_cost: float = Field(ge=0, le=100) + repeat_cost: float = Field(ge=0, le=100) + cap: float = Field(ge=0, le=100) + document_density: DocumentDensityPolicy | None = None + density: PassageDensityPolicy | None = None + score_group: str | None = Field(default=None, max_length=128) + + @model_validator(mode="after") + def validate_scoring(self) -> DeclarativeRuleBase: + RulePolicy.model_validate( + { + "enabled": self.enabled, + "severity": self.severity, + "blocking": self.blocking, + "on_error": self.on_error, + "max_signal_units": self.max_signal_units, + "fixed_allowance": self.fixed_allowance, + "first_cost": self.first_cost, + "repeat_cost": self.repeat_cost, + "cap": self.cap, + "document_density": self.document_density, + "density": self.density, + } + ) + return self + + +class PhraseRuleConfig(DeclarativeRuleBase): + phrases: tuple[str, ...] = Field(min_length=1, max_length=100) + + @field_validator("phrases") + @classmethod + def validate_phrases(cls, values: tuple[str, ...]) -> tuple[str, ...]: + cleaned = tuple(value.strip() for value in values) + if any(not value or len(value) > 200 for value in cleaned): + raise ValueError("phrases must contain 1 to 200 characters") + if len({value.casefold() for value in cleaned}) != len(cleaned): + raise ValueError("phrases must be unique without regard to case") + return cleaned + + +class RegexFlag(StrEnum): + IGNORECASE = "IGNORECASE" + MULTILINE = "MULTILINE" + DOTALL = "DOTALL" + VERBOSE = "VERBOSE" + + +_UNSAFE_REGEX = re.compile( + r"(?:\\[1-9]|\\g[<{]|\(\?R|\(\?0|\(\?&|\(\?P>|\(\?\(|\(\?<=[^)]|\(\? str: + if _UNSAFE_REGEX.search(value): + raise ValueError("regex contains an unsupported construct") + try: + regex.compile(value) + except regex.error as error: + raise ValueError(f"invalid regex: {error}") from error + return value + + @field_validator("flags") + @classmethod + def validate_flags(cls, values: tuple[RegexFlag, ...]) -> tuple[RegexFlag, ...]: + if len(set(values)) != len(values): + raise ValueError("regex flags must be unique") + return values + + +class CustomRulesConfig(StrictModel): + phrase: tuple[PhraseRuleConfig, ...] = () + regex: tuple[RegexRuleConfig, ...] = () + + +class SlopCopConfig(StrictModel): + schema_version: Literal[1] + profile: Literal["dev-notes"] + threshold: int = Field(ge=0, le=100) + paths: tuple[str, ...] = Field(min_length=1, max_length=32) + contexts: ContextConfig = ContextConfig() + categories: dict[CategoryId, CategoryPolicy] + rules: dict[RuleId, RulePolicy] + vocabulary: VocabularyConfig = VocabularyConfig() + custom_rules: CustomRulesConfig = CustomRulesConfig() + services: dict[ServiceName, ServiceConfig] = Field(default_factory=dict) + source_max_bytes: int = Field(default=MAX_SOURCE_BYTES, ge=1, le=MAX_SOURCE_BYTES) + external_concurrency: int = Field( + default=MAX_EXTERNAL_CONCURRENCY, ge=1, le=MAX_EXTERNAL_CONCURRENCY + ) + external_file_timeout_seconds: float = Field( + default=MAX_EXTERNAL_FILE_SECONDS, gt=0, le=MAX_EXTERNAL_FILE_SECONDS + ) + + @field_validator("paths") + @classmethod + def validate_paths(cls, paths: tuple[str, ...]) -> tuple[str, ...]: + for path in paths: + pure = PurePosixPath(path) + if not path or pure.is_absolute() or ".." in pure.parts or "\\" in path: + raise ValueError("scan paths must be nonempty relative POSIX globs without '..'") + return paths + + @model_validator(mode="after") + def validate_references(self) -> SlopCopConfig: + declarative = (*self.custom_rules.phrase, *self.custom_rules.regex) + all_ids = [*self.rules, *(rule.id for rule in declarative)] + if len(set(all_ids)) != len(all_ids): + raise ValueError("rule IDs must be unique across Python and declarative rules") + for rule in declarative: + if rule.category not in self.categories: + raise ValueError(f"rule {rule.id!r} references unknown category {rule.category!r}") + for rule_id, policy in self.rules.items(): + if policy.service is not None and policy.service not in self.services: + raise ValueError(f"rule {rule_id!r} references unknown service {policy.service!r}") + return self + + def canonical_json(self) -> str: + return json.dumps( + self.model_dump(mode="json"), + ensure_ascii=False, + separators=(",", ":"), + sort_keys=True, + ) + + @property + def digest(self) -> str: + return hashlib.sha256(self.canonical_json().encode()).hexdigest() + + +_CONFIG_ADAPTER = TypeAdapter(SlopCopConfig) + + +def load_config(path: str | Path) -> SlopCopConfig: + """Load and strictly validate a UTF-8 TOML configuration file.""" + + config_path = Path(path) + try: + data = tomllib.loads(config_path.read_text(encoding="utf-8")) + except (OSError, UnicodeError, tomllib.TOMLDecodeError) as error: + raise ValueError(f"cannot load configuration {config_path}: {error}") from error + # TOML has no tuple or enum scalar types. Allow those representation + # conversions while retaining the model's bounded values and forbidden keys. + return _CONFIG_ADAPTER.validate_python(data, strict=False) + + +__all__ = [ + "CategoryPolicy", + "ContextConfig", + "DensityUnit", + "DocumentDensityPolicy", + "ErrorPolicy", + "PassageDensityPolicy", + "PhraseRuleConfig", + "RegexFlag", + "RegexRuleConfig", + "RulePolicy", + "ServiceConfig", + "Severity", + "SlopCopConfig", + "load_config", +] diff --git a/dev-tools/slop-cop/src/slop_cop/document.py b/dev-tools/slop-cop/src/slop_cop/document.py new file mode 100644 index 00000000..7a4a33ff --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/document.py @@ -0,0 +1,642 @@ +"""Source-preserving Markdown projection and prose segmentation.""" + +from __future__ import annotations + +import bisect +import re +import unicodedata +from itertools import pairwise +from pathlib import Path + +import regex +from pydantic import Field, model_validator + +from slop_cop.config import MAX_SOURCE_BYTES, ContextConfig, RuleId, StrictModel + +_FENCE_OPEN = re.compile(r"^( {0,3})(`{3,}|~{3,})[^\r\n]*(?:\r?\n|$)", re.MULTILINE) +_SUPPRESSION = re.compile( + r"^[ \t]*[ \t]*(?:\r?\n|$)', + re.MULTILINE, +) +_GENERATED_START = "" +_GENERATED_END = "" +_WORD = regex.compile(r"[\p{L}\p{N}](?:[\p{L}\p{N}\p{M}]|['’](?=[\p{L}\p{N}])|-(?=[\p{L}\p{N}]))*") +_ABBREVIATIONS = frozenset({"e.g.", "i.e.", "mr.", "mrs.", "ms.", "dr.", "vs.", "etc."}) + + +class ProjectionError(ValueError): + """Raised when Markdown cannot be projected without ambiguous source ranges.""" + + def __init__(self, message: str, source: str, offset: int = 0) -> None: + line_starts = _line_starts(source) + line, column = line_column(line_starts, offset) + super().__init__(f"{message} at line {line}, column {column}") + self.offset = offset + self.line = line + self.column = column + + +class Span(StrictModel): + start: int = Field(ge=0) + end: int = Field(ge=0) + + @model_validator(mode="after") + def validate_order(self) -> Span: + if self.end < self.start: + raise ValueError("span end must not precede start") + return self + + +class MaskedRange(Span): + reasons: tuple[str, ...] = Field(min_length=1) + + +class ProseSegment(Span): + text: str + normalized: str + + +class SuppressionDirective(StrictModel): + rule_ids: tuple[RuleId, ...] = Field(min_length=1) + reason: str = Field(min_length=1, max_length=500) + directive_span: Span + target_span: Span + + +class DocumentMetrics(StrictModel): + source_bytes: int = Field(ge=0, le=MAX_SOURCE_BYTES) + source_code_points: int = Field(ge=0) + analyzable_words: int = Field(ge=0) + analyzable_sentences: int = Field(ge=0) + analyzable_paragraphs: int = Field(ge=0) + masked_code_points: int = Field(ge=0) + + +class Document(StrictModel): + path: str = Field(min_length=1, max_length=4_096) + source: str + prose_projection: str + line_starts: tuple[int, ...] + front_matter: tuple[tuple[str, str], ...] = () + masked_ranges: tuple[MaskedRange, ...] + suppressions: tuple[SuppressionDirective, ...] + tokens: tuple[ProseSegment, ...] + sentences: tuple[ProseSegment, ...] + paragraphs: tuple[ProseSegment, ...] + metrics: DocumentMetrics + + @model_validator(mode="after") + def validate_projection(self) -> Document: + if len(self.source) != len(self.prose_projection): + raise ValueError("prose projection must have the same length as source") + for index, character in enumerate(self.source): + if character in "\r\n" and self.prose_projection[index] != character: + raise ValueError("prose projection must preserve line endings") + if self.line_starts != _line_starts(self.source): + raise ValueError("line-start index does not match source") + return self + + def line_column(self, offset: int) -> tuple[int, int]: + if not 0 <= offset <= len(self.source): + raise ValueError("offset lies outside source") + return line_column(self.line_starts, offset) + + def source_span(self, span: Span) -> str: + if span.end > len(self.source): + raise ValueError("span lies outside source") + return self.source[span.start : span.end] + + +def normalize_key(value: str) -> str: + return unicodedata.normalize("NFKC", value).casefold() + + +def line_column(line_starts: tuple[int, ...], offset: int) -> tuple[int, int]: + line_index = bisect.bisect_right(line_starts, offset) - 1 + return line_index + 1, offset - line_starts[line_index] + 1 + + +def _line_starts(source: str) -> tuple[int, ...]: + return (0, *(match.end() for match in re.finditer("\n", source))) + + +def _line_end(source: str, offset: int) -> int: + newline = source.find("\n", offset) + return len(source) if newline < 0 else newline + 1 + + +def _covered(offset: int, ranges: list[tuple[int, int, str]]) -> bool: + return any(start <= offset < end for start, end, _ in ranges) + + +def _add_front_matter( + source: str, ranges: list[tuple[int, int, str]] +) -> tuple[tuple[str, str], ...]: + first_end = _line_end(source, 0) + if source[:first_end].rstrip("\r\n") != "---": + return () + cursor = first_end + end = None + while cursor < len(source): + next_end = _line_end(source, cursor) + if source[cursor:next_end].rstrip("\r\n") in {"---", "..."}: + end = next_end + break + cursor = next_end + if end is None: + raise ProjectionError("unterminated YAML front matter", source) + ranges.append((0, end, "front-matter")) + metadata: list[tuple[str, str]] = [] + for line in source[first_end:cursor].splitlines(): + match = re.match(r"^([A-Za-z][A-Za-z0-9_-]*):\s*(.*?)\s*$", line) + if match and match.group(1) in {"title", "description", "date", "author"}: + metadata.append((match.group(1), match.group(2).strip("'\""))) + return tuple(metadata) + + +def _add_generated_ranges(source: str, ranges: list[tuple[int, int, str]]) -> None: + cursor = 0 + while True: + start = source.find(_GENERATED_START, cursor) + end_only = source.find(_GENERATED_END, cursor) + if start < 0: + if end_only >= 0: + raise ProjectionError("generated byline end marker has no start", source, end_only) + return + if end_only >= 0 and end_only < start: + raise ProjectionError("generated byline end marker has no start", source, end_only) + end_marker = source.find(_GENERATED_END, start + len(_GENERATED_START)) + if end_marker < 0: + raise ProjectionError("unterminated generated byline range", source, start) + nested = source.find(_GENERATED_START, start + len(_GENERATED_START), end_marker) + if nested >= 0: + raise ProjectionError("nested generated byline start marker", source, nested) + end = end_marker + len(_GENERATED_END) + ranges.append((start, end, "generated-byline")) + cursor = end + + +def _add_fenced_code(source: str, ranges: list[tuple[int, int, str]]) -> None: + cursor = 0 + while cursor < len(source): + match = _FENCE_OPEN.search(source, cursor) + if match is None: + return + cursor = match.end() + if _covered(match.start(), ranges): + continue + fence = match.group(2) + closer = re.compile( + rf"^ {{0,3}}{re.escape(fence[0])}{{{len(fence)},}}[ \t]*(?:\r?\n|$)", re.MULTILINE + ).search(source, match.end()) + if closer is None: + raise ProjectionError("unterminated fenced code block", source, match.start()) + ranges.append((match.start(), closer.end(), "fenced-code")) + cursor = closer.end() + + +def _add_suppressions( + source: str, ranges: list[tuple[int, int, str]] +) -> list[tuple[tuple[RuleId, ...], str, Span]]: + parsed: list[tuple[tuple[RuleId, ...], str, Span]] = [] + matches = list(_SUPPRESSION.finditer(source)) + valid_starts = {match.start() for match in matches} + for occurrence in re.finditer(r"", start + 4) + if end < 0: + if not _covered(start, ranges): + raise ProjectionError("unterminated HTML comment", source, start) + return + end += 3 + if not _covered(start, ranges): + ranges.append((start, end, "html-comment")) + cursor = end + + +def _add_inline_code(source: str, ranges: list[tuple[int, int, str]]) -> None: + cursor = 0 + while cursor < len(source): + start = source.find("`", cursor) + if start < 0: + return + if _covered(start, ranges): + cursor = start + 1 + continue + run_end = start + 1 + while run_end < len(source) and source[run_end] == "`": + run_end += 1 + delimiter = source[start:run_end] + end = source.find(delimiter, run_end) + if end < 0: + raise ProjectionError("unterminated inline code span", source, start) + ranges.append((start, end + len(delimiter), "inline-code")) + cursor = end + len(delimiter) + + +def _add_html_tags(source: str, ranges: list[tuple[int, int, str]]) -> None: + cursor = 0 + while cursor < len(source): + start = source.find("<", cursor) + if start < 0: + return + if _covered(start, ranges): + cursor = start + 1 + continue + if ( + start + 1 >= len(source) + or source[start + 1] not in "/!?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + ): + cursor = start + 1 + continue + quote: str | None = None + end = start + 1 + while end < len(source): + char = source[end] + if quote is not None: + if char == quote: + quote = None + elif char in "'\"": + quote = char + elif char == ">": + ranges.append((start, end + 1, "html-tag")) + cursor = end + 1 + break + elif char in "\r\n": + cursor = start + 1 + break + end += 1 + else: + cursor = start + 1 + + +def _find_closing_paren(source: str, start: int) -> int | None: + depth = 1 + escaped = False + for index in range(start, len(source)): + char = source[index] + if escaped: + escaped = False + elif char == "\\": + escaped = True + elif char == "(": + depth += 1 + elif char == ")": + depth -= 1 + if depth == 0: + return index + elif char in "\r\n" and depth == 1: + return None + return None + + +def _add_links_and_images(source: str, ranges: list[tuple[int, int, str]]) -> None: + reference = re.compile(r"^ {0,3}\[[^\]\r\n]+\]:[^\r\n]*(?:\r?\n|$)", re.MULTILINE) + for match in reference.finditer(source): + if not _covered(match.start(), ranges): + ranges.append((match.start(), match.end(), "link-destination")) + + opener = re.compile(r"!?\[") + cursor = 0 + while (opener_match := opener.search(source, cursor)) is not None: + start = opener_match.start() + cursor = opener_match.end() + if _covered(start, ranges): + continue + label_end = source.find("]", opener_match.end()) + if label_end < 0: + continue + is_image = source[start] == "!" + if label_end + 1 < len(source) and source[label_end + 1] == "(": + close = _find_closing_paren(source, label_end + 2) + if close is None: + raise ProjectionError( + "unterminated Markdown link destination", source, label_end + 1 + ) + if is_image: + ranges.append((start, close + 1, "image")) + else: + ranges.extend( + ( + (start, opener_match.end(), "link-markup"), + (label_end, close + 1, "link-destination"), + ) + ) + cursor = close + 1 + elif label_end + 1 < len(source) and source[label_end + 1] == "[": + ref_end = source.find("]", label_end + 2) + if ref_end >= 0: + if is_image: + ranges.append((start, ref_end + 1, "image")) + else: + ranges.extend( + ( + (start, opener_match.end(), "link-markup"), + (label_end, ref_end + 1, "link-destination"), + ) + ) + cursor = ref_end + 1 + + +def _add_blockquotes(source: str, ranges: list[tuple[int, int, str]]) -> None: + for match in re.finditer(r"^ {0,3}>[^\r\n]*(?:\r?\n|$)", source, re.MULTILINE): + if not _covered(match.start(), ranges): + ranges.append((match.start(), match.end(), "blockquote")) + + +def _add_disabled_visible_contexts( + source: str, + ranges: list[tuple[int, int, str]], + contexts: ContextConfig, +) -> None: + if not contexts.scan_headings: + for match in re.finditer(r"^ {0,3}#{1,6}\s+[^\r\n]*(?:\r?\n|$)", source, re.MULTILINE): + if not _covered(match.start(), ranges): + ranges.append((match.start(), match.end(), "heading")) + if not contexts.scan_captions: + for match in re.finditer( + r"]*>.*?", + source, + re.IGNORECASE | re.DOTALL, + ): + if not _covered(match.start(), ranges): + ranges.append((match.start(), match.end(), "caption")) + + +def _merge_ranges(source: str, ranges: list[tuple[int, int, str]]) -> tuple[MaskedRange, ...]: + boundaries: list[tuple[int, int, str]] = [] + for start, end, reason in ranges: + if not 0 <= start <= end <= len(source): + raise ProjectionError("invalid masked range", source, max(0, start)) + if start != end: + boundaries.append((start, end, reason)) + if not boundaries: + return () + points = sorted({point for start, end, _ in boundaries for point in (start, end)}) + pieces: list[MaskedRange] = [] + for start, end in pairwise(points): + reasons = tuple( + sorted({reason for left, right, reason in boundaries if left < end and right > start}) + ) + if not reasons: + continue + if pieces and pieces[-1].end == start and pieces[-1].reasons == reasons: + previous = pieces.pop() + pieces.append(MaskedRange(start=previous.start, end=end, reasons=reasons)) + else: + pieces.append(MaskedRange(start=start, end=end, reasons=reasons)) + return tuple(pieces) + + +def _project(source: str, masked: tuple[MaskedRange, ...]) -> str: + characters = list(source) + for item in masked: + for index in range(item.start, item.end): + if characters[index] not in "\r\n": + characters[index] = " " + return "".join(characters) + + +def _segment_tokens(projection: str) -> tuple[ProseSegment, ...]: + return tuple( + ProseSegment( + start=match.start(), + end=match.end(), + text=match.group(), + normalized=normalize_key(match.group()), + ) + for match in _WORD.finditer(projection) + ) + + +def _paragraph_spans(projection: str) -> list[tuple[int, int]]: + spans: list[tuple[int, int]] = [] + current_start: int | None = None + cursor = 0 + for line in projection.splitlines(keepends=True): + content = line.rstrip("\r\n") + stripped = content.strip() + is_boundary = bool(re.match(r" {0,3}(?:#{1,6}\s|[-+*]\s|\d+[.)]\s)", content)) + if not stripped: + if current_start is not None: + spans.append((current_start, cursor)) + current_start = None + elif is_boundary: + if current_start is not None: + spans.append((current_start, cursor)) + spans.append((cursor, cursor + len(content))) + current_start = None + elif current_start is None: + current_start = cursor + cursor += len(line) + if current_start is not None: + spans.append((current_start, len(projection))) + return [(start, end) for start, end in spans if projection[start:end].strip()] + + +def _segment_paragraphs(projection: str) -> tuple[ProseSegment, ...]: + return tuple( + ProseSegment( + start=start, + end=end, + text=projection[start:end], + normalized=normalize_key(projection[start:end].strip()), + ) + for start, end in _paragraph_spans(projection) + ) + + +def _segment_sentences( + projection: str, paragraphs: tuple[ProseSegment, ...] +) -> tuple[ProseSegment, ...]: + sentences: list[ProseSegment] = [] + for paragraph in paragraphs: + start = paragraph.start + cursor = start + while cursor < paragraph.end: + while cursor < paragraph.end and projection[cursor].isspace(): + cursor += 1 + if cursor >= paragraph.end: + break + end = paragraph.end + for match in re.finditer(r"[.!?]+(?:[\"'”’)]*)", projection[cursor : paragraph.end]): + candidate_end = cursor + match.end() + token_start = projection.rfind(" ", cursor, candidate_end) + 1 + candidate = projection[token_start:candidate_end].casefold() + if candidate in _ABBREVIATIONS: + continue + if candidate_end == paragraph.end or projection[candidate_end].isspace(): + end = candidate_end + break + text = projection[cursor:end] + if text.strip(): + sentences.append( + ProseSegment( + start=cursor, end=end, text=text, normalized=normalize_key(text.strip()) + ) + ) + cursor = end + return tuple(sentences) + + +def _bind_suppressions( + source: str, + projection: str, + parsed: list[tuple[tuple[RuleId, ...], str, Span]], + paragraphs: tuple[ProseSegment, ...], +) -> tuple[SuppressionDirective, ...]: + directives: list[SuppressionDirective] = [] + for ids, reason, span in parsed: + target = next((paragraph for paragraph in paragraphs if paragraph.start >= span.end), None) + if target is None: + raise ProjectionError("suppression has no following prose block", source, span.start) + if projection[span.end : target.start].strip(): + raise ProjectionError( + "suppression is not immediately before a prose block", source, span.start + ) + directives.append( + SuppressionDirective( + rule_ids=ids, + reason=reason, + directive_span=span, + target_span=Span(start=target.start, end=target.end), + ) + ) + return tuple(directives) + + +def build_document( + path: str | Path, + content: bytes | str, + *, + contexts: ContextConfig | None = None, + max_source_bytes: int = MAX_SOURCE_BYTES, +) -> Document: + """Build an immutable source-mapped prose view from one Markdown document.""" + + if not 1 <= max_source_bytes <= MAX_SOURCE_BYTES: + raise ValueError(f"max_source_bytes must be between 1 and {MAX_SOURCE_BYTES}") + if isinstance(content, bytes): + raw = content + if len(raw) > max_source_bytes: + raise ProjectionError(f"source exceeds {max_source_bytes} bytes", "") + try: + source = raw.decode("utf-8", errors="strict") + except UnicodeDecodeError as error: + raise ProjectionError("source is not valid UTF-8", "", error.start) from error + else: + source = content + raw = source.encode("utf-8") + if len(raw) > max_source_bytes: + raise ProjectionError(f"source exceeds {max_source_bytes} bytes", source) + nul = source.find("\0") + if nul >= 0: + raise ProjectionError("source contains a NUL character", source, nul) + + effective_contexts = contexts or ContextConfig() + ranges: list[tuple[int, int, str]] = [] + front_matter = _add_front_matter(source, ranges) + _add_generated_ranges(source, ranges) + _add_fenced_code(source, ranges) + parsed_suppressions = _add_suppressions(source, ranges) + _add_html_comments(source, ranges) + _add_inline_code(source, ranges) + _add_html_tags(source, ranges) + _add_links_and_images(source, ranges) + if not effective_contexts.scan_blockquotes: + _add_blockquotes(source, ranges) + _add_disabled_visible_contexts(source, ranges, effective_contexts) + + masked = _merge_ranges(source, ranges) + projection = _project(source, masked) + tokens = _segment_tokens(projection) + paragraphs = _segment_paragraphs(projection) + sentences = _segment_sentences(projection, paragraphs) + suppressions = _bind_suppressions(source, projection, parsed_suppressions, paragraphs) + masked_count = sum( + 1 + for item in masked + for character in source[item.start : item.end] + if character not in "\r\n" + ) + metrics = DocumentMetrics( + source_bytes=len(raw), + source_code_points=len(source), + analyzable_words=len(tokens), + analyzable_sentences=len(sentences), + analyzable_paragraphs=len(paragraphs), + masked_code_points=masked_count, + ) + return Document( + path=Path(path).as_posix(), + source=source, + prose_projection=projection, + line_starts=_line_starts(source), + front_matter=front_matter, + masked_ranges=masked, + suppressions=suppressions, + tokens=tokens, + sentences=sentences, + paragraphs=paragraphs, + metrics=metrics, + ) + + +def load_document( + path: str | Path, + *, + contexts: ContextConfig | None = None, + max_source_bytes: int = MAX_SOURCE_BYTES, +) -> Document: + """Read a regular Markdown file and build its source-mapped prose view.""" + + source_path = Path(path) + if source_path.is_symlink() or not source_path.is_file(): + raise ValueError(f"input must be a regular non-symlink file: {source_path}") + return build_document( + source_path, + source_path.read_bytes(), + contexts=contexts, + max_source_bytes=max_source_bytes, + ) + + +__all__ = [ + "Document", + "DocumentMetrics", + "MaskedRange", + "ProjectionError", + "ProseSegment", + "Span", + "SuppressionDirective", + "build_document", + "line_column", + "load_document", + "normalize_key", +] diff --git a/dev-tools/slop-cop/src/slop_cop/engine.py b/dev-tools/slop-cop/src/slop_cop/engine.py new file mode 100644 index 00000000..f9b14296 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/engine.py @@ -0,0 +1,362 @@ +from __future__ import annotations + +import asyncio +from collections.abc import Mapping +from contextlib import nullcontext +from dataclasses import dataclass +from typing import Any + +from slop_cop.config import ErrorPolicy, Severity, SlopCopConfig +from slop_cop.document import Document, Span +from slop_cop.findings import ( + AnalysisState, + AppliedSuppression, + Decision, + FileResult, + Finding, + RuleExecutionError, +) +from slop_cop.rules.api import RuleContext, RuleEvaluation, validate_evaluation +from slop_cop.rules.registry import ConfiguredRule, RuleRegistry +from slop_cop.runtime import RuntimeManager +from slop_cop.scoring import score_findings + + +@dataclass(frozen=True, slots=True) +class EngineOutput: + file_result: FileResult + external_audits: tuple[Mapping[str, Any], ...] = () + + +def _excerpt(source: str, start: int, end: int, limit: int = 240) -> str: + left = max(0, start - 80) + right = min(len(source), max(end + 80, left + limit)) + value = " ".join(source[left:right].split()) + return value[:limit] + + +def _finding( + document: Document, + configured: ConfiguredRule, + signal: Any, +) -> Finding: + metadata = configured.metadata + policy = configured.policy + span = None + line = column = None + excerpt = signal.detail or "" + if signal.scope == "span": + span = Span(start=signal.start, end=signal.end) + line, column = document.line_column(signal.start) + excerpt = _excerpt(document.source, signal.start, signal.end) + advisory = policy.severity is Severity.INFO or policy.cap == 0 + return Finding( + rule_id=metadata.id, + category=metadata.category, + severity=policy.severity, + source_path=document.path, + span=span, + line=line, + column=column, + excerpt=excerpt[:1000], + normalized_key=signal.key, + score_group=metadata.score_group or metadata.id, + explanation=metadata.rationale, + advice=metadata.advice, + units=signal.units, + advisory=advisory, + chargeable=not advisory, + blocking=policy.blocking, + ) + + +def _apply_suppressions( + document: Document, + findings: tuple[Finding, ...], + registry: RuleRegistry, +) -> tuple[tuple[Finding, ...], tuple[RuleExecutionError, ...]]: + values = list(findings) + errors: list[RuleExecutionError] = [] + known_ids = {configured.metadata.id for configured in registry} + for directive in document.suppressions: + for rule_id in directive.rule_ids: + if rule_id not in known_ids: + errors.append( + RuleExecutionError( + rule_id=None, + source_path=document.path, + error_code="unknown_suppression_rule", + message=f"suppression references unknown rule {rule_id!r}", + fatal=True, + ) + ) + continue + selected = next( + ( + index + for index, finding in enumerate(values) + if finding.rule_id == rule_id + and not finding.suppressed + and finding.span is not None + and directive.target_span.start + <= finding.span.start + < directive.target_span.end + ), + None, + ) + if selected is None: + errors.append( + RuleExecutionError( + rule_id=rule_id, + source_path=document.path, + error_code="unused_suppression", + message=f"suppression for {rule_id!r} did not match the next prose block", + fatal=True, + ) + ) + continue + finding = values[selected] + values[selected] = finding.model_copy( + update={ + "suppressed": True, + "suppression_reason": directive.reason, + "chargeable": False, + "advisory": True, + "blocking": False, + } + ) + return tuple(values), tuple(errors) + + +def _materially_overlaps(left: Finding, right: Finding) -> bool: + if left.span is None or right.span is None: + return False + overlap = min(left.span.end, right.span.end) - max(left.span.start, right.span.start) + if overlap <= 0: + return False + shorter = min(left.span.end - left.span.start, right.span.end - right.span.start) + return overlap == shorter or (left.score_group == right.score_group and overlap * 2 >= shorter) + + +def deduplicate_findings( + findings: tuple[Finding, ...], registry: RuleRegistry +) -> tuple[Finding, ...]: + order = {configured.metadata.id: configured.order for configured in registry} + values = list(findings) + parent = list(range(len(values))) + + def find(index: int) -> int: + while parent[index] != index: + parent[index] = parent[parent[index]] + index = parent[index] + return index + + def union(left: int, right: int) -> None: + left_root, right_root = find(left), find(right) + if left_root != right_root: + parent[right_root] = left_root + + mapped = [index for index, finding in enumerate(values) if finding.span is not None] + mapped.sort(key=lambda index: (values[index].span.start, values[index].span.end)) # type: ignore[union-attr] + for position, left_index in enumerate(mapped): + left = values[left_index] + assert left.span is not None + for right_index in mapped[position + 1 :]: + right = values[right_index] + assert right.span is not None + if right.span.start >= left.span.end: + break + if _materially_overlaps(left, right): + union(left_index, right_index) + + clusters: dict[int, list[int]] = {} + for index in range(len(values)): + clusters.setdefault(find(index), []).append(index) + severity_rank = {Severity.ERROR: 0, Severity.WARNING: 1, Severity.INFO: 2} + + def span_length(finding: Finding) -> int: + if finding.span is None: + return 1_000_000 + return finding.span.end - finding.span.start + + for indexes in clusters.values(): + if len(indexes) < 2: + continue + primary = min( + indexes, + key=lambda index: ( + values[index].suppressed, + not values[index].blocking, + severity_rank[values[index].severity], + order.get(values[index].rule_id, 1_000_000), + span_length(values[index]), + ), + ) + related = tuple(sorted({values[index].rule_id for index in indexes if index != primary})) + values[primary] = values[primary].model_copy(update={"related_rule_ids": related}) + for index in indexes: + if index == primary or values[index].suppressed: + continue + values[index] = values[index].model_copy( + update={"chargeable": False, "advisory": True, "blocking": False} + ) + return tuple( + sorted( + values, + key=lambda finding: ( + finding.span.start if finding.span is not None else len(values) + 1, + order.get(finding.rule_id, 1_000_000), + finding.normalized_key, + ), + ) + ) + + +async def _evaluate_rule( + configured: ConfiguredRule, + context: RuleContext, + manager: RuntimeManager, + timeout: float, +) -> tuple[ConfiguredRule, RuleEvaluation | None, Exception | None]: + try: + async with asyncio.timeout(timeout): + evaluation = await configured.rule.evaluate( + context, manager.for_rule(configured.metadata) + ) + evaluation = validate_evaluation( + configured.metadata, + evaluation, + document_length=len(context.source), + max_signal_units=configured.policy.max_signal_units, + ) + return configured, evaluation, None + except Exception as error: + return configured, None, error + + +async def analyze_document( + document: Document, + registry: RuleRegistry, + config: SlopCopConfig, + *, + runtime_manager: RuntimeManager | None = None, +) -> EngineOutput: + if document.metrics.analyzable_words == 0: + initial_error = RuleExecutionError( + source_path=document.path, + error_code="no_analyzable_prose", + message="the document contains no analyzable prose", + fatal=True, + ) + result = FileResult( + path=document.path, + analysis_state=AnalysisState.ERROR, + decision=Decision.FAIL, + score=None, + threshold=config.threshold, + hard_fail=False, + metrics=document.metrics, + errors=(initial_error,), + ) + return EngineOutput(result) + + context = RuleContext( + document=document, + repository_terms=frozenset(term.casefold() for term in config.vocabulary.allowed_terms), + ) + + manager_scope = nullcontext(runtime_manager) if runtime_manager else RuntimeManager(config) + async with manager_scope as manager: + async with asyncio.TaskGroup() as group: + tasks = [ + group.create_task( + _evaluate_rule( + configured, + context, + manager, + config.external_file_timeout_seconds, + ) + ) + for configured in registry.enabled() + ] + evaluated = [task.result() for task in tasks] + + evaluated.sort(key=lambda row: row[0].order) + findings: list[Finding] = [] + errors: list[RuleExecutionError] = [] + audits: list[Mapping[str, Any]] = [] + for configured, evaluation, execution_error in evaluated: + if execution_error is not None: + fatal = configured.policy.on_error is ErrorPolicy.FAIL + errors.append( + RuleExecutionError( + rule_id=configured.metadata.id, + source_path=document.path, + error_code="rule_execution_failed", + message=f"rule {configured.metadata.id!r} could not complete", + fatal=fatal, + ) + ) + continue + assert evaluation is not None + findings.extend(_finding(document, configured, signal) for signal in evaluation.signals) + if evaluation.audit: + audits.append( + { + "rule_id": configured.metadata.id, + "rule_version": configured.metadata.version, + **evaluation.audit, + } + ) + + suppressed, suppression_errors = _apply_suppressions(document, tuple(findings), registry) + errors.extend(suppression_errors) + deduplicated = deduplicate_findings(suppressed, registry) + scored = score_findings(document, deduplicated, registry, config) + fatal = any(error.fatal for error in errors) + incomplete = any(not error.fatal for error in errors) + decision = ( + Decision.PASS + if scored.score >= config.threshold and not scored.hard_fail and not fatal + else Decision.FAIL + ) + state = ( + AnalysisState.ERROR + if fatal + else AnalysisState.INCOMPLETE + if incomplete + else AnalysisState.COMPLETE + ) + suppression_records = tuple( + AppliedSuppression( + rule_ids=directive.rule_ids, + reason=directive.reason, + directive_span=directive.directive_span, + target_span=directive.target_span, + suppressed_finding_ids=tuple( + f"{finding.rule_id}:{finding.line}:{finding.column}" + for finding in deduplicated + if finding.suppressed + and finding.suppression_reason == directive.reason + and finding.rule_id in directive.rule_ids + ), + ) + for directive in document.suppressions + ) + return EngineOutput( + FileResult( + path=document.path, + analysis_state=state, + decision=decision, + score=scored.score, + threshold=config.threshold, + hard_fail=scored.hard_fail, + metrics=document.metrics, + findings=deduplicated, + suppressions=suppression_records, + rule_costs=scored.rule_costs, + category_costs=scored.category_costs, + errors=tuple(errors), + ), + tuple(audits), + ) diff --git a/dev-tools/slop-cop/src/slop_cop/findings.py b/dev-tools/slop-cop/src/slop_cop/findings.py new file mode 100644 index 00000000..3fcf1005 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/findings.py @@ -0,0 +1,242 @@ +"""Immutable analysis and report records.""" + +from __future__ import annotations + +from enum import StrEnum +from typing import Annotated, Literal + +from pydantic import Field, StringConstraints, model_validator + +from slop_cop.config import CategoryId, RuleId, Severity, StrictModel +from slop_cop.document import DocumentMetrics, Span + +BoundedText = Annotated[str, StringConstraints(max_length=1_000)] +Digest = Annotated[str, StringConstraints(pattern=r"^[0-9a-f]{64}$")] +Revision = Annotated[str, StringConstraints(min_length=7, max_length=64, pattern=r"^[0-9a-f]+$")] + + +class AnalysisState(StrEnum): + COMPLETE = "complete" + INCOMPLETE = "incomplete" + ERROR = "error" + NOT_APPLICABLE = "not_applicable" + + +class Decision(StrEnum): + PASS = "pass" + FAIL = "fail" + OVERRIDDEN = "overridden" + NOT_APPLICABLE = "not_applicable" + + +class Finding(StrictModel): + rule_id: RuleId + category: CategoryId + severity: Severity + source_path: str = Field(min_length=1, max_length=4_096) + span: Span | None + line: int | None = Field(default=None, ge=1) + column: int | None = Field(default=None, ge=1) + excerpt: BoundedText = "" + normalized_key: str = Field(min_length=1, max_length=256) + score_group: str = Field(min_length=1, max_length=128) + explanation: BoundedText + advice: BoundedText + units: int = Field(default=1, ge=1, le=5_000) + advisory: bool = False + chargeable: bool = True + suppressed: bool = False + blocking: bool = False + suppression_reason: BoundedText | None = None + related_rule_ids: tuple[RuleId, ...] = () + + @model_validator(mode="after") + def validate_location_and_state(self) -> Finding: + if self.span is None and (self.line is not None or self.column is not None): + raise ValueError("document-scoped findings cannot have line or column") + if self.span is not None and (self.line is None or self.column is None): + raise ValueError("source-mapped findings require line and column") + if self.suppressed and not self.suppression_reason: + raise ValueError("suppressed findings require a reason") + if not self.suppressed and self.suppression_reason is not None: + raise ValueError("unsuppressed findings cannot have a suppression reason") + if self.advisory and self.chargeable: + raise ValueError("advisory findings cannot be chargeable") + return self + + +class DensityMeasurement(StrictModel): + unit: Literal["word", "sentence", "paragraph"] + window: int = Field(ge=1) + allowed_units: int = Field(ge=0) + peak_units: int = Field(ge=0) + peak_excess: int = Field(ge=0) + cost: float = Field(ge=0, le=100) + window_span: Span | None = None + + +class RuleCost(StrictModel): + rule_id: RuleId + deduplicated_units: int = Field(ge=0) + allowance: int = Field(ge=0) + document_excess: int = Field(ge=0) + base_cost: float = Field(ge=0, le=100) + density: DensityMeasurement | None = None + cap: float = Field(ge=0, le=100) + charged_cost: float = Field(ge=0, le=100) + + @model_validator(mode="after") + def validate_arithmetic_bounds(self) -> RuleCost: + if self.document_excess != max(0, self.deduplicated_units - self.allowance): + raise ValueError("document_excess does not match units and allowance") + if self.charged_cost > self.cap: + raise ValueError("charged rule cost cannot exceed its cap") + return self + + +class CategoryCost(StrictModel): + category: CategoryId + rule_cost: float = Field(ge=0, le=100) + density: DensityMeasurement | None = None + cap: float = Field(ge=0, le=100) + charged_cost: float = Field(ge=0, le=100) + + @model_validator(mode="after") + def validate_cap(self) -> CategoryCost: + if self.charged_cost > self.cap: + raise ValueError("charged category cost cannot exceed its cap") + return self + + +class RuleExecutionError(StrictModel): + rule_id: RuleId | None = None + source_path: str | None = Field(default=None, max_length=4_096) + error_code: str = Field(min_length=1, max_length=64, pattern=r"^[a-z][a-z0-9_-]*$") + message: BoundedText + fatal: bool + + +class AppliedSuppression(StrictModel): + rule_ids: tuple[RuleId, ...] = Field(min_length=1) + reason: BoundedText + directive_span: Span + target_span: Span + suppressed_finding_ids: tuple[str, ...] = () + + +class ExternalAudit(StrictModel): + rule_id: RuleId + rule_version: int = Field(ge=1) + service: str = Field(min_length=1, max_length=64) + endpoint_hostname: str = Field(min_length=1, max_length=253) + content_digest: Digest + request_schema_version: str = Field(min_length=1, max_length=64) + response_schema_version: str | None = Field(default=None, max_length=64) + service_request_id: str | None = Field(default=None, max_length=256) + judge_revision: str | None = Field(default=None, max_length=128) + attempts: int = Field(ge=1, le=3) + latency_ms: int = Field(ge=0, le=600_000) + outcome: str = Field(min_length=1, max_length=64) + response_digest: Digest | None = None + + +class FindingChange(StrictModel): + added: tuple[Finding, ...] = () + removed: tuple[Finding, ...] = () + persistent: tuple[Finding, ...] = () + + +class BaseComparison(StrictModel): + score: int | None = Field(default=None, ge=0, le=100) + delta: int | None = Field(default=None, ge=-100, le=100) + analysis_state: AnalysisState + findings: FindingChange = FindingChange() + errors: tuple[RuleExecutionError, ...] = () + + +class FileResult(StrictModel): + path: str = Field(min_length=1, max_length=4_096) + analysis_state: AnalysisState + decision: Decision + score: int | None = Field(default=None, ge=0, le=100) + threshold: int = Field(ge=0, le=100) + hard_fail: bool = False + metrics: DocumentMetrics + findings: tuple[Finding, ...] = () + suppressions: tuple[AppliedSuppression, ...] = () + rule_costs: tuple[RuleCost, ...] = () + category_costs: tuple[CategoryCost, ...] = () + errors: tuple[RuleExecutionError, ...] = () + base: BaseComparison | None = None + + @model_validator(mode="after") + def validate_decision(self) -> FileResult: + if self.analysis_state is AnalysisState.NOT_APPLICABLE: + if self.decision is not Decision.NOT_APPLICABLE or self.score is not None: + raise ValueError("not-applicable file results require no score and no decision") + elif self.analysis_state is not AnalysisState.ERROR and self.score is None: + raise ValueError("analyzed file results require a score") + return self + + +class OverrideRecord(StrictModel): + reviewer: str = Field(min_length=1, max_length=256) + reason: BoundedText + review_id: int = Field(ge=1) + review_url: str = Field(min_length=1, max_length=2_048) + head_sha: Revision + + +class RunResult(StrictModel): + schema_version: Literal[1] = 1 + analysis_state: AnalysisState + decision: Decision + score: int | None = Field(default=None, ge=0, le=100) + threshold: int = Field(ge=0, le=100) + repository: str | None = Field(default=None, max_length=256) + pull_request_number: int | None = Field(default=None, ge=1) + base_sha: Revision | None = None + head_sha: Revision | None = None + tool_version: str = Field(min_length=1, max_length=64) + config_digest: Digest + files: tuple[FileResult, ...] = () + rule_errors: tuple[RuleExecutionError, ...] = () + external_audits: tuple[ExternalAudit, ...] = () + override: OverrideRecord | None = None + + @model_validator(mode="after") + def validate_aggregate(self) -> RunResult: + if self.analysis_state is AnalysisState.NOT_APPLICABLE: + if self.decision is not Decision.NOT_APPLICABLE or self.score is not None or self.files: + raise ValueError("not-applicable runs require no score, files, or policy decision") + return self + if not self.files: + raise ValueError("applicable runs require at least one file result") + scores = [item.score for item in self.files if item.score is not None] + if scores and self.score != min(scores): + raise ValueError("run score must be the minimum scored file result") + if not scores and self.score is not None: + raise ValueError("a run without scored file results cannot have a score") + if self.decision is Decision.OVERRIDDEN and self.override is None: + raise ValueError("overridden decisions require override metadata") + if self.decision is not Decision.OVERRIDDEN and self.override is not None: + raise ValueError("override metadata requires an overridden decision") + return self + + +__all__ = [ + "AnalysisState", + "AppliedSuppression", + "BaseComparison", + "CategoryCost", + "Decision", + "DensityMeasurement", + "ExternalAudit", + "FileResult", + "Finding", + "FindingChange", + "OverrideRecord", + "RuleCost", + "RuleExecutionError", + "RunResult", +] diff --git a/dev-tools/slop-cop/src/slop_cop/report.py b/dev-tools/slop-cop/src/slop_cop/report.py new file mode 100644 index 00000000..13b7f407 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/report.py @@ -0,0 +1,623 @@ +"""Render Slop Cop results without recalculating analysis or scoring.""" + +from __future__ import annotations + +import html +import json +from collections.abc import Mapping, Sequence +from pathlib import Path +from typing import Any, cast + +from pydantic import ValidationError + +from slop_cop.findings import RunResult + +JSON_SCHEMA_VERSION = 1 +MAX_HTML_BYTES = 10 * 1024 * 1024 +_CSP = "default-src 'none'; style-src 'unsafe-inline'; img-src data:" + + +class ReportError(ValueError): + """Raised when a result cannot be serialized safely.""" + + +def result_data(result: RunResult | Mapping[str, Any]) -> dict[str, Any]: + """Validate and serialize one canonical run result.""" + try: + validated = ( + result + if isinstance(result, RunResult) + else RunResult.model_validate(result, strict=False) + ) + except ValidationError as error: + raise ReportError(f"Invalid run result: {error}") from error + return validated.model_dump(mode="json") + + +def json_report(result: RunResult | Mapping[str, Any]) -> str: + """Serialize a result with stable key ordering and a final newline.""" + data = result_data(result) + data.setdefault("schema_version", JSON_SCHEMA_VERSION) + try: + return json.dumps(data, ensure_ascii=False, indent=2, sort_keys=True) + "\n" + except (TypeError, ValueError) as error: + raise ReportError(f"The run result is not JSON serializable: {error}") from error + + +def write_json_report(result: RunResult | Mapping[str, Any], destination: str | Path) -> Path: + """Write the canonical machine report.""" + path = Path(destination) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json_report(result), encoding="utf-8") + return path + + +def terminal_report(result: RunResult | Mapping[str, Any]) -> str: + """Render a compact, stable terminal summary.""" + data = result_data(result) + state = _upper(data.get("decision") or data.get("analysis_state") or "error") + threshold = data.get("threshold") + score = data.get("score") + lines = [f"Slop Cop: {state} score={_display(score)} threshold={_display(threshold)}"] + for file_result in _items(data.get("files")): + path = _text(file_result.get("path")) + file_score = file_result.get("score") + file_state = _upper( + file_result.get("decision") or file_result.get("analysis_state") or "complete" + ) + base_score = _base_score(file_result) + delta = _delta(file_score, base_score) + comparison = ( + "" if base_score is None else f" base={_display(base_score)} delta={_signed(delta)}" + ) + lines.append(f"{path}: {file_state} score={_display(file_score)}{comparison}") + for category in _category_rows(file_result): + lines.append(f" category {category[0]}: -{_display(category[1])} points") + for rule in _items(file_result.get("rule_costs")): + charged = rule.get("charged_cost", 0) + density = rule.get("density") + density_cost = density.get("cost", 0) if isinstance(density, Mapping) else 0 + if _number(charged) or _number(density_cost): + lines.append( + f" rule {_text(rule.get('rule_id') or 'unknown')}: " + f"units={_display(rule.get('deduplicated_units'))} " + f"allowance={_display(rule.get('allowance'))} " + f"base=-{_display(rule.get('base_cost'))} " + f"density=-{_display(density_cost)} " + f"charged=-{_display(charged)}" + ) + if isinstance(density, Mapping) and density.get("peak_excess"): + density_unit = _text(density.get("unit") or "units") + lines.append( + f" peak={_display(density.get('peak_units'))} in " + f"{_display(density.get('window'))} {density_unit}; " + f"excess={_display(density.get('peak_excess'))}" + ) + for finding in _findings(file_result): + if finding.get("suppressed") or finding.get("advisory"): + continue + location = _finding_location(path, finding) + rule_id = _text(finding.get("rule_id") or "unknown") + excerpt = _bounded(_text(finding.get("excerpt")), 120) + lines.append(f" {location} [{rule_id}] {excerpt}".rstrip()) + advice = _text(finding.get("advice")) + if advice: + lines.append(f" {advice}") + for error in _items(file_result.get("errors")): + lines.append( + f" analysis error [{_text(error.get('error_code') or 'unknown')}]: " + f"{_bounded(_text(error.get('message') or ''), 300)}" + ) + suppressed = _count_findings(data, "suppressed") + advisory = _count_findings(data, "advisory") + if suppressed or advisory: + lines.append(f"Suppressed: {suppressed} Advisory: {advisory}") + for error in _items(data.get("rule_errors")): + lines.append(f"Rule error: {_bounded(_text(error.get('message') or error), 300)}") + override = data.get("override") + if isinstance(override, Mapping): + lines.append( + f"Override: {_text(override.get('reviewer') or 'unknown')} - " + f"{_bounded(_text(override.get('reason') or ''), 300)}" + ) + for audit in _items(data.get("external_audits")): + lines.append( + f"External rule {_text(audit.get('rule_id') or 'unknown')} sent selected prose to " + f"{_text(audit.get('endpoint_hostname') or audit.get('service') or 'unknown')}; " + f"outcome={_text(audit.get('outcome') or 'unknown')}" + ) + return "\n".join(lines) + "\n" + + +def html_report( + result: RunResult | Mapping[str, Any], *, sources: Mapping[str, str] | None = None +) -> str: + """Render a self-contained HTML report with all result text escaped.""" + data = result_data(result) + state = _upper(data.get("decision") or data.get("analysis_state") or "error") + score = data.get("score") + threshold = data.get("threshold") + head_sha = _text(data.get("head_sha") or "") + files = _items(data.get("files")) + body: list[str] = [ + '', + f'', + '', + "Slop Cop report", + f"
", + '

Slop Cop

Dev Notes report

', + f'

{_h(state)}

', + '
', + _dtdd("Score", _display(score)), + _dtdd("Threshold", _display(threshold)), + _dtdd("Head revision", head_sha or "Not supplied"), + _dtdd("Analysis", _text(data.get("analysis_state") or "complete")), + "
", + '

Interpretation

', + "

The score summarizes configured editorial signals. It does not identify " + "the author or determine whether a model wrote the text.

", + ] + override = data.get("override") + if isinstance(override, Mapping): + body.append(_render_override(override)) + if not files: + message = ( + "No changed Dev Note required analysis." + if state == "NOT APPLICABLE" + else "No file results were produced." + ) + body.append(f"

Files

{_h(message)}

") + else: + body.append(_render_file_table(files)) + for index, file_result in enumerate(files, 1): + body.append(_render_file(file_result, index, sources=sources)) + body.append(_render_rule_errors(data)) + body.append(_render_external_audits(data)) + body.append(_render_provenance(data)) + body.append("
\n") + rendered = "".join(body) + if len(rendered.encode("utf-8")) > MAX_HTML_BYTES: + raise ReportError(f"HTML report exceeds the {MAX_HTML_BYTES}-byte limit.") + return rendered + + +def write_html_report( + result: RunResult | Mapping[str, Any], + destination: str | Path, + *, + sources: Mapping[str, str] | None = None, +) -> Path: + """Write the self-contained HTML report.""" + path = Path(destination) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(html_report(result, sources=sources), encoding="utf-8") + return path + + +def write_report_directory( + result: RunResult | Mapping[str, Any], + destination: str | Path, + *, + sources: Mapping[str, str] | None = None, +) -> tuple[Path, Path]: + """Write ``index.html`` and ``report.json`` into one artifact directory.""" + directory = Path(destination) + directory.mkdir(parents=True, exist_ok=True) + return ( + write_html_report(result, directory / "index.html", sources=sources), + write_json_report(result, directory / "report.json"), + ) + + +def _render_file_table(files: list[dict[str, Any]]) -> str: + rows = [] + for item in files: + path = _text(item.get("path")) + score = item.get("score") + base = _base_score(item) + state = _upper(item.get("decision") or item.get("analysis_state") or "complete") + rows.append( + "" + f'{_h(path)}{_h(_display(score))}' + f"{_h(_display(base))}{_h(_signed(_delta(score, base)))}" + f"{_h(state)}" + "" + ) + return ( + '

Files

' + "" + f"{''.join(rows)}
PathHeadBaseDeltaState
" + ) + + +def _render_file( + item: dict[str, Any], + index: int, + *, + sources: Mapping[str, str] | None, +) -> str: + path = _text(item.get("path")) + findings = _findings(item) + sections = [f'

{_h(path)}

'] + raw_metrics = item.get("metrics") + metrics: Mapping[str, Any] = raw_metrics if isinstance(raw_metrics, Mapping) else {} + source = sources.get(path) if sources is not None else None + sections.append('
') + sections.append(_dtdd("Score", _display(item.get("score")))) + sections.append(_dtdd("Words analyzed", _display(metrics.get("analyzable_words")))) + sections.append(_dtdd("Code points masked", _display(metrics.get("masked_code_points")))) + sections.append(_dtdd("Findings", str(len(findings)))) + sections.append("
") + sections.append(_render_costs(item)) + sections.append(_render_density(item, source=source if isinstance(source, str) else None)) + sections.append(_render_findings(findings)) + sections.append(_render_comparison(item)) + sections.append(_render_rule_errors(item)) + if isinstance(source, str): + sections.append( + '
Escaped source view
'
+            f"{_highlight_source(source, findings)}
" + ) + sections.append("
") + return "".join(sections) + + +def _render_costs(item: Mapping[str, Any]) -> str: + categories = _category_rows(item) + rule_costs = _items(item.get("rule_costs")) + if not categories and not rule_costs: + return "" + rows = [ + f"{_h(name)}{_h(_display(cost))}" for name, cost in categories + ] + for rule in rule_costs: + name = _text(rule.get("rule_id")) + base = rule.get("base_cost", 0) + density_value = rule.get("density") + density = density_value.get("cost", 0) if isinstance(density_value, Mapping) else 0 + cost = rule.get("charged_cost", 0) + allowance = rule.get("allowance", 0) + rows.append( + f"{_h(name)}{_h(_display(cost))} " + f"(base {_h(_display(base))}, density {_h(_display(density))}, " + f"allowance {_h(_display(allowance))})" + ) + return ( + "
Score arithmetic" + + "".join(rows) + + "
" + ) + + +def _render_density(item: Mapping[str, Any], *, source: str | None = None) -> str: + records: list[dict[str, Any]] = [] + for owner_key, collection_key in (("rule_id", "rule_costs"), ("category", "category_costs")): + for owner in _items(item.get(collection_key)): + density = owner.get("density") + if isinstance(density, Mapping): + records.append({owner_key: owner.get(owner_key), **dict(density)}) + if not records: + return "" + rows = [] + for record in records: + label = _text(record.get("rule_id") or record.get("category") or "density") + window = f"{_display(record.get('window'))} {_text(record.get('unit') or 'units')}" + passage = "" + span = record.get("window_span") + if not passage and source is not None and isinstance(span, Mapping): + start, end = span.get("start"), span.get("end") + if isinstance(start, int) and isinstance(end, int) and 0 <= start < end <= len(source): + passage = source[start:end] + rows.append( + "" + f"{_h(label)}{_h(window)}" + f"{_h(_display(record.get('peak_excess')))}" + f"{_h(_display(record.get('cost')))}" + f"{_h(_bounded(passage, 240))}" + ) + return ( + '
Passage density
' + "" + "" + f"{''.join(rows)}
Rule or categoryWindowPeak excessPointsDensest passage
" + ) + + +def _render_findings(findings: list[dict[str, Any]]) -> str: + if not findings: + return "

Findings

No findings.

" + groups: dict[str, list[dict[str, Any]]] = { + "Blocking": [], + "Chargeable": [], + "Advisory": [], + "Suppressed": [], + } + for finding in findings: + if finding.get("suppressed"): + groups["Suppressed"].append(finding) + elif finding.get("blocking"): + groups["Blocking"].append(finding) + elif finding.get("advisory") or finding.get("chargeable") is False: + groups["Advisory"].append(finding) + else: + groups["Chargeable"].append(finding) + output = ['

Findings

'] + for name, values in groups.items(): + if not values: + continue + output.append( + f'
{_h(name)} ({len(values)})
    ' + ) + for finding in values: + rule_id = _text(finding.get("rule_id") or "unknown") + line = _display(finding.get("line")) + column = _display(finding.get("column")) + excerpt = _text(finding.get("excerpt")) + rationale = _text(finding.get("explanation")) + advice = _text(finding.get("advice")) + charge = ' chargeable signal' + output.append( + "
  1. " + f"

    {_h(rule_id)} at {line}:{column} " + f"{charge}

    " + f"
    {_h(_bounded(excerpt, 1000))}
    " + + (f"

    {_h(rationale)}

    " if rationale else "") + + (f"

    Action: {_h(advice)}

    " if advice else "") + + _suppression_detail(finding) + + "
  2. " + ) + output.append("
") + output.append("
") + return "".join(output) + + +def _render_comparison(item: Mapping[str, Any]) -> str: + base = item.get("base") + if not isinstance(base, Mapping): + return "" + changes = base.get("findings") + if not isinstance(changes, Mapping): + return "" + output = ["
Base comparison"] + for label, key in (("Added", "added"), ("Removed", "removed"), ("Persistent", "persistent")): + findings = _items(changes.get(key)) + output.append(f"

{label} ({len(findings)})

") + if findings: + output.append("
    ") + for finding in findings: + rule_id = _text(finding.get("rule_id") or "unknown") + excerpt = _bounded(_text(finding.get("excerpt") or ""), 300) + output.append(f"
  • {_h(rule_id)}: {_h(excerpt)}
  • ") + output.append("
") + output.append("
") + return "".join(output) + + +def _render_override(override: Mapping[str, Any]) -> str: + actor = _text(override.get("reviewer")) + reason = _text(override.get("reason") or "") + review = _text(override.get("review_url")) + sha = _text(override.get("head_sha") or "") + return ( + '

Manual override

' + + _dtdd("Reviewer", actor) + + _dtdd("Reason", reason) + + _dtdd("Review", review) + + _dtdd("Head revision", sha) + + "
" + ) + + +def _suppression_detail(finding: Mapping[str, Any]) -> str: + reason = finding.get("suppression_reason") + if not reason: + return "" + return f"

Suppression: {_h(_text(reason))}

" + + +def _render_rule_errors(data: Mapping[str, Any]) -> str: + errors = _items(data.get("rule_errors") or data.get("errors")) + if not errors: + return "" + rows = [] + for error in errors: + message = error.get("message") or "Rule execution failed." + rows.append( + "
  • " + f"{_h(_text(error.get('rule_id') or 'analysis'))}: " + f"{_h(_bounded(_text(message), 1000))}" + f" ({'fatal' if error.get('fatal') else 'advisory'})
  • " + ) + return f'

    Analysis errors

      {"".join(rows)}
    ' + + +def _render_external_audits(data: Mapping[str, Any]) -> str: + audits = _items(data.get("external_audits")) + if not audits: + return "" + rows = [] + for audit in audits: + service = audit.get("service") + revision = audit.get("judge_revision") or "not reported" + rows.append( + "" + f"{_h(_text(audit.get('rule_id') or 'unknown'))}" + f"{_h(_text(service))}" + f"{_h(_text(revision))}" + f"{_h(_display(audit.get('latency_ms')))}" + f"{_h(_text(audit.get('outcome') or 'unknown'))}" + f"{_h(_text(audit.get('response_digest') or ''))}" + "" + ) + return ( + "

    External rule audit

    " + "

    Listed rules sent selected prose to the named service.

    " + '
    ' + "" + "" + f"{''.join(rows)}
    RuleServiceJudge revisionLatency (ms)OutcomeResponse digest
    " + ) + + +def _render_provenance(data: Mapping[str, Any]) -> str: + return ( + '

    Run identity

    ' + + _dtdd("Tool version", _text(data.get("tool_version") or "unknown")) + + _dtdd("Configuration digest", _text(data.get("config_digest") or "unknown")) + + _dtdd("JSON schema", _display(data.get("schema_version", JSON_SCHEMA_VERSION))) + + _dtdd("Base revision", _text(data.get("base_sha") or "Not supplied")) + + _dtdd("Head revision", _text(data.get("head_sha") or "Not supplied")) + + "
    " + ) + + +def _highlight_source(source: str, findings: list[dict[str, Any]]) -> str: + spans: list[tuple[int, int, str]] = [] + for finding in findings: + if finding.get("suppressed"): + continue + span = finding.get("span") + start = span.get("start") if isinstance(span, Mapping) else None + end = span.get("end") if isinstance(span, Mapping) else None + if isinstance(start, int) and isinstance(end, int) and 0 <= start < end <= len(source): + spans.append((start, end, _text(finding.get("rule_id") or "finding"))) + spans.sort(key=lambda value: (value[0], -(value[1] - value[0]), value[2])) + output: list[str] = [] + cursor = 0 + for start, end, rule_id in spans: + if start < cursor: + continue + output.append(_h(source[cursor:start])) + output.append(f'{_h(source[start:end])}') + cursor = end + output.append(_h(source[cursor:])) + return "".join(output) + + +def _findings(item: Mapping[str, Any]) -> list[dict[str, Any]]: + return _items(item.get("findings")) + + +def _category_rows(item: Mapping[str, Any]) -> list[tuple[str, Any]]: + rows = _items(item.get("category_costs")) + return [ + ( + _text(row.get("category")), + row.get("charged_cost", 0), + ) + for row in rows + ] + + +def _base_score(item: Mapping[str, Any]) -> Any: + base = item.get("base") + return base.get("score") if isinstance(base, Mapping) else None + + +def _delta(head: Any, base: Any) -> int | float | None: + if _number(head) is not None and _number(base) is not None: + return _number(head) - _number(base) # type: ignore[operator] + return None + + +def _count_findings(data: Mapping[str, Any], field: str) -> int: + return sum( + 1 for item in _items(data.get("files")) for finding in _findings(item) if finding.get(field) + ) + + +def _finding_location(path: str, finding: Mapping[str, Any]) -> str: + line = finding.get("line") + column = finding.get("column") + return f"{path}:{_display(line)}:{_display(column)}" + + +def _items(value: object) -> list[dict[str, Any]]: + if not isinstance(value, Sequence) or isinstance(value, str | bytes | bytearray): + return [] + return [dict(item) for item in value if isinstance(item, Mapping)] + + +def _text(value: object) -> str: + if value is None: + return "" + if hasattr(value, "value"): + value = cast(Any, value).value + return str(value) + + +def _h(value: object) -> str: + return html.escape(_text(value), quote=True) + + +def _upper(value: object) -> str: + return _text(value).upper().replace("_", " ") + + +def _display(value: object) -> str: + if value is None or value == "": + return "—" + number = _number(value) + return f"{number:g}" if number is not None else _text(value) + + +def _number(value: object) -> int | float | None: + return value if isinstance(value, int | float) and not isinstance(value, bool) else None + + +def _signed(value: object) -> str: + number = _number(value) + return "—" if number is None else f"{number:+g}" + + +def _bounded(value: str, maximum: int) -> str: + return value if len(value) <= maximum else value[: maximum - 1] + "…" + + +def _dtdd(term: str, value: object) -> str: + return f"
    {_h(term)}
    {_h(value)}
    " + + +def _status_class(state: str) -> str: + if state in {"PASS", "NOT APPLICABLE"}: + return "pass" + if state == "OVERRIDDEN": + return "override" + return "fail" + + +_STYLE = """ +:root { color-scheme: light dark; font-family: ui-sans-serif, system-ui, sans-serif; } +body { margin: 0; background: Canvas; color: CanvasText; } +main { max-width: 76rem; margin: auto; padding: 2rem; } +header, section, article, footer { margin-block: 1.5rem; } +article { + border-top: 2px solid color-mix(in srgb, CanvasText 25%, transparent); + padding-top: 1rem; +} +.eyebrow { font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } +.status { display: inline-block; padding: .35rem .65rem; border-radius: .25rem; font-weight: 800; } +.pass { background: #176b3a; color: white; } .fail { background: #a12d2d; color: white; } +.override { background: #6d4d00; color: white; } section.override { padding: 1rem; } +.summary { display: flex; flex-wrap: wrap; gap: .75rem 2rem; } +.summary div { min-width: 10rem; } +dt { font-size: .85rem; opacity: .75; } +dd { margin: .2rem 0 0; font-weight: 650; } +.table-wrap { overflow-x: auto; } table { border-collapse: collapse; width: 100%; } +th, td { + border-bottom: 1px solid color-mix(in srgb, CanvasText 20%, transparent); + padding: .55rem; text-align: left; vertical-align: top; +} +pre { + overflow-x: auto; padding: .75rem; + background: color-mix(in srgb, CanvasText 7%, Canvas); white-space: pre-wrap; +} +.source { white-space: pre; } +mark { background: #ffe66d; color: #171717; } +.points { white-space: nowrap; } +.findings > li { margin-block: 1rem; } +details { margin-block: 1rem; } +summary { cursor: pointer; font-weight: 700; } +.errors { border-left: .35rem solid #a12d2d; padding-left: 1rem; } +code { overflow-wrap: anywhere; } +""" diff --git a/dev-tools/slop-cop/src/slop_cop/rules/__init__.py b/dev-tools/slop-cop/src/slop_cop/rules/__init__.py new file mode 100644 index 00000000..8a3bbf43 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/__init__.py @@ -0,0 +1,23 @@ +from slop_cop.rules.api import ( + EvidenceSpan, + FunctionRule, + Rule, + RuleContext, + RuleEvaluation, + RuleMetadata, + RuleSignal, +) +from slop_cop.rules.registry import ConfiguredRule, RuleRegistry, build_registry + +__all__ = [ + "ConfiguredRule", + "EvidenceSpan", + "FunctionRule", + "Rule", + "RuleContext", + "RuleEvaluation", + "RuleMetadata", + "RuleRegistry", + "RuleSignal", + "build_registry", +] diff --git a/dev-tools/slop-cop/src/slop_cop/rules/api.py b/dev-tools/slop-cop/src/slop_cop/rules/api.py new file mode 100644 index 00000000..51ae0b17 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/api.py @@ -0,0 +1,220 @@ +from __future__ import annotations + +import inspect +import re +from collections import Counter +from collections.abc import Awaitable, Callable, Iterable, Mapping, Sequence +from dataclasses import dataclass +from typing import Any, Literal, Protocol, runtime_checkable + +from pydantic import BaseModel, ConfigDict, Field, model_validator + +_RULE_ID = re.compile(r"^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$") + + +class EvidenceSpan(BaseModel): + model_config = ConfigDict(frozen=True, extra="forbid") + + start: int = Field(ge=0) + end: int = Field(gt=0) + label: str | None = Field(default=None, max_length=120) + + @model_validator(mode="after") + def validate_span(self) -> EvidenceSpan: + if self.end <= self.start: + raise ValueError("evidence end must be greater than start") + return self + + +class RuleSignal(BaseModel): + model_config = ConfigDict(frozen=True, extra="forbid") + + key: str = Field(min_length=1, max_length=200) + units: int = Field(default=1, ge=1, le=100) + start: int | None = Field(default=None, ge=0) + end: int | None = Field(default=None, gt=0) + scope: Literal["span", "document"] = "span" + detail: str | None = Field(default=None, max_length=1000) + evidence: tuple[EvidenceSpan, ...] = Field(default=(), max_length=20) + + @model_validator(mode="after") + def validate_scope(self) -> RuleSignal: + if self.scope == "span": + if self.start is None or self.end is None or self.end <= self.start: + raise ValueError("span signals require start < end") + elif self.start is not None or self.end is not None: + raise ValueError("document signals cannot have a primary span") + return self + + @classmethod + def document( + cls, + *, + key: str, + units: int = 1, + detail: str | None = None, + evidence: Sequence[EvidenceSpan] = (), + ) -> RuleSignal: + return cls( + key=key, + units=units, + scope="document", + detail=detail, + evidence=tuple(evidence), + ) + + +class RuleEvaluation(BaseModel): + model_config = ConfigDict(frozen=True, extra="forbid") + + signals: tuple[RuleSignal, ...] = Field(default=(), max_length=5000) + audit: Mapping[str, str | int | float | bool | None] = Field(default_factory=dict) + + +class RuleMetadata(BaseModel): + model_config = ConfigDict(frozen=True, extra="forbid") + + id: str + version: int = Field(default=1, gt=0) + category: str = Field(min_length=1, max_length=80) + title: str = Field(min_length=1, max_length=120) + rationale: str = Field(min_length=1, max_length=500) + advice: str = Field(min_length=1, max_length=500) + contexts: frozenset[str] = frozenset({"prose"}) + execution_kind: Literal["local", "external"] = "local" + services: tuple[str, ...] = () + score_group: str | None = Field(default=None, max_length=120) + + @model_validator(mode="after") + def validate_metadata(self) -> RuleMetadata: + if not _RULE_ID.fullmatch(self.id): + raise ValueError("rule id must be a lowercase dotted or hyphenated identifier") + if self.execution_kind == "local" and self.services: + raise ValueError("local rules cannot require services") + if self.execution_kind == "external" and not self.services: + raise ValueError("external rules must declare at least one service") + if len(set(self.services)) != len(self.services): + raise ValueError("rule service names must be unique") + return self + + +@runtime_checkable +class Rule(Protocol): + @property + def metadata(self) -> RuleMetadata: ... + + async def evaluate(self, context: RuleContext, runtime: Any) -> RuleEvaluation: ... + + +Evaluator = Callable[["RuleContext", Any], RuleEvaluation | Awaitable[RuleEvaluation]] + + +@dataclass(frozen=True, slots=True) +class FunctionRule: + metadata: RuleMetadata + evaluator: Evaluator + + async def evaluate(self, context: RuleContext, runtime: Any) -> RuleEvaluation: + value = self.evaluator(context, runtime) + if inspect.isawaitable(value): + value = await value + return RuleEvaluation.model_validate(value) + + +@dataclass(frozen=True, slots=True) +class TextSpan: + start: int + end: int + text: str + normalized: str + + +@dataclass(frozen=True, slots=True) +class RuleContext: + document: Any + repository_terms: frozenset[str] = frozenset() + + @property + def projected_prose(self) -> str: + return str( + getattr( + self.document, + "prose_projection", + getattr(self.document, "projection", ""), + ) + ) + + @property + def source(self) -> str: + return str(getattr(self.document, "source", self.projected_prose)) + + @property + def tokens(self) -> tuple[Any, ...]: + return tuple(getattr(self.document, "tokens", ())) + + @property + def sentences(self) -> tuple[Any, ...]: + return tuple(getattr(self.document, "sentences", ())) + + @property + def paragraphs(self) -> tuple[Any, ...]: + return tuple(getattr(self.document, "paragraphs", ())) + + def span_text(self, start: int, end: int) -> str: + return self.source[start:end] + + def repeated_sentence_starts(self, minimum_count: int = 3) -> tuple[TextSpan, ...]: + starts: list[TextSpan] = [] + ignored = {"a", "an", "the", "also", "however", "therefore", "then"} + for sentence in self.sentences: + text = getattr(sentence, "text", self.projected_prose[sentence.start : sentence.end]) + words = list(re.finditer(r"(?u)\b[^\W_]+(?:['’-][^\W_]+)*\b", text)) + while words and words[0].group(0).casefold() in ignored: + words.pop(0) + if len(words) < 3: + continue + selected = words[:3] + start = sentence.start + selected[0].start() + end = sentence.start + selected[-1].end() + normalized = " ".join(word.group(0).casefold() for word in selected) + starts.append(TextSpan(start, end, self.source[start:end], normalized)) + counts = Counter(item.normalized for item in starts) + return tuple(item for item in starts if counts[item.normalized] >= minimum_count) + + def map_exact_quotes(self, quotes: Iterable[str]) -> tuple[EvidenceSpan, ...]: + spans: list[EvidenceSpan] = [] + for quote in quotes: + if not quote or len(quote) > 1000: + continue + first = self.projected_prose.find(quote) + if first < 0 or self.projected_prose.find(quote, first + 1) >= 0: + continue + spans.append(EvidenceSpan(start=first, end=first + len(quote))) + return tuple(spans) + + +def validate_evaluation( + metadata: RuleMetadata, + evaluation: RuleEvaluation, + *, + document_length: int, + max_signal_units: int, +) -> RuleEvaluation: + previous = -1 + for signal in evaluation.signals: + if signal.units > max_signal_units: + raise ValueError( + f"{metadata.id} emitted {signal.units} units; maximum is {max_signal_units}" + ) + spans = signal.evidence + if signal.scope == "span": + assert signal.start is not None and signal.end is not None + if signal.end > document_length: + raise ValueError(f"{metadata.id} emitted a span outside the document") + if signal.start < previous: + raise ValueError(f"{metadata.id} signals must be source ordered") + previous = signal.start + for evidence in spans: + if evidence.end > document_length: + raise ValueError(f"{metadata.id} emitted evidence outside the document") + return evaluation diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/__init__.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/__init__.py new file mode 100644 index 00000000..81620faf --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/__init__.py @@ -0,0 +1,20 @@ +from __future__ import annotations + +from slop_cop.rules.api import Rule +from slop_cop.rules.builtins.artifacts import RULES as ARTIFACT_RULES +from slop_cop.rules.builtins.attribution import RULES as ATTRIBUTION_RULES +from slop_cop.rules.builtins.endings import RULES as ENDING_RULES +from slop_cop.rules.builtins.repetition import RULES as REPETITION_RULES +from slop_cop.rules.builtins.rhetoric import RULES as RHETORIC_RULES +from slop_cop.rules.builtins.structure import RULES as STRUCTURE_RULES +from slop_cop.rules.builtins.vocabulary import RULES as VOCABULARY_RULES + +BUILTIN_RULES: tuple[Rule, ...] = ( + *ARTIFACT_RULES, + *RHETORIC_RULES, + *VOCABULARY_RULES, + *REPETITION_RULES, + *ATTRIBUTION_RULES, + *ENDING_RULES, + *STRUCTURE_RULES, +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py new file mode 100644 index 00000000..f7ab6dbc --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py @@ -0,0 +1,51 @@ +from __future__ import annotations + +from slop_cop.rules.api import RuleMetadata +from slop_cop.rules.declarative import PhraseRule, RegexRule + + +def phrase_rule( + rule_id: str, + category: str, + title: str, + rationale: str, + advice: str, + *phrases: str, + score_group: str | None = None, +) -> PhraseRule: + return PhraseRule( + RuleMetadata( + id=rule_id, + category=category, + title=title, + rationale=rationale, + advice=advice, + score_group=score_group, + ), + tuple(phrases), + ) + + +def regex_rule( + rule_id: str, + category: str, + title: str, + rationale: str, + advice: str, + pattern: str, + *, + score_group: str | None = None, + flags: tuple[str, ...] = ("IGNORECASE",), +) -> RegexRule: + return RegexRule( + RuleMetadata( + id=rule_id, + category=category, + title=title, + rationale=rationale, + advice=advice, + score_group=score_group, + ), + pattern, + flags, + ) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/artifacts.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/artifacts.py new file mode 100644 index 00000000..55beafc4 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/artifacts.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +from slop_cop.rules.builtins._helpers import phrase_rule, regex_rule + +RULES = ( + phrase_rule( + "artifact.ai-disclosure", + "artifact", + "Assistant disclosure", + "The prose contains a disclosure made by an automated assistant.", + "Remove the disclosure and state the relevant fact directly.", + "as an AI language model", + "as an artificial intelligence", + ), + regex_rule( + "artifact.chat-preamble", + "artifact", + "Chat response preamble", + "The opening addresses a requester instead of the Dev Note reader.", + "Remove the response preamble and begin with the technical subject.", + r"\b(?:certainly|absolutely|of course)[,!]?\s+(?:here(?:'s| is)|i can|let(?:'s| us))\b", + ), + regex_rule( + "artifact.continuation-offer", + "artifact", + "Continuation offer", + "The prose offers another response rather than completing the note.", + "Remove the offer or add the useful material to the note.", + r"\b(?:let me know if you(?:'d| would) like|" + r"i can also (?:provide|expand|help)|would you like me to)\b", + ), + regex_rule( + "artifact.placeholder", + "artifact", + "Unresolved placeholder", + "The prose contains an unresolved drafting placeholder.", + "Replace the placeholder with final content or remove it.", + r"(?:\[(?:insert|add|todo|tbd)[^\]\n]{0,80}\]|\b(?:TODO|TBD):?\b)", + flags=(), + ), + regex_rule( + "artifact.instruction-residue", + "artifact", + "Drafting instruction", + "The prose contains an instruction for producing the answer.", + "Remove the drafting instruction from the published note.", + r"\b(?:rewrite|revise|generate|draft)\s+(?:the|this)\s+(?:answer|response|section)\s+(?:to|so|using|with)\b", + ), +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py new file mode 100644 index 00000000..6dbb999f --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from slop_cop.rules.builtins._helpers import regex_rule + +RULES = ( + regex_rule( + "attribution.vague-authority", + "attribution", + "Vague authority", + "The claim attributes a view to unnamed authorities.", + "Name and link the relevant source or make the claim in the author's voice.", + r"\b(?:experts|researchers|industry leaders|many observers|critics)\s+" + r"(?:say|believe|agree|argue|suggest|warn)\b(?![^\n]{0,120}\]\([^\n)]+\))", + ), + regex_rule( + "attribution.citationless-study", + "attribution", + "Unidentified study", + "The sentence cites research without identifying a source nearby.", + "Name and link the study or describe the evidence directly.", + r"\b(?:a|one|recent|new)\s+(?:study|report|survey|analysis)\s+(?:shows?|finds?|found|suggests?|indicates?)\b(?![^\n]{0,160}\]\([^\n)]+\))", + ), +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/endings.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/endings.py new file mode 100644 index 00000000..c18e63c9 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/endings.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from slop_cop.rules.builtins._helpers import regex_rule + +RULES = ( + regex_rule( + "ending.participial-tail", + "ending", + "Participial explanation tail", + "The sentence adds a generic trailing explanation using a participle.", + "State the concrete effect in a separate clause or remove the tail.", + r",\s+(?:ensuring|enabling|allowing|highlighting|underscoring|showcasing|reflecting)\s+[^.!?\n]{8,100}[.!?]", + ), + regex_rule( + "ending.generic-explanation", + "ending", + "Generic explanatory ending", + "The ending claims broad value without naming a concrete result.", + "End with the specific result, limitation, or next action.", + r"\b(?:paving the way for|setting the stage for|" + r"marking a significant step toward)\s+[^.!?\n]{3,100}[.!?]", + ), +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py new file mode 100644 index 00000000..e1d53877 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py @@ -0,0 +1,224 @@ +from __future__ import annotations + +from collections import defaultdict +from collections.abc import Callable + +import regex + +from slop_cop.rules.api import FunctionRule, RuleContext, RuleEvaluation, RuleMetadata, RuleSignal + +_WORD = regex.compile(r"[\p{L}\p{N}]+(?:['’-][\p{L}\p{N}]+)*", regex.VERSION1) +_STOPWORDS = frozenset( + [ + "a", + "an", + "and", + "are", + "as", + "at", + "be", + "by", + "for", + "from", + "in", + "is", + "it", + "of", + "on", + "or", + "that", + "the", + "this", + "to", + "was", + "were", + "with", + ] +) + + +def _ngram(context: RuleContext) -> list[RuleSignal]: + prose = context.projected_prose + occurrences: dict[tuple[str, ...], list[tuple[int, int, int]]] = defaultdict(list) + for paragraph_index, paragraph in enumerate(context.paragraphs): + words = list(_WORD.finditer(prose, paragraph.start, paragraph.end)) + normalized = [word.group(0).casefold() for word in words] + for size in range(4, 6): + for index in range(len(words) - size + 1): + key = tuple(normalized[index : index + size]) + if sum(item not in _STOPWORDS for item in key) < 3: + continue + if " ".join(key) in context.repository_terms: + continue + occurrences[key].append( + (words[index].start(), words[index + size - 1].end(), paragraph_index) + ) + candidates: list[tuple[int, int, str]] = [] + for key, spans in occurrences.items(): + if len({span[2] for span in spans}) < 3: + continue + candidates.extend((start, end, " ".join(key)) for start, end, _ in spans) + candidates.sort(key=lambda item: (item[0], -(item[1] - item[0]))) + accepted: list[tuple[int, int, str]] = [] + occupied_starts: set[int] = set() + for candidate in candidates: + if candidate[0] not in occupied_starts: + occupied_starts.add(candidate[0]) + accepted.append(candidate) + return [RuleSignal(start=start, end=end, key=key) for start, end, key in accepted] + + +def _sentence_opener(context: RuleContext) -> list[RuleSignal]: + ignored = _STOPWORDS | {"also", "however", "therefore", "then", "instead"} + values: list[tuple[int, int, str]] = [] + for sentence in context.sentences: + words = list(_WORD.finditer(context.projected_prose, sentence.start, sentence.end)) + while words and words[0].group(0).casefold() in ignored: + words.pop(0) + if len(words) < 3: + continue + chosen = words[:3] + values.append( + ( + chosen[0].start(), + chosen[-1].end(), + " ".join(word.group(0).casefold() for word in chosen), + ) + ) + counts: dict[str, int] = defaultdict(int) + for _, _, key in values: + counts[key] += 1 + return [ + RuleSignal(start=start, end=end, key=key) for start, end, key in values if counts[key] >= 3 + ] + + +def _template_shape(context: RuleContext) -> list[RuleSignal]: + matches: list[tuple[int, int, str]] = [] + patterns = { + "not-but": regex.compile(r"\bnot\b[^.!?\n]{1,80}\bbut\b", regex.I), + "from-to": regex.compile(r"\bfrom\b[^.!?\n]{1,60}\bto\b", regex.I), + } + for key, pattern in patterns.items(): + matches.extend((m.start(), m.end(), key) for m in pattern.finditer(context.projected_prose)) + counts: dict[str, int] = defaultdict(int) + for _, _, key in matches: + counts[key] += 1 + return [ + RuleSignal(start=start, end=end, key=key) + for start, end, key in sorted(matches) + if counts[key] >= 3 + ] + + +def _emphatic_fragments(context: RuleContext) -> list[RuleSignal]: + values: list[tuple[int, int, str]] = [] + prose = context.projected_prose + for paragraph in context.paragraphs: + paragraph_values: list[tuple[int, int, str]] = [] + for sentence in context.sentences: + start, end = sentence.start, sentence.end + if not paragraph.start <= start < paragraph.end: + continue + text = prose[start:end].strip() + line_start = prose.rfind("\n", 0, start) + 1 + prefix = prose[line_start:start] + if regex.fullmatch(r"\s*(?:[-+*]|\d+[.)])\s*", prefix): + continue + words = _WORD.findall(text) + if regex.fullmatch(r"(?:\d+|[ivxlcdm]+)", text.rstrip(".!?"), regex.I): + continue + if 1 <= len(words) <= 4 and end < len(prose): + paragraph_values.append((start, end, "short-fragment")) + if len(paragraph_values) >= 3: + values.extend(paragraph_values) + return [RuleSignal(start=start, end=end, key=key) for start, end, key in values] + + +def _hedge_stack(context: RuleContext) -> list[RuleSignal]: + hedge = r"(?:arguably|perhaps|possibly|potentially|generally|typically|often|may|might|could)" + pattern = regex.compile(rf"\b{hedge}\b(?:[^.!?\n]{{0,60}}\b{hedge}\b){{2,}}", regex.I) + return [ + RuleSignal(start=match.start(), end=match.end(), key="hedge-stack") + for match in pattern.finditer(context.projected_prose) + ] + + +def _question_answer(context: RuleContext) -> list[RuleSignal]: + pattern = regex.compile( + r"(?:^|(?<=[.!?])\s+)([^?\n]{2,100}\?\s+" + r"(?:the answer|the key|the result|simple|yes|no)\b)", + regex.I, + ) + return [ + RuleSignal(start=match.start(1), end=match.end(1), key="question-answer") + for match in pattern.finditer(context.projected_prose) + ] + + +Detector = Callable[[RuleContext], list[RuleSignal]] + + +def _rule( + rule_id: str, title: str, rationale: str, advice: str, detector: Detector +) -> FunctionRule: + def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: + return RuleEvaluation(signals=tuple(detector(context))) + + return FunctionRule( + RuleMetadata( + id=rule_id, + category="repetition", + title=title, + rationale=rationale, + advice=advice, + score_group=detector.__name__.removeprefix("_"), + ), + evaluate, + ) + + +RULES = ( + _rule( + "repetition.ngram", + "Repeated phrase", + "A phrase repeats across several paragraphs.", + "Remove redundant instances or use the precise term only where needed.", + _ngram, + ), + _rule( + "repetition.sentence-opener", + "Repeated sentence opener", + "Several sentences begin with the same three meaningful words.", + "Vary the sentence structure or combine related claims.", + _sentence_opener, + ), + _rule( + "repetition.template-shape", + "Repeated rhetorical shape", + "The same rhetorical construction recurs several times.", + "State the claims with structures suited to their content.", + _template_shape, + ), + _rule( + "repetition.emphatic-fragments", + "Emphatic fragment cluster", + "Several short sentence fragments create a repetitive cadence.", + "Combine fragments with the claims they qualify.", + _emphatic_fragments, + ), + _rule( + "repetition.hedge-stack", + "Stacked hedges", + "Several hedges weaken one bounded claim.", + "Choose the uncertainty qualifier that accurately describes the evidence.", + _hedge_stack, + ), + _rule( + "repetition.question-answer", + "Question-answer setup", + "The prose uses a canned question followed by its own answer.", + "State the answer directly unless the question is needed for navigation.", + _question_answer, + ), +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py new file mode 100644 index 00000000..9c32410c --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py @@ -0,0 +1,103 @@ +from __future__ import annotations + +from slop_cop.rules.builtins._helpers import phrase_rule, regex_rule + +RULES = ( + regex_rule( + "rhetoric.not-but", + "rhetoric", + "Repeated contrast frame", + "The sentence uses a formulaic not-X-but-Y contrast.", + "State the distinction directly or keep only the meaningful contrast.", + r"\bnot\s+(?:merely\s+|simply\s+)?[^.!?;:\n]{1,100}?\s*,?\s+but\s+(?:rather\s+)?\b", + score_group="contrast", + ), + regex_rule( + "rhetoric.not-just", + "rhetoric", + "Not-just frame", + "The sentence uses a not-just setup that can become repetitive.", + "Name the broader property directly when the contrast adds little.", + r"\bnot\s+just\b", + score_group="contrast", + ), + regex_rule( + "rhetoric.no-no", + "rhetoric", + "Parallel no frame", + "A repeated no-X-no-Y frame emphasizes form over information.", + "Replace the parallel negation with a precise description.", + r"(?:^|[.!?]\s+)no\s+[^,.!?\n]{1,50},\s+no\s+[^.!?\n]{1,50}", + ), + regex_rule( + "rhetoric.imperative-reframe", + "rhetoric", + "Imperative reframe", + "The sentence uses a slogan-like command to reframe an action.", + "Describe the recommended action and its reason directly.", + r"\bdon['’]t\s+([\p{L}][\p{L}-]*)\s+it\s*[,;:—-]\s*[\p{L}][\p{L}-]*\s+it\b", + ), + regex_rule( + "rhetoric.dramatic-fragment", + "rhetoric", + "Dramatic fragment", + "A short question fragment creates a canned reveal.", + "Join the fragment to the claim or state the claim directly.", + r"(?:^|[.!?]\s+)(?:the\s+)?(?:punchline|kicker|twist|catch)\s*\?", + ), + phrase_rule( + "rhetoric.throat-clearing", + "rhetoric", + "Throat clearing", + "The phrase delays the substantive claim.", + "Remove the introductory phrase and lead with the claim.", + "it is important to note", + "it is worth noting", + "worth noting", + "worth mentioning", + "worth naming", + ), + phrase_rule( + "rhetoric.testament", + "rhetoric", + "Testament claim", + "The phrase praises an outcome without explaining its cause.", + "Name the concrete evidence and what it demonstrates.", + "a testament to", + "stands as a testament to", + ), + phrase_rule( + "rhetoric.crucial-role", + "rhetoric", + "Crucial-role claim", + "The phrase asserts importance without describing the mechanism.", + "Explain the component's specific responsibility or effect.", + "plays a crucial role", + "plays a pivotal role", + ), + regex_rule( + "rhetoric.landscape-metaphor", + "rhetoric", + "Landscape metaphor", + "A stock landscape metaphor replaces a concrete description of change.", + "Describe the systems, constraints, or changes directly.", + r"\b(?:ever[- ]evolving|rapidly changing|complex|dynamic)\s+" + r"(?:technical\s+|digital\s+)?landscape\b", + ), + regex_rule( + "rhetoric.formulaic-certainty", + "rhetoric", + "Formulaic certainty", + "The phrase asserts shared certainty instead of providing evidence.", + "State the evidence or limit the claim to what the note establishes.", + r"\b(?:as (?:we|you) (?:all )?(?:know|understand)|you already know|the truth is)\b", + ), + regex_rule( + "rhetoric.parallel-negation", + "rhetoric", + "Parallel negation", + "Several parallel negations create a repetitive rhetorical cadence.", + "Combine the negative clauses and emphasize the positive result.", + r"\b(?:did|does|do|is|are|was|were)\s+not\b[^.!?\n]{0,80}\b(?:did|does|do|is|are|was|were)\s+not\b", + ), +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py new file mode 100644 index 00000000..3f5426d7 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py @@ -0,0 +1,106 @@ +from __future__ import annotations + +from typing import Any + +import regex + +from slop_cop.rules.api import ( + Evaluator, + FunctionRule, + RuleContext, + RuleEvaluation, + RuleMetadata, + RuleSignal, +) + + +def _pattern_evaluator( + rule_id: str, pattern: regex.Pattern[str], minimum_matches: int +) -> Evaluator: + def evaluate(context: RuleContext, runtime: Any) -> RuleEvaluation: + matches = list(pattern.finditer(context.projected_prose)) + if len(matches) < minimum_matches: + return RuleEvaluation() + return RuleEvaluation( + signals=tuple( + RuleSignal(start=match.start(), end=match.end(), key=rule_id) for match in matches + ) + ) + + return evaluate + + +def _duplicate_title(context: RuleContext, runtime: Any) -> RuleEvaluation: + front_matter = dict(getattr(context.document, "front_matter", ())) + title = front_matter.get("title", "").strip().casefold() + if not title: + return RuleEvaluation() + signals = tuple( + RuleSignal(start=match.start(), end=match.end(), key="duplicate-title") + for match in regex.finditer(r"(?m)^#\s+(.+?)\s*$", context.projected_prose) + if match.group(1).strip().casefold() == title + ) + return RuleEvaluation(signals=signals) + + +def _make( + rule_id: str, title: str, rationale: str, advice: str, pattern: str, minimum: int +) -> FunctionRule: + metadata = RuleMetadata( + id=rule_id, + category="structure", + title=title, + rationale=rationale, + advice=advice, + ) + compiled = regex.compile(pattern, regex.MULTILINE | regex.VERSION1) + return FunctionRule( + metadata, + _pattern_evaluator(rule_id, compiled, minimum), + ) + + +RULES = ( + _make( + "structure.bold-leadins", + "Repeated bold lead-ins", + "Several adjacent sections use bold labels as sentence prefixes.", + "Use headings or ordinary prose when the labels do not aid scanning.", + r"(?m)^\s*(?:[-*+]\s+)?\*\*[^*\n]{2,80}\*\*[:.]?", + 4, + ), + _make( + "structure.triad", + "Repeated triads", + "Several sentences enumerate exactly three parallel elements.", + "Keep triads only when the grouping is meaningful.", + r"\b[^,\n]{2,40},\s+[^,\n]{2,40},\s+and\s+[^.!?\n]{2,40}", + 3, + ), + _make( + "structure.bullet-run", + "Long bullet run", + "A long uninterrupted bullet list can obscure hierarchy.", + "Group related items under specific subheadings when useful.", + r"(?m)^(?:\s*[-*+]\s+[^\n]+\n){7,}", + 1, + ), + _make( + "structure.horizontal-rules", + "Frequent horizontal rules", + "Frequent horizontal rules can fragment the note.", + "Use headings to express section hierarchy.", + r"(?m)^\s*(?:---+|___+|\*\*\*+)\s*$", + 4, + ), + FunctionRule( + RuleMetadata( + id="structure.duplicate-title", + category="structure", + title="Duplicate title", + rationale="The visible heading repeats the front-matter title.", + advice="Keep a single visible title unless the renderer requires both.", + ), + _duplicate_title, + ), +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/vocabulary.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/vocabulary.py new file mode 100644 index 00000000..408c7156 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/vocabulary.py @@ -0,0 +1,25 @@ +from __future__ import annotations + +from slop_cop.rules.builtins._helpers import phrase_rule + +_STOCK = ( + ("delves", "delves into"), + ("tapestry", "rich tapestry"), + ("realm", "in the realm of"), + ("underscore", "underscores the importance of"), + ("navigate", "navigate the complexities of"), + ("multifaceted", "multifaceted approach"), +) + + +RULES = tuple( + phrase_rule( + f"vocabulary.stock.{slug}", + "vocabulary", + f"Stock phrase: {phrase}", + "The phrase is generic and often adds little technical information.", + "Replace it with the specific action, constraint, or effect.", + phrase, + ) + for slug, phrase in _STOCK +) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/custom/__init__.py b/dev-tools/slop-cop/src/slop_cop/rules/custom/__init__.py new file mode 100644 index 00000000..0b18069a --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/custom/__init__.py @@ -0,0 +1,5 @@ +from __future__ import annotations + +from slop_cop.rules.api import Rule + +CUSTOM_RULES: tuple[Rule, ...] = () diff --git a/dev-tools/slop-cop/src/slop_cop/rules/declarative.py b/dev-tools/slop-cop/src/slop_cop/rules/declarative.py new file mode 100644 index 00000000..5727cd7a --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/declarative.py @@ -0,0 +1,102 @@ +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Any + +import regex + +from slop_cop.rules.api import RuleContext, RuleEvaluation, RuleMetadata, RuleSignal + +_ALLOWED_FLAGS = { + "IGNORECASE": regex.IGNORECASE, + "MULTILINE": regex.MULTILINE, + "DOTALL": regex.DOTALL, + "VERBOSE": regex.VERBOSE, +} +_UNSAFE_PATTERN_PARTS = ( + "(?<=", + "(?", + "(?&", + "\\g<", +) + + +def validate_pattern(pattern: str, flags: tuple[str, ...] = ()) -> regex.Pattern[str]: + if not pattern or len(pattern) > 500: + raise ValueError("regex patterns must contain 1 to 500 characters") + unknown = set(flags) - _ALLOWED_FLAGS.keys() + if unknown: + raise ValueError(f"unsupported regex flags: {', '.join(sorted(unknown))}") + if any(part in pattern for part in _UNSAFE_PATTERN_PARTS): + raise ValueError("regex pattern uses an unsupported construct") + if regex.search(r"\\[1-9]", pattern): + raise ValueError("regex backreferences are not supported") + if regex.search(r"\(\?[aiLmsuxw-]+[:)]", pattern): + raise ValueError("inline regex flags are not supported") + value = regex.VERSION1 + for name in flags: + value |= _ALLOWED_FLAGS[name] + try: + return regex.compile(pattern, value) + except regex.error as error: + raise ValueError(f"invalid regex pattern: {error}") from error + + +@dataclass(frozen=True, slots=True) +class RegexRule: + metadata: RuleMetadata + pattern: str + flags: tuple[str, ...] = () + timeout_seconds: float = 0.05 + _compiled: regex.Pattern[str] = field(init=False, repr=False, compare=False) + + def __post_init__(self) -> None: + object.__setattr__(self, "_compiled", validate_pattern(self.pattern, self.flags)) + + async def evaluate(self, context: RuleContext, runtime: Any) -> RuleEvaluation: + signals: list[RuleSignal] = [] + try: + for match in self._compiled.finditer( + context.projected_prose, timeout=self.timeout_seconds + ): + start, end = match.span() + signals.append( + RuleSignal( + start=start, + end=end, + key=" ".join(match.group(0).casefold().split()), + ) + ) + except TimeoutError as error: + raise RuntimeError(f"{self.metadata.id} exceeded its regex timeout") from error + return RuleEvaluation(signals=tuple(signals)) + + +@dataclass(frozen=True, slots=True) +class PhraseRule: + metadata: RuleMetadata + phrases: tuple[str, ...] + _delegate: RegexRule = field(init=False, repr=False, compare=False) + + def __post_init__(self) -> None: + if not self.phrases or any(not phrase.strip() for phrase in self.phrases): + raise ValueError("phrase rules require nonempty phrases") + alternatives = [] + for phrase in sorted(set(self.phrases), key=len, reverse=True): + words = regex.findall(r"[\p{L}\p{N}]+", phrase) + if not words: + raise ValueError(f"phrase contains no words: {phrase!r}") + alternatives.append(r"(?:[\s\p{P}]+)".join(regex.escape(word) for word in words)) + pattern = rf"\b(?:{'|'.join(alternatives)})\b" + object.__setattr__( + self, + "_delegate", + RegexRule(self.metadata, pattern, ("IGNORECASE",)), + ) + + async def evaluate(self, context: RuleContext, runtime: Any) -> RuleEvaluation: + return await self._delegate.evaluate(context, runtime) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/registry.py b/dev-tools/slop-cop/src/slop_cop/rules/registry.py new file mode 100644 index 00000000..f382346b --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/rules/registry.py @@ -0,0 +1,157 @@ +from __future__ import annotations + +from collections.abc import Iterator +from dataclasses import dataclass +from typing import Literal + +from slop_cop.config import DeclarativeRuleBase, RulePolicy, SlopCopConfig +from slop_cop.rules.api import Rule, RuleMetadata +from slop_cop.rules.builtins import BUILTIN_RULES +from slop_cop.rules.custom import CUSTOM_RULES +from slop_cop.rules.declarative import PhraseRule, RegexRule + +RuleKind = Literal["builtin", "declarative", "custom"] + + +@dataclass(frozen=True, slots=True) +class ConfiguredRule: + rule: Rule + policy: RulePolicy + kind: RuleKind + order: int + + @property + def metadata(self) -> RuleMetadata: + return self.rule.metadata + + +@dataclass(frozen=True, slots=True) +class RuleRegistry: + rules: tuple[ConfiguredRule, ...] + + def __iter__(self) -> Iterator[ConfiguredRule]: + return iter(self.rules) + + def by_id(self, rule_id: str) -> ConfiguredRule: + for configured in self.rules: + if configured.metadata.id == rule_id: + return configured + raise KeyError(rule_id) + + def enabled(self) -> tuple[ConfiguredRule, ...]: + return tuple(rule for rule in self.rules if rule.policy.enabled) + + def list(self, kind: RuleKind | None = None) -> tuple[ConfiguredRule, ...]: + return tuple(rule for rule in self.rules if kind is None or rule.kind == kind) + + +def _declarative_policy(definition: DeclarativeRuleBase) -> RulePolicy: + return RulePolicy.model_validate( + { + "enabled": definition.enabled, + "severity": definition.severity, + "blocking": definition.blocking, + "on_error": definition.on_error, + "max_signal_units": definition.max_signal_units, + "fixed_allowance": definition.fixed_allowance, + "first_cost": definition.first_cost, + "repeat_cost": definition.repeat_cost, + "cap": definition.cap, + "document_density": definition.document_density, + "density": definition.density, + } + ) + + +def build_registry( + config: SlopCopConfig, + *, + builtins: tuple[Rule, ...] = BUILTIN_RULES, + custom_rules: tuple[Rule, ...] = CUSTOM_RULES, +) -> RuleRegistry: + rows: list[tuple[Rule, RulePolicy, RuleKind]] = [] + python_ids = {rule.metadata.id for rule in (*builtins, *custom_rules)} + if len(python_ids) != len((*builtins, *custom_rules)): + raise ValueError("Python rule IDs must be unique") + + configured_ids = set(config.rules) + missing = python_ids - configured_ids + dangling = configured_ids - python_ids + if missing: + raise ValueError(f"rules lack policy blocks: {', '.join(sorted(missing))}") + if dangling: + raise ValueError( + f"policy blocks reference unknown Python rules: {', '.join(sorted(dangling))}" + ) + + for rule in builtins: + rows.append((rule, config.rules[rule.metadata.id], "builtin")) + + declarative_ids: set[str] = set() + for phrase_definition in config.custom_rules.phrase: + metadata = RuleMetadata( + id=phrase_definition.id, + version=phrase_definition.version, + category=phrase_definition.category, + title=phrase_definition.title, + rationale=phrase_definition.rationale, + advice=phrase_definition.advice, + score_group=phrase_definition.score_group, + ) + phrase_rule: Rule = PhraseRule(metadata, phrase_definition.phrases) + rows.append( + ( + phrase_rule, + _declarative_policy(phrase_definition), + "declarative", + ) + ) + declarative_ids.add(phrase_definition.id) + for regex_definition in config.custom_rules.regex: + metadata = RuleMetadata( + id=regex_definition.id, + version=regex_definition.version, + category=regex_definition.category, + title=regex_definition.title, + rationale=regex_definition.rationale, + advice=regex_definition.advice, + score_group=regex_definition.score_group, + ) + regex_rule: Rule = RegexRule( + metadata, + regex_definition.pattern, + tuple(flag.value for flag in regex_definition.flags), + ) + rows.append( + ( + regex_rule, + _declarative_policy(regex_definition), + "declarative", + ) + ) + declarative_ids.add(regex_definition.id) + for rule in custom_rules: + rows.append((rule, config.rules[rule.metadata.id], "custom")) + + all_ids = [rule.metadata.id for rule, _, _ in rows] + if len(set(all_ids)) != len(all_ids): + raise ValueError("rule IDs must be unique across all registry sources") + + configured: list[ConfiguredRule] = [] + for order, (rule, policy, kind) in enumerate(rows): + metadata = rule.metadata + if metadata.category not in config.categories: + raise ValueError( + f"rule {metadata.id!r} references unknown category {metadata.category!r}" + ) + declared = set(metadata.services) + selected = {policy.service} if policy.service is not None else set() + if metadata.execution_kind == "external": + if not selected or not selected.issubset(declared): + raise ValueError( + f"external rule {metadata.id!r} must select one of its declared services" + ) + elif selected: + raise ValueError(f"local rule {metadata.id!r} cannot select a service") + configured.append(ConfiguredRule(rule, policy, kind, order)) + return RuleRegistry(tuple(configured)) diff --git a/dev-tools/slop-cop/src/slop_cop/runtime.py b/dev-tools/slop-cop/src/slop_cop/runtime.py new file mode 100644 index 00000000..b43a036f --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/runtime.py @@ -0,0 +1,199 @@ +from __future__ import annotations + +import asyncio +import hashlib +import json +import os +import time +from collections.abc import Mapping +from dataclasses import dataclass, field +from typing import Any +from urllib.parse import urlsplit + +import httpx + +from slop_cop.config import ServiceConfig, SlopCopConfig +from slop_cop.rules.api import RuleMetadata + +_RETRYABLE_STATUS_CODES = frozenset({429, 502, 503, 504}) + + +class RuleRuntimeError(RuntimeError): + """A content-safe rule execution failure.""" + + +@dataclass(frozen=True, slots=True) +class ServiceResponse: + data: Mapping[str, Any] + audit: Mapping[str, str | int | float | bool | None] + + +@dataclass(slots=True) +class RuntimeManager: + config: SlopCopConfig + client: httpx.AsyncClient | None = None + deadline: float | None = None + environment: Mapping[str, str] = field(default_factory=lambda: os.environ) + _owns_client: bool = field(default=False, init=False) + _semaphore: asyncio.Semaphore = field(init=False) + + def __post_init__(self) -> None: + self._semaphore = asyncio.Semaphore(self.config.external_concurrency) + if self.deadline is None: + self.deadline = time.monotonic() + self.config.external_file_timeout_seconds + + async def __aenter__(self) -> RuntimeManager: + if self.client is None: + self.client = httpx.AsyncClient( + follow_redirects=False, + limits=httpx.Limits(max_connections=self.config.external_concurrency), + ) + self._owns_client = True + return self + + async def __aexit__(self, *args: object) -> None: + if self._owns_client and self.client is not None: + await self.client.aclose() + + def for_rule(self, metadata: RuleMetadata) -> RuleRuntime: + return RuleRuntime(self, metadata) + + +@dataclass(frozen=True, slots=True) +class RuleRuntime: + manager: RuntimeManager + metadata: RuleMetadata + + @property + def deadline(self) -> float: + assert self.manager.deadline is not None + return self.manager.deadline + + def service(self, name: str) -> NamedService: + if name not in self.metadata.services: + raise RuleRuntimeError( + f"rule {self.metadata.id} attempted to use an undeclared service" + ) + try: + service_config = self.manager.config.services[name] + except KeyError as error: + raise RuleRuntimeError(f"named service {name!r} is not configured") from error + return NamedService(self, name, service_config) + + +@dataclass(frozen=True, slots=True) +class NamedService: + runtime: RuleRuntime + name: str + config: ServiceConfig + + async def post_json(self, payload: Mapping[str, Any]) -> ServiceResponse: + manager = self.runtime.manager + if manager.client is None: + raise RuleRuntimeError("runtime manager is not active") + token = manager.environment.get(self.config.token_env) + if not token: + raise RuleRuntimeError(f"required credential for service {self.name!r} is missing") + + try: + encoded = json.dumps( + payload, ensure_ascii=False, separators=(",", ":"), sort_keys=True + ).encode("utf-8") + except (TypeError, ValueError) as error: + raise RuleRuntimeError("external rule request is not valid JSON") from error + content_hash = hashlib.sha256(encoded).hexdigest() + idempotency = hashlib.sha256( + f"{self.runtime.metadata.id}:{self.runtime.metadata.version}:" + f"{manager.config.digest}:{content_hash}".encode() + ).hexdigest() + headers = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + "Accept": "application/json", + "Idempotency-Key": idempotency, + } + + started = time.monotonic() + response: httpx.Response | None = None + body: bytes | None = None + attempts = 0 + try: + async with manager._semaphore: + for attempts in range(1, self.config.max_attempts + 1): + remaining = self.runtime.deadline - time.monotonic() + timeout = min(self.config.timeout_seconds, remaining) + if timeout <= 0: + raise RuleRuntimeError("external rule deadline expired") + response = None + try: + async with asyncio.timeout(timeout): + request = manager.client.build_request( + "POST", self.config.url, content=encoded, headers=headers + ) + response = await manager.client.send(request, stream=True) + if ( + response.status_code in _RETRYABLE_STATUS_CODES + and attempts < self.config.max_attempts + ): + continue + if response.is_redirect or not response.is_success: + break + content_type = ( + response.headers.get("content-type", "") + .split(";", 1)[0] + .strip() + .lower() + ) + if content_type and content_type not in { + "application/json", + "application/problem+json", + }: + raise RuleRuntimeError( + f"service {self.name!r} returned a non-JSON response" + ) + buffer = bytearray() + async for chunk in response.aiter_bytes(): + if len(buffer) + len(chunk) > self.config.max_response_bytes: + raise RuleRuntimeError( + f"service {self.name!r} response exceeded its size limit" + ) + buffer.extend(chunk) + body = bytes(buffer) + break + except (httpx.TransportError, TimeoutError): + if attempts >= self.config.max_attempts: + raise + finally: + if response is not None: + await response.aclose() + assert response is not None + except (httpx.TransportError, TimeoutError) as error: + raise RuleRuntimeError(f"service {self.name!r} request failed") from error + + if response.is_redirect: + raise RuleRuntimeError(f"service {self.name!r} returned a redirect") + if response.status_code < 200 or response.status_code >= 300: + raise RuleRuntimeError(f"service {self.name!r} returned HTTP {response.status_code}") + assert body is not None + try: + data = json.loads(body) + except (UnicodeDecodeError, json.JSONDecodeError) as error: + raise RuleRuntimeError(f"service {self.name!r} returned invalid JSON") from error + if not isinstance(data, dict): + raise RuleRuntimeError(f"service {self.name!r} response must be a JSON object") + + response_digest = hashlib.sha256(body).hexdigest() + hostname = urlsplit(self.config.url).hostname or "" + return ServiceResponse( + data=data, + audit={ + "service": self.name, + "hostname": hostname, + "request_content_hash": content_hash, + "response_digest": response_digest, + "request_id": response.headers.get("x-request-id"), + "attempts": attempts, + "latency_ms": round((time.monotonic() - started) * 1000, 3), + "outcome": "success", + }, + ) diff --git a/dev-tools/slop-cop/src/slop_cop/scoring.py b/dev-tools/slop-cop/src/slop_cop/scoring.py new file mode 100644 index 00000000..ff298077 --- /dev/null +++ b/dev-tools/slop-cop/src/slop_cop/scoring.py @@ -0,0 +1,164 @@ +from __future__ import annotations + +from collections.abc import Iterable +from dataclasses import dataclass + +from slop_cop.config import DensityUnit, PassageDensityPolicy, SlopCopConfig +from slop_cop.document import Document, ProseSegment, Span +from slop_cop.findings import CategoryCost, DensityMeasurement, Finding, RuleCost +from slop_cop.rules.registry import RuleRegistry + + +@dataclass(frozen=True, slots=True) +class ScoreResult: + score: int + hard_fail: bool + rule_costs: tuple[RuleCost, ...] + category_costs: tuple[CategoryCost, ...] + + +def _opportunities(document: Document, unit: DensityUnit) -> int: + if unit is DensityUnit.WORD: + return document.metrics.analyzable_words + if unit is DensityUnit.SENTENCE: + return document.metrics.analyzable_sentences + return document.metrics.analyzable_paragraphs + + +def _segments(document: Document, unit: DensityUnit) -> tuple[ProseSegment, ...]: + if unit is DensityUnit.WORD: + return document.tokens + if unit is DensityUnit.SENTENCE: + return document.sentences + return document.paragraphs + + +def _density( + document: Document, + findings: Iterable[Finding], + policy: PassageDensityPolicy, +) -> DensityMeasurement: + segments = _segments(document, policy.unit) + mapped = tuple( + finding + for finding in findings + if finding.span is not None and finding.chargeable and not finding.suppressed + ) + peak_units = 0 + peak_span: Span | None = None + if segments: + width = min(policy.window, len(segments)) + for index in range(0, len(segments) - width + 1): + start = segments[index].start + end = segments[index + width - 1].end + units = sum( + finding.units + for finding in mapped + if finding.span is not None and start <= finding.span.start < end + ) + if units > peak_units: + peak_units = units + peak_span = Span(start=start, end=end) + peak_excess = max(0, peak_units - policy.allowed_units) + cost = 0.0 + if peak_excess: + cost = min( + policy.cap, + policy.first_cost + policy.repeat_cost * (peak_excess - 1), + ) + return DensityMeasurement( + unit=policy.unit.value, + window=policy.window, + allowed_units=policy.allowed_units, + peak_units=peak_units, + peak_excess=peak_excess, + cost=cost, + window_span=peak_span, + ) + + +def score_findings( + document: Document, + findings: tuple[Finding, ...], + registry: RuleRegistry, + config: SlopCopConfig, +) -> ScoreResult: + rule_costs: list[RuleCost] = [] + costs_by_category: dict[str, float] = {category: 0.0 for category in config.categories} + findings_by_category: dict[str, list[Finding]] = { + category: [] for category in config.categories + } + + for configured in registry: + policy = configured.policy + if not policy.enabled: + continue + rule_findings = tuple( + finding + for finding in findings + if finding.rule_id == configured.metadata.id + and finding.chargeable + and not finding.suppressed + ) + units = sum(finding.units for finding in rule_findings) + allowance = policy.fixed_allowance + if policy.document_density is not None: + opportunity_count = _opportunities(document, policy.document_density.unit) + allowance += ( + opportunity_count // policy.document_density.interval + ) * policy.document_density.allowed_units + excess = max(0, units - allowance) + base_cost = 0.0 + if excess: + base_cost = policy.first_cost + policy.repeat_cost * (excess - 1) + density = ( + _density(document, rule_findings, policy.density) + if policy.density is not None + else None + ) + density_cost = density.cost if density is not None else 0.0 + charged = min(policy.cap, base_cost + density_cost) + rule_costs.append( + RuleCost( + rule_id=configured.metadata.id, + deduplicated_units=units, + allowance=allowance, + document_excess=excess, + base_cost=min(100.0, base_cost), + density=density, + cap=policy.cap, + charged_cost=charged, + ) + ) + costs_by_category[configured.metadata.category] += charged + findings_by_category[configured.metadata.category].extend(rule_findings) + + category_costs: list[CategoryCost] = [] + for category, category_policy in config.categories.items(): + base = min(100.0, costs_by_category[category]) + density = ( + _density(document, findings_by_category[category], category_policy.density) + if category_policy.density is not None + else None + ) + density_cost = density.cost if density is not None else 0.0 + charged = min(category_policy.cap, base + density_cost) + category_costs.append( + CategoryCost( + category=category, + rule_cost=base, + density=density, + cap=category_policy.cap, + charged_cost=charged, + ) + ) + + total = sum(category.charged_cost for category in category_costs) + score = max(0, round(100 - total)) + hard_fail = any(finding.blocking and not finding.suppressed for finding in findings) + return ScoreResult( + score=score, + hard_fail=hard_fail, + rule_costs=tuple(rule_costs), + category_costs=tuple(category_costs), + ) diff --git a/dev-tools/slop-cop/tests/fixtures/markdown/all-contexts.md b/dev-tools/slop-cop/tests/fixtures/markdown/all-contexts.md new file mode 100644 index 00000000..4e8e46ae --- /dev/null +++ b/dev-tools/slop-cop/tests/fixtures/markdown/all-contexts.md @@ -0,0 +1,27 @@ +--- +title: Hidden not just title +description: Hidden description +--- + +# Visible heading + + +Hidden generated not just phrase. + + +Visible prose is not just readable, but source mapped. + +`inline not just code` + +~~~python +print("not just fenced code") +~~~ + +[Visible label](https://example.test/not-just) + +![hidden not just alt text](image.png) + +
    Visible caption text.
    + +> Quoted not just prose. + diff --git a/dev-tools/slop-cop/tests/golden/.gitkeep b/dev-tools/slop-cop/tests/golden/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/dev-tools/slop-cop/tests/golden/.gitkeep @@ -0,0 +1 @@ + diff --git a/dev-tools/slop-cop/tests/rule_cases.toml b/dev-tools/slop-cop/tests/rule_cases.toml new file mode 100644 index 00000000..802dd7ee --- /dev/null +++ b/dev-tools/slop-cop/tests/rule_cases.toml @@ -0,0 +1,257 @@ +[[case]] +name = "not-just-visible-prose" +rule_id = "rhetoric.not-just" +kind = "positive" +source = "This is not just a wrapper." +expected_spans = [[8, 16]] + +[[case]] +name = "not-just-inline-code" +rule_id = "rhetoric.not-just" +kind = "counterexample" +source = "Run `not just` as literal input." +expected_spans = [] + +[[case]] +name = "assistant-disclosure" +rule_id = "artifact.ai-disclosure" +kind = "positive" +source = "As an AI language model, I cannot verify this." +expected_spans = [[0, 23]] + +[[case]] +name = "assistant-disclosure-counterexample" +rule_id = "artifact.ai-disclosure" +kind = "counterexample" +source = "The API reports its runtime type." + +[[case]] +name = "chat-preamble-positive" +rule_id = "artifact.chat-preamble" +kind = "positive" +source = "Certainly, here's the requested Dev Note." +[[case]] +name = "chat-preamble-counterexample" +rule_id = "artifact.chat-preamble" +kind = "counterexample" +source = "Here is the enforcement boundary." + +[[case]] +name = "continuation-offer-positive" +rule_id = "artifact.continuation-offer" +kind = "positive" +source = "Let me know if you'd like more detail." +[[case]] +name = "continuation-offer-counterexample" +rule_id = "artifact.continuation-offer" +kind = "counterexample" +source = "The next section provides more detail." + +[[case]] +name = "placeholder-positive" +rule_id = "artifact.placeholder" +kind = "positive" +source = "[TODO: add benchmark results]" +[[case]] +name = "placeholder-counterexample" +rule_id = "artifact.placeholder" +kind = "counterexample" +source = "The benchmark results follow." + +[[case]] +name = "instruction-residue-positive" +rule_id = "artifact.instruction-residue" +kind = "positive" +source = "Rewrite this section to sound concise." +[[case]] +name = "instruction-residue-counterexample" +rule_id = "artifact.instruction-residue" +kind = "counterexample" +source = "This section describes the concise protocol." + +[[case]] +name = "not-but-positive" +rule_id = "rhetoric.not-but" +kind = "positive" +source = "It is not a wrapper, but an enforcement boundary." +[[case]] +name = "not-but-counterexample" +rule_id = "rhetoric.not-but" +kind = "counterexample" +source = "It is an enforcement boundary." + +[[case]] +name = "no-no-positive" +rule_id = "rhetoric.no-no" +kind = "positive" +source = "No setup, no delay." +[[case]] +name = "no-no-counterexample" +rule_id = "rhetoric.no-no" +kind = "counterexample" +source = "Setup is immediate." + +[[case]] +name = "imperative-reframe-positive" +rule_id = "rhetoric.imperative-reframe" +kind = "positive" +source = "Don't configure it; govern it." +[[case]] +name = "imperative-reframe-counterexample" +rule_id = "rhetoric.imperative-reframe" +kind = "counterexample" +source = "Configure the policy explicitly." + +[[case]] +name = "stock-delves-positive" +rule_id = "vocabulary.stock.delves" +kind = "positive" +source = "This section delves into policy." +[[case]] +name = "stock-delves-counterexample" +rule_id = "vocabulary.stock.delves" +kind = "counterexample" +source = "This section explains policy." + +[[case]] +name = "stock-tapestry-positive" +rule_id = "vocabulary.stock.tapestry" +kind = "positive" +source = "The system is a rich tapestry of services." +[[case]] +name = "stock-tapestry-counterexample" +rule_id = "vocabulary.stock.tapestry" +kind = "counterexample" +source = "The system contains three services." + +[[case]] +name = "stock-realm-positive" +rule_id = "vocabulary.stock.realm" +kind = "positive" +source = "In the realm of security, policy matters." +[[case]] +name = "stock-realm-counterexample" +rule_id = "vocabulary.stock.realm" +kind = "counterexample" +source = "Security policy controls access." + +[[case]] +name = "stock-underscore-positive" +rule_id = "vocabulary.stock.underscore" +kind = "positive" +source = "This underscores the importance of isolation." +[[case]] +name = "stock-underscore-counterexample" +rule_id = "vocabulary.stock.underscore" +kind = "counterexample" +source = "Isolation prevents cross-tenant access." + +[[case]] +name = "stock-navigate-positive" +rule_id = "vocabulary.stock.navigate" +kind = "positive" +source = "Operators navigate the complexities of deployment." +[[case]] +name = "stock-navigate-counterexample" +rule_id = "vocabulary.stock.navigate" +kind = "counterexample" +source = "Operators deploy with one command." + +[[case]] +name = "stock-multifaceted-positive" +rule_id = "vocabulary.stock.multifaceted" +kind = "positive" +source = "The fix uses a multifaceted approach." +[[case]] +name = "stock-multifaceted-counterexample" +rule_id = "vocabulary.stock.multifaceted" +kind = "counterexample" +source = "The fix changes the parser and cache." + +[[case]] +name = "ngram-positive" +rule_id = "repetition.ngram" +kind = "positive" +source = "One stable result here.\n\nOne stable result here.\n\nOne stable result here." +[[case]] +name = "ngram-counterexample" +rule_id = "repetition.ngram" +kind = "counterexample" +source = "Each paragraph makes a distinct technical claim." + +[[case]] +name = "sentence-opener-positive" +rule_id = "repetition.sentence-opener" +kind = "positive" +source = "Clients receive stable data. Clients receive stable output. Clients receive stable results." +[[case]] +name = "sentence-opener-counterexample" +rule_id = "repetition.sentence-opener" +kind = "counterexample" +source = "Clients read data. Servers enforce policy. Operators inspect results." + +[[case]] +name = "template-shape-positive" +rule_id = "repetition.template-shape" +kind = "positive" +source = "Not a cache but a store. Not local but remote. Not optional but required." +[[case]] +name = "template-shape-counterexample" +rule_id = "repetition.template-shape" +kind = "counterexample" +source = "The cache is remote and required." + +[[case]] +name = "emphatic-fragments-positive" +rule_id = "repetition.emphatic-fragments" +kind = "positive" +source = "A direct result. No hidden state. One clear boundary. The service then returns data." +[[case]] +name = "emphatic-fragments-counterexample" +rule_id = "repetition.emphatic-fragments" +kind = "counterexample" +source = "1. Build the project.\n2. Run the tests.\n3. Review the report." + +[[case]] +name = "hedge-stack-positive" +rule_id = "repetition.hedge-stack" +kind = "positive" +source = "Perhaps this could generally improve latency." +[[case]] +name = "hedge-stack-counterexample" +rule_id = "repetition.hedge-stack" +kind = "counterexample" +source = "This reduces median latency by ten milliseconds." + +[[case]] +name = "question-answer-positive" +rule_id = "repetition.question-answer" +kind = "positive" +source = "What changed? The answer is isolation." +[[case]] +name = "question-answer-counterexample" +rule_id = "repetition.question-answer" +kind = "counterexample" +source = "Isolation changed the execution boundary." + +[[case]] +name = "vague-authority-positive" +rule_id = "attribution.vague-authority" +kind = "positive" +source = "Experts say this pattern is safe." +[[case]] +name = "vague-authority-counterexample" +rule_id = "attribution.vague-authority" +kind = "counterexample" +source = "The linked audit reports this pattern is safe." + +[[case]] +name = "citationless-study-positive" +rule_id = "attribution.citationless-study" +kind = "positive" +source = "A recent study shows lower latency." +[[case]] +name = "citationless-study-counterexample" +rule_id = "attribution.citationless-study" +kind = "counterexample" +source = "The benchmark below shows lower latency." diff --git a/dev-tools/slop-cop/tests/test_benchmarks.py b/dev-tools/slop-cop/tests/test_benchmarks.py new file mode 100644 index 00000000..4442c860 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_benchmarks.py @@ -0,0 +1,62 @@ +from __future__ import annotations + +from pathlib import Path + +import pytest +from pydantic import ValidationError + +from slop_cop.benchmarks import ( + BenchmarkManifest, + BenchmarkReference, + evaluate_benchmarks, + load_benchmark_manifest, +) +from slop_cop.config import load_config +from slop_cop.rules.registry import build_registry + +PROJECT = Path(__file__).parents[1] +CONFIG = PROJECT / "slop-cop.toml" +REVISION = "1" * 40 +PATH = "docs/dev-notes/posts/example.md" + + +def _reference(**updates: object) -> BenchmarkReference: + values: dict[str, object] = { + "name": "clean reference", + "revision": REVISION, + "path": PATH, + "source_url": f"https://github.com/NVIDIA/OpenShell-Research/blob/{REVISION}/{PATH}", + "expected_decision": "pass", + "min_score": 95, + "max_score": 100, + } + values.update(updates) + return BenchmarkReference.model_validate(values) + + +async def test_evaluate_benchmarks_scores_supplied_sources() -> None: + config = load_config(CONFIG) + reference = _reference() + results = await evaluate_benchmarks( + BenchmarkManifest(benchmark=(reference,)), + config=config, + registry=build_registry(config), + source_loader=lambda _: b"# Direct title\n\nThe controller rejects denied requests.\n", + ) + + assert len(results) == 1 + assert results[0].score == 100 + assert results[0].within_range + + +def test_reference_rejects_mismatched_source_url() -> None: + with pytest.raises(ValidationError, match="must identify its revision and path"): + _reference(source_url="https://github.com/NVIDIA/OpenShell-Research/blob/main/README.md") + + +def test_default_manifest_has_unique_references() -> None: + manifest = load_benchmark_manifest(PROJECT / "benchmarks/dev-note-history.toml") + keys = {(reference.revision, reference.path) for reference in manifest.benchmark} + + assert len(keys) == len(manifest.benchmark) + assert {reference.expected_decision for reference in manifest.benchmark} == {"pass", "fail"} diff --git a/dev-tools/slop-cop/tests/test_cli.py b/dev-tools/slop-cop/tests/test_cli.py new file mode 100644 index 00000000..73dee26d --- /dev/null +++ b/dev-tools/slop-cop/tests/test_cli.py @@ -0,0 +1,173 @@ +from __future__ import annotations + +import json +from pathlib import Path + +import pytest + +from slop_cop.cli import EXIT_ERROR, EXIT_OK, main + +PROJECT = Path(__file__).parents[1] +REPOSITORY = PROJECT.parents[1] +CONFIG = PROJECT / "slop-cop.toml" + + +def test_check_writes_one_run_result_to_json_and_html( + tmp_path: Path, capsys: pytest.CaptureFixture[str] +) -> None: + note = tmp_path / "note.md" + note.write_text( + "# A concrete implementation\n\nThe controller rejects requests outside its policy.\n", + encoding="utf-8", + ) + artifact = tmp_path / "artifact" + explicit_json = tmp_path / "explicit.json" + + result = main( + [ + "check", + "--config", + str(CONFIG), + "--repository-root", + str(tmp_path), + "--html-dir", + str(artifact), + "--json", + str(explicit_json), + str(note), + ] + ) + + assert result == EXIT_OK + assert "Slop Cop: PASS" in capsys.readouterr().out + artifact_data = json.loads((artifact / "report.json").read_text(encoding="utf-8")) + explicit_data = json.loads(explicit_json.read_text(encoding="utf-8")) + assert artifact_data == explicit_data + assert artifact_data["files"][0]["path"] == "note.md" + assert "A concrete implementation" in (artifact / "index.html").read_text(encoding="utf-8") + + +def test_check_without_paths_is_not_applicable_and_writes_reports(tmp_path: Path) -> None: + artifact = tmp_path / "artifact" + result = main( + [ + "check", + "--config", + str(CONFIG), + "--html-dir", + str(artifact), + ] + ) + data = json.loads((artifact / "report.json").read_text(encoding="utf-8")) + assert result == EXIT_OK + assert data["decision"] == "not_applicable" + assert data["score"] is None + + +def test_check_rejects_path_outside_repository_root( + tmp_path: Path, capsys: pytest.CaptureFixture[str] +) -> None: + repository = tmp_path / "repository" + repository.mkdir() + outside = tmp_path / "outside.md" + outside.write_text("Visible prose.", encoding="utf-8") + + result = main( + [ + "check", + "--config", + str(CONFIG), + "--repository-root", + str(repository), + str(outside), + ] + ) + assert result == EXIT_ERROR + assert "outside the repository root" in capsys.readouterr().err + + +def test_check_rejects_symlink_input(tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + target = tmp_path / "target.md" + target.write_text("Visible prose.", encoding="utf-8") + link = tmp_path / "note.md" + link.symlink_to(target) + + result = main( + [ + "check", + "--config", + str(CONFIG), + "--repository-root", + str(tmp_path), + str(link), + ] + ) + assert result == EXIT_ERROR + assert "must not contain symlinks" in capsys.readouterr().err + + +def test_check_rejects_symlink_baseline(tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + repository = tmp_path / "repository" + baseline = tmp_path / "baseline" + repository.mkdir() + baseline.mkdir() + note = repository / "note.md" + note.write_text("Visible head prose.", encoding="utf-8") + baseline_target = tmp_path / "old.md" + baseline_target.write_text("Visible base prose.", encoding="utf-8") + (baseline / "note.md").symlink_to(baseline_target) + + result = main( + [ + "check", + "--config", + str(CONFIG), + "--repository-root", + str(repository), + "--baseline-root", + str(baseline), + str(note), + ] + ) + assert result == EXIT_ERROR + assert "baseline input must not contain symlinks" in capsys.readouterr().err + + +def test_list_and_explain_use_the_effective_registry( + capsys: pytest.CaptureFixture[str], +) -> None: + assert main(["list-rules", "--config", str(CONFIG), "--kind", "builtin"]) == EXIT_OK + assert "rhetoric.not-just" in capsys.readouterr().out + + assert main(["explain", "--config", str(CONFIG), "rhetoric.not-just"]) == EXIT_OK + output = capsys.readouterr().out + assert "Name the broader property directly" in output + assert '"fixed_allowance"' in output + + +def test_explain_unknown_rule_is_an_input_error(capsys: pytest.CaptureFixture[str]) -> None: + assert main(["explain", "--config", str(CONFIG), "custom.missing"]) == EXIT_ERROR + assert "unknown rule" in capsys.readouterr().err + + +def test_workflow_preserves_renamed_baselines_and_has_stdlib_error_report() -> None: + workflow = (REPOSITORY / ".github/workflows/slop-cop.yml").read_text(encoding="utf-8") + fallback = workflow.split("Create an error report after an early analysis failure", 1)[1] + fallback = fallback.split("Add bounded annotations and job summary", 1)[0] + assert "previous_filename" in workflow + assert "baseline.mkdir(parents=True, exist_ok=True)" in workflow + assert "uv run" not in fallback + assert "from slop_cop" not in fallback + assert "json.dumps(result" in fallback + assert "html.escape(message)" in fallback + + +def test_trusted_reporter_revalidates_override_and_uses_pr_head() -> None: + workflow = (REPOSITORY / ".github/workflows/slop-cop-report.yml").read_text(encoding="utf-8") + assert "github.rest.pulls.getReview" in workflow + assert "github.rest.repos.getCollaboratorPermissionLevel" in workflow + assert "review.commit_id !== headSha" in workflow + assert "report.head_sha !== headSha" in workflow + assert "report.head_sha !== run.head_sha" not in workflow + assert "run.pull_requests.length !== 1" in workflow + assert ".replaceAll('@', '@')" in workflow diff --git a/dev-tools/slop-cop/tests/test_config.py b/dev-tools/slop-cop/tests/test_config.py new file mode 100644 index 00000000..22d2a2e3 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_config.py @@ -0,0 +1,218 @@ +import json +from pathlib import Path + +import pytest +from pydantic import ValidationError + +from slop_cop.config import ( + RegexFlag, + RegexRuleConfig, + RulePolicy, + ServiceConfig, + Severity, + load_config, +) +from slop_cop.document import DocumentMetrics +from slop_cop.findings import AnalysisState, Decision, FileResult, RunResult + +PROJECT_ROOT = Path(__file__).parents[1] + + +def test_checked_in_configuration_is_valid_and_stable() -> None: + config = load_config(PROJECT_ROOT / "slop-cop.toml") + + assert config.schema_version == 1 + assert config.threshold == 80 + assert len(config.digest) == 64 + assert config.digest == load_config(PROJECT_ROOT / "slop-cop.toml").digest + assert "artifact.ai-disclosure" in config.rules + assert config.custom_rules.phrase == () + assert config.services == {} + + +def test_unknown_configuration_key_is_rejected(tmp_path: Path) -> None: + path = tmp_path / "config.toml" + path.write_text( + """ +schema_version = 1 +profile = "dev-notes" +threshold = 80 +paths = ["docs/dev-notes/posts/*.md"] +unexpected = true +[categories.structure] +cap = 0 +[rules] +""", + encoding="utf-8", + ) + + with pytest.raises(ValidationError, match="unexpected"): + load_config(path) + + +def test_invalid_rule_policy_relationships_are_rejected() -> None: + with pytest.raises(ValidationError, match="info rules"): + RulePolicy( + severity=Severity.INFO, + max_signal_units=1, + fixed_allowance=0, + first_cost=1, + repeat_cost=0, + cap=1, + ) + + with pytest.raises(ValidationError, match="error rules"): + RulePolicy( + severity=Severity.ERROR, + max_signal_units=1, + fixed_allowance=0, + first_cost=1, + repeat_cost=0, + cap=1, + ) + + +def test_service_requires_https_except_for_loopback() -> None: + assert ServiceConfig( + url="http://localhost:8080/judge", + token_env="SLOP_COP_TEST_TOKEN", + required_judge_revision="judge-v1", + ).url.startswith("http://") + with pytest.raises(ValidationError, match="HTTPS"): + ServiceConfig( + url="http://judge.example.test/v1", + token_env="SLOP_COP_TEST_TOKEN", + required_judge_revision="judge-v1", + ) + + +def _regex_rule( + pattern: str, + *, + flags: tuple[RegexFlag, ...] = (), +) -> RegexRuleConfig: + return RegexRuleConfig( + id="custom.regex-test", + version=1, + category="rhetoric", + severity=Severity.WARNING, + title="Regex test", + rationale="Finds a configured pattern.", + advice="Revise the matching prose.", + max_signal_units=1, + fixed_allowance=0, + first_cost=1, + repeat_cost=1, + cap=3, + pattern=pattern, + flags=flags, + ) + + +def test_regex_rule_rejects_unsafe_constructs() -> None: + with pytest.raises(ValidationError, match="unsupported construct"): + _regex_rule(r"(word)\1") + assert _regex_rule(r"\bword\b", flags=(RegexFlag.IGNORECASE,)).pattern + + +def test_run_result_round_trips_through_versioned_json() -> None: + config = load_config(PROJECT_ROOT / "slop-cop.toml") + metrics = DocumentMetrics( + source_bytes=100, + source_code_points=100, + analyzable_words=12, + analyzable_sentences=2, + analyzable_paragraphs=1, + masked_code_points=0, + ) + file_result = FileResult( + path="docs/dev-notes/posts/note.md", + analysis_state=AnalysisState.COMPLETE, + decision=Decision.PASS, + score=95, + threshold=80, + metrics=metrics, + ) + result = RunResult( + analysis_state=AnalysisState.COMPLETE, + decision=Decision.PASS, + score=95, + threshold=80, + repository="NVIDIA/OpenShell-Research", + head_sha="a" * 40, + tool_version="0.1.0", + config_digest=config.digest, + files=(file_result,), + ) + + restored = RunResult.model_validate_json(result.model_dump_json()) + + assert restored == result + assert restored.schema_version == 1 + + +def test_result_models_reject_unknown_fields_and_inconsistent_minimum_score() -> None: + payload = { + "schema_version": 1, + "analysis_state": "complete", + "decision": "pass", + "score": 99, + "threshold": 80, + "tool_version": "0.1.0", + "config_digest": "0" * 64, + "files": [ + { + "path": "docs/dev-notes/posts/note.md", + "analysis_state": "complete", + "decision": "pass", + "score": 95, + "threshold": 80, + "metrics": { + "source_bytes": 1, + "source_code_points": 1, + "analyzable_words": 1, + "analyzable_sentences": 1, + "analyzable_paragraphs": 1, + "masked_code_points": 0, + }, + } + ], + } + with pytest.raises(ValidationError, match="minimum"): + RunResult.model_validate_json(json.dumps(payload)) + + payload["score"] = 95 + payload["unexpected"] = True + with pytest.raises(ValidationError, match="unexpected"): + RunResult.model_validate_json(json.dumps(payload)) + + +def test_analysis_error_can_fail_without_manufacturing_a_score() -> None: + metrics = DocumentMetrics( + source_bytes=1, + source_code_points=1, + analyzable_words=0, + analyzable_sentences=0, + analyzable_paragraphs=0, + masked_code_points=0, + ) + file_result = FileResult( + path="docs/dev-notes/posts/note.md", + analysis_state=AnalysisState.ERROR, + decision=Decision.FAIL, + score=None, + threshold=80, + metrics=metrics, + ) + + result = RunResult( + analysis_state=AnalysisState.ERROR, + decision=Decision.FAIL, + score=None, + threshold=80, + tool_version="0.1.0", + config_digest="0" * 64, + files=(file_result,), + ) + + assert result.score is None diff --git a/dev-tools/slop-cop/tests/test_document.py b/dev-tools/slop-cop/tests/test_document.py new file mode 100644 index 00000000..3ceab769 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_document.py @@ -0,0 +1,124 @@ +from pathlib import Path + +import pytest + +from slop_cop.config import ContextConfig +from slop_cop.document import ProjectionError, build_document, load_document + +FIXTURES = Path(__file__).parent / "fixtures" / "markdown" +REPOSITORY_ROOT = Path(__file__).parents[3] + + +def test_projection_masks_ignored_contexts_and_preserves_visible_prose() -> None: + document = load_document(FIXTURES / "all-contexts.md") + + assert len(document.prose_projection) == len(document.source) + assert [index for index, char in enumerate(document.source) if char in "\r\n"] == [ + index for index, char in enumerate(document.prose_projection) if char in "\r\n" + ] + assert "Visible prose is not just readable" in document.prose_projection + assert "Visible label" in document.prose_projection + assert "Visible caption text" in document.prose_projection + assert "Hidden generated" not in document.prose_projection + assert "inline not just code" not in document.prose_projection + assert "not just fenced code" not in document.prose_projection + assert "example.test" not in document.prose_projection + assert "hidden not just alt text" not in document.prose_projection + assert "Quoted not just prose" not in document.prose_projection + + +def test_blockquotes_can_be_scanned_explicitly() -> None: + source = "> Quoted prose.\n\nVisible prose.\n" + + ignored = build_document("note.md", source) + scanned = build_document("note.md", source, contexts=ContextConfig(scan_blockquotes=True)) + + assert "Quoted prose" not in ignored.prose_projection + assert "Quoted prose" in scanned.prose_projection + + +def test_segments_retain_exact_source_offsets_and_unicode_keys() -> None: + source = "# Heading\n\nCafé’s source-aware token. Next sentence!\n" + document = build_document("note.md", source) + + cafe = next(token for token in document.tokens if token.text.startswith("Café")) + assert document.source[cafe.start : cafe.end] == "Café’s" + assert cafe.normalized == "café’s" + assert document.line_column(cafe.start) == (3, 1) + assert len(document.sentences) == 3 + assert len(document.paragraphs) == 2 + + +def test_suppression_binds_to_the_next_prose_block() -> None: + source = ( + '\n\n' + "This is not just a wrapper.\n\nLater prose.\n" + ) + document = build_document("note.md", source) + + assert len(document.suppressions) == 1 + suppression = document.suppressions[0] + assert suppression.rule_ids == ("rhetoric.not-just",) + assert document.source[suppression.target_span.start : suppression.target_span.end].startswith( + "This is not just" + ) + assert "slop-cop" not in document.prose_projection + + +@pytest.mark.parametrize( + ("source", "message"), + [ + ("---\ntitle: Missing end\n", "unterminated YAML"), + ("```python\npass\n", "unterminated fenced"), + ("Text with `unfinished code.\n", "unterminated inline"), + ("\nText.\n", "invalid Slop Cop"), + ( + '\n', + "no following prose", + ), + ], +) +def test_malformed_masked_constructs_are_errors(source: str, message: str) -> None: + with pytest.raises(ProjectionError, match=message): + build_document("note.md", source) + + +def test_invalid_utf8_nul_and_size_are_errors() -> None: + with pytest.raises(ProjectionError, match="valid UTF-8"): + build_document("note.md", b"\xff") + with pytest.raises(ProjectionError, match="NUL"): + build_document("note.md", "before\0after") + with pytest.raises(ProjectionError, match="exceeds 5 bytes"): + build_document("note.md", b"123456", max_source_bytes=5) + + +def test_masked_ranges_are_sorted_and_non_overlapping() -> None: + document = build_document("note.md", "[label](https://example.test/`x`) and `code`.\n") + + assert all( + left.end <= right.start + for left, right in zip(document.masked_ranges, document.masked_ranges[1:], strict=False) + ) + for masked in document.masked_ranges: + assert all( + projected == original if original in "\r\n" else projected == " " + for original, projected in zip( + document.source[masked.start : masked.end], + document.prose_projection[masked.start : masked.end], + strict=True, + ) + ) + + +def test_current_dev_note_projects_without_ambiguous_ranges() -> None: + note = REPOSITORY_ROOT / ( + "docs/dev-notes/posts/2026-07-20-policy-controlling-reachy-mini-with-openshell.md" + ) + + document = load_document(note) + + assert document.metrics.analyzable_words > 500 + assert any("front-matter" in item.reasons for item in document.masked_ranges) + assert any("generated-byline" in item.reasons for item in document.masked_ranges) + assert "Bringing Privacy and Security to the Edge" in document.prose_projection diff --git a/dev-tools/slop-cop/tests/test_engine.py b/dev-tools/slop-cop/tests/test_engine.py new file mode 100644 index 00000000..21b60ac3 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_engine.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +import asyncio +from pathlib import Path + +from slop_cop.config import load_config +from slop_cop.document import build_document +from slop_cop.engine import analyze_document +from slop_cop.findings import Decision, FileResult +from slop_cop.rules.registry import build_registry + +CONFIG_PATH = Path(__file__).parents[1] / "slop-cop.toml" + + +def _analyze(source: str) -> FileResult: + config = load_config(CONFIG_PATH) + registry = build_registry(config) + document = build_document("docs/dev-notes/posts/test.md", source) + return asyncio.run(analyze_document(document, registry, config)).file_result + + +def test_blocking_artifact_fails_independently_of_score() -> None: + result = _analyze("As an AI language model, I cannot complete this Dev Note.") + assert result.decision is Decision.FAIL + assert result.hard_fail + assert any(finding.rule_id == "artifact.ai-disclosure" for finding in result.findings) + + +def test_overlap_charges_one_primary_finding() -> None: + result = _analyze( + "This is not just a wrapper, but an enforcement boundary. " + "It is not just configuration, but policy." + ) + overlapping = [ + finding + for finding in result.findings + if finding.rule_id in {"rhetoric.not-but", "rhetoric.not-just"} + ] + assert sum(finding.chargeable for finding in overlapping) == 2 + assert any(finding.related_rule_ids for finding in overlapping) + + +def test_ignore_next_suppresses_only_the_target_block() -> None: + source = ( + '\n' + "This is not just transport.\n\n" + "This is not just storage." + ) + result = _analyze(source) + matches = [item for item in result.findings if item.rule_id == "rhetoric.not-just"] + assert sum(item.suppressed for item in matches) == 1 + assert sum(not item.suppressed for item in matches) == 1 + + +def test_dense_multi_family_fixture_fails_threshold() -> None: + paragraph = ( + "Clients receive data now. Clients receive output later. " + "Clients receive errors immediately. " + "It is not just a wrapper, but a policy boundary. " + "This applies in the realm of systems." + ) + result = _analyze("\n\n".join(paragraph for _ in range(6))) + assert result.score is not None and result.score < result.threshold + assert result.decision is Decision.FAIL diff --git a/dev-tools/slop-cop/tests/test_report.py b/dev-tools/slop-cop/tests/test_report.py new file mode 100644 index 00000000..dcc9e42d --- /dev/null +++ b/dev-tools/slop-cop/tests/test_report.py @@ -0,0 +1,175 @@ +from __future__ import annotations + +import json +from pathlib import Path + +import pytest + +from slop_cop.report import ( + ReportError, + html_report, + json_report, + terminal_report, + write_report_directory, +) + + +def sample_result() -> dict[str, object]: + return { + "schema_version": 1, + "analysis_state": "complete", + "decision": "fail", + "score": 76, + "threshold": 80, + "base_sha": "b" * 40, + "head_sha": "a" * 40, + "tool_version": "0.1.0", + "config_digest": "d" * 64, + "files": [ + { + "path": "docs/dev-notes/posts/example.md", + "analysis_state": "complete", + "decision": "fail", + "score": 76, + "threshold": 80, + "hard_fail": False, + "metrics": { + "source_bytes": 61, + "source_code_points": 61, + "analyzable_words": 40, + "analyzable_sentences": 1, + "analyzable_paragraphs": 1, + "masked_code_points": 5, + }, + "category_costs": [ + { + "category": "rhetoric", + "rule_cost": 24, + "density": None, + "cap": 24, + "charged_cost": 24, + } + ], + "rule_costs": [ + { + "rule_id": "rhetoric.not-just", + "deduplicated_units": 2, + "allowance": 1, + "document_excess": 1, + "base_cost": 2, + "density": { + "unit": "paragraph", + "window": 3, + "allowed_units": 1, + "peak_units": 2, + "peak_excess": 1, + "cost": 3, + "window_span": {"start": 0, "end": 61}, + }, + "cap": 5, + "charged_cost": 5, + } + ], + "findings": [ + { + "rule_id": "rhetoric.not-just", + "category": "rhetoric", + "severity": "warning", + "source_path": "docs/dev-notes/posts/example.md", + "span": {"start": 40, "end": 48}, + "line": 1, + "column": 40, + "excerpt": "", + "normalized_key": "not just", + "score_group": "not-but", + "explanation": "Formulaic contrast.", + "advice": "State the concrete distinction.", + "units": 1, + } + ], + "errors": [], + "suppressions": [], + "base": { + "score": 83, + "delta": -7, + "analysis_state": "complete", + "findings": {"added": [], "removed": [], "persistent": []}, + "errors": [], + }, + } + ], + "rule_errors": [], + "external_audits": [ + { + "rule_id": "custom.judge", + "rule_version": 1, + "service": "judge.example", + "endpoint_hostname": "judge.example", + "content_digest": "c" * 64, + "request_schema_version": "1", + "judge_revision": "v1", + "attempts": 1, + "latency_ms": 42, + "outcome": "success", + "response_digest": "e" * 64, + } + ], + } + + +def test_json_report_is_stable_and_versioned() -> None: + rendered = json_report(sample_result()) + assert rendered.endswith("\n") + assert json.loads(rendered)["schema_version"] == 1 + assert rendered.index('"analysis_state"') < rendered.index('"decision"') + + +def test_terminal_report_includes_decision_score_density_and_location() -> None: + rendered = terminal_report(sample_result()) + assert "Slop Cop: FAIL score=76 threshold=80" in rendered + assert "delta=-7" in rendered + assert "category rhetoric: -24 points" in rendered + assert "docs/dev-notes/posts/example.md:1:40 [rhetoric.not-just]" in rendered + + +def test_html_report_is_self_contained_and_escapes_all_result_text() -> None: + source = "A note that is not just vague." + rendered = html_report(sample_result(), sources={"docs/dev-notes/posts/example.md": source}) + assert "Content-Security-Policy" in rendered + assert "default-src 'none'" in rendered + assert "" not in rendered + assert "<script>alert(1)</script>" in rendered + assert "" not in rendered + assert "<img src=x onerror=alert(1)>" in rendered + assert "https://" not in rendered + assert "External rule audit" in rendered + assert "Passage density" in rendered + + +def test_report_directory_contains_canonical_pair(tmp_path: Path) -> None: + html_path, json_path = write_report_directory(sample_result(), tmp_path / "artifact") + assert html_path.name == "index.html" + assert json_path.name == "report.json" + assert json.loads(json_path.read_text())["decision"] == "fail" + + +def test_html_size_limit_is_enforced(monkeypatch: pytest.MonkeyPatch) -> None: + monkeypatch.setattr("slop_cop.report.MAX_HTML_BYTES", 100) + with pytest.raises(ReportError, match="exceeds"): + html_report(sample_result()) + + +def test_not_applicable_has_no_synthetic_score() -> None: + result = { + "schema_version": 1, + "analysis_state": "not_applicable", + "decision": "not_applicable", + "score": None, + "threshold": 80, + "tool_version": "0.1.0", + "config_digest": "d" * 64, + "files": [], + } + rendered = html_report(result) + assert "No changed Dev Note required analysis." in rendered + assert "Score
    —" in rendered diff --git a/dev-tools/slop-cop/tests/test_rule_contract.py b/dev-tools/slop-cop/tests/test_rule_contract.py new file mode 100644 index 00000000..9b989cf0 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_rule_contract.py @@ -0,0 +1,37 @@ +from __future__ import annotations + +import asyncio +from pathlib import Path + +from slop_cop.config import load_config +from slop_cop.document import build_document +from slop_cop.rules.api import RuleContext, RuleEvaluation +from slop_cop.rules.registry import build_registry + +CONFIG_PATH = Path(__file__).parents[1] / "slop-cop.toml" + + +def test_every_configured_rule_has_valid_metadata_and_evaluation() -> None: + config = load_config(CONFIG_PATH) + registry = build_registry(config) + document = build_document("note.md", "A direct technical statement with enough prose.") + context = RuleContext(document=document) + + async def evaluate_all() -> None: + for configured in registry: + result = await configured.rule.evaluate(context, object()) + assert isinstance(result, RuleEvaluation) + assert configured.metadata.category in config.categories + assert ( + configured.policy.cap <= config.categories[configured.metadata.category].cap + or configured.metadata.category == "artifact" + ) + + asyncio.run(evaluate_all()) + assert len({rule.metadata.id for rule in registry}) == len(registry.rules) + + +def test_production_custom_registry_is_empty() -> None: + from slop_cop.rules.custom import CUSTOM_RULES + + assert CUSTOM_RULES == () diff --git a/dev-tools/slop-cop/tests/test_rule_extension.py b/dev-tools/slop-cop/tests/test_rule_extension.py new file mode 100644 index 00000000..c9d7eb34 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_rule_extension.py @@ -0,0 +1,309 @@ +from __future__ import annotations + +import asyncio +from collections.abc import Mapping +from pathlib import Path +from typing import Any + +import httpx +import pytest +from pydantic import BaseModel, ConfigDict, Field + +from slop_cop.config import RegexFlag, Severity, SlopCopConfig, load_config +from slop_cop.document import build_document +from slop_cop.rules.api import ( + FunctionRule, + RuleContext, + RuleEvaluation, + RuleMetadata, + RuleSignal, +) +from slop_cop.rules.registry import build_registry +from slop_cop.runtime import RuleRuntime, RuntimeManager + +CONFIG_PATH = Path(__file__).parents[1] / "slop-cop.toml" + + +async def _evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: + start = context.projected_prose.find("repeated claim") + if start < 0: + return RuleEvaluation() + return RuleEvaluation(signals=(RuleSignal(start=start, end=start + 14, key="repeated claim"),)) + + +def test_python_custom_rule_uses_the_same_registry_contract() -> None: + rule = FunctionRule( + RuleMetadata( + id="custom.repeated-claim", + category="repetition", + title="Repeated claim", + rationale="The claim repeats without new evidence.", + advice="Keep the instance supported by evidence.", + ), + _evaluate, + ) + raw = load_config(CONFIG_PATH).model_dump(mode="python") + raw["rules"][rule.metadata.id] = { + "severity": Severity.WARNING, + "max_signal_units": 1, + "fixed_allowance": 0, + "first_cost": 2.0, + "repeat_cost": 1.0, + "cap": 5.0, + } + config = SlopCopConfig.model_validate(raw) + registry = build_registry(config, custom_rules=(rule,)) + document = build_document("note.md", "This is a repeated claim in visible prose.") + evaluation = asyncio.run( + registry.by_id(rule.metadata.id).rule.evaluate(RuleContext(document), object()) + ) + assert evaluation.signals[0].start == 10 + + +def test_declarative_phrase_and_regex_rules_require_no_core_edits() -> None: + raw = load_config(CONFIG_PATH).model_dump(mode="python") + raw["custom_rules"] = { + "phrase": ( + { + "id": "custom.empty-intensifier", + "version": 1, + "category": "vocabulary", + "severity": Severity.WARNING, + "title": "Empty intensifier", + "rationale": "The phrase asserts importance without a concrete effect.", + "advice": "Name the concrete effect.", + "phrases": ("deeply transformative",), + "max_signal_units": 1, + "fixed_allowance": 0, + "first_cost": 2.0, + "repeat_cost": 1.0, + "cap": 5.0, + }, + ), + "regex": ( + { + "id": "custom.generic-promise", + "version": 1, + "category": "rhetoric", + "severity": Severity.WARNING, + "title": "Generic promise", + "rationale": "The sentence promises unspecified later detail.", + "advice": "Name the follow-up topic or remove the promise.", + "pattern": r"\bmore on (?:that|this) (?:later|soon)\b", + "flags": (RegexFlag.IGNORECASE,), + "max_signal_units": 1, + "fixed_allowance": 0, + "first_cost": 2.0, + "repeat_cost": 1.0, + "cap": 5.0, + }, + ), + } + registry = build_registry(SlopCopConfig.model_validate(raw)) + + async def evaluate(rule_id: str, source: str) -> RuleEvaluation: + document = build_document("note.md", source) + return await registry.by_id(rule_id).rule.evaluate(RuleContext(document), object()) + + phrase = asyncio.run( + evaluate("custom.empty-intensifier", "This is deeply transformative work.") + ) + assert [(signal.start, signal.end) for signal in phrase.signals] == [(8, 29)] + assert not asyncio.run( + evaluate("custom.empty-intensifier", "This changes request routing.") + ).signals + + regex = asyncio.run( + evaluate("custom.generic-promise", "More on this later, after the benchmark.") + ) + assert [(signal.start, signal.end) for signal in regex.signals] == [(0, 18)] + assert not asyncio.run( + evaluate("custom.generic-promise", "The benchmark follows in the next section.") + ).signals + + +def test_declarative_duplicate_and_dangling_ids_fail_clearly() -> None: + duplicate = load_config(CONFIG_PATH).model_dump(mode="python") + duplicate["custom_rules"] = { + "phrase": ( + { + "id": "rhetoric.not-just", + "version": 1, + "category": "rhetoric", + "severity": Severity.INFO, + "title": "Duplicate", + "rationale": "This ID already exists.", + "advice": "Use a unique ID.", + "phrases": ("duplicate phrase",), + "max_signal_units": 1, + "fixed_allowance": 0, + "first_cost": 0.0, + "repeat_cost": 0.0, + "cap": 0.0, + }, + ) + } + with pytest.raises(ValueError, match="unique"): + SlopCopConfig.model_validate(duplicate) + + dangling = load_config(CONFIG_PATH).model_dump(mode="python") + dangling["rules"]["custom.missing-rule"] = { + "severity": Severity.INFO, + "max_signal_units": 1, + "fixed_allowance": 0, + "first_cost": 0.0, + "repeat_cost": 0.0, + "cap": 0.0, + } + with pytest.raises(ValueError, match="unknown Python rules"): + build_registry(SlopCopConfig.model_validate(dangling)) + + +class JudgeResponse(BaseModel): + model_config = ConfigDict(extra="forbid", frozen=True) + + schema_version: int + judge_revision: str + label: str + strength: int = Field(ge=1, le=5) + explanation: str = Field(max_length=200) + evidence: tuple[str, ...] = () + + +def _external_config() -> SlopCopConfig: + raw = load_config(CONFIG_PATH).model_dump(mode="python") + raw["services"] = { + "editorial_judge": { + "url": "https://judge.example/v1/evaluate", + "token_env": "SLOP_COP_JUDGE_TOKEN", + "timeout_seconds": 5.0, + "max_response_bytes": 4096, + "max_attempts": 1, + "required_judge_revision": "editorial-v1", + } + } + raw["rules"]["custom.editorial-judge"] = { + "severity": Severity.WARNING, + "service": "editorial_judge", + "max_signal_units": 5, + "fixed_allowance": 0, + "first_cost": 4.0, + "repeat_cost": 2.0, + "cap": 12.0, + } + return SlopCopConfig.model_validate(raw) + + +def _judge_rule() -> FunctionRule: + metadata = RuleMetadata( + id="custom.editorial-judge", + category="rhetoric", + title="Editorial judge", + rationale="The configured judge found formulaic prose.", + advice="Review the cited prose and state the claim directly.", + execution_kind="external", + services=("editorial_judge",), + ) + + async def evaluate(context: RuleContext, runtime: RuleRuntime) -> RuleEvaluation: + response = await runtime.service("editorial_judge").post_json( + {"schema_version": 1, "prose": context.projected_prose} + ) + result = JudgeResponse.model_validate(response.data) + if result.schema_version != 1: + raise ValueError("unsupported judge response schema") + expected = runtime.manager.config.services["editorial_judge"].required_judge_revision + if result.judge_revision != expected: + raise ValueError("judge revision does not match configured revision") + signal = RuleSignal.document( + key=result.label, + units=result.strength, + detail=result.explanation, + evidence=context.map_exact_quotes(result.evidence), + ) + return RuleEvaluation( + signals=(signal,), audit={**response.audit, "judge_revision": result.judge_revision} + ) + + return FunctionRule(metadata, evaluate) + + +def test_external_custom_rule_maps_evidence_and_bounded_strength() -> None: + async def run() -> RuleEvaluation: + response_body = { + "schema_version": 1, + "judge_revision": "editorial-v1", + "label": "formulaic", + "strength": 3, + "explanation": "The conclusion repeats a generic promise.", + "evidence": ["paving the way"], + } + client = httpx.AsyncClient( + transport=httpx.MockTransport(lambda _: httpx.Response(200, json=response_body)) + ) + config = _external_config() + rule = _judge_rule() + registry = build_registry(config, custom_rules=(rule,)) + document = build_document("note.md", "This is paving the way for later work.") + manager = RuntimeManager( + config, + client=client, + environment={"SLOP_COP_JUDGE_TOKEN": "secret"}, + ) + evaluation = await registry.by_id(rule.metadata.id).rule.evaluate( + RuleContext(document), manager.for_rule(rule.metadata) + ) + await client.aclose() + return evaluation + + evaluation = asyncio.run(run()) + assert evaluation.signals[0].units == 3 + assert evaluation.signals[0].evidence[0].start == 8 + assert evaluation.audit["judge_revision"] == "editorial-v1" + assert "response_digest" in evaluation.audit + + +@pytest.mark.parametrize( + "response_body", + [ + { + "schema_version": 1, + "judge_revision": "stale-v0", + "label": "formulaic", + "strength": 1, + "explanation": "Stale judge response.", + }, + { + "schema_version": 1, + "judge_revision": "editorial-v1", + "label": "formulaic", + "strength": 99, + "explanation": "Invalid strength.", + "unexpected": True, + }, + ], +) +def test_external_custom_rule_rejects_stale_or_malformed_response( + response_body: Mapping[str, Any], +) -> None: + async def run() -> None: + client = httpx.AsyncClient( + transport=httpx.MockTransport(lambda _: httpx.Response(200, json=response_body)) + ) + config = _external_config() + rule = _judge_rule() + manager = RuntimeManager( + config, + client=client, + environment={"SLOP_COP_JUDGE_TOKEN": "secret"}, + ) + try: + await rule.evaluate( + RuleContext(build_document("note.md", "Direct prose for review.")), + manager.for_rule(rule.metadata), + ) + finally: + await client.aclose() + + with pytest.raises((ValueError, RuntimeError)): + asyncio.run(run()) diff --git a/dev-tools/slop-cop/tests/test_rules.py b/dev-tools/slop-cop/tests/test_rules.py new file mode 100644 index 00000000..3bd871c8 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_rules.py @@ -0,0 +1,86 @@ +from __future__ import annotations + +import asyncio +import tomllib +from pathlib import Path + +import pytest + +from slop_cop.config import load_config +from slop_cop.document import build_document +from slop_cop.rules.api import RuleContext, RuleSignal +from slop_cop.rules.registry import build_registry + +CONFIG_PATH = Path(__file__).parents[1] / "slop-cop.toml" +CASE_PATH = Path(__file__).with_name("rule_cases.toml") +RULE_CASES = tomllib.loads(CASE_PATH.read_text(encoding="utf-8"))["case"] + + +def _signals(rule_id: str, source: str) -> tuple[RuleSignal, ...]: + config = load_config(CONFIG_PATH) + rule = build_registry(config).by_id(rule_id).rule + document = build_document("note.md", source) + return asyncio.run(rule.evaluate(RuleContext(document), object())).signals + + +@pytest.mark.parametrize("case", RULE_CASES, ids=lambda case: str(case["name"])) +def test_rule_case(case: dict[str, object]) -> None: + rule_id = str(case["rule_id"]) + source = str(case["source"]) + signals = _signals(rule_id, source) + if case["kind"] == "positive": + assert signals, f"{rule_id} did not emit a signal" + else: + assert not signals, f"{rule_id} emitted an unexpected signal" + if "expected_spans" in case: + expected_raw = case["expected_spans"] + assert isinstance(expected_raw, list) + expected: list[tuple[int, int]] = [] + for span in expected_raw: + assert isinstance(span, list) and len(span) == 2 + assert isinstance(span[0], int) and isinstance(span[1], int) + expected.append((span[0], span[1])) + actual = [(signal.start, signal.end) for signal in signals] + assert actual == expected + + +def test_artifact_rule_ignores_inline_code() -> None: + assert not _signals("artifact.ai-disclosure", "Use `as an AI language model` as test input.") + assert _signals("artifact.ai-disclosure", "As an AI language model, I cannot verify that.") + + +def test_not_just_uses_word_boundaries() -> None: + signals = _signals("rhetoric.not-just", "This is not just a wrapper.") + assert len(signals) == 1 + assert signals[0].start == 8 + assert not _signals("rhetoric.not-just", "The value is not-justified by that result.") + + +def test_repeated_ngram_requires_three_paragraphs() -> None: + source = ( + "The service returns one stable result here.\n\n" + "We expect one stable result here after retry.\n\n" + "Clients receive one stable result here every time." + ) + signals = _signals("repetition.ngram", source) + assert [signal.key for signal in signals].count("one stable result here") == 3 + + +def test_emphatic_fragments_ignore_numbered_list_markers() -> None: + source = "1. Build the project.\n2. Run the tests.\n3. Review the report." + assert not _signals("repetition.emphatic-fragments", source) + + +def test_horizontal_rules_ignore_front_matter_delimiters() -> None: + source = "---\ntitle: Example\ndescription: Direct note.\n---\n\nVisible prose." + assert not _signals("structure.horizontal-rules", source) + + +def test_duplicate_title_compares_front_matter_with_h1() -> None: + source = "---\ntitle: Example\n---\n\n# Example\n\nVisible prose." + assert _signals("structure.duplicate-title", source) + + +def test_vague_authority_requires_an_attribution_verb() -> None: + assert _signals("attribution.vague-authority", "Experts say the cache is unsafe.") + assert not _signals("attribution.vague-authority", "Experts configured the cache.") diff --git a/dev-tools/slop-cop/tests/test_runtime.py b/dev-tools/slop-cop/tests/test_runtime.py new file mode 100644 index 00000000..912eb7ab --- /dev/null +++ b/dev-tools/slop-cop/tests/test_runtime.py @@ -0,0 +1,213 @@ +from __future__ import annotations + +import asyncio +import time +from pathlib import Path +from typing import Any + +import httpx +import pytest + +from slop_cop.config import SlopCopConfig, load_config +from slop_cop.rules.api import RuleMetadata +from slop_cop.runtime import RuleRuntimeError, RuntimeManager, ServiceResponse + +CONFIG_PATH = Path(__file__).parents[1] / "slop-cop.toml" + + +def _config(**service_overrides: Any) -> SlopCopConfig: + raw = load_config(CONFIG_PATH).model_dump(mode="python") + raw["services"] = { + "judge": { + "url": "https://judge.example/v1/evaluate", + "token_env": "SLOP_COP_JUDGE_TOKEN", + "timeout_seconds": 5.0, + "max_response_bytes": 1024, + "max_attempts": 1, + "required_judge_revision": "editorial-v1", + **service_overrides, + } + } + return SlopCopConfig.model_validate(raw) + + +def _metadata() -> RuleMetadata: + return RuleMetadata( + id="custom.judge", + category="rhetoric", + title="Editorial judge", + rationale="The configured judge found formulaic prose.", + advice="Review the evidence and state the claim directly.", + execution_kind="external", + services=("judge",), + ) + + +async def _post( + handler: httpx.AsyncBaseTransport, + *, + config: SlopCopConfig | None = None, + environment: dict[str, str] | None = None, + deadline: float | None = None, + payload: dict[str, object] | None = None, +) -> ServiceResponse: + client = httpx.AsyncClient(transport=handler) + manager = RuntimeManager( + config or _config(), + client=client, + environment=environment or {"SLOP_COP_JUDGE_TOKEN": "secret"}, + deadline=deadline, + ) + try: + return ( + await manager.for_rule(_metadata()) + .service("judge") + .post_json(payload or {"prose": "private prose"}) + ) + finally: + await client.aclose() + + +def test_named_service_applies_auth_and_returns_bounded_json() -> None: + async def run() -> ServiceResponse: + def handler(request: httpx.Request) -> httpx.Response: + assert request.url == "https://judge.example/v1/evaluate" + assert request.headers["authorization"] == "Bearer secret" + assert request.headers["idempotency-key"] + return httpx.Response( + 200, + json={"schema_version": 1, "strength": 2}, + headers={"x-request-id": "request-1"}, + ) + + client = httpx.AsyncClient(transport=httpx.MockTransport(handler)) + manager = RuntimeManager( + _config(), client=client, environment={"SLOP_COP_JUDGE_TOKEN": "secret"} + ) + response = await manager.for_rule(_metadata()).service("judge").post_json({"prose": "text"}) + await client.aclose() + return response + + response = asyncio.run(run()) + assert response.data["strength"] == 2 + assert response.audit["request_id"] == "request-1" + + +def test_missing_service_credential_is_content_safe() -> None: + async def run() -> None: + client = httpx.AsyncClient(transport=httpx.MockTransport(lambda _: httpx.Response(200))) + manager = RuntimeManager(_config(), client=client, environment={}) + try: + await ( + manager.for_rule(_metadata()).service("judge").post_json({"prose": "secret prose"}) + ) + finally: + await client.aclose() + + try: + asyncio.run(run()) + except RuleRuntimeError as error: + assert "secret prose" not in str(error) + else: + raise AssertionError("missing credential should fail") + + +@pytest.mark.parametrize( + ("response", "message"), + [ + (httpx.Response(200, content=b"x" * 32), "size limit"), + ( + httpx.Response(200, content=b"plain", headers={"content-type": "text/plain"}), + "non-JSON", + ), + ( + httpx.Response(200, content=b"{broken", headers={"content-type": "application/json"}), + "invalid JSON", + ), + ], +) +def test_response_bounds_and_json_validation(response: httpx.Response, message: str) -> None: + config = _config(max_response_bytes=16) + with pytest.raises(RuleRuntimeError, match=message): + asyncio.run(_post(httpx.MockTransport(lambda _: response), config=config)) + + +def test_transport_error_is_content_safe() -> None: + def handler(request: httpx.Request) -> httpx.Response: + raise httpx.ConnectError("private prose and secret", request=request) + + with pytest.raises(RuleRuntimeError) as caught: + asyncio.run( + _post( + httpx.MockTransport(handler), + payload={"prose": "private prose"}, + environment={"SLOP_COP_JUDGE_TOKEN": "secret"}, + ) + ) + assert "private prose" not in str(caught.value) + assert "secret" not in str(caught.value) + + +def test_per_request_timeout_is_content_safe() -> None: + async def handler(request: httpx.Request) -> httpx.Response: + await asyncio.sleep(0.05) + return httpx.Response(200, json={"ok": True}) + + with pytest.raises(RuleRuntimeError, match="request failed") as caught: + asyncio.run( + _post( + httpx.MockTransport(handler), + config=_config(timeout_seconds=0.01), + payload={"prose": "private prose"}, + ) + ) + assert "private prose" not in str(caught.value) + + +def test_expired_file_deadline_prevents_request() -> None: + calls = 0 + + def handler(request: httpx.Request) -> httpx.Response: + nonlocal calls + calls += 1 + return httpx.Response(200, json={"ok": True}) + + with pytest.raises(RuleRuntimeError, match="deadline expired"): + asyncio.run( + _post( + httpx.MockTransport(handler), + deadline=time.monotonic() - 0.001, + ) + ) + assert calls == 0 + + +def test_transient_http_status_retries_with_one_idempotency_key() -> None: + attempts = 0 + keys: list[str] = [] + + def handler(request: httpx.Request) -> httpx.Response: + nonlocal attempts + attempts += 1 + keys.append(request.headers["idempotency-key"]) + if attempts < 3: + return httpx.Response(503, json={"error": "busy"}) + return httpx.Response(200, json={"ok": True}) + + response = asyncio.run(_post(httpx.MockTransport(handler), config=_config(max_attempts=3))) + assert attempts == 3 + assert len(set(keys)) == 1 + assert response.audit["attempts"] == 3 + + +def test_nontransient_http_status_does_not_retry() -> None: + attempts = 0 + + def handler(request: httpx.Request) -> httpx.Response: + nonlocal attempts + attempts += 1 + return httpx.Response(400, json={"error": "invalid"}) + + with pytest.raises(RuleRuntimeError, match="HTTP 400"): + asyncio.run(_post(httpx.MockTransport(handler), config=_config(max_attempts=3))) + assert attempts == 1 diff --git a/dev-tools/slop-cop/tests/test_scoring.py b/dev-tools/slop-cop/tests/test_scoring.py new file mode 100644 index 00000000..6e339454 --- /dev/null +++ b/dev-tools/slop-cop/tests/test_scoring.py @@ -0,0 +1,74 @@ +from __future__ import annotations + +from pathlib import Path + +from slop_cop.config import Severity, load_config +from slop_cop.document import Document, Span, build_document +from slop_cop.findings import Finding +from slop_cop.rules.registry import build_registry +from slop_cop.scoring import score_findings + +CONFIG_PATH = Path(__file__).parents[1] / "slop-cop.toml" + + +def _finding(document: Document, start: int) -> Finding: + line, column = document.line_column(start) + return Finding( + rule_id="rhetoric.not-just", + category="rhetoric", + severity=Severity.WARNING, + source_path=document.path, + span=Span(start=start, end=start + 8), + line=line, + column=column, + excerpt="not just", + normalized_key="not just", + score_group="contrast", + explanation="The contrast repeats.", + advice="State the distinction directly.", + ) + + +def test_dense_findings_cost_more_than_spread_findings() -> None: + config = load_config(CONFIG_PATH) + registry = build_registry(config) + dense_source = "not just one. not just two.\n\nA clean paragraph.\n\nAnother clean paragraph." + dense = build_document("dense.md", dense_source) + dense_findings = tuple(_finding(dense, offset) for offset in (0, 14)) + dense_result = score_findings(dense, dense_findings, registry, config) + + spread_source = "not just one.\n\nClean one.\n\nClean two.\n\nClean three.\n\nnot just two." + spread = build_document("spread.md", spread_source) + spread_findings = tuple( + _finding(spread, offset) for offset in (0, spread_source.rfind("not just")) + ) + spread_result = score_findings(spread, spread_findings, registry, config) + assert dense_result.score < spread_result.score + + +def test_appending_clean_prose_does_not_remove_peak_density_cost() -> None: + config = load_config(CONFIG_PATH) + registry = build_registry(config) + prefix = "not just one. not just two." + short = build_document("short.md", prefix) + long = build_document("long.md", prefix + "\n\n" + "A direct statement.\n\n" * 20) + short_score = score_findings(short, (_finding(short, 0), _finding(short, 14)), registry, config) + long_score = score_findings(long, (_finding(long, 0), _finding(long, 14)), registry, config) + short_cost = next( + item for item in short_score.rule_costs if item.rule_id == "rhetoric.not-just" + ) + long_cost = next(item for item in long_score.rule_costs if item.rule_id == "rhetoric.not-just") + assert short_cost.density is not None and long_cost.density is not None + assert short_cost.density.cost == long_cost.density.cost + + +def test_repetition_rules_have_explicit_density_policy() -> None: + config = load_config(CONFIG_PATH) + for rule_id in ( + "repetition.ngram", + "repetition.sentence-opener", + "repetition.template-shape", + "repetition.emphatic-fragments", + ): + assert config.rules[rule_id].density is not None + assert config.categories["repetition"].density is not None diff --git a/dev-tools/slop-cop/uv.lock b/dev-tools/slop-cop/uv.lock new file mode 100644 index 00000000..ca22be7a --- /dev/null +++ b/dev-tools/slop-cop/uv.lock @@ -0,0 +1,589 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" +resolution-markers = [ + "python_full_version >= '3.15'", + "python_full_version < '3.15'", +] + +[[package]] +name = "annotated-types" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/56/a8120250d128bed162cd73c76d45f6ef9991f3e068f62a8ee060afa3104a/annotated_types-0.8.0.tar.gz", hash = "sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7", size = 15893, upload-time = "2026-07-23T20:16:13.995Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl", hash = "sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0", size = 13427, upload-time = "2026-07-23T20:16:12.938Z" }, +] + +[[package]] +name = "anyio" +version = "4.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/cc/a381afa6efea9f496eff839d4a6a1aed3bfafc7b3ab4b0d1b243a12573dd/anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f", size = 260176, upload-time = "2026-07-12T20:29:07.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494", size = 125813, upload-time = "2026-07-12T20:29:05.763Z" }, +] + +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + +[[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 = "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 = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[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 = "librt" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/9b/356320fbae2ac8467e21c5e73e1389c80468e4998c62cc7d3536cc51b614/librt-0.15.0.tar.gz", hash = "sha256:4e66cbe84437497d951b799d3e1551291b6fb3d643820a7014b3655d57a59162", size = 214338, upload-time = "2026-08-07T10:49:42.663Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/39/99c25030e782bdfb7a21be8c05254806a2e4bbb05c8d50c2a2130acbfa05/librt-0.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e87bc679f86a99aa3b26e3c78eeb821a247c9a28eae48eaafcc32c3bf4c3bb9e", size = 151021, upload-time = "2026-08-07T10:47:00.057Z" }, + { url = "https://files.pythonhosted.org/packages/14/43/f4b1bd1b2888798a1409808889a25ea1ba49eaabce7d681ed27734c2df9d/librt-0.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71599e011ac880e8e45d46047d714871894c7d4ab6f25626f8d4f89da21f368d", size = 155267, upload-time = "2026-08-07T10:47:01.311Z" }, + { url = "https://files.pythonhosted.org/packages/0c/db/3ad9c965c72f1e1d6beeec44ec10a54e17be8ae042fbb4baade16cbadced/librt-0.15.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c802434092b769b1d613ed2e13fac15fbfce1934a74bd10283b03c0fae231cd1", size = 503136, upload-time = "2026-08-07T10:47:02.45Z" }, + { url = "https://files.pythonhosted.org/packages/4b/07/5888a6d76acd62ebce66c61b74d94e9370b9c32929f111e487bb6546f8ed/librt-0.15.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:5500eeae393a184d14e1f35645962c27129d20c81afa4069e6ef826ebc2b3aaa", size = 496670, upload-time = "2026-08-07T10:47:03.675Z" }, + { url = "https://files.pythonhosted.org/packages/29/39/ab57cc2f5b276156da02bb7f5a8921bada1cb1993ffec99acf811c602c23/librt-0.15.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6ecfc32dfb46fb7b565bcd6abf9412acf978775a998273d22888a6d7953730dd", size = 513688, upload-time = "2026-08-07T10:47:04.981Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b9/bdbb0b648b5c2befb031f4c6f3b1dd857415e8fb492a25a3c764a6681e6c/librt-0.15.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89cc46cfd15022e35084355478c9ac809d90b1152222706ac9a7655ec21df6fa", size = 531904, upload-time = "2026-08-07T10:47:06.211Z" }, + { url = "https://files.pythonhosted.org/packages/93/26/473c2e4b6c104e9e58e27ce95fc8005c8bd4fc36cae4f254371125a92db8/librt-0.15.0-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d5f51401d102c885b9ca509e62c79b1dbff286e1b9b047fde6f763780789356d", size = 524427, upload-time = "2026-08-07T10:47:07.592Z" }, + { url = "https://files.pythonhosted.org/packages/26/60/03b3abb82b41714671b907bf6989b228e31e6a8af52dec82b5b0728dc250/librt-0.15.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cc30523e3f1a23fb7511cc659834a0d01a1042bb9de359bc1c131cc4ec6c9656", size = 543155, upload-time = "2026-08-07T10:47:08.866Z" }, + { url = "https://files.pythonhosted.org/packages/f2/0e/9bb1f0a4affbd0a1888f4f79dc03ed2a299d9a2c26c59ab2a97dcbf11903/librt-0.15.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:59fe030d8ae4a57e3fb7756bf35a858de74e04066fc8555c53d0af979132af81", size = 546890, upload-time = "2026-08-07T10:47:10.327Z" }, + { url = "https://files.pythonhosted.org/packages/dc/84/6937a280d461f7de6e031ffb02edc2b7c3c90d49d630565ce8ff27cbc5f2/librt-0.15.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5a6526a2a956bbb1e4ae3568c82e650fc99119c66bb011ea60715744955a2b4d", size = 555163, upload-time = "2026-08-07T10:47:11.798Z" }, + { url = "https://files.pythonhosted.org/packages/bc/95/2a2853c1ee014bf102116e7f897a04beeaeb2461b45b79af98bdfb95f1ef/librt-0.15.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:85ea21ec6730194d67156b0e0b5430ccb1d61f8b8b907e39b37f9812b74a13f0", size = 535812, upload-time = "2026-08-07T10:47:13.279Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4c/cf9601c1b4c5f09280acd5d83abdb2e68527a2be8257136eb42304218622/librt-0.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1e47b8ba865d7ede071a91a7163073bbaeb72541f1ef8a07d512c45c7b5007f2", size = 573688, upload-time = "2026-08-07T10:47:14.727Z" }, + { url = "https://files.pythonhosted.org/packages/47/6d/9ac7cbec46189a7625af4b5acbd25f10d827f4141b2002181848c8418923/librt-0.15.0-cp312-cp312-win32.whl", hash = "sha256:a5207ec414d1c4a2a7231b2086970dc036f94293cdf338190984958a013a42f1", size = 106138, upload-time = "2026-08-07T10:47:15.973Z" }, + { url = "https://files.pythonhosted.org/packages/38/d0/2ae99c83be86ce23f925ac1aeeedc777e97f427c4a8d190c70d0a16e9a87/librt-0.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:73b30cfa976659b3917c8f6153bdb0591c6a9ec6583599fd24a689b690622022", size = 126974, upload-time = "2026-08-07T10:47:17.049Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ef/dd24f9635c730b86b87587967dda7516b1845e8b17684603d31607fed598/librt-0.15.0-cp312-cp312-win_arm64.whl", hash = "sha256:a54cf9e0ef47b96af580849db5471142200568ce1e02cbf416addab551369570", size = 112292, upload-time = "2026-08-07T10:47:18.222Z" }, + { url = "https://files.pythonhosted.org/packages/e7/42/467b53a601b406ccd7b97c1fd54b59cb34f9185ad5ce7e9d5c3c4e8961c8/librt-0.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:db13ca398005abcbe538deda87b686d9bd08b7001cf40c4c06b444960ae10a26", size = 151029, upload-time = "2026-08-07T10:47:19.312Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e6/36c2299b7a94b84fdd01220d8a777a71be5be0925bb0dbdf71c0a06a34d9/librt-0.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa1f1995789dca3698bc550aaceb09a51bd5df0a057ff84ff15296cd1975b801", size = 155194, upload-time = "2026-08-07T10:47:20.398Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b6/ed5071f9325845e670bd36012757419767fbf56af77ed483077b9e4db541/librt-0.15.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55456ea87d8df21808446d03817be2f65e20391c1c615d9187440dff28cd08dc", size = 502568, upload-time = "2026-08-07T10:47:21.652Z" }, + { url = "https://files.pythonhosted.org/packages/7f/81/6450c67c3615d87704bcbc21323fafc69c799b06a044c447529f725d4b01/librt-0.15.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:5a86a5a08c2235316bdb359d5dbb6ce0abfca7fac06363103e2c5af571d92f95", size = 496153, upload-time = "2026-08-07T10:47:22.925Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d6/5f52b722bc75076954b3bfd49be15ea362df4d580c6fb315d0f617100d30/librt-0.15.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e56b6a368529bed262da40ce13f8fef590db0479819cca84f16a1f01ac356d0b", size = 513336, upload-time = "2026-08-07T10:47:24.213Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e2/c08fd1d36ce63ea5a12b85c5d37f4550b5f86a692167e41e5a74222607ae/librt-0.15.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:234d8d394721fa0d786af15ebf1f3fb7f3ed82fd1cd0cde45c2f247b5d4281d2", size = 531661, upload-time = "2026-08-07T10:47:25.507Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d8/d9482fcbeb177b9eb87bb3899eeb3b42be690313c652f9e146b1d0681fb2/librt-0.15.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d8363d7accb0286ac3a0e633f396e93800dafb8150494505daf9515bbda591f3", size = 524487, upload-time = "2026-08-07T10:47:26.79Z" }, + { url = "https://files.pythonhosted.org/packages/10/cc/075171517b41f861753034fbb151b42cfc83bcc853849f24f5e66fd60ccf/librt-0.15.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0f0ee3644d951f31055ad07d77d92520e84505dd7a432cc4cd501dd70ee06785", size = 543201, upload-time = "2026-08-07T10:47:27.999Z" }, + { url = "https://files.pythonhosted.org/packages/b0/03/42c2330f37eeb475b6affeedd06518f60035f323af3a839335e3fc9fef2d/librt-0.15.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cfd1a81a648806e6a7717be4cc4d1bb392fa229752bf8444ba365e381e984d6", size = 546467, upload-time = "2026-08-07T10:47:29.396Z" }, + { url = "https://files.pythonhosted.org/packages/57/1e/1ad4c5638f7e64d8560328bd25c54b409a661bdb6ff254b38ff90744288d/librt-0.15.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a6cd22c9da0d866558e46a041f1cc0c2bbb26b61b137b2347fa834c332e1d101", size = 555139, upload-time = "2026-08-07T10:47:30.815Z" }, + { url = "https://files.pythonhosted.org/packages/49/41/39fa7d15db1204cd1cbe6514680fbdc243adf754a0885061308f43afc013/librt-0.15.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:6d5225ef8801e4ea5e482fa9b5dfb891dd9ef6f6d870f1f25d449ca2c70ac218", size = 536050, upload-time = "2026-08-07T10:47:32.222Z" }, + { url = "https://files.pythonhosted.org/packages/1e/88/c6dcf0dd8e26dc0c9a499a2abab8646c86dcaf9ecea9524cb46d3686331a/librt-0.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d28a05796b99f749bf8794f17ba9ba1612d0076b802e9cfc62c554634e9ce3b", size = 573700, upload-time = "2026-08-07T10:47:33.527Z" }, + { url = "https://files.pythonhosted.org/packages/1b/9b/ab54c71a7918a7c34fa5327fb61390a77446a07a146fbfb1165250a61035/librt-0.15.0-cp313-cp313-pyemscripten_2025_0_wasm32.whl", hash = "sha256:2067ff438048cead9d223ca5675bae2a25e520a7c3e6c1498bf9c6892d22caab", size = 82194, upload-time = "2026-08-07T10:47:34.835Z" }, + { url = "https://files.pythonhosted.org/packages/8d/b2/4f9a243bb892395f3becb80789ade13771701091f9f07ab8230247953ba8/librt-0.15.0-cp313-cp313-win32.whl", hash = "sha256:1cd3b721f24c206398b9e26da3c3a9c011e6e89d06f318ba8ebefc30f1003890", size = 106231, upload-time = "2026-08-07T10:47:36.251Z" }, + { url = "https://files.pythonhosted.org/packages/bf/af/64aff4885a40b93132382f2c314647d722574605416504379184ef3045ea/librt-0.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:f395a4a9a03ac062dbe9a9f82e0c720502e590a38feee6a757bc82e9c63afbd8", size = 126996, upload-time = "2026-08-07T10:47:37.453Z" }, + { url = "https://files.pythonhosted.org/packages/27/83/335bccf6c7cb9028cb0b54aead27d9ece3f01f83bc6baa2abace5da655c1/librt-0.15.0-cp313-cp313-win_arm64.whl", hash = "sha256:0a15cb554761247d84a3ec0cbdf4078d70725384f0e4662c0fa3b26266eb60ad", size = 112188, upload-time = "2026-08-07T10:47:38.729Z" }, + { url = "https://files.pythonhosted.org/packages/a8/93/949053fb462eecc4a9a5ee770a81f4b40be7b79538b245545d4aebc6b58b/librt-0.15.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f5de7feedc56337a088eb15cd9fafa9938367362221d8cc62c642b7f94821993", size = 149833, upload-time = "2026-08-07T10:47:39.86Z" }, + { url = "https://files.pythonhosted.org/packages/61/ca/8281aa6cd560a3420e4497729f6b704b53be3eeaaef82d5aeadddaf7441f/librt-0.15.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:6c0eb900c0e91f4aebe680845242e614f1864edfd44106380d0752ac29522bf8", size = 154088, upload-time = "2026-08-07T10:47:41.065Z" }, + { url = "https://files.pythonhosted.org/packages/dd/02/1a1662dceaba6a086360891448d5ce9a7d3555976cae59a31a39d744b9c7/librt-0.15.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e8c9a650a188e38bac005048cbe6342e81407782944d01934540ab75e417df21", size = 494215, upload-time = "2026-08-07T10:47:42.388Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/99211619dc656370a3740c33d2b0b6d5a3fb1e73689314f6ed477a397dc4/librt-0.15.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:92bfed8deec93df30286b9fe9e3b1dd17329cc076a192b4ee5ec223841d54953", size = 491173, upload-time = "2026-08-07T10:47:43.683Z" }, + { url = "https://files.pythonhosted.org/packages/d4/aa/5448d0b05f4579b635d3899176817ebf561af0e57bacd425b5b1887264c1/librt-0.15.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ec4b19788f835711a2072f9dbe6b03b3bf32ed1f0fb30cf399bdd59d9f0c33fa", size = 505512, upload-time = "2026-08-07T10:47:45.314Z" }, + { url = "https://files.pythonhosted.org/packages/95/82/01940e40b83c43a546c4a3c896cf34ca272a9690899d55914e4827b3dcce/librt-0.15.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4c7bacb70930f3d0a56f4ecf1be474a1f0d941b01dd73b756f3c256d42cb879", size = 523073, upload-time = "2026-08-07T10:47:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/88/fa/759c0030f3ee371439eb26de34fc745807caf0abb878af7af4b8b7c3dd3d/librt-0.15.0-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3e79f05e4a08b4d880342673312bbc895b56df7765605796f15902eb5367d3ae", size = 515080, upload-time = "2026-08-07T10:47:48.319Z" }, + { url = "https://files.pythonhosted.org/packages/0b/27/894e072228fcb159703c655da69f8cd10dbed489c36e3df7dd032a2483be/librt-0.15.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a417149c0cba4d50b61e992e5a15e69eaf96746609b461cc4ed168aeef6b79dd", size = 534164, upload-time = "2026-08-07T10:47:49.875Z" }, + { url = "https://files.pythonhosted.org/packages/98/a3/0078e91c1f36f8815db17827de15650b9a3fe56c55fbf998c854b34e40d3/librt-0.15.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:da7a94d6a3411f579d72aa3e3bc5fbca7ed4549f3dbd7e5de3aa567333374285", size = 540616, upload-time = "2026-08-07T10:47:51.408Z" }, + { url = "https://files.pythonhosted.org/packages/86/33/81a29b796dd52a45e9ef7974c7732926e8f10f15b8d2be505665979f896d/librt-0.15.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:856f743ae607f2c1380eccb566c0038a9fb3eabf0fc2be2704d76d9f73557239", size = 545890, upload-time = "2026-08-07T10:47:52.818Z" }, + { url = "https://files.pythonhosted.org/packages/05/82/8be1baa1350e5d30cfd70ae79d0a6f4dc5862ef47f7bb2808aabc9bb86e5/librt-0.15.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:779a6e7c894737e5983e7790a9c78c4000c30e23c9aada08081bdbea53b0fa60", size = 523287, upload-time = "2026-08-07T10:47:54.165Z" }, + { url = "https://files.pythonhosted.org/packages/c6/4f/d1be6a01a35c20ef734e0e44113f87d4af756a9354a89dcfbe3b4f8af5e1/librt-0.15.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:96bb17dbe8bab3c0954fbebfc69ed395599de75b6bbc35e3270a878e15d4dd65", size = 565868, upload-time = "2026-08-07T10:47:55.566Z" }, + { url = "https://files.pythonhosted.org/packages/67/88/649cfa33f5825927b160610f670bdab012a64d627eddb94fa795ea4292fd/librt-0.15.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl", hash = "sha256:7220697efaa6e5348fc3d18ee7f8563d4bfecd9872b37ffb915bfc1d08840622", size = 81619, upload-time = "2026-08-07T10:47:56.886Z" }, + { url = "https://files.pythonhosted.org/packages/22/31/8e88a8d5e48fc8d1a817787fb6811dfff6499acd6c8683dd83934aa6ede0/librt-0.15.0-cp314-cp314-win32.whl", hash = "sha256:f54598964d357b1c5ab77cf5d92f21e598fe0e23cdbe9618480807f81b4eba15", size = 100138, upload-time = "2026-08-07T10:47:58.093Z" }, + { url = "https://files.pythonhosted.org/packages/80/92/20fd6c4b6a1b1a564b076d55cd3d427d8428217d7638dc25a654cc4791d4/librt-0.15.0-cp314-cp314-win_amd64.whl", hash = "sha256:3ff5893a2c23d886aa9ce786de5ac6ddc74aeeaf90743682b74d920e117d2e28", size = 121258, upload-time = "2026-08-07T10:47:59.564Z" }, + { url = "https://files.pythonhosted.org/packages/fc/28/6af430b44d9ebb897b865a3c363b6dcace51357be2347cc0f8f869656a86/librt-0.15.0-cp314-cp314-win_arm64.whl", hash = "sha256:3722a099730704c9a3d70c879fc0f51daec25fe5f1555672d97bc595abeafb95", size = 106467, upload-time = "2026-08-07T10:48:01.097Z" }, + { url = "https://files.pythonhosted.org/packages/7e/aa/b42bb798942ced219f6d63b27e07f91237887a8d0bd0921666db79a13790/librt-0.15.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:38c0c7d4b6fc06c3324b3f9162c8391bfc4fd9dde53afe1033ce7edb48d5a714", size = 159523, upload-time = "2026-08-07T10:48:02.442Z" }, + { url = "https://files.pythonhosted.org/packages/75/03/1b53cd4ef904e73b1d828a5f90143bf94a2967d7cfff0b9ccf93e12aa9b4/librt-0.15.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8b2fdd7ead3c995c37940a790690660d0ca006c302db26cc51933f6766866fc3", size = 161638, upload-time = "2026-08-07T10:48:03.725Z" }, + { url = "https://files.pythonhosted.org/packages/ac/c4/9f9c9fba097d49e9e694c2b4dc331df31884645ecbc58a93b4b5fc69d2c5/librt-0.15.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2fde98cf1fc4bac144ce23c2c4c017b924ba714509ea9334977b0b27050c837d", size = 701795, upload-time = "2026-08-07T10:48:05.135Z" }, + { url = "https://files.pythonhosted.org/packages/4c/05/0966840bda0380c8ae167b9043c6230202941cc90ea29c48e096964c765e/librt-0.15.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:e3b461183c5fa7681b48560f91515f53a953122fb30c71e07abc67d7ddf58c38", size = 682147, upload-time = "2026-08-07T10:48:06.555Z" }, + { url = "https://files.pythonhosted.org/packages/18/af/1c47ca573c30ea47d195aec26133af522fea1104afaace028d7b32247ea8/librt-0.15.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4bbcc257e3babea20a91715c361b24554ec4e8f51aa578568afc230799fe1a19", size = 696397, upload-time = "2026-08-07T10:48:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/2e/0f/1aed6223d4f9f9d1171a8596ff100ea4c3f7699fea7a4ba657c3e60daa6c/librt-0.15.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b845b8d48088fad0cadc84be4b8fda63203be7e9237b71015b3925443c1f35ab", size = 722542, upload-time = "2026-08-07T10:48:09.569Z" }, + { url = "https://files.pythonhosted.org/packages/c6/22/9e3a929aea456c97d69e6ef3884efea56d4807f97399471cc946baebd8af/librt-0.15.0-cp314-cp314t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b30e600e8f337b9bd7f39b86d9fdfedc73cc46e3d0f745931a23a234220bb7e2", size = 729709, upload-time = "2026-08-07T10:48:11.129Z" }, + { url = "https://files.pythonhosted.org/packages/e9/1b/c327ef6018e3a9ca0b8e7c5eddeeb331ba8f9b76c24e126d37d0f6d62faf/librt-0.15.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:64b0c8c35aa4c4ed79896359f3e0b285cbe4e610042106500da4811c322cc108", size = 752891, upload-time = "2026-08-07T10:48:12.558Z" }, + { url = "https://files.pythonhosted.org/packages/d7/d1/d5f1ea02c56930087009e39db9b70660a663e76c730b27b925d786718457/librt-0.15.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0da0d94cb802f32a0524653e7201f2cef72d5f700a5407678f5290483d4fcd08", size = 745301, upload-time = "2026-08-07T10:48:14.55Z" }, + { url = "https://files.pythonhosted.org/packages/d9/3c/5f7c585d15ebb2250c73e7c0ee4e9e47be72c65d520c07ddbcdc62037674/librt-0.15.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:4a6369168d371207339b1e50d4532b06a7121586141f82599505a3f315751d47", size = 747921, upload-time = "2026-08-07T10:48:16.453Z" }, + { url = "https://files.pythonhosted.org/packages/7f/52/1443a446486eba966bcbca1696b472e4f210320ec42f490a47f48fbf0fdc/librt-0.15.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c434e072557ade9cbc642d052c89d031efe47d5c9614523619d0d74a02378e81", size = 727561, upload-time = "2026-08-07T10:48:18.089Z" }, + { url = "https://files.pythonhosted.org/packages/79/91/2270a9380f11725cf83ce1925a5e32dd1dde2be9bba597f25c10a38644e7/librt-0.15.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c7eec6a42018bc1d45763b1c162d3d2bf7c3b9a1b0ed30d3e91dcba390efefcc", size = 774417, upload-time = "2026-08-07T10:48:19.611Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/f4b1548d4f5b99186737fe27aec238e9823e8d5d23bf4df007c030689dc5/librt-0.15.0-cp314-cp314t-win32.whl", hash = "sha256:6912fa5e635d74529ac7cdb1bdf6ca3af4453da8d1edbe0110ee1cb4ad407ebf", size = 104381, upload-time = "2026-08-07T10:48:21.048Z" }, + { url = "https://files.pythonhosted.org/packages/80/b6/134afad262def1de04c0843c376d02135f1168af43f22e09a52bd8394727/librt-0.15.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8e11699ed745931c395acd3621b07062e0f840efa6935aad87a64ed0995f0915", size = 127034, upload-time = "2026-08-07T10:48:22.561Z" }, + { url = "https://files.pythonhosted.org/packages/99/5f/1b6846b20572bd699c9e9ec321a5f781845bee477df2aa2a43b28bc40119/librt-0.15.0-cp314-cp314t-win_arm64.whl", hash = "sha256:5d2a91724463bfed4f573cd7a9fdc856d2e230d0c0e5a61416a93481dccd8605", size = 110827, upload-time = "2026-08-07T10:48:23.804Z" }, + { url = "https://files.pythonhosted.org/packages/c6/44/4de9f4ddadb009a55c7758eb5736d62534a7daaf27bd71bc50e64b606b06/librt-0.15.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:8443e38dcfcfdbcf5add5118c623efd788d65ac2e25756d6251a54a06a4d0aca", size = 149843, upload-time = "2026-08-07T10:48:25.148Z" }, + { url = "https://files.pythonhosted.org/packages/1f/eb/5d9ab71e30119c44094e0275f38b47dd327aea0f843a080396677029d508/librt-0.15.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:6d15a29033c57490cfe2069097c6fc4049e4e65ffbb749be7dc453b7c4c68965", size = 154510, upload-time = "2026-08-07T10:48:26.485Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9c/8505d1b8f5e8c19587bd03f7429993b3e9ce5c06819d856bfb11d919374c/librt-0.15.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2c05c729b589e734c09578bf5964be48a911765484840d017bbc84f49d4c4ad", size = 497543, upload-time = "2026-08-07T10:48:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/1d/9a/3a8390775cb095765aded027ac9c63e7c8ea74e731498607544c6505de0e/librt-0.15.0-cp315-cp315-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:fa60887537e1d0cd2d9982269d33a709bf54b195cd2b9364fc0a758022af5bd9", size = 480452, upload-time = "2026-08-07T10:48:29.531Z" }, + { url = "https://files.pythonhosted.org/packages/e7/40/258a4a7117ee915d66de5cd9b8ade65a440993161107ce3a686f1859955c/librt-0.15.0-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d8bc24219b24c0af375718942ab75e3544b2763085f40f965be4326734ae8328", size = 507768, upload-time = "2026-08-07T10:48:31.007Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c6/2f4dd296c97a0b85b98894519b279408ec9dd602d4f692b1ea0e25dee670/librt-0.15.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86a21a7bd3fe3a419512ef424cc1c020f6771d0b29cfddff36d1635a855e63f0", size = 525122, upload-time = "2026-08-07T10:48:32.7Z" }, + { url = "https://files.pythonhosted.org/packages/49/dd/29eab42be13b2bf0ea8cb227135a45d44693e30a7e8b92871981ff56b82b/librt-0.15.0-cp315-cp315-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dbab647e88d90b3167b91efe7091e248653688ed4337e4f90907a722c7361bb9", size = 520371, upload-time = "2026-08-07T10:48:34.294Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/4bad71adeca8fe208b775c2a35417fa5a2584c8f4791daaf89a89450fea1/librt-0.15.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:d8edcf6f550e918dca779c069b9e156385c60b406f99fc7641f32c52f7193659", size = 537258, upload-time = "2026-08-07T10:48:35.88Z" }, + { url = "https://files.pythonhosted.org/packages/4c/63/59dba6143fdcc7240c54458b629f3250000a61b8945890fc9efd451b19c5/librt-0.15.0-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:8b62076030baa2d8b1501a46bf0e19c27a489aa90671c55665bff7887f7660b0", size = 527432, upload-time = "2026-08-07T10:48:37.466Z" }, + { url = "https://files.pythonhosted.org/packages/ec/21/21a24c6a2327d8362580efebe77286bf47b0f4062ec5ea41766e609d3c7d/librt-0.15.0-cp315-cp315-musllinux_1_2_ppc64le.whl", hash = "sha256:d00d20d1818e82a07a0ee0aa89a98b17ed7916b92441090b683719cb20a59b6d", size = 548108, upload-time = "2026-08-07T10:48:39.384Z" }, + { url = "https://files.pythonhosted.org/packages/5a/6d/fc68c89a7971418b41f9a873623ff935cb864097544c6a2f8ce491c8ef5d/librt-0.15.0-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:4e6ee93fc3cf848dcbf0cce2eca73d8e7dcd0cc2b6df3a529d57750b30a4c55c", size = 529681, upload-time = "2026-08-07T10:48:41.392Z" }, + { url = "https://files.pythonhosted.org/packages/65/7e/c2d98766124400d722063a630b0fde38a9fc768705d37eecca15c47dc192/librt-0.15.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:32896a0af72508ea979e0acb4e4c04cbeeae04938167950d535c83c45597167d", size = 567736, upload-time = "2026-08-07T10:48:43.124Z" }, + { url = "https://files.pythonhosted.org/packages/55/6c/f8c34a95e3a515c6e1c192b89511e7253c89a7760c6b500d57ffdb8d2dc8/librt-0.15.0-cp315-cp315-pyemscripten_2026_5_wasm32.whl", hash = "sha256:ec3ba415afaf951f6951b1dd16d3c8e4f540065fc382d7e70b823a79567ca374", size = 81673, upload-time = "2026-08-07T10:48:44.645Z" }, + { url = "https://files.pythonhosted.org/packages/c9/9e/e23fa8e78679ec45728188650b39e8ff476c83b691c96f749217df3b1b7c/librt-0.15.0-cp315-cp315-win32.whl", hash = "sha256:d2813ba2503764f0450680c533d13df7cff9b49df1411062eded5f67db4195b9", size = 100081, upload-time = "2026-08-07T10:48:46.171Z" }, + { url = "https://files.pythonhosted.org/packages/e1/dc/3eb4c5e297343f0620a55532cd7c8d764d3001fa2159212dadf480464827/librt-0.15.0-cp315-cp315-win_amd64.whl", hash = "sha256:b87d67e33afaf265262f2a66db578284b88ee2e6fcd224579cb5c15518677ad8", size = 121228, upload-time = "2026-08-07T10:48:47.631Z" }, + { url = "https://files.pythonhosted.org/packages/97/70/43abce19f04e49762f8ec834c8fafee13cc40fd6b94a72a24e534febfcd0/librt-0.15.0-cp315-cp315-win_arm64.whl", hash = "sha256:713bd7df21170b982e729e46870f31d6b437bd1a9b4648cffb529bd3c2ec5c4b", size = 106487, upload-time = "2026-08-07T10:48:49.095Z" }, + { url = "https://files.pythonhosted.org/packages/de/15/83f2deddb9368b8951ec8c9477269b5b9b8bd9bbf15e57402d0f38817dca/librt-0.15.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:3de789c82752730f94782a5ee518baf9c05edf85733aeaf73bb6e518755cdf54", size = 159448, upload-time = "2026-08-07T10:48:50.649Z" }, + { url = "https://files.pythonhosted.org/packages/06/bf/043097353f9b3c73b583d07f6b8e552795463f4bfc8caf85e42eee50c26a/librt-0.15.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:e0b5deec9a8664eb722c797241970fd4aa1894d25fda36a1ddac0f7407606bd6", size = 161686, upload-time = "2026-08-07T10:48:52.174Z" }, + { url = "https://files.pythonhosted.org/packages/f4/2a/8ae77f9719d42ce71cd708560a3557b38ac3c17a0383e57f87084de45bbe/librt-0.15.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5563302a8359bc2295bb7084d1a8ed1519df96afb30eb2aa4e0bff7b54228988", size = 710668, upload-time = "2026-08-07T10:48:53.782Z" }, + { url = "https://files.pythonhosted.org/packages/61/34/c0436ea134deb9a0d6da80a396a2739a81cb31e0418f7227239e23140898/librt-0.15.0-cp315-cp315t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:22d6263b9d39d7bbb286fa791945646e3218f1be2d693e36fb630f1d0e59cd13", size = 679396, upload-time = "2026-08-07T10:48:55.645Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/001e0d99aa9250d5cd5715a9081291a20656083459f9019cda15255329e1/librt-0.15.0-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:39ffd14646190c454f0d86e0d256b33f00a87a26ab410e619773b841d0e41416", size = 704313, upload-time = "2026-08-07T10:48:57.46Z" }, + { url = "https://files.pythonhosted.org/packages/2d/53/b34fa9d0ff00f136f4d58ebb4c411ff634baed1eb412bb602a2bc8dcafcb/librt-0.15.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c47318cd3a61401452de11282242937e3e057c4fd3dbaf601e269d0928a06c0a", size = 729847, upload-time = "2026-08-07T10:48:59.231Z" }, + { url = "https://files.pythonhosted.org/packages/86/ac/fa4d7a424665040e95baf480a6d523446057684b6758624c85338e8a23b2/librt-0.15.0-cp315-cp315t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a56a1d4f859a82ca5b99fc4b82c9b027b15e3c455c5cd99e7d0719f27bb20b6c", size = 742736, upload-time = "2026-08-07T10:49:01.151Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f1/e17a9bb5de6fb8c3186ed1a7d68d21618b027ac2d3633e03d3b6109c67ae/librt-0.15.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:077471b3182db4e17c36ae91555f36a4d2c00080b267f749bcad34a478a9a302", size = 763454, upload-time = "2026-08-07T10:49:03.039Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ec/ecd02cd30935b931b9cdbfed6ab5a099c51b280b4e7baa274da80978ed27/librt-0.15.0-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:411ca4d1b905b860ceba7570dd6717a71dedaddcc4b0f77ece710aa41ee11f8d", size = 743296, upload-time = "2026-08-07T10:49:04.941Z" }, + { url = "https://files.pythonhosted.org/packages/e6/b5/b3c2b8353ce820a4854f78d19321344242f89fa71c975b71132ba9bf242a/librt-0.15.0-cp315-cp315t-musllinux_1_2_ppc64le.whl", hash = "sha256:1256589e0b0adb31751d685a68bce29d73407ddf4ef05d4188f49d5dcf9566d9", size = 756217, upload-time = "2026-08-07T10:49:06.825Z" }, + { url = "https://files.pythonhosted.org/packages/3c/52/6cc22542ba59146b05cca2a656f9ff8bb67e38e63d12c3b0cc183d837bf1/librt-0.15.0-cp315-cp315t-musllinux_1_2_riscv64.whl", hash = "sha256:f42b74a53e5f26a0ba0007411a7455b66c67ce4022a39cc1f56fc4efd65bcbab", size = 741934, upload-time = "2026-08-07T10:49:08.839Z" }, + { url = "https://files.pythonhosted.org/packages/40/32/a04b72b1aa86e3be23b2ecff8c1aad2dcc955bd3956d6d26e7e34267e57a/librt-0.15.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:291bf73caf78b9e88d6fae9bfd693207ff7d832e2fdbe2cf8e746bc13f5f892b", size = 783763, upload-time = "2026-08-07T10:49:10.661Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f0/89eb11dffbe9279ff37144dec786927314502ae0b114f1449dc78c458aab/librt-0.15.0-cp315-cp315t-win32.whl", hash = "sha256:c16d15ee371643ab48dc8248a3e680ebbeca573a13af2c3dd0c985b142d77162", size = 104313, upload-time = "2026-08-07T10:49:12.305Z" }, + { url = "https://files.pythonhosted.org/packages/6d/4a/1f1978c200f563beda63c36adff2d65bbecb81e365e8e69e572f5f70fbc6/librt-0.15.0-cp315-cp315t-win_amd64.whl", hash = "sha256:dbd605739f228912dc49027cb764456b9757750bdc2b6b7773164db7096c6fd1", size = 126889, upload-time = "2026-08-07T10:49:13.881Z" }, + { url = "https://files.pythonhosted.org/packages/38/a6/800800bfed7b1fb10fc3f3d557785c3854e80d3f7a9800d784b176a1fc2d/librt-0.15.0-cp315-cp315t-win_arm64.whl", hash = "sha256:84d244b00604d17df3fc7736c327892d6bba66181254aa4087be807b6c342bdc", size = 110700, upload-time = "2026-08-07T10:49:15.499Z" }, +] + +[[package]] +name = "mypy" +version = "1.20.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/af/e3d4b3e9ec91a0ff9aabfdb38692952acf49bbb899c2e4c29acb3a6da3ae/mypy-1.20.2.tar.gz", hash = "sha256:e8222c26daaafd9e8626dec58ae36029f82585890589576f769a650dd20fd665", size = 3817349, upload-time = "2026-04-21T17:12:28.473Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/4e/7560e4528db9e9b147e4c0f22660466bf30a0a1fe3d63d1b9d3b0fd354ee/mypy-1.20.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4dbfcf869f6b0517f70cf0030ba6ea1d6645e132337a7d5204a18d8d5636c02b", size = 14539393, upload-time = "2026-04-21T17:07:12.52Z" }, + { url = "https://files.pythonhosted.org/packages/32/d9/34a5efed8124f5a9234f55ac6a4ced4201e2c5b81e1109c49ad23190ec8c/mypy-1.20.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b6481b228d072315b053210b01ac320e1be243dc17f9e5887ef167f23f5fae4", size = 13361642, upload-time = "2026-04-21T17:06:53.742Z" }, + { url = "https://files.pythonhosted.org/packages/d1/14/eb377acf78c03c92d566a1510cda8137348215b5335085ef662ab82ecd3a/mypy-1.20.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34397cdced6b90b836e38182076049fdb41424322e0b0728c946b0939ebdf9f6", size = 13740347, upload-time = "2026-04-21T17:12:04.73Z" }, + { url = "https://files.pythonhosted.org/packages/b9/94/7e4634a32b641aa1c112422eed1bbece61ee16205f674190e8b536f884de/mypy-1.20.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5da6976f20cae27059ea8d0c86e7cef3de720e04c4bb9ee18e3690fdb792066", size = 14734042, upload-time = "2026-04-21T17:07:43.16Z" }, + { url = "https://files.pythonhosted.org/packages/7a/f3/f7e62395cb7f434541b4491a01149a4439e28ace4c0c632bbf5431e92d1f/mypy-1.20.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:56908d7e08318d39f85b1f0c6cfd47b0cac1a130da677630dac0de3e0623e102", size = 14964958, upload-time = "2026-04-21T17:11:00.665Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0d/47e3c3a0ec2a876e35aeac365df3cac7776c36bbd4ed18cc521e1b9d255b/mypy-1.20.2-cp312-cp312-win_amd64.whl", hash = "sha256:d52ad8d78522da1d308789df651ee5379088e77c76cb1994858d40a426b343b9", size = 10911340, upload-time = "2026-04-21T17:10:49.179Z" }, + { url = "https://files.pythonhosted.org/packages/d6/b2/6c852d72e0ea8b01f49da817fb52539993cde327e7d010e0103dc12d0dac/mypy-1.20.2-cp312-cp312-win_arm64.whl", hash = "sha256:785b08db19c9f214dc37d65f7c165d19a30fcecb48abfa30f31b01b5acaabb58", size = 9833947, upload-time = "2026-04-21T17:09:05.267Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c4/b93812d3a192c9bcf5df405bd2f30277cd0e48106a14d1023c7f6ed6e39b/mypy-1.20.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:edfbfca868cdd6bd8d974a60f8a3682f5565d3f5c99b327640cedd24c4264026", size = 14524670, upload-time = "2026-04-21T17:10:30.737Z" }, + { url = "https://files.pythonhosted.org/packages/f3/47/42c122501bff18eaf1e8f457f5c017933452d8acdc52918a9f59f6812955/mypy-1.20.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2877a02380adfcdbc69071a0f74d6e9dbbf593c0dc9d174e1f223ffd5281943", size = 13336218, upload-time = "2026-04-21T17:08:44.069Z" }, + { url = "https://files.pythonhosted.org/packages/92/8f/75bbc92f41725fbd585fb17b440b1119b576105df1013622983e18640a93/mypy-1.20.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7488448de6007cd5177c6cea0517ac33b4c0f5ee9b5e9f2be51ce75511a85517", size = 13724906, upload-time = "2026-04-21T17:08:01.02Z" }, + { url = "https://files.pythonhosted.org/packages/a1/32/4c49da27a606167391ff0c39aa955707a00edc500572e562f7c36c08a71f/mypy-1.20.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb9c2fa06887e21d6a3a868762acb82aec34e2c6fd0174064f27c93ede68ad15", size = 14726046, upload-time = "2026-04-21T17:11:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/7f/fc/4e354a1bd70216359deb0c9c54847ee6b32ef78dfb09f5131ff99b494078/mypy-1.20.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d56a78b646f2e3daa865bc70cd5ec5a46c50045801ca8ff17a0c43abc97e3ee", size = 14955587, upload-time = "2026-04-21T17:12:16.033Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/c0f2056e9eb8f08c62cafd9715e4584b89132bdc832fcf85d27d07b5f3e5/mypy-1.20.2-cp313-cp313-win_amd64.whl", hash = "sha256:2a4102b03bb7481d9a91a6da8d174740c9c8c4401024684b9ca3b7cc5e49852f", size = 10922681, upload-time = "2026-04-21T17:06:35.842Z" }, + { url = "https://files.pythonhosted.org/packages/e5/14/065e333721f05de8ef683d0aa804c23026bcc287446b61cac657b902ccac/mypy-1.20.2-cp313-cp313-win_arm64.whl", hash = "sha256:a95a9248b0c6fd933a442c03c3b113c3b61320086b88e2c444676d3fd1ca3330", size = 9830560, upload-time = "2026-04-21T17:07:51.023Z" }, + { url = "https://files.pythonhosted.org/packages/ae/d1/b4ec96b0ecc620a4443570c6e95c867903428cfcde4206518eafdd5880c3/mypy-1.20.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:419413398fe250aae057fd2fe50166b61077083c9b82754c341cf4fd73038f30", size = 14524561, upload-time = "2026-04-21T17:06:27.325Z" }, + { url = "https://files.pythonhosted.org/packages/3a/63/d2c2ff4fa66bc49477d32dfa26e8a167ba803ea6a69c5efb416036909d30/mypy-1.20.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e73c07f23009962885c197ccb9b41356a30cc0e5a1d0c2ea8fd8fb1362d7f924", size = 13363883, upload-time = "2026-04-21T17:11:11.239Z" }, + { url = "https://files.pythonhosted.org/packages/2a/56/983916806bf4eddeaaa2c9230903c3669c6718552a921154e1c5182c701f/mypy-1.20.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c64e5973df366b747646fc98da921f9d6eba9716d57d1db94a83c026a08e0fb", size = 13742945, upload-time = "2026-04-21T17:08:34.181Z" }, + { url = "https://files.pythonhosted.org/packages/19/65/0cd9285ab010ee8214c83d67c6b49417c40d86ce46f1aa109457b5a9b8d7/mypy-1.20.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a65aa591af023864fd08a97da9974e919452cfe19cb146c8a5dc692626445dc", size = 14706163, upload-time = "2026-04-21T17:05:15.51Z" }, + { url = "https://files.pythonhosted.org/packages/94/97/48ff3b297cafcc94d185243a9190836fb1b01c1b0918fff64e941e973cc9/mypy-1.20.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4fef51b01e638974a6e69885687e9bd40c8d1e09a6cd291cca0619625cf1f558", size = 14938677, upload-time = "2026-04-21T17:05:39.562Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a1/1b4233d255bdd0b38a1f284feeb1c143ca508c19184964e22f8d837ec851/mypy-1.20.2-cp314-cp314-win_amd64.whl", hash = "sha256:913485a03f1bcf5d279409a9d2b9ed565c151f61c09f29991e5faa14033da4c8", size = 11089322, upload-time = "2026-04-21T17:06:44.29Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/ce7ee2ba36aeb954ba50f18fa25d9c1188578654b97d02a66a15b6f09531/mypy-1.20.2-cp314-cp314-win_arm64.whl", hash = "sha256:c3bae4f855d965b5453784300c12ffc63a548304ac7f99e55d4dc7c898673aa3", size = 10017775, upload-time = "2026-04-21T17:07:20.732Z" }, + { url = "https://files.pythonhosted.org/packages/4e/a1/9d93a7d0b5859af0ead82b4888b46df6c8797e1bc5e1e262a08518c6d48e/mypy-1.20.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2de3dcea53babc1c3237a19002bc3d228ce1833278f093b8d619e06e7cc79609", size = 15549002, upload-time = "2026-04-21T17:08:23.107Z" }, + { url = "https://files.pythonhosted.org/packages/00/d2/09a6a10ee1bf0008f6c144d9676f2ca6a12512151b4e0ad0ff6c4fac5337/mypy-1.20.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:52b176444e2e5054dfcbcb8c75b0b719865c96247b37407184bbfca5c353f2c2", size = 14401942, upload-time = "2026-04-21T17:07:31.837Z" }, + { url = "https://files.pythonhosted.org/packages/57/da/9594b75c3c019e805250bed3583bdf4443ff9e6ef08f97e39ae308cb06f2/mypy-1.20.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:688c3312e5dadb573a2c69c82af3a298d43ecf9e6d264e0f95df960b5f6ac19c", size = 15041649, upload-time = "2026-04-21T17:09:34.653Z" }, + { url = "https://files.pythonhosted.org/packages/97/77/f75a65c278e6e8eba2071f7f5a90481891053ecc39878cc444634d892abe/mypy-1.20.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29752dbbf8cc53f89f6ac096d363314333045c257c9c75cbd189ca2de0455744", size = 15864588, upload-time = "2026-04-21T17:11:44.936Z" }, + { url = "https://files.pythonhosted.org/packages/d7/46/1a4e1c66e96c1a3246ddf5403d122ac9b0a8d2b7e65730b9d6533ba7a6d3/mypy-1.20.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:803203d2b6ea644982c644895c2f78b28d0e208bba7b27d9b921e0ec5eb207c6", size = 16093956, upload-time = "2026-04-21T17:10:17.683Z" }, + { url = "https://files.pythonhosted.org/packages/5a/2c/78a8851264dec38cd736ca5b8bc9380674df0dd0be7792f538916157716c/mypy-1.20.2-cp314-cp314t-win_amd64.whl", hash = "sha256:9bcb8aa397ff0093c824182fd76a935a9ba7ad097fcbef80ae89bf6c1731d8ec", size = 12568661, upload-time = "2026-04-21T17:11:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/83/01/cd7318aa03493322ce275a0e14f4f52b8896335e4e79d4fb8153a7ad2b77/mypy-1.20.2-cp314-cp314t-win_arm64.whl", hash = "sha256:e061b58443f1736f8a37c48978d7ab581636d6ab03e3d4f99e3fa90463bb9382", size = 10389240, upload-time = "2026-04-21T17:09:42.719Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/f23c163e25b11074188251b0b5a0342625fc1cdb6af604757174fa9acc9b/mypy-1.20.2-py3-none-any.whl", hash = "sha256:a94c5a76ab46c5e6257c7972b6c8cff0574201ca7dc05647e33e795d78680563", size = 2637314, upload-time = "2026-04-21T17:05:54.5Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "packaging" +version = "26.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" }, +] + +[[package]] +name = "pathspec" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, +] + +[[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 = "pydantic" +version = "2.13.4" +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/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, +] + +[[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 = "pytest" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/7c/d36d04db312ecf4298932ef77e6e4a9e8ad017906e24e34f0b0c361a2473/pytest_asyncio-1.4.0.tar.gz", hash = "sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42", size = 58514, upload-time = "2026-05-26T09:56:04.083Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl", hash = "sha256:933ca923a23075a87fb7070c0ec272a6848489824d887c85c812670932835aa1", size = 16930, upload-time = "2026-05-26T09:56:02.576Z" }, +] + +[[package]] +name = "regex" +version = "2026.7.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/98/04b13f1ddfb63158025291c02e03eb42fbb7acb51d091d541050eb4e35e8/regex-2026.7.19.tar.gz", hash = "sha256:7e77b324909c1617cbb4c668677e2c6ae13f44d7c1de0d4f15f2e3c10f3315b5", size = 416440, upload-time = "2026-07-19T00:19:48.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/b9/d11d7e501ac8fd7d617684423ebb9561e0b998481c1e4cbc0cb212c5d74a/regex-2026.7.19-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2cc3460cedf7579948486eab03bc9ad7089df4d7281c0f47f4afe03e8d13f02d", size = 496778, upload-time = "2026-07-19T00:17:05.677Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a9/a5ab6f312f24318019170dc485d5421fe4f89e43a98640da50d95a8a7041/regex-2026.7.19-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0e9554c8785eac5cffe6300f69a91f58ba72bc88a5f8d661235ad7c6aa5b8ccd", size = 297122, upload-time = "2026-07-19T00:17:07.59Z" }, + { url = "https://files.pythonhosted.org/packages/b3/63/4cab4d7f2d384a144d420b763d97674cb70619c878ea6fcd7640d0e62143/regex-2026.7.19-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7da47a0f248977f08e2cb659ff3c17ddc13a4d39b3a7baa0a81bf5b415430f6", size = 292009, upload-time = "2026-07-19T00:17:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/22/85/102a81b218298957d4ea7d2f084fae537a71add9d6ff93c8e67284c5f45e/regex-2026.7.19-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93db40c8de0815baab96a06e08a984bac71f989d13bab789e382158c5d426797", size = 796708, upload-time = "2026-07-19T00:17:11.542Z" }, + { url = "https://files.pythonhosted.org/packages/78/b5/dc136af5629938a037cd2b304c12240e132ec92f38be8ff9cc89af2a1f2d/regex-2026.7.19-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:66bd62c59a5427746e8c44becae1d9b99d22fb13f30f492083dfb9ad7c45cc18", size = 865651, upload-time = "2026-07-19T00:17:13.312Z" }, + { url = "https://files.pythonhosted.org/packages/e0/75/67402ae3cd9c8c988a4c805d15ee3eef015e7ca4cb112cf3e640fc1f4153/regex-2026.7.19-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1649eb39fcc9ea80c4d2f110fde2b8ab2aef3877b98f02ab9b14e961f418c511", size = 911756, upload-time = "2026-07-19T00:17:15.015Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8e/096d00c7c480ef2ff4265349b14e2261d4ab787ba1f74e2e80d1c58079c3/regex-2026.7.19-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dce8ec9695f531a1b8a6f314fd4b393adcccf2ea861db480cdf97a301d01a68", size = 801798, upload-time = "2026-07-19T00:17:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/f0/41/e7ecac6edb5722417f85cc67eaf386322fbe8acf6918ec2fdc37c20dd9d0/regex-2026.7.19-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3080a7fd38ef049bd489e01c970c97dd84ff446a885b0f1f6b26d9b1ad13ce11", size = 776933, upload-time = "2026-07-19T00:17:19.347Z" }, + { url = "https://files.pythonhosted.org/packages/6f/69/03c9b3f058d66403e0ca2c938696e81d51cd4c6d47ec5265f02f96948d9a/regex-2026.7.19-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1d793a7988e04fcb1e2e135567443d82173225d657419ec09414a9b5a145b986", size = 784338, upload-time = "2026-07-19T00:17:21.057Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f7/b38ab3d43f284afbb618fcd15d0e77eb786ae461ce1f6bc7494619ddc0f2/regex-2026.7.19-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e8b0abe7d870f53ca5143895fef7d1041a0c831a140d3dc2c760dd7ba25d4a8b", size = 860452, upload-time = "2026-07-19T00:17:23.119Z" }, + { url = "https://files.pythonhosted.org/packages/15/5c/ff60ef0571121714f3cf9920bc183071e384a10b556d042e0fdb06cc07a5/regex-2026.7.19-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:4e5413bd5f13d3a4e3539ca98f70f75e7fca92518dd7f117f030ebedd10b60cb", size = 765958, upload-time = "2026-07-19T00:17:24.81Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0f/bd34021162c0ab47f9a315bd56cd5642e920c8e5668a75ef6c6a6fca590d/regex-2026.7.19-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:73b133a9e6fb512858e7f065e96f1180aa46646bc74a83aea62f1d314f3dd035", size = 851765, upload-time = "2026-07-19T00:17:26.993Z" }, + { url = "https://files.pythonhosted.org/packages/2a/20/a2ca43edade0595cccfdc98636739f536d9e26898e7dbddc2b9e98898953/regex-2026.7.19-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbe6493fbd27321b1d1f2dd4f5c7e5bd4d8b1d7cab7f32fd67db3d0b2ed8248a", size = 789714, upload-time = "2026-07-19T00:17:28.699Z" }, + { url = "https://files.pythonhosted.org/packages/5d/47/e02db4015d424fc83c00ea0ac8c5e5ec14397943de9abf909d5ce3a25931/regex-2026.7.19-cp312-cp312-win32.whl", hash = "sha256:ddd67571c10869f65a5d7dde536d1e066e306cc90de57d7de4d5f34802428bb5", size = 267157, upload-time = "2026-07-19T00:17:31.051Z" }, + { url = "https://files.pythonhosted.org/packages/08/8e/c780c131f79b42ed22d1bd7da4096c2c35f813e835acd02ef0f018bd892c/regex-2026.7.19-cp312-cp312-win_amd64.whl", hash = "sha256:e30d40268a28d54ce0437031750497004c22602b8e3ab891f759b795a003b312", size = 277777, upload-time = "2026-07-19T00:17:32.848Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4c/e4d7e086449bdf379d89774bf1f89dc4a41943f3c5a6125a03905b34b5fb/regex-2026.7.19-cp312-cp312-win_arm64.whl", hash = "sha256:de9208bb427130c82a5dbfd104f92c8876fc9559278c880b3002755bbbe9c83d", size = 277136, upload-time = "2026-07-19T00:17:34.803Z" }, + { url = "https://files.pythonhosted.org/packages/5d/3d/84165e4299ff76f3a40fe1f2abf939e976f693383a08d2beea6af62bd2c1/regex-2026.7.19-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f035d9dc1d25eff9d361456572231c7d27b5ccd473ca7dc0adfce732bd006d40", size = 496552, upload-time = "2026-07-19T00:17:36.808Z" }, + { url = "https://files.pythonhosted.org/packages/02/a2/a65293e6e4cf28eb7ee1be5335a5386c40d6742e9f47fafc8fec785e16c7/regex-2026.7.19-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c42572142ed0b9d5d261ba727157c426510da78e20828b66bbb855098b8a4e38", size = 296983, upload-time = "2026-07-19T00:17:38.816Z" }, + { url = "https://files.pythonhosted.org/packages/95/47/2d0564e93d87bc48618360ddca232a2ca612bbdf53ce8465d45ca5ce14ee/regex-2026.7.19-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:40b34dd88658e4fedd2fddbf0275ac970d00614b731357f425722a3ed1983d11", size = 291832, upload-time = "2026-07-19T00:17:40.726Z" }, + { url = "https://files.pythonhosted.org/packages/07/cd/42dfbabff3dfc9603c501c0e2e2c5adbb09d127b267bf5348de0af338c15/regex-2026.7.19-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c41c63992bf1874cebb6e7f56fd7d3c007924659a604ae3d90e427d40d4fd13", size = 796775, upload-time = "2026-07-19T00:17:42.382Z" }, + { url = "https://files.pythonhosted.org/packages/df/5d/f6a4839f2b934e3eed5973fd07f5929ee97d4c98939fb275ea23c274ee16/regex-2026.7.19-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d3372064506b94dd2c67c845f2db8062e9e9ba84d04e33cb96d7d33c11fe1ae", size = 865687, upload-time = "2026-07-19T00:17:44.185Z" }, + { url = "https://files.pythonhosted.org/packages/14/b0/b47d6c36049bc59806a50bd4c86ced70bbe058d787f80281b1d7a9b0e024/regex-2026.7.19-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fce7760bf283405b2c7999cab3da4e72f7deca6396013115e3f7a955db9760da", size = 911962, upload-time = "2026-07-19T00:17:46.442Z" }, + { url = "https://files.pythonhosted.org/packages/2a/be/ff61f28f9273658cfe23acbbac5217221f6519960ed401e61dfdab12bc35/regex-2026.7.19-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0d702548d89d572b2929879bc883bb7a4c4709efafe4512cadee56c55c9bd15", size = 801817, upload-time = "2026-07-19T00:17:48.25Z" }, + { url = "https://files.pythonhosted.org/packages/c3/bb/8b4f7f26b333f9f79e1b453613c39bb4776f51d38ae66dd0ba31d6b354ca/regex-2026.7.19-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d446c6ac40bb6e05025ccee55b84d80fe9bf8e93010ffc4bb9484f13d498835f", size = 776908, upload-time = "2026-07-19T00:17:50.183Z" }, + { url = "https://files.pythonhosted.org/packages/09/13/610110fc5921d380516d03c26b652555f08aa0d23ea78a771231873c3638/regex-2026.7.19-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4c3501bfa814ab07b5580741f9bf78dfdfe146a04057f82df9e2402d2a975939", size = 784426, upload-time = "2026-07-19T00:17:52.454Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f5/1ef9e2a83a5947c57ebff0b377cb5727c3d5ec1992317a320d035cd0dbb6/regex-2026.7.19-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c4585c3e64b4f9e583b4d2683f18f5d5d872b3d71dcf24594b74ecc23602fa96", size = 860600, upload-time = "2026-07-19T00:17:54.229Z" }, + { url = "https://files.pythonhosted.org/packages/a0/02/073af33a3ec149241d11c80acea91e722aa0adbf05addd50f251c4fe89c3/regex-2026.7.19-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:571fde9741eb0ccde23dd4e0c1d50fbae910e901fa7e629faf39b2dda740d220", size = 765950, upload-time = "2026-07-19T00:17:56.041Z" }, + { url = "https://files.pythonhosted.org/packages/81/a9/d1e9f819dc394a568ef370cd56cf25394e957a2235f8370f23b576e5a475/regex-2026.7.19-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:15b364b9b98d6d2fe1a85034c23a3180ff913f46caddc3895f6fd65186255ccc", size = 851794, upload-time = "2026-07-19T00:17:57.897Z" }, + { url = "https://files.pythonhosted.org/packages/03/3a/8ae83eda7579feacdf984e71fb9e70635fb6f832eeddca58427ec4fca926/regex-2026.7.19-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffd8893ccc1c2fce6e0d6ca402d716fe1b29db70c7132609a05955e31b2aa8f2", size = 789845, upload-time = "2026-07-19T00:17:59.97Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/c195cbfe5a75fdec64d8f6554fd15237b837919d2c61bdc141d7c807b08b/regex-2026.7.19-cp313-cp313-win32.whl", hash = "sha256:f0fa4fa9c3632d708742baf2282f2055c11d888a790362670a403cbf48a2c404", size = 267135, upload-time = "2026-07-19T00:18:01.958Z" }, + { url = "https://files.pythonhosted.org/packages/b2/80/a11de8404b7272b70acb45c1c05987cce60b45d5693da2e176f0e390d564/regex-2026.7.19-cp313-cp313-win_amd64.whl", hash = "sha256:d51ffd3427640fa2da6ade574ceba932f210ad095f65fcc450a2b0a0d454868e", size = 277747, upload-time = "2026-07-19T00:18:04.121Z" }, + { url = "https://files.pythonhosted.org/packages/d1/29/0f5c8eff1b4f1f3d83276d365fccecf666afcc7d947420943bf394d07adb/regex-2026.7.19-cp313-cp313-win_arm64.whl", hash = "sha256:c670fe7be5b6020b76bc6e8d2196074657e1327595bca93a389e1a76ab130ad8", size = 277129, upload-time = "2026-07-19T00:18:05.821Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4c/44b74742052cedda40f9ae469532a037112f7311a36669a891fba8984bb0/regex-2026.7.19-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db47b561c9afd884baa1f96f797c9ca369872c4b65912bc691cfa99e68340af2", size = 501134, upload-time = "2026-07-19T00:18:07.567Z" }, + { url = "https://files.pythonhosted.org/packages/f0/45/bbd038b5e39ee5613a5a689290145b40058cc152c41de9cc23639d2b9734/regex-2026.7.19-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:65dcd28d3eba2ab7c2fd906485cc301392b47cc2234790d27d4e4814e02cdfda", size = 299418, upload-time = "2026-07-19T00:18:09.38Z" }, + { url = "https://files.pythonhosted.org/packages/65/38/c5bde94b4cedfd5850d64c3f08222d8e1600e84f6ee71d9b44b4b8163f74/regex-2026.7.19-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f2e7f8e2ab6c2922be02c7ec45185aa5bd771e2e57b95455ee343a44d8130dff", size = 294486, upload-time = "2026-07-19T00:18:11.188Z" }, + { url = "https://files.pythonhosted.org/packages/d7/6a/2f5e107cb26c960b781967178899daf2787a7ab151844ed3c01d6fc95474/regex-2026.7.19-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe31f28c94402043161876a258a9c6f757cb485905c7614ce8d6cd40e6b7bdc1", size = 811643, upload-time = "2026-07-19T00:18:12.975Z" }, + { url = "https://files.pythonhosted.org/packages/37/d4/a2f963406d7d73a62eed84ba05a258afb6cad1b21aa4517443ce40506b78/regex-2026.7.19-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f8f6fa298bb4f7f58a33334406218ba74716e68feddf5e4e54cd5d8082705abf", size = 871081, upload-time = "2026-07-19T00:18:14.733Z" }, + { url = "https://files.pythonhosted.org/packages/45/a3/44be546340bedb15f13063f5e7fe16793ea4d9ea2e805d09bd174ac27724/regex-2026.7.19-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cc1b2440423a851fad781309dd87843868f4f66a6bcd1ddb9225cf4ec2c84732", size = 917372, upload-time = "2026-07-19T00:18:16.724Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f6/e0870b0fd2a40dba0074e4b76e514b21313d37946c9248453e34ec43923e/regex-2026.7.19-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ac59a0900474a52b7c04af8196affc22bd9842acb0950df12f7b813e983609a", size = 816089, upload-time = "2026-07-19T00:18:18.617Z" }, + { url = "https://files.pythonhosted.org/packages/ae/27/957e8e22690ad6634572b39b71f130a6105f4d0718bb16849eac00fff147/regex-2026.7.19-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4896db1f4ce0576765b8272aa922df324e0f5b9bb2c3d03044ff32a7234a9aba", size = 785206, upload-time = "2026-07-19T00:18:20.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/a4/186e410941e731037c01166069ab86da9f65e8f8110c18009ccf4bd623ee/regex-2026.7.19-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4e6883a021db30511d9fb8cfb0f222ce1f2c369f7d4d8b0448f449a93ba0bdfc", size = 800431, upload-time = "2026-07-19T00:18:22.716Z" }, + { url = "https://files.pythonhosted.org/packages/73/9f/e4e10e023d291d64a33e246610b724493bf1ce98e0e59c9b7c837e5acfb7/regex-2026.7.19-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:09523a592938aa9f587fb74467c63ff0cf88fc3df14c82ab0f0517dcf76aaa62", size = 864906, upload-time = "2026-07-19T00:18:24.772Z" }, + { url = "https://files.pythonhosted.org/packages/24/57/ccb20b6be5f1f52a053d1ba2a8f7a077edb9d918248b8490d7506c6832b3/regex-2026.7.19-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:1ebac3474b8589fce2f9b225b650afd61448f7c73a5d0255a10cc6366471aed1", size = 773559, upload-time = "2026-07-19T00:18:27.008Z" }, + { url = "https://files.pythonhosted.org/packages/a3/82/f3b263cf8fad927dc102891da8502e718b7ff9d19af7a2a07c03865d7188/regex-2026.7.19-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4a0530bb1b8c1c985e7e2122e2b4d3aedd8a3c21c6bfddae6767c4405668b56e", size = 857739, upload-time = "2026-07-19T00:18:29.107Z" }, + { url = "https://files.pythonhosted.org/packages/47/2e/1687bd1b6c2aed5e672ccf845fc11557821fe7366d921b50889ea5ce57bf/regex-2026.7.19-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef7eeb108c47ce7bcc9513e51bcb1bf57e8f483d52fce68a8642e3527141ae0", size = 804522, upload-time = "2026-07-19T00:18:31.362Z" }, + { url = "https://files.pythonhosted.org/packages/76/7c/cc4e7655181b2d9235b704f2c5e19d8eff002bbc437bae59baee0e381aca/regex-2026.7.19-cp313-cp313t-win32.whl", hash = "sha256:64b6ca7391a1395c2638dd5c7456d67bea44fc6c5e8e92c5dc8aa6a8f23292b4", size = 269141, upload-time = "2026-07-19T00:18:33.479Z" }, + { url = "https://files.pythonhosted.org/packages/bb/14/961b4c7b05a2391c32dbc85e27773076671ef8f97f36cec70fe414734c02/regex-2026.7.19-cp313-cp313t-win_amd64.whl", hash = "sha256:f04b9f56b0e0614c0126be12c2c2d9f8850c1e57af302bd0a63bed379d4af974", size = 280036, upload-time = "2026-07-19T00:18:35.419Z" }, + { url = "https://files.pythonhosted.org/packages/ce/67/795644550d788ddbb6dc458c95895f8009978ea6d6ea76b005eb3f45e8c9/regex-2026.7.19-cp313-cp313t-win_arm64.whl", hash = "sha256:fcee38cd8e5089d6d4f048ba1233b3ad76e5954f545382180889112ff5cb712d", size = 279394, upload-time = "2026-07-19T00:18:37.454Z" }, + { url = "https://files.pythonhosted.org/packages/d2/25/0c4c452f8ef3efe456745b2f33195f5904b573fb4c2ff3f0cb9ec188461e/regex-2026.7.19-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:a81758ed242b861b72e778ba34d41366441a2e10b16b472784c88da2dea7e2dd", size = 496750, upload-time = "2026-07-19T00:18:39.633Z" }, + { url = "https://files.pythonhosted.org/packages/24/9e/b70ca6c1704f6c7cd32a9e143c86cc5968d10981eca284bad670c245ea7d/regex-2026.7.19-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4aa5435cdb3eb6f55fe98a171b05e3fbcd95fadaa4aa32acf62afd9b0cfdbcac", size = 297093, upload-time = "2026-07-19T00:18:41.583Z" }, + { url = "https://files.pythonhosted.org/packages/87/74/0b692da2520d51fbff19c88b83d97e4c702909dd02386c585998b7e2dbed/regex-2026.7.19-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:60be8693a1dadc210bbcbc0db3e26da5f7d01d1d5a3da594e99b4fa42df404f5", size = 292043, upload-time = "2026-07-19T00:18:43.347Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a7/1d478e614016045a33feae57446215f9fd65b665a5ceb2f891fb3183bc52/regex-2026.7.19-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d19662dbedbe783d323196312d38f5ba53cf56296378252171985da6899887d3", size = 797214, upload-time = "2026-07-19T00:18:45.362Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ae/11b9c9411d92c30e3d2db32df5a31133e4a99a8fc397a604fd08f6c4bffb/regex-2026.7.19-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d15df07081d91b76ff20d43f94592ee110330152d617b730fdbe5ef9fb680053", size = 866433, upload-time = "2026-07-19T00:18:47.315Z" }, + { url = "https://files.pythonhosted.org/packages/b1/62/2b2efc4992f91d6d204b24c647c9f9412e85379d92b7c0ab9fdae622327e/regex-2026.7.19-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:56ad4d9f77df871a99e25c37091052a02528ec0eb059de928ee33956b854b45b", size = 911360, upload-time = "2026-07-19T00:18:49.588Z" }, + { url = "https://files.pythonhosted.org/packages/14/71/986ceea9aa3da548bf1357cad89b63915ec6d21ec957c8113b29ece567df/regex-2026.7.19-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7322ec6cc9fba9d49ab888bb82d67ac5625627aa168f0165139b17018df3fb8a", size = 801275, upload-time = "2026-07-19T00:18:51.767Z" }, + { url = "https://files.pythonhosted.org/packages/15/be/ce9d9534b2cda96eab32c548261224b9b4e220a4126f098f60f42ae7b4cd/regex-2026.7.19-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9c7472192ebfad53a6be7c4a8bfb2d64b81c0e93a1fc8c57e1dd0b638297b5d1", size = 777131, upload-time = "2026-07-19T00:18:54.053Z" }, + { url = "https://files.pythonhosted.org/packages/61/2b/58b5c710f2c3929515a25f3a1ca0dad0dcd4518d4fff3cf23bc7adb8dcd2/regex-2026.7.19-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c10b82c2634df08dfb13b1f04e38fe310d086ee092f4f69c0c8da234251e556e", size = 785020, upload-time = "2026-07-19T00:18:56.579Z" }, + { url = "https://files.pythonhosted.org/packages/84/03/5fe091935b74f15fe0f97998c215cae418d1c0413f6258c7d4d2e83aa37f/regex-2026.7.19-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:17ed5692f6acc4183e98331101a5f9e4f64d72fe58b753da4d444a2c77d05b12", size = 861263, upload-time = "2026-07-19T00:18:58.64Z" }, + { url = "https://files.pythonhosted.org/packages/d8/fa/d60bf82e10841eef62a9e32aac401468f05fddfbcb2942e342b1ba3d2433/regex-2026.7.19-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:22a992de9a0d91bda927bf02b94351d737a0302905432c88a53de7c4b9ce62e2", size = 766199, upload-time = "2026-07-19T00:19:00.705Z" }, + { url = "https://files.pythonhosted.org/packages/bf/5d/11e64d151b0662b81d6bf644c74dc118d461df85bdf2577fadbbf751788a/regex-2026.7.19-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:618a0aed532be87294c4477b0481f3aa0f1520f4014a4374dd4cf789b4cd2c97", size = 851317, upload-time = "2026-07-19T00:19:03.015Z" }, + { url = "https://files.pythonhosted.org/packages/7c/34/532efb87488d90807bae6a443d357ee5e2728a478c597619c8aaa17cc0bd/regex-2026.7.19-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2ce9e679f776649746729b6c86382da519ef649c8e34cc41df0d2e5e0f6c36d4", size = 789557, upload-time = "2026-07-19T00:19:05.338Z" }, + { url = "https://files.pythonhosted.org/packages/d6/90/3a8d5ca977171ec3ae21a71207d2228b2663bde14d7f7ef0e6363ecf9290/regex-2026.7.19-cp314-cp314-win32.whl", hash = "sha256:73f272fba87b8ccfe70a137d02a54af386f6d27aa509fbffdd978f5947aae1aa", size = 272531, upload-time = "2026-07-19T00:19:07.487Z" }, + { url = "https://files.pythonhosted.org/packages/96/e1/8862885e70409de70e8c005f57fb2e7be8d9ef0317250d60f4c9660a300d/regex-2026.7.19-cp314-cp314-win_amd64.whl", hash = "sha256:d721e53758b2cca74990185eb0671dd466d7a388a1a45d0c6f4c13cef41a68ac", size = 280831, upload-time = "2026-07-19T00:19:09.46Z" }, + { url = "https://files.pythonhosted.org/packages/08/82/2693e53e29f9104d9de95d37ce4dd826bd32d5f9c0085d3aa6ac042675c4/regex-2026.7.19-cp314-cp314-win_arm64.whl", hash = "sha256:65fa6cb38ed5e9c3637e68e544f598b39c3b86b808ed0627a67b68320384b459", size = 281099, upload-time = "2026-07-19T00:19:11.398Z" }, + { url = "https://files.pythonhosted.org/packages/92/b7/9a01aa16461a18cde9d7b9c3ab21e501db2ce33725f53014342b91df2b0a/regex-2026.7.19-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:5a2721c8720e2cb3c209925dfb9200199b4b07361c9e01d321719404b21458b3", size = 501121, upload-time = "2026-07-19T00:19:13.425Z" }, + { url = "https://files.pythonhosted.org/packages/f3/5e/bbaeca815dc9191c424c94a4fdc5c87c75748a64a6271821212ebdd4e1a3/regex-2026.7.19-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:199535629f25caf89698039af3d1ad5fcae7f933e2112c73f1cdf49165c99518", size = 299415, upload-time = "2026-07-19T00:19:15.43Z" }, + { url = "https://files.pythonhosted.org/packages/cd/d6/0dd1a321afaab95eb7ff44aa0f637301786f1dc71c6b797b9ed236ed8890/regex-2026.7.19-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9b60d7814174f059e5de4ab98271cc5ba9259cfea55273a81544dceea32dc8d9", size = 294483, upload-time = "2026-07-19T00:19:17.879Z" }, + { url = "https://files.pythonhosted.org/packages/92/5f/40bacf91d0904f812e13bbbab3864604c463eced8afdc54aeaa50492ea95/regex-2026.7.19-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dbece16025afda5e3031af0c4059207e61dcf73ef13af844964f57f387d1c435", size = 811833, upload-time = "2026-07-19T00:19:20.102Z" }, + { url = "https://files.pythonhosted.org/packages/94/7c/4902744261f775aeede8b5627314b38482da29cf49a57b66a6fb753246c5/regex-2026.7.19-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d24ecb4f5e009ea0bd275ee37ad9953b32005e2e5e60f8bbae16da0dbbf0d3a0", size = 871270, upload-time = "2026-07-19T00:19:22.365Z" }, + { url = "https://files.pythonhosted.org/packages/16/70/6980c9be6bf21c0a60ed3e0aea39cf419ecf3b08d1d9947bc56e196ef186/regex-2026.7.19-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8cae6fd77a5b72dae505084b1a2ee0360139faf72fedbab667cd7cc65aae7a6a", size = 917534, upload-time = "2026-07-19T00:19:24.529Z" }, + { url = "https://files.pythonhosted.org/packages/52/92/8b2bd872782ce8c42691e39acb38eb8efe014e5ddb78ad7d943d6f197ce9/regex-2026.7.19-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9724e6cb5e478cd7d8cabf027826178739cb18cf0e117d0e32814d479fa02276", size = 816135, upload-time = "2026-07-19T00:19:26.919Z" }, + { url = "https://files.pythonhosted.org/packages/de/2d/33a602f657bdc4041f17d79f92ab18261d255d91a06117a6e29df023e5e2/regex-2026.7.19-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:572fc57b0009c735ee56c175ea021b637a15551a312f56734277f923d6fd0f6c", size = 785492, upload-time = "2026-07-19T00:19:29.192Z" }, + { url = "https://files.pythonhosted.org/packages/9e/36/0987cf4cb271680064a70d24a475873775a151d0b7058698a006cb0cae4a/regex-2026.7.19-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:20568e182eb82d39a6bf7cff3fd58566f14c75c6f74b2c8c96537eecf9010e3a", size = 800658, upload-time = "2026-07-19T00:19:31.392Z" }, + { url = "https://files.pythonhosted.org/packages/a8/24/c14f31c135e1ba55fa4f9a58ca98d0842512bf6188230763c31c8f449e3b/regex-2026.7.19-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:1d58561843f0ff7dc78b4c28b5e2dc388f3eff94ebc8a232a3adba961fc00009", size = 865073, upload-time = "2026-07-19T00:19:33.485Z" }, + { url = "https://files.pythonhosted.org/packages/14/85/181a12211f22469f24d2de1ebddfe397d2396e2c29013b9a58134a91069a/regex-2026.7.19-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:61bb1bd45520aacd56dd80943bd34991fb5350afdd1f36f2282230fd5154a218", size = 773684, upload-time = "2026-07-19T00:19:35.599Z" }, + { url = "https://files.pythonhosted.org/packages/23/58/bd1a0c1a62251366f8d21f41b1ea3c76994962071b8b6ea42f72d505c0f0/regex-2026.7.19-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:cd3584591ea4429026cdb931b054342c2bcf189b44ff367f8d5c15bc092a2966", size = 857769, upload-time = "2026-07-19T00:19:37.738Z" }, + { url = "https://files.pythonhosted.org/packages/e4/4f/f7e2dad6756b2fe1fe75dd90a628c3b45f249d39f948dd90cd2476325417/regex-2026.7.19-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5cc26a66e212fa5d6c6170c3a40d99d888db3020c6fdab1523250d4341382e44", size = 804546, upload-time = "2026-07-19T00:19:40.229Z" }, + { url = "https://files.pythonhosted.org/packages/2b/d7/01d31d5bdb09bc026fab77f59a371fdf8f9b292e4810546c56182ca70498/regex-2026.7.19-cp314-cp314t-win32.whl", hash = "sha256:2c4e61e2e1be56f63ec3cc618aa9e0de81ef6f43d177205451840022e24f5b78", size = 274526, upload-time = "2026-07-19T00:19:42.398Z" }, + { url = "https://files.pythonhosted.org/packages/52/0e/cea4ce73bc0a8247a0748228ae6669984c7e1f8134b6fa66e59c0572e0ea/regex-2026.7.19-cp314-cp314t-win_amd64.whl", hash = "sha256:c639ea314df70a7b2811e8020448c75af8c9445f5a60f8a4ced81c306a9380c2", size = 283763, upload-time = "2026-07-19T00:19:44.644Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b6/26e41975febae63b7a6e3e02f32cff6cff2e4f10d19c929082f56aebf7c6/regex-2026.7.19-cp314-cp314t-win_arm64.whl", hash = "sha256:9a15e785f244f3e07847b984ce8773fc3da10a9f3c131cc49a4c5b4d672b4547", size = 283451, upload-time = "2026-07-19T00:19:46.639Z" }, +] + +[[package]] +name = "ruff" +version = "0.12.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/f0/e0965dd709b8cabe6356811c0ee8c096806bb57d20b5019eb4e48a117410/ruff-0.12.12.tar.gz", hash = "sha256:b86cd3415dbe31b3b46a71c598f4c4b2f550346d1ccf6326b347cc0c8fd063d6", size = 5359915, upload-time = "2025-09-04T16:50:18.273Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/79/8d3d687224d88367b51c7974cec1040c4b015772bfbeffac95face14c04a/ruff-0.12.12-py3-none-linux_armv6l.whl", hash = "sha256:de1c4b916d98ab289818e55ce481e2cacfaad7710b01d1f990c497edf217dafc", size = 12116602, upload-time = "2025-09-04T16:49:18.892Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c3/6e599657fe192462f94861a09aae935b869aea8a1da07f47d6eae471397c/ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7acd6045e87fac75a0b0cdedacf9ab3e1ad9d929d149785903cff9bb69ad9727", size = 12868393, upload-time = "2025-09-04T16:49:23.043Z" }, + { url = "https://files.pythonhosted.org/packages/e8/d2/9e3e40d399abc95336b1843f52fc0daaceb672d0e3c9290a28ff1a96f79d/ruff-0.12.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:abf4073688d7d6da16611f2f126be86523a8ec4343d15d276c614bda8ec44edb", size = 12036967, upload-time = "2025-09-04T16:49:26.04Z" }, + { url = "https://files.pythonhosted.org/packages/e9/03/6816b2ed08836be272e87107d905f0908be5b4a40c14bfc91043e76631b8/ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:968e77094b1d7a576992ac078557d1439df678a34c6fe02fd979f973af167577", size = 12276038, upload-time = "2025-09-04T16:49:29.056Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d5/707b92a61310edf358a389477eabd8af68f375c0ef858194be97ca5b6069/ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42a67d16e5b1ffc6d21c5f67851e0e769517fb57a8ebad1d0781b30888aa704e", size = 11901110, upload-time = "2025-09-04T16:49:32.07Z" }, + { url = "https://files.pythonhosted.org/packages/9d/3d/f8b1038f4b9822e26ec3d5b49cf2bc313e3c1564cceb4c1a42820bf74853/ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b216ec0a0674e4b1214dcc998a5088e54eaf39417327b19ffefba1c4a1e4971e", size = 13668352, upload-time = "2025-09-04T16:49:35.148Z" }, + { url = "https://files.pythonhosted.org/packages/98/0e/91421368ae6c4f3765dd41a150f760c5f725516028a6be30e58255e3c668/ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:59f909c0fdd8f1dcdbfed0b9569b8bf428cf144bec87d9de298dcd4723f5bee8", size = 14638365, upload-time = "2025-09-04T16:49:38.892Z" }, + { url = "https://files.pythonhosted.org/packages/74/5d/88f3f06a142f58ecc8ecb0c2fe0b82343e2a2b04dcd098809f717cf74b6c/ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ac93d87047e765336f0c18eacad51dad0c1c33c9df7484c40f98e1d773876f5", size = 14060812, upload-time = "2025-09-04T16:49:42.732Z" }, + { url = "https://files.pythonhosted.org/packages/13/fc/8962e7ddd2e81863d5c92400820f650b86f97ff919c59836fbc4c1a6d84c/ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01543c137fd3650d322922e8b14cc133b8ea734617c4891c5a9fccf4bfc9aa92", size = 13050208, upload-time = "2025-09-04T16:49:46.434Z" }, + { url = "https://files.pythonhosted.org/packages/53/06/8deb52d48a9a624fd37390555d9589e719eac568c020b27e96eed671f25f/ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afc2fa864197634e549d87fb1e7b6feb01df0a80fd510d6489e1ce8c0b1cc45", size = 13311444, upload-time = "2025-09-04T16:49:49.931Z" }, + { url = "https://files.pythonhosted.org/packages/2a/81/de5a29af7eb8f341f8140867ffb93f82e4fde7256dadee79016ac87c2716/ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0c0945246f5ad776cb8925e36af2438e66188d2b57d9cf2eed2c382c58b371e5", size = 13279474, upload-time = "2025-09-04T16:49:53.465Z" }, + { url = "https://files.pythonhosted.org/packages/7f/14/d9577fdeaf791737ada1b4f5c6b59c21c3326f3f683229096cccd7674e0c/ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a0fbafe8c58e37aae28b84a80ba1817f2ea552e9450156018a478bf1fa80f4e4", size = 12070204, upload-time = "2025-09-04T16:49:56.882Z" }, + { url = "https://files.pythonhosted.org/packages/77/04/a910078284b47fad54506dc0af13839c418ff704e341c176f64e1127e461/ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b9c456fb2fc8e1282affa932c9e40f5ec31ec9cbb66751a316bd131273b57c23", size = 11880347, upload-time = "2025-09-04T16:49:59.729Z" }, + { url = "https://files.pythonhosted.org/packages/df/58/30185fcb0e89f05e7ea82e5817b47798f7fa7179863f9d9ba6fd4fe1b098/ruff-0.12.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f12856123b0ad0147d90b3961f5c90e7427f9acd4b40050705499c98983f489", size = 12891844, upload-time = "2025-09-04T16:50:02.591Z" }, + { url = "https://files.pythonhosted.org/packages/21/9c/28a8dacce4855e6703dcb8cdf6c1705d0b23dd01d60150786cd55aa93b16/ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:26a1b5a2bf7dd2c47e3b46d077cd9c0fc3b93e6c6cc9ed750bd312ae9dc302ee", size = 13360687, upload-time = "2025-09-04T16:50:05.8Z" }, + { url = "https://files.pythonhosted.org/packages/c8/fa/05b6428a008e60f79546c943e54068316f32ec8ab5c4f73e4563934fbdc7/ruff-0.12.12-py3-none-win32.whl", hash = "sha256:173be2bfc142af07a01e3a759aba6f7791aa47acf3604f610b1c36db888df7b1", size = 12052870, upload-time = "2025-09-04T16:50:09.121Z" }, + { url = "https://files.pythonhosted.org/packages/85/60/d1e335417804df452589271818749d061b22772b87efda88354cf35cdb7a/ruff-0.12.12-py3-none-win_amd64.whl", hash = "sha256:e99620bf01884e5f38611934c09dd194eb665b0109104acae3ba6102b600fd0d", size = 13178016, upload-time = "2025-09-04T16:50:12.559Z" }, + { url = "https://files.pythonhosted.org/packages/28/7e/61c42657f6e4614a4258f1c3b0c5b93adc4d1f8575f5229d1906b483099b/ruff-0.12.12-py3-none-win_arm64.whl", hash = "sha256:2a8199cab4ce4d72d158319b63370abf60991495fb733db96cd923a34c52d093", size = 12256762, upload-time = "2025-09-04T16:50:15.737Z" }, +] + +[[package]] +name = "slop-cop" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "httpx" }, + { name = "pydantic" }, + { name = "regex" }, +] + +[package.dev-dependencies] +dev = [ + { name = "mypy" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "ruff" }, + { name = "types-regex" }, +] + +[package.metadata] +requires-dist = [ + { name = "httpx", specifier = ">=0.28.1,<0.29" }, + { name = "pydantic", specifier = ">=2.11.0,<3" }, + { name = "regex", specifier = ">=2025.7.34" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "mypy", specifier = ">=1.17.1,<2" }, + { name = "pytest", specifier = ">=8.4.1,<9" }, + { name = "pytest-asyncio", specifier = ">=1.1.0,<2" }, + { name = "ruff", specifier = ">=0.12.8,<0.13" }, + { name = "types-regex", specifier = ">=2025.7.34.20250731" }, +] + +[[package]] +name = "types-regex" +version = "2026.7.19.20260720" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/bc/825471e08455b037c40d2c80fe9f93a574fcfef0b2e6c6fc2e248ada4adb/types_regex-2026.7.19.20260720.tar.gz", hash = "sha256:49ab8261bd46fa215245b9cb0d2fed1c1056fbdc763303714f6132208909afcf", size = 13473, upload-time = "2026-07-20T05:27:00.203Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/1a/9bbd3eace00c2562556570d2464afe843ef5f8118df17aee5f36fed5948f/types_regex-2026.7.19.20260720-py3-none-any.whl", hash = "sha256:70e76f05d8ef60f00227e50351f1cb81552d1cdf3fdf77350f7063c911ee26da", size = 11147, upload-time = "2026-07-20T05:26:59.245Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/bc/4eae18cd40c65798a16267572ba346c11f599d44b01603dbd843342042bc/typing_inspection-0.4.3.tar.gz", hash = "sha256:c5f9ec1530b5c1e2c9bc34a84d9a3466ed1b2f3f2fa9f901368d9c5596210e4d", size = 76711, upload-time = "2026-08-10T09:39:18.063Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/f7/7a3935abdebd5cf18705a5f0335dd6a3a18bef3baa7cb9edc3b6b9922cc8/typing_inspection-0.4.3-py3-none-any.whl", hash = "sha256:5f42b23858a91e0b4ef521f5418f03a0da3c9216fd2995ef5e73463100e676cd", size = 14693, upload-time = "2026-08-10T09:39:16.693Z" }, +] diff --git a/plans/slop-cop.md b/plans/slop-cop.md new file mode 100644 index 00000000..b32d7c78 --- /dev/null +++ b/plans/slop-cop.md @@ -0,0 +1,1855 @@ +# Slop Cop implementation plan + +## Status + +Implemented in `dev-tools/slop-cop/` with the analysis and reporting workflows in +`.github/workflows/`. Local validation is complete. Live artifact, permission, +comment, override, and required-check behavior still requires post-merge GitHub +workflow validation. + +## Executive decision + +Build **Slop Cop** as a small, repository-owned Python project that reviews +changed English-language Dev Notes for high-confidence LLM artifacts, clichéd +rhetorical constructions, overused vocabulary, and repeated writing patterns. +Its projector, built-in rules, scoring, and reporting remain deterministic and +offline. Trusted repository-owned custom rules may implement arbitrary logic, +including asynchronous calls to a configured judging service. + +Slop Cop is an editorial linter, not an AI-authorship detector. Its score means +“how many configured editorial-risk signals are present,” not “the probability +that an LLM wrote this text.” Human prose can trigger the rules and LLM prose can +avoid them. The CLI, report, check name, and documentation must preserve that +distinction. + +The initial product has four outputs: + +- precise, source-mapped findings with an explanation and suggested editorial + action +- a transparent score from 0 to 100 for each changed Dev Note +- a required CI decision based on an absolute score threshold and any + unsuppressed blocking findings +- a self-contained HTML report uploaded as a short-lived PR artifact, with a + concise sticky PR comment linking to it + +Keep the implementation under `dev-tools/slop-cop/` and the GitHub integration +under `.github/workflows/`. Do not persist generated reports in the repository. + +## Working names + +| Surface | Name | +| --- | --- | +| Repository tool | `dev-tools/slop-cop/` | +| Python distribution | `slop-cop` | +| Python package | `slop_cop` | +| CLI | `slop-cop` | +| Configuration | `dev-tools/slop-cop/slop-cop.toml` | +| Analysis workflow | `.github/workflows/slop-cop.yml` | +| Trusted comment workflow | `.github/workflows/slop-cop-report.yml` | +| Required check | `Slop Cop / Dev Notes` | +| Manual override marker | `Slop-Cop-Override:` | +| Artifact | `slop-cop-pr--` | +| Sticky comment marker | `` | + +Do not publish the Python package. It is a repository-local implementation. + +## Locked implementation choices + +Treat these as decided unless implementation evidence makes one impossible: + +| Concern | Choice | +| --- | --- | +| Runtime | Python 3.12 or newer | +| Packaging and execution | One self-contained `uv` project and committed `uv.lock` | +| Typed validation | Pydantic v2 frozen models; `tomllib` loads TOML before validation | +| Unicode matching | The `regex` package with reviewed patterns and per-operation timeouts | +| External HTTP | One shared `httpx.AsyncClient`; tests use `httpx.MockTransport` | +| Concurrency | One `asyncio` pipeline with bounded tasks, a shared semaphore, and stable result sorting | +| Markdown handling | Repository-scoped same-length source projector; no rendered-HTML round trip | +| HTML generation | Python standard-library escaping and direct template functions; no browser framework or required JavaScript | +| Test and quality tools | `pytest`, `pytest-asyncio`, Ruff, and mypy | +| Default threshold | 80, subject only to the defined calibration gate | +| PR aggregation | Minimum score across changed Dev Notes; every changed file must pass | +| Built-in network behavior | None | +| Custom network behavior | Trusted Python rules through named JSON services | +| Initial custom registry | `CUSTOM_RULES = ()`; service-backed behavior is proven with temporary test rules, not a shipped placeholder rule | +| Default services | None configured or enabled | +| CI trust boundary | Base-revision analyzer for enforcement; candidate analyzer only for unprivileged preview/tests | +| PR reporting | Unprivileged artifact workflow plus trusted `workflow_run` sticky-comment workflow | + +The exact phrase inventory, per-rule weights, density windows, and category +density policies are calibrated deliverables. The contracts, formulas, safety +bounds, and acceptance tests that constrain those values are not optional. + +There are no implementation-blocking product choices left open in this plan. +When calibration changes a candidate value, record the before/after fixture +results and keep the locked contracts intact rather than requesting a new design +decision. + +## Goals + +1. Catch high-confidence AI detritus and recurring “LLM voice” patterns before + a Dev Note is merged. +2. Keep built-in analysis deterministic and offline, and keep every score + explainable from validated rule outputs even when a custom external judge is + nondeterministic. +3. Minimize false positives on legitimate technical prose, Markdown structure, + product names, code, links, generated bylines, and image markup. +4. Make rules easy to add, remove, update, disable, inspect, and test through + declarative configuration or one small repository-owned Python interface. +5. Make one ordinary phrase a useful observation rather than a failed build; + repeated and diverse signals should carry progressively more weight. +6. Prevent a long clean passage from hiding a bad section or one clean file from + hiding a bad file. +7. Make overrides deliberate, reasoned, attributable, bound to the current PR + revision, and visible in the report. +8. Produce a useful report on both pass and fail, including exact source + locations, category totals, scoring math, and base-versus-head changes. +9. Keep local and CI behavior identical by making the workflow call the same + versioned CLI and configuration developers can run locally. +10. Establish a compact evaluation corpus and regression suite so rule changes + improve measured behavior rather than merely adding more regexes. + +## Non-goals + +- Determining whether a person or model authored a document. +- Shipping a built-in LLM judge, model-provider integration, prompt-management + layer, or generic service-orchestration framework. A repository-owned custom + rule may call a specifically configured service. +- Rewriting prose or applying automatic fixes. +- Building an MCP server, editor extension, web application, hosted dashboard, + general linting platform, external plugin API, or package publishing pipeline. +- Supporting arbitrary document formats, repositories, languages, or house + styles in the first version. +- Scanning source code, project documentation, issues, PR descriptions, commit + messages, or comments. The first enforcement target is + `docs/dev-notes/posts/*.md`. +- Treating every bold lead-in, list, triad, horizontal rule, or polished sentence + as suspicious. These are normal structures in the current Dev Note style. +- Maintaining a historical database of scores or generated HTML reports. +- Rendering the HTML artifact as a public website. GitHub PR comments cannot + embed an HTML document, and GitHub artifact links download artifacts rather + than hosting them. The comment will show the summary and link to the artifact. + +## Product and policy principles + +### Write only for the implementation + +Documentation, docstrings, comments, rule descriptions, configuration examples, +test names, CLI text, and reports must describe only Slop Cop's current behavior +and repository requirements. Do not include design history, product comparisons, +or origin stories. Write rule definitions, descriptions, and tests directly from +the behavior required in this repository. + +Comments should explain a local invariant, non-obvious algorithm, safety bound, +or repository-specific policy. Omit comments that only narrate what the next +line does or recount how the design was reached. Rule metadata should state what +the rule detects, when it applies, why it matters to a Dev Note, and what an +editor can do about it. + +### Detect editorial signals, not authorship + +Use neutral language such as “finding,” “signal,” “repetition,” and “editorial +risk.” Do not label an author, paragraph, or document as AI-generated. A failed +check means that the configured editorial policy was not met. + +### Prefer precision over a large rule count + +A small high-quality rule set is more useful than hundreds of noisy matches. +Every scored rule must have positive examples, legitimate counterexamples, a +stable identifier, a concise rationale, and an explicit scoring policy. New +rules remain advisory until their precision is demonstrated by fixtures and +real Dev Notes. + +### Keep findings and scoring separate + +Rules identify occurrences. A scoring layer deduplicates related findings, +applies allowances, caps penalties, and calculates the decision. This allows +the report to show all useful evidence without charging several regexes for the +same phrase. + +### Treat concentration as independent evidence + +For selected rules, the same number of findings should cost more when packed +into one passage than when spread across a long note. Support both document-wide +allowances and opt-in rolling passage-density penalties. Appending clean prose +must not dilute a dense problematic passage. Density remains rule-specific and +bounded; do not apply one universal document-density formula to every finding. + +### Analyze rendered prose while preserving source positions + +Markdown syntax and generated content are inputs, but most are not prose. Build +a source-preserving projection that masks ignored characters with spaces and +retains all newlines. Rules run on that projection while every finding maps +exactly to the original path, code-point span, line, and column. + +### The absolute threshold owns enforcement + +Analyze both the base and head version where available, but gate on the head +version. A favorable delta is context, not an exemption. This avoids permanently +grandfathering weak prose. A manual override handles an intentional exception. + +### The worst changed note owns the PR score + +Score every changed Dev Note independently. Define the displayed PR score as the +minimum file score and require every changed file to pass. Do not use a +word-weighted average that lets one long clean note conceal another failing note. + +## Intended user experience + +### Local commands + +The primary interface is intentionally small: + +```text +uv run --project dev-tools/slop-cop slop-cop check \ + --config dev-tools/slop-cop/slop-cop.toml \ + docs/dev-notes/posts/example.md + +uv run --project dev-tools/slop-cop slop-cop check \ + --config dev-tools/slop-cop/slop-cop.toml \ + --baseline-ref origin/main \ + --html-dir /tmp/slop-cop-report \ + --json /tmp/slop-cop-report/report.json \ + docs/dev-notes/posts/example.md + +uv run --project dev-tools/slop-cop slop-cop explain rhetoric.not-just +uv run --project dev-tools/slop-cop slop-cop list-rules +``` + +`check` prints a compact terminal summary and annotated findings. It exits: + +| Code | Meaning | +| --- | --- | +| `0` | Every analyzed file passes, or a valid CI override was supplied | +| `1` | Analysis completed and at least one file failed policy | +| `2` | Input, configuration, Markdown projection, or report generation failed | + +`check` must finish writing requested JSON and HTML outputs before returning +exit code `1`. The workflow runs that step with `continue-on-error`, uploads the +completed outputs, then uses a separate final step to reproduce the saved +decision as the job conclusion. Do not add an exit-zero or no-enforcement CLI +option. + +### Terminal output + +Terminal output should include: + +- file and PR score, threshold, pass/fail/overridden state +- base score and delta when a base version exists +- category penalties, document allowances, passage-density bonuses, and the + exact final-score arithmetic +- `path:line:column`, rule ID, matched excerpt, points charged, and advice for + every unsuppressed finding +- suppressed and advisory counts without expanding them by default +- the command needed to generate the HTML report locally + +Support a stable JSON schema for CI and tests. Avoid SARIF in the first version; +GitHub annotations plus the HTML report cover the immediate use case, and SARIF +would add another contract without improving the initial decision quality. + +## Proposed project structure + +```text +dev-tools/slop-cop/ +├── AGENTS.md +├── README.md +├── docs/ +│ ├── ci.md +│ ├── rules.md +│ └── scoring.md +├── pyproject.toml +├── uv.lock +├── slop-cop.toml +├── src/slop_cop/ +│ ├── __init__.py +│ ├── cli.py +│ ├── config.py +│ ├── document.py +│ ├── engine.py +│ ├── findings.py +│ ├── report.py +│ ├── runtime.py +│ ├── scoring.py +│ └── rules/ +│ ├── __init__.py +│ ├── api.py +│ ├── declarative.py +│ ├── registry.py +│ ├── builtins/ +│ │ ├── __init__.py +│ │ ├── artifacts.py +│ │ ├── cliches.py +│ │ ├── repetition.py +│ │ ├── rhetoric.py +│ │ ├── structure.py +│ │ └── vocabulary.py +│ └── custom/ +│ └── __init__.py +└── tests/ + ├── fixtures/ + │ ├── accepted/ + │ ├── counterexamples/ + │ ├── markdown/ + │ └── slop/ + ├── golden/ + ├── rule_cases.toml + ├── test_cli.py + ├── test_config.py + ├── test_document.py + ├── test_engine.py + ├── test_report.py + ├── test_rule_contract.py + ├── test_rule_extension.py + ├── test_rules.py + └── test_scoring.py + +.github/workflows/ +├── slop-cop.yml +└── slop-cop-report.yml +``` + +Use Python 3.12 in CI and declare the repository-supported Python floor in the +project metadata. Use `uv` for locking and execution. Implement the initial +Markdown projector directly against the bounded Dev Note grammar; do not add a +Markdown rendering/parser dependency in the first release. Use one maintained +async HTTP client for bounded custom-service calls rather than allowing each +external rule to invent transport, retry, and response-limit behavior. + +## Normative execution order + +Use one orchestration path for local use and CI: + +1. Load TOML with `tomllib` and validate the complete config with Pydantic. +2. Build and validate the immutable rule registry and effective policies. +3. Read each bounded source file and build its same-length prose projection. +4. Segment the projection once into shared tokens, sentences, and paragraphs. +5. Construct immutable `RuleContext` and `RuleRuntime` values. +6. Evaluate enabled rules with bounded async concurrency and shared deadlines. +7. Validate every `RuleEvaluation` and convert its signals to source-mapped + findings; translate rule failures according to `on_error`. +8. Apply source suppressions, overlap groups, and primary/related finding + selection. +9. Calculate document allowances, passage-density costs, rule costs, category + density/caps, file scores, and the run decision in that order. +10. Analyze the base document through the same steps when comparison is enabled. +11. Serialize one `RunResult`; terminal, JSON, HTML, annotations, job summary, + and PR comment are projections of that result and never rerun rules or + recalculate scoring. + +No rule, renderer, or workflow step may reorder or bypass these boundaries. + +## Core data contracts + +Use immutable typed records for the analysis boundary. + +### `Document` + +Contains the source path, original text, prose projection, line-start index, +front-matter metadata needed for context, analyzable word/sentence/paragraph +counts, and masked ranges with reasons. + +### `Rule` + +Define a small, stable asynchronous `Rule` protocol in `rules/api.py`. Separate +what a rule detects from how repository policy scores it. + +`RuleMetadata` belongs to Python/declarative rule definitions and contains: + +- stable ID such as `rhetoric.not-just` +- positive integer rule version, incremented when matching or external response + interpretation changes +- category and short title +- rationale and editor-facing advice +- contexts in which the rule is eligible +- execution kind: `local` or `external` +- required named services for an external rule + +`RulePolicy` belongs to `slop-cop.toml` and contains: + +- enabled state and severity +- blocking state +- maximum units allowed from one signal +- fixed and optional document-density allowance +- first/repeat costs and rule cap +- optional rolling-passage density policy +- failure policy: `fail` or `advisory`, defaulting to `fail` for a scored + external rule in the required profile +- validated rule-specific settings + +Every enabled Python rule must have exactly one policy block. A declarative rule +defines its metadata, matcher, and policy in one TOML block. Registry construction +produces immutable `ConfiguredRule` values; the engine and scorer consume those +rather than consulting configuration during evaluation. + +Limit implicit policy defaults to `enabled = true`, `blocking = false`, and +`on_error = "fail"`. Every scored rule must state severity, allowances, first and +repeat costs, and caps explicitly. Advisory zero-point rules must state that +policy explicitly as well. + +Use only `info`, `warning`, and `error` severities. `info` rules are advisory and +must have zero costs; `warning` rules may affect the score; `error` rules must be +blocking. Severity describes policy impact, not authorship confidence. + +Each Python rule has one evaluator that accepts `RuleContext` and `RuleRuntime` +and returns a validated `RuleEvaluation` without calculating the document score. + +`RuleContext` supplies the source-preserving prose view, tokens, sentences, +paragraphs, repository vocabulary, bounded helper methods, and an explicit +method for selecting the content sent to an external service. `RuleRuntime` +supplies a shared deadline, credential-backed named-service HTTP access, +response-size limits, and content-safe diagnostics; it does not expose raw +secret values through the rule API. + +`RuleEvaluation` contains an ordered tuple of `RuleSignal` values and bounded +audit metadata. A signal contains: + +- a stable normalized key +- chargeable units in a configured, validated range +- either an exact source span or explicit `document` scope +- optional exact evidence spans +- bounded editor-facing detail + +Literal and regex rules normally return one unit per exact span. A document-level +judge may return one signal with a bounded strength, plus evidence spans when the +service supplies quotations that can be mapped back to the source exactly. The +engine maps signals into findings and configured score costs. Custom rules may +not set the final score, threshold, pass/fail state, or override state directly. +This preserves transparent centralized scoring while allowing custom logic to +drive a rule's evidence and strength. + +Only signals with an exact primary source span participate in local +passage-density calculations. A document-scoped custom signal participates only +in document-wide allowance and cost; its evidence spans are display evidence and +do not duplicate its units into density windows. A custom rule that needs local +density must emit separate exact-span signals. + +The engine adds shared metadata and creates findings so custom rules do not +repeat line mapping, suppression, overlap, scoring, serialization, or report +boilerplate. Built-in synchronous algorithms use an adapter that returns an +already-completed async evaluation; do not maintain separate sync and async rule +pipelines. + +`rules/registry.py` constructs one validated registry from three explicit +sources in a fixed order: + +1. built-in Python rules from `rules/builtins/` +2. declarative phrase and regex rules from `slop-cop.toml` +3. repository-owned Python rules exported as `CUSTOM_RULES` from + `rules/custom/__init__.py` + +Do not discover installed packages, Python entry points, or environment modules. +The single `CUSTOM_RULES` export is the algorithmic extension point. Custom rule +code is trusted code with the same process authority as Slop Cop and may use +committed project dependencies and declared named services through +`RuleRuntime`; it is not sandboxed. This keeps custom code easy to find and +review without making Slop Cop a plugin host. + +### `Finding` + +Each occurrence contains: + +- rule ID, category, and severity +- source path, start/end offsets, line, column, and bounded excerpt +- normalized match key used for repetition and overlap handling +- score group used to prevent double charging +- explanation and suggested editorial action +- whether it is advisory, chargeable, suppressed, or blocking +- suppression reason where applicable + +Never put full document content in logs, annotations, or error messages. The +local HTML report may show bounded surrounding context and an escaped highlighted +view of the changed note. + +### `FileResult` and `RunResult` + +`FileResult` contains document metrics, findings, suppressions, per-rule costs, +document and peak-density measurements, density-window locations, category +costs, score, threshold, hard-fail state, and optional base comparison. +`RunResult` contains all file results, the minimum PR score, final decision, +override metadata, rule execution errors, external-rule audit records, tool +version, configuration digest, and base/head revisions. + +Use separate enums so reporting never conflates completion with policy: + +- `analysis_state`: `complete`, `incomplete`, `error`, or `not_applicable` +- `decision`: `pass`, `fail`, `overridden`, or `not_applicable` + +An advisory external-rule error can therefore be `analysis_state = incomplete` +with `decision = pass`; a required error is `analysis_state = error` with +`decision = fail`; and a valid manual override changes only `decision` to +`overridden`. + +Version the JSON representation from the first release. The trusted reporting +workflow must reject unknown versions instead of guessing. + +## Custom-rule runtime and external judges + +Custom Python rules may perform local algorithms or call a named HTTP service. +Keep this capability narrow: Slop Cop owns a bounded JSON transport, while the +custom rule owns request construction, response schema validation, and mapping +the service result into `RuleSignal` values. + +A custom rule may use arbitrary local Python logic and committed dependencies. +Any service-backed rule enabled in the required CI profile must route network +access through the named-service runtime so deadlines, destination policy, +credentials, response bounds, audit fields, and content-safe failures remain +enforceable. Direct sockets, subprocess-based clients, and ad hoc SDK transports +are not allowed for required CI rules. + +### Named services + +Define external endpoints in trusted base-revision configuration: + +```toml +[services.editorial_judge] +url = "https://judge.internal.example/v1/evaluate" +token_env = "SLOP_COP_EDITORIAL_JUDGE_TOKEN" +timeout_seconds = 20 +max_response_bytes = 65536 +max_attempts = 1 +required_judge_revision = "editorial-v1" +``` + +Validate service names, HTTPS URLs, host allowlists, timeout bounds, response +limits, required judge revisions, and environment-variable names at startup. +Permit plaintext HTTP only for an explicitly configured loopback test service. +The configuration names a secret environment variable but never contains the +secret value. Treat the configured URL's scheme/host/port as the exact allowed +origin, reject redirects, and do not let a rule append or replace the origin. + +An external rule declares the service names it uses. `RuleRuntime` exposes only +those named clients and never returns the raw bearer token to the rule. The +shared client applies authentication, deadline propagation, connection and +response limits, content-safe error translation, and an idempotency key derived +from the rule ID, rule version, configuration digest, and analyzed-content hash. +Retries are disabled by default; enable a bounded retry only for a service whose +contract makes the request idempotent. + +### External evaluation contract + +External rule code must: + +1. choose the exact projected prose or passages to send; ignored Markdown + contexts never leave the runner +2. send Dev Note content as data in a structured JSON field +3. require a versioned structured JSON response +4. validate every enum, strength, detail length, count, and evidence item +5. map quoted evidence back to a unique exact source span or omit the span and + emit a document-scoped signal +6. require the configured judge revision and reject a mismatched or absent + revision +7. reject unknown response fields when the service schema is strict +8. return no raw prompt, response, token, or unbounded service text in a finding + +If the service uses an LLM, its service-side judge must run without tools and +return only the response schema expected by the custom rule. Treat document text +as untrusted input that cannot select endpoints, credentials, models, prompts, +score weights, or CI outcomes. + +### Timeouts, concurrency, and failures + +Apply a run-wide external-evaluation concurrency limit, a per-rule timeout, and +the overall CLI deadline. Cancel outstanding external evaluations when the run +deadline expires. Preserve stable finding order by sorting completed evaluations +by configured rule order and source position, never network completion order. + +Use these failure semantics: + +| Condition | Result | +| --- | --- | +| Required setting or secret missing | Rule execution error | +| Timeout, transport error, invalid JSON, oversized response, or schema violation | Rule execution error | +| Missing or mismatched required judge revision | Rule execution error | +| `on_error = "fail"` | File and CI fail as an analysis error; do not manufacture a score penalty | +| `on_error = "advisory"` | Score is calculated without that rule and the report is visibly `INCOMPLETE` | + +An external rule that contributes to the required CI threshold must use +`on_error = "fail"`. Advisory failure is for experimental reporting rules only. +A manual override may override the final CI failure but must not rewrite the rule +error as a successful evaluation. + +### Audit and privacy + +For each external evaluation, record the rule ID/version, named service, +endpoint hostname, analyzed-content hash, request/response schema versions, +service request ID when provided, reported judge/model revision when provided, +attempt count, latency, outcome, and a response digest. Never record credentials, +authorization headers, complete request bodies, raw prompts, or raw responses. + +Mark every external rule as “sends prose to ``” in `list-rules`, +`explain`, terminal output, JSON, and HTML. Built-in and declarative rules never +send content. Enabling an external rule is therefore an explicit repository +policy change visible in configuration and code review. + +## Markdown-aware prose projection + +The projector is the main false-positive control and should be implemented +before expanding the rule catalog. + +Starting with the original source, replace ignored characters with spaces while +preserving `\n` exactly. Mask: + +- YAML front matter, including the duplicated title and description +- the generated range between `` and + `` +- fenced code blocks using backticks or tildes +- inline code spans, with correct handling of variable-length backtick fences +- HTML comments and tag markup/attributes while retaining visible text nodes + such as `
    ` content +- Markdown link and image destinations while retaining ordinary link labels +- Markdown image alt text by default, because it follows accessibility rather + than article-prose conventions +- quoted block content by default so attributed prose is not scored against the + author; make this setting explicit in the Dev Notes profile +- Slop Cop suppression directives themselves + +Read source as strict UTF-8 after enforcing the raw-byte size limit. Reject +invalid UTF-8 and NUL characters. Do not normalize line endings or rewrite the +source before projection. + +Use this source-map contract: + +- offsets are zero-based Python string/code-point offsets +- displayed lines and columns are one-based +- `len(document.prose_projection) == len(document.source)` +- every `\n` and `\r` remains at its original offset +- every masked non-newline character becomes one ASCII space +- masked intervals are sorted, non-overlapping, and tagged with one or more + reasons +- a projected span maps to the identical `[start, end)` source span without a + lookup table or reconstructed text search + +Implement ordered masking passes for front matter/generated ranges, +fenced/inline code, comments and HTML tags, link/image destinations, blockquotes, +and suppression directives. Each pass adds intervals; one final interval-union +step produces the projection. Do not repeatedly rewrite the text or let pass +order change source offsets. Unit-test every pass alone and in overlapping +combinations. + +Scan headings, paragraphs, list-item prose, table-cell prose, emphasis text, +link labels, and visible raw-HTML text nodes. Treat captions as prose. Do not +strip punctuation before sentence and rhetorical-template analysis. + +Segment only the projection. Use Unicode NFKC plus `casefold()` for comparison +keys while retaining original spans and excerpts. Define a word as a Unicode +letter/number token with internal combining marks and apostrophes; keep product +hyphens only when surrounded by token characters. Split paragraphs at blank +projected lines and Markdown block boundaries. Split sentences with a documented +punctuation heuristic plus a small tested abbreviation set; do not add a model or +large NLP dependency. Store every token/sentence/paragraph as an exact source +span so word-, sentence-, and paragraph-density windows share the same mapping. + +The projector must detect malformed or unterminated front matter, generated +markers, code fences, and suppression ranges. Fail with a source location rather +than analyzing an ambiguous partial projection. + +Use the current rendered Dev Note as an integration fixture. Assert that changes +inside its front matter, generated byline, code, link destinations, image tags, +or ignored quotes do not affect the score, while equivalent visible-prose +changes do. + +## Initial rule portfolio + +The first release should cover the following families. The checked-in registry +and configuration will contain the exact phrases, regexes, allowances, and +tests; this plan deliberately does not freeze an uncalibrated list of hundreds +of tokens. + +Implement this minimum rule inventory. IDs are normative; split a listed family +only when its matching or scoring behavior genuinely differs: + +| Rule IDs | Initial enforcement | +| --- | --- | +| `artifact.ai-disclosure`, `artifact.chat-preamble`, `artifact.continuation-offer`, `artifact.placeholder`, `artifact.instruction-residue` | Blocking only for unambiguous cases; otherwise scored | +| `rhetoric.not-but`, `rhetoric.not-just`, `rhetoric.no-no`, `rhetoric.imperative-reframe` | Scored with nonzero allowance and opt-in density | +| `rhetoric.dramatic-fragment`, `rhetoric.throat-clearing`, `rhetoric.testament`, `rhetoric.crucial-role`, `rhetoric.landscape-metaphor`, `rhetoric.formulaic-certainty`, `rhetoric.parallel-negation` | Scored only after counterexample calibration; otherwise advisory | +| `vocabulary.stock.` | One declarative rule per exact phrase; low weight, nonzero allowance, density-sensitive | +| `repetition.ngram`, `repetition.sentence-opener`, `repetition.template-shape`, `repetition.emphatic-fragments`, `repetition.hedge-stack`, `repetition.question-answer` | Scored after minimum-count and distinct-paragraph boundaries pass calibration | +| `attribution.vague-authority`, `attribution.citationless-study` | Low-weight scored or advisory when citation proximity is ambiguous | +| `ending.participial-tail`, `ending.generic-explanation` | Advisory until calibrated on complete Dev Notes | +| `structure.bold-leadins`, `structure.triad`, `structure.bullet-run`, `structure.horizontal-rules`, `structure.duplicate-title` | Advisory with zero points in the initial release | + +Every exact stock phrase receives its own stable declarative ID, cases, and +policy. Do not hide a large phrase list behind one finding ID; editors must be +able to disable, tune, suppress, or remove one phrase without affecting others. + +### 1. Pasted assistant artifacts + +High-confidence examples include chatbot preambles, “as an AI” disclosures, +offers to continue or provide more detail, answer-format residue, unfinished +placeholders, and instructions addressed to the requester rather than the Dev +Note reader. + +These rules may be `blocking = true` when the phrase is unambiguous in prose. +Ambiguous phrases remain scored rather than blocking. Code examples and quotes +are excluded by the projector. + +### 2. Canned rhetorical templates + +Implement these construction families: + +- `not X, but Y`, `not just X`, and repeated `no X, no Y` contrasts +- imperative reframings such as `don't X it; Y it` +- dramatic fragments such as `the punchline?` and canned invitations to pause +- “worth noting/naming,” “it is important to note,” and similar throat clearing +- “a testament to,” “plays a crucial role,” and stock landscape metaphors +- formulaic certainty such as “you already know” and “X is everything” +- chained “did not” or equivalent parallel negations + +Use syntax-aware boundaries and captured terms rather than naive substring +matches. A single common contrast should normally fit within its allowance; +multiple instances or several different template families should cost more. + +### 3. Curated AI-associated vocabulary and stock phrases + +Maintain a reviewable phrase table with stable sub-identifiers and exceptions. +Match words by token/lemma-like boundaries and phrases with whitespace and +punctuation normalization. Avoid substring matches inside product names, +identifiers, URLs, and code. + +Vocabulary is weak evidence by itself. It should have a nonzero allowance, +small point values, and a category cap. Repeated use and clusters across several +paragraphs are more meaningful than one occurrence. + +### 4. Repetition and rhythm + +Add deterministic checks that generalize beyond a phrase catalog: + +- repeated normalized 2–5 word phrases across distinct prose paragraphs +- repeated sentence openings after removing articles and transition words +- repeated rhetorical-template shapes even when their captured nouns differ +- clusters of short emphatic fragments +- stacked hedges or intensifiers in a bounded passage +- repeated question-then-answer setup patterns + +Exclude stopword-only n-grams, headings repeated in navigation-like contexts, +configured product terms, and phrases whose repetition is expected in technical +explanation. Require distinct paragraphs for the strongest repetition penalties. + +### 5. Vague attribution and trailing explanation patterns + +Detect vague appeals such as unnamed experts or studies only when an attribution +construction lacks a nearby citation/link. Detect excessive participial tails +and generic explanatory endings as low-weight signals. These rules need strong +counterexamples because they are easy to overgeneralize. + +### 6. Structural observations + +Report, but initially assign zero points to, patterns such as repeated bold +lead-ins, triads, long bullet runs, frequent horizontal rules, and repeated +titles. The current Dev Note legitimately uses several of these structures. +Promote a structural rule to scored status only after the evaluation corpus +establishes a useful precision boundary. + +## Overlap and deduplication + +Several rules can describe the same text. Before scoring: + +1. Group findings that overlap materially or share a configured score-group key. +2. Select the most specific/high-confidence finding as the chargeable primary. +3. Retain the others as related observations in the report with zero additional + points. +4. Count a repeated template once per sentence unless the rule explicitly + defines multiple independent captures. +5. Apply per-rule allowances only after overlap deduplication. + +Test common collisions, especially `not just` within `not X but Y`, stock phrases +that also contain vocabulary tokens, and repeated phrases found by both a +specific cliché rule and the generic n-gram rule. + +## Scoring model + +### Meaning of the score + +`100` means no chargeable findings under the configured profile. Lower values +mean more or stronger configured signals. The score is not a probability, +percentile, grade of factual correctness, or general measure of writing quality. + +Use a default Dev Notes threshold of **80**. Treat this as an initial calibrated +policy value, not a universal standard. + +### Rule cost + +Every rule declares: + +- `allowance`: a fixed number plus, where appropriate, a document-density policy + with a natural opportunity unit, opportunity interval, and allowed units per + interval +- `first_cost`: points for the first chargeable unit +- `repeat_cost`: points for each additional chargeable unit +- `rule_cap`: the maximum points one rule can remove +- optional `blocking`: whether any unsuppressed chargeable match independently + fails policy + +For rule `r` in document `D`: + +```text +document_excess_r = max(0, deduplicated_units_r - allowance_r(D)) + +base_cost_r = 0 if document_excess_r == 0 +base_cost_r = first_cost_r + + repeat_cost_r * (document_excess_r - 1) otherwise +``` + +`deduplicated_units_r` is the sum of bounded units from primary signals after +overlap handling. Literal matches normally contribute one unit. A custom judge +may contribute more than one only within the rule's configured maximum signal +strength; it still cannot bypass the rule or category cap. + +`allowance_r(D)` must use the natural opportunity for that rule. For example, a +phrase rule may use words, a sentence-opening rule sentences, and a paragraph +pattern paragraphs. An optional document-density allowance is explicit: + +```text +allowance_r(D) = fixed_allowance_r + + floor(opportunities_r(D) / opportunity_interval_r) * + allowed_units_per_interval_r +``` + +Do not use one global “violations per 1,000 words” divisor for all rules, because +each rule has a different natural opportunity and concentration behavior. + +For very short documents, use a rule's fixed allowance rather than inflating a +density. If no analyzable prose remains, return an analysis error instead of an +automatic score of 100. + +### Passage-density cost + +Rules whose significance depends on concentration declare a `density` policy: + +- `unit`: `word`, `sentence`, or `paragraph` +- `window`: the number of natural units in one rolling passage +- `allowed_units`: signal units permitted inside one window +- `first_cost` and `repeat_cost`: the passage-density penalty curve +- `cap`: the maximum additional points concentration can remove + +Generate source-ordered rolling windows aligned to the selected natural unit and +advance by one unit. Calculate each window from primary, unsuppressed, +source-mapped signals after overlap deduplication: + +```text +window_excess_r(w) = max(0, signal_units_r(w) - allowed_units_r(w)) +peak_excess_r = max(window_excess_r(w) for w in windows(D)) + +density_cost_r = 0 + if peak_excess_r == 0 +else min(density_cap_r, + density_first_cost_r + + density_repeat_cost_r * (peak_excess_r - 1)) + +rule_cost_r = min(rule_cap_r, base_cost_r + density_cost_r) +``` + +The densest window supplies the rule's local-density bonus. Using the peak rather +than summing overlapping rolling windows prevents the same signal from being +charged repeatedly. Additional clusters still affect the document-wide base +cost. The density bonus intentionally adds a bounded penalty for concentration; +it is not an overlapping-detector duplicate. + +For the configuration example below, a note of at least 1,000 words can allow +two `rhetoric.not-just` units document-wide. If those units fall in separate +three-paragraph windows, the rule costs zero. If both fall within one +three-paragraph window, `peak_excess = 1` and the rule incurs the configured +two-point density cost even though its document-wide allowance is not exceeded. + +For categories where several different weak rules clustered together are +meaningful, allow an equivalent optional category-density policy. Aggregate the +primary source-mapped signals for that category, calculate one peak passage +bonus, and include it before the existing category cap: + +```text +category_cost_c = min( + category_cap_c, + sum(rule_cost_r for r in category c) + category_density_cost_c, +) +``` + +`category_density_cost_c` is zero when the category has no density policy. + +Do not apply local density to blocking artifacts, a rule with only +document-scoped signals, or a rule/category without an explicit density policy. +Calibrate density windows and costs separately for vocabulary, rhetorical +templates, repeated openings, and other families whose isolated occurrences are +weak but clustered occurrences are strong. + +### Category and final cost + +Assign every scored rule to exactly one penalty category. Apply a cap after +summing rule costs and any configured category-density cost: + +```text +category_cost_c = min( + category_cap_c, + sum(rule_cost_r for r in category c) + category_density_cost_c, +) +score = max(0, round(100 - sum(category_cost_c))) +``` + +Initial caps should reserve meaningful room for different evidence families: + +| Category | Initial cap | Policy intent | +| --- | ---: | --- | +| Pasted artifacts | 100 | One unambiguous artifact may block independently | +| Rhetorical clichés | 25 | Repetition matters; one construction should not fail | +| Vocabulary/stock phrases | 15 | Weak evidence cannot dominate the score | +| Repetition/rhythm | 25 | Generalized patterns should matter without a phrase match | +| Attribution/explanation | 15 | Useful but more context-sensitive evidence | +| Structure | 0 | Advisory during the initial release | + +These values are starting hypotheses. Lock final defaults only after the +calibration phase, and record any change in golden score tests and the project +changelog. + +### File and PR decisions + +A file passes only when: + +```text +file_score >= configured_threshold +AND no unsuppressed blocking finding exists +AND no fatal analysis or `on_error = "fail"` rule error exists +``` + +An `on_error = "advisory"` rule error does not fail this expression, but the file +and run remain visibly `INCOMPLETE`; it must never be rendered as a fully clean +evaluation. + +The PR score is `min(file_score)` over changed, non-deleted Dev Notes. Every file +must pass. A PR with no changed Dev Notes is neutral and the analysis job should +exit successfully without creating a misleading 100 score. + +Analyze the base revision when a matching pre-change file exists. Show added, +removed, and persistent findings plus the score delta, but do not weaken the +absolute head threshold because the base was worse. + +Classify finding changes as a deterministic multiset diff keyed by rule ID, +normalized match key, and score group. Pair equal keys in source order; unmatched +head instances are added and unmatched base instances are removed. Do not use an +LLM or fuzzy semantic comparison to decide persistence. + +Run the same enabled rule set and policy against base and head, including +external rules, and retain separate audit records. Reuse an evaluation within +the run when rule ID/version, configuration digest, and projected-content hash +are identical. A base-only evaluation failure makes the comparison +`INCOMPLETE` and leaves the base score/delta null; it does not fail an otherwise +valid head evaluation. Only head errors participate in the CI decision. + +## Configuration and controlled extensibility + +Use a versioned TOML configuration with this conceptual structure: + +```toml +schema_version = 1 +profile = "dev-notes" +threshold = 80 +paths = ["docs/dev-notes/posts/*.md"] + +[contexts] +scan_blockquotes = false +scan_headings = true +scan_captions = true + +[categories.rhetoric] +cap = 25 + +[categories.rhetoric.density] +unit = "paragraph" +window = 3 +allowed_units = 3 +first_cost = 2 +repeat_cost = 1 +cap = 5 + +[rules."rhetoric.not-just"] +enabled = true +severity = "warning" +max_signal_units = 1 +fixed_allowance = 1 +first_cost = 3 +repeat_cost = 2 +cap = 9 + +[rules."rhetoric.not-just".document_density] +unit = "words" +interval = 1000 +allowed_units = 1 + +[rules."rhetoric.not-just".density] +unit = "paragraph" +window = 3 +allowed_units = 1 +first_cost = 2 +repeat_cost = 2 +cap = 6 + +[rules."custom.editorial-judge"] +enabled = false +severity = "warning" +service = "editorial_judge" +on_error = "fail" +max_signal_units = 5 +fixed_allowance = 0 +first_cost = 8 +repeat_cost = 4 +cap = 20 + +[vocabulary] +allowed_terms = ["OpenShell", "Dev Note"] + +[[custom_rules.phrase]] +id = "custom.empty-intensifier" +version = 1 +category = "vocabulary" +severity = "warning" +title = "Empty intensifier" +rationale = "The phrase asserts importance without naming a concrete effect." +phrases = ["deeply transformative"] +advice = "Name the concrete change and its effect." +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 2 +repeat_cost = 2 +cap = 6 + +[[custom_rules.regex]] +id = "custom.generic-promise" +version = 1 +category = "rhetoric" +severity = "warning" +title = "Generic future promise" +rationale = "The sentence promises later detail without identifying it." +pattern = "\\bmore on (?:that|this) (?:later|soon)\\b" +flags = ["IGNORECASE"] +advice = "Name the follow-up topic or remove the promise." +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 2 +repeat_cost = 2 +cap = 6 +``` + +The `custom.editorial-judge`, `custom.empty-intensifier`, and +`custom.generic-promise` blocks demonstrate the schema and are not part of the +initial checked-in configuration. The initial configuration contains only +production built-in/declarative rules, no named services, and an empty +`CUSTOM_RULES` tuple. Tests construct temporary local and external custom rules +to prove the extension contracts. + +Use the version-1 field names shown above. Add fields only when a required rule +or safety invariant cannot be represented; do not rename or alias version-1 +fields during the initial implementation. The schema must retain these +capabilities: + +- enable/disable a stable built-in rule +- tune allowances and scoring within validated bounds +- enable and tune document-wide and rolling passage-density behavior per rule + or category +- add, remove, or update curated words and literal/regex rules declaratively +- define repository terms and phrase exceptions +- bind an external custom rule to a named service and validated rule-specific + settings +- set the threshold and category caps +- select Markdown contexts +- validate unknown keys, duplicate IDs, invalid regexes, negative costs, + impossible caps, and unsupported schema versions as errors + +Configuration can specialize built-in algorithms, define bounded phrase or +regex rules, and configure named services used by trusted custom Python rules. +It cannot import Python, execute commands, interpolate secret values, or create a +network rule without corresponding code in `CUSTOM_RULES`. More scan profiles +are outside the initial scope. + +Calculate `config_digest` as SHA-256 over canonical JSON produced from the fully +validated effective configuration with sorted object keys. Secret values are +never part of configuration and therefore never enter the digest. Include every +enabled rule's ID/version and effective policy in the canonical value so reports, +external idempotency keys, and base/head reuse cannot cross policy revisions. + +`slop-cop explain ` should print effective configuration, rationale, +examples, exceptions, scoring group, and implementation kind. This is the +primary rule-debugging aid and makes tuning reviewable. + +## Rule maintenance and custom-rule entry point + +Easy rule maintenance is a required interface, not an implementation +convenience. The common operations must be: + +| Operation | Required change | +| --- | --- | +| Add or update a word/phrase rule | Edit one declarative TOML block and its table-driven fixture cases | +| Disable a rule | Set `enabled = false`; retain the stable ID so existing suppressions receive a clear diagnostic | +| Remove a rule permanently | Remove its definition, tests, and obsolete suppressions in one change; registry validation identifies every dangling reference | +| Add a regex rule | Add one validated declarative TOML block with positive and counterexample cases | +| Add an algorithmic or service-backed rule | Add one module under `rules/custom/` and export one rule instance from `CUSTOM_RULES` | +| Promote a reusable custom rule | Move it into `rules/builtins/` without changing its ID or behavior contract | + +Provide reusable implementations for literal phrases and bounded regular +expressions so those rules are data, not one-class-per-pattern Python code. +Provide helpers for normalized tokens, n-grams, sentence starts, paragraph +windows, exact source matches, bounded external requests, and validated audit +metadata so custom rules remain short. + +Declarative regex patterns are limited to 500 characters and the explicit +`IGNORECASE`, `MULTILINE`, `DOTALL`, and `VERBOSE` flags. Reject inline flags, +backreferences, recursive/subroutine constructs, conditionals, and lookbehind. +Compile with `regex` and enforce the hard per-rule/file timeout during matching. +Python custom rules may implement more specialized parsing, but remain subject +to the same overall rule deadline and result bounds. + +The custom Python template should require only: + +```python +from slop_cop.rules.api import ( + FunctionRule, + RuleContext, + RuleEvaluation, + RuleMetadata, + RuleRuntime, + RuleSignal, +) + +METADATA = RuleMetadata( + id="custom.repeated-claim-opener", + version=1, + category="repetition", + title="Repeated claim opener", + rationale="Repeated claim openings make consecutive paragraphs formulaic.", + advice="Vary the paragraph structure or combine the claims.", +) + + +async def evaluate( + context: RuleContext, + runtime: RuleRuntime, +) -> RuleEvaluation: + signals = tuple( + RuleSignal(start=item.start, end=item.end, key=item.normalized) + for item in context.repeated_sentence_starts(minimum_count=3) + ) + return RuleEvaluation(signals=signals) + + +RULE = FunctionRule(metadata=METADATA, evaluator=evaluate) +``` + +Then `rules/custom/__init__.py` imports `RULE` and adds it to the explicit tuple: + +```python +from .repeated_claim_opener import RULE as REPEATED_CLAIM_OPENER + +CUSTOM_RULES = (REPEATED_CLAIM_OPENER,) +``` + +Add its policy separately: + +```toml +[rules."custom.repeated-claim-opener"] +enabled = true +severity = "warning" +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 3 +repeat_cost = 2 +cap = 9 +on_error = "fail" +``` + +Use the immutable `FunctionRule` wrapper and module-level evaluator shown above. +Do not require custom rules to implement configuration parsing, Markdown +masking, line mapping, suppressions, scoring, serialization, or report rendering. + +A service-backed evaluator uses the same entry point: + +```python +JUDGE_METADATA = RuleMetadata( + id="custom.editorial-judge", + version=1, + category="rhetoric", + title="Editorial judge", + rationale="The configured judge identified formulaic prose.", + advice="Review the cited prose and replace generic phrasing with specifics.", + execution_kind="external", + services=("editorial_judge",), +) + + +async def evaluate( + context: RuleContext, + runtime: RuleRuntime, +) -> RuleEvaluation: + response = await runtime.service("editorial_judge").post_json( + {"schema_version": 1, "prose": context.projected_prose} + ) + result = JudgeResponse.model_validate(response.data) + signal = RuleSignal.document( + key=result.label, + units=result.strength, + detail=result.explanation, + evidence=context.map_exact_quotes(result.evidence), + ) + audit = {**response.audit, "judge_revision": result.judge_revision} + return RuleEvaluation(signals=(signal,), audit=audit) + + +JUDGE_RULE = FunctionRule(metadata=JUDGE_METADATA, evaluator=evaluate) +``` + +Export `JUDGE_RULE` from `CUSTOM_RULES`, add its `[rules]` policy block, and add +the named `[services.editorial_judge]` block. The custom module owns +`JudgeResponse` and its strict schema. Transport limits, secret handling, source +mapping, scoring, failure behavior, and reporting remain shared Slop Cop +behavior. + +Add these focused development commands: + +```text +slop-cop validate-rules +slop-cop list-rules --kind builtin|declarative|custom +slop-cop explain +slop-cop check --only-rule +``` + +`validate-rules` must catch duplicate IDs, malformed metadata, invalid category +references, missing/nonpositive rule versions, scoring values outside configured +bounds, unsafe regexes, dangling +exceptions/suppressions, undeclared services, invalid failure policies, missing +judge revisions, invalid density units/windows/costs/caps, and rules without +positive and counterexample fixture coverage. `--only-rule` is diagnostic only +and cannot be used by the required CI decision. + +Use one shared rule contract test suite against every built-in, declarative, and +custom rule. A contributor adding a custom rule supplies behavior cases through +`tests/rule_cases.toml` rather than building a separate test harness. Each entry +names a rule ID and defines positive inputs, counterexamples, expected spans, and +optional score-boundary cases. The contract suite must fail when an enabled +scored rule has no cases. + +Use one simple case schema for every rule kind: + +```toml +[[case]] +name = "not-just-visible-prose" +rule_id = "rhetoric.not-just" +kind = "positive" +source = "This is not just a wrapper." +expected_spans = [[8, 16]] + +[[case]] +name = "not-just-inline-code" +rule_id = "rhetoric.not-just" +kind = "counterexample" +source = "Run `not just` as literal input." +expected_spans = [] +``` + +Permit fixture-file references for complete Markdown and external-service cases, +but keep expected signals, spans, units, errors, and costs in the same case +record. The test harness, not each rule, owns parametrization and snapshot +formatting. + +## Suppressions and manual override + +### Finding-level suppressions + +Support narrow source suppressions for known false positives: + +```html + +``` + +The initial version supports only `ignore-next`; paired regions and file-wide +suppression are outside scope. Every suppression must name one or more stable +rule IDs and include a nonempty reason. Unknown rules, file-wide wildcards, and +missing reasons are configuration errors. Show all suppressions prominently in +terminal, JSON, and HTML output. + +The directive must be a standalone HTML comment immediately before the next +scanned prose block. It suppresses the first finding for each named rule whose +start lies in that block; later findings remain active. A directive that does not +bind to a scanned block or suppress any named finding is an unused-suppression +error so stale exceptions cannot accumulate. + +Do not permit source comments to set the global CI result or threshold. + +### PR-level manual override + +Use an approved PR review as the global manual override. A valid override is the +latest review that satisfies all of the following: + +1. review state is `APPROVED` +2. the review is attached to the current PR head commit, not an earlier revision +3. the reviewer currently has `write`, `maintain`, or `admin` permission +4. the review body contains `Slop-Cop-Override: ` + +The analysis workflow should run on relevant `pull_request` events and on +`pull_request_review` submission/dismissal so a new valid review can replace a +failed result. A new commit invalidates the prior override automatically because +the approved review's commit no longer equals the head SHA. + +A valid override changes the final CI conclusion to pass but does not alter +scores, hide findings, or label the document clean. The report and PR comment +must display `OVERRIDDEN`, the reviewer, reason, review URL/ID, and exact head +SHA. Invalid or stale override attempts should be reported as notices and have no +effect. + +This is intentionally stricter than a persistent label: labels do not carry a +reason and can survive new commits accidentally. Do not add a second override +mechanism in the first release. + +## HTML and machine reports + +Generate one artifact directory per run: + +```text +slop-cop-report/ +├── index.html +└── report.json +``` + +`report.json` is the canonical machine result. Its version-1 top level must +contain at least: + +```text +schema_version +analysis_state +decision +score # integer 0..100 or null +threshold +repository +pull_request_number # null outside PR CI +base_sha +head_sha +tool_version +config_digest +files[] +rule_errors[] +external_audits[] +override # null or validated override record +``` + +Each file record contains metrics, head/base results, findings, related and +suppressed findings, score arithmetic, density windows/costs, and errors. Define +all nested records as strict Pydantic models with bounded strings/lists and +`extra = "forbid"`. Serialize keys and arrays in stable documented order. + +`index.html` must be self-contained, readable without a server, and usable with +JavaScript disabled. Use escaped HTML, inline CSS, semantic elements, and native +`
    ` controls. Do not fetch fonts, scripts, images, analytics, or other +network resources. Add a restrictive Content Security Policy such as +`default-src 'none'; style-src 'unsafe-inline'; img-src data:`. + +The report should contain: + +- prominent pass/fail/overridden state, PR score, threshold, and head SHA +- one summary row per changed note with head score, base score, and delta +- per-category and per-rule penalty arithmetic, including caps and allowances +- document-wide counts versus allowances plus each density-sensitive rule's + configured window, densest passage, peak excess, bounded density bonus, and + category-density contribution +- filterable-by-navigation sections for blocking, chargeable, advisory, + suppressed, added, removed, and persistent findings +- path, line, column, escaped excerpt, nearby bounded context, rationale, advice, + points, and related overlapping rules for each finding +- an escaped source view with highlighted findings and line anchors +- analyzed versus masked word counts and ignored-context explanations +- suppression and override audit details +- local/external execution kind, external service hostname, judge revision, + latency, response digest, and incomplete/error state without secret or raw + service payload disclosure +- tool version, configuration digest, JSON schema version, base/head revisions, + and analysis errors +- a short “what this score does and does not mean” explanation + +Keep source snippets bounded in `report.json`; the HTML may include the full +changed note because the artifact is repository-scoped, but it must never inject +unescaped source as markup or script. Do not include the full base document; +show only bounded before/after context for changed findings. + +Make built-in analysis deterministic for a fixed input and configuration. Make +report rendering deterministic for a fixed `RunResult`. External judge output +may change between runs; isolate its audit metadata and returned signals so the +cause of a score change is visible. Put volatile timing and request metadata in +explicit fields that golden tests can normalize. + +## GitHub Actions design + +Reuse the repository's docs-preview trust pattern: an unprivileged PR workflow +performs analysis and uploads data; a separate trusted `workflow_run` workflow +validates the completed run and writes the PR comment. Never execute PR-supplied +code in the trusted commenting workflow. + +### Analysis workflow: `slop-cop.yml` + +Trigger on: + +- `pull_request` opened, reopened, synchronize, and ready-for-review events +- `pull_request_review` submitted and dismissed for override refresh +- `push` to `main` for a full-corpus invariant check +- `workflow_dispatch` for maintenance + +Use `contents: read`, `pull-requests: read`, `issues: read`, and no write +permissions. Concurrency should be keyed by PR number and cancel stale runs. +Inject service credentials only into the trusted-base analysis step and only +for named services enabled by the base configuration; do not expose them to +candidate project tests or candidate analyzer previews. + +Normalize both event types into the same trusted inputs before checkout: PR +number, base SHA/repository, head SHA/repository, review event if present, and +changed paths. The required analysis job's displayed name must be exactly +`Slop Cop / Dev Notes` on every PR event so branch protection receives one +stable check context. + +Run the workflow for every PR rather than relying on path filters for a required +check. Classify a run as: + +- `ANALYZED` when a Dev Note was added, modified, or renamed +- `NOT_APPLICABLE` when no non-deleted Dev Note changed +- `ERROR` when inputs or analysis could not be completed + +Always write and upload exactly one schema-valid artifact. A `NOT_APPLICABLE` +result has `score = null`, no synthetic 100 score, and an HTML page stating that +no Dev Note required analysis. The trusted commenter does not create a new PR +comment for this state and removes or marks obsolete an existing Slop Cop comment +if an earlier revision of the same PR was analyzed. + +For PRs: + +1. Resolve the PR, base SHA, head SHA, and changed Dev Note paths through the + GitHub API or an explicit base/head diff. Handle additions, modifications, + renames, and deletions; do not scan deleted files. Accept only regular UTF-8 + files lexically beneath the candidate repository root and reject symlinks. +2. Check out the candidate tree separately from the trusted analyzer tree. +3. Run the analyzer and policy from the PR's base revision against candidate + Dev Note files. This prevents a PR from weakening Slop Cop's own code or + configuration to pass itself. Separately test candidate changes under + `dev-tools/slop-cop/` and run the candidate analyzer/configuration against the + complete candidate Dev Note corpus. That non-authoritative preview prevents a + checker change from surprising `main` after merge without letting it replace + the trusted-base result for its own PR. Candidate tests must use fake service + transports and receive no production service secrets. +4. Analyze base file content for comparison where it exists. +5. Query current-head approved reviews and validate a possible override. +6. Generate `index.html` and `report.json` under `$RUNNER_TEMP`, even when the + policy result is fail. +7. Add bounded GitHub annotations for blocking and highest-cost findings, with + a cap to avoid annotation spam. Put the complete result in the artifact. +8. Upload the report with `if-no-files-found: error` and a 14-day retention. +9. Write the same concise summary to the Actions job summary. +10. Only after upload, return pass, fail, or infrastructure-error according to + the saved machine result and validated override. + +GitHub does not provide ordinary Actions secrets to fork-originated +`pull_request` workflows. If a required external rule needs a secret, a fork PR +therefore produces a visible rule execution error and fails closed; a maintainer +may use the current-head manual override after reviewing the report. Do not use +`pull_request_target` or execute candidate code with secrets to bypass this +boundary. Do not enable a required external rule until this fork behavior is an +accepted repository policy. + +Pin third-party actions to reviewed commit SHAs, set `persist-credentials: +false`, and use the committed `uv.lock`. + +The introducing PR is a bootstrap exception because the workflow and trusted +base-revision analyzer do not yet exist on `main`; do not claim that its new +workflow has enforced the PR. Validate that PR with the full local suite and +ordinary repository review. After merge, require a successful full-corpus push +run on `main`, then exercise pass, fail, report, comment, stale-run, and override +behavior on disposable validation PR revisions. Enable the required branch +protection check only after those runs succeed. + +On `main`, scan every Dev Note using the current checked-in tool and config. +Failing main protects against path-selection bugs and configuration changes that +would make accepted content fail unexpectedly. + +### Trusted comment workflow: `slop-cop-report.yml` + +Trigger on completion of the named analysis workflow. Give only `actions: read`, +`contents: read`, `pull-requests: write`, and any minimal comment permission the +GitHub API requires. + +The workflow must: + +1. Require a `pull_request`- or `pull_request_review`-originated workflow run, + resolve its PR through trusted API metadata, and identify exactly one artifact + whose name matches the strict PR/head pattern. +2. Verify the artifact PR is associated with the run and its recorded head SHA + matches the workflow run and current PR head. Ignore stale runs. +3. Reject oversized artifacts and unknown JSON schema versions. +4. Download and parse only `report.json` with trusted checked-in code. Treat all + strings as untrusted data; validate types, lengths, path prefixes, score + ranges, counts, URLs, and override fields before interpolating Markdown. +5. Find the HTML artifact's GitHub URL through the Actions API. +6. create or update one bot comment containing ``. + +The sticky comment should show: + +- status, PR score, threshold, and per-file scores +- base delta, category totals, blocking count, and top few findings +- override actor/reason when applicable +- a link to download the HTML report artifact +- the analyzed short SHA and artifact expiration note + +Comment even when the analysis check fails, since failure is when the report is +most valuable. If artifact/comment publication fails, do not convert an analysis +failure to success or an analysis success to failure; the required analysis +check remains the source of truth. Report-publication failures should remain +visible as their own workflow failure. + +## Evaluation and calibration + +### Corpus + +Create a small, versioned fixture corpus rather than a corpus-fitting subsystem: + +- the current accepted Dev Note, split into representative prose and complete + Markdown integration fixtures +- positive examples for each initial rhetorical construction +- positive examples for artifact, repetition, attribution, and rhythm rules +- synthetic “dense slop” documents combining several independent rule families +- legitimate technical counterexamples containing contrast, product vocabulary, + numbered steps, bold lead-ins, lists, headings, and horizontal rules +- Markdown-context variants that place the same trigger in prose, code, a URL, + front matter, generated byline, alt text, an HTML attribute, and a quote +- adversarial punctuation, casing, Unicode apostrophe/dash, and line-wrap variants +- fake external-judge responses for clean, chargeable, document-scoped, + source-mapped, malformed, oversized, wrong-revision, timeout, and transport + outcomes + +Do not scrape or store unrelated prose. Add real false positives as minimized, +anonymized regression fixtures when reviewers encounter them. + +### Rule-quality gates + +Every scored rule must demonstrate: + +- expected positive matches and exact spans +- nonmatches for its documented counterexamples +- punctuation, capitalization, line-wrap, and Unicode behavior +- Markdown context exclusions +- overlap behavior with related rules +- allowance and cost behavior at zero, first, repeat, and cap boundaries +- for a density-sensitive rule, below/at/above the passage allowance, rolling + window boundaries, peak selection, and density-cap behavior + +Use table-driven rule tests so additions remain reviewable. A rule with unresolved +common false positives stays advisory with zero points. + +### Score-quality properties + +Test these properties independently of exact golden scores: + +- adding an unsuppressed chargeable finding cannot increase a score +- suppressing a finding cannot decrease a score +- duplicated overlapping detectors do not double charge a span +- one allowed/common construction does not fail an otherwise clean note +- diverse repeated signals reduce the score more than one isolated weak token +- for a density-sensitive rule, the same source-mapped signals cost more when + concentrated in one configured passage than when spread across the note +- appending clean prose does not reduce an existing peak passage-density cost +- overlapping rolling windows never charge the same density peak more than once +- document-scoped signals and their display-only evidence do not enter + passage-density math +- adding masked front matter, generated HTML, code, links, or quotes does not + alter the score +- wrapping equivalent prose differently does not materially change the score +- no single weak vocabulary family can exhaust more than its category cap +- a clean second file cannot hide a failing first file +- a stale override never changes the decision +- identical validated `RuleEvaluation` values always produce the same score, + regardless of async completion order +- an external rule error never becomes a zero-finding successful evaluation + +### Initial calibration exit criteria + +Before enabling the required threshold: + +1. The current accepted Dev Note scores at least 80 without a file-wide + suppression or manual override. +2. Each dense-slop fixture scores below 80 for more than one evidence family. +3. Every unambiguous pasted-assistant artifact fixture fails through a blocking + rule or calibrated score. +4. Legitimate counterexamples pass and have no high-confidence false positive. +5. All context-invariance and score-property tests pass. +6. Density-sensitive rules have calibrated spread-versus-cluster fixtures and + expose the complete peak-window arithmetic in golden results. +7. Two maintainers review the initial scored rule table, weights, density + policies, threshold, and report wording as editorial policy, not only as code. + +If the accepted Dev Note fails, diagnose individual false positives and scoring +assumptions. Do not simply lower the threshold or add a blanket suppression. + +## Implementation sequence + +### Phase 1: Scaffold and freeze contracts + +1. Add `dev-tools/slop-cop/AGENTS.md`, `README.md`, `pyproject.toml`, locked + environment, package skeleton, and test skeleton. The nested instructions + must require direct implementation-focused writing and preserve the + declarative and `CUSTOM_RULES` extension boundaries. +2. Create direct documentation boundaries: `README.md` owns installation and + common commands; `docs/rules.md` owns rule APIs/configuration/cases; + `docs/scoring.md` owns formulas and calibration; `docs/ci.md` owns workflows, + artifacts, suppressions, and override operations. Do not duplicate normative + details across those files. +3. Define immutable document, rule, finding, file-result, run-result, override, + and versioned JSON models. +4. Define the `Rule`/`RuleContext`/`RuleRuntime`/`RuleEvaluation`/`RuleSignal` + API, declarative rule and named-service schemas, `CUSTOM_RULES` entry point, + stable rule-ID conventions, severity vocabulary, exit codes, and CLI + snapshots. +5. Add the initial accepted, Markdown-context, counterexample, and dense-slop + fixtures before implementing score tuning. + +Exit gate: configuration and result schemas have round-trip tests; the CLI can +validate configuration and produce an empty typed run result. + +### Phase 2: Build source-aware analysis + +1. Implement the source-preserving Markdown projector and line index. +2. Add generated-byline awareness and strict suppression parsing. +3. Implement token, sentence, and paragraph segmentation with deterministic + Unicode normalization that never loses original offsets. +4. Add exact source-span tests for every scanned and masked context. + +Exit gate: all Markdown invariance tests pass against the complete current Dev +Note and minimized fixtures. + +### Phase 3: Add rules and scoring + +1. Implement pasted-artifact rules first, then rhetorical clichés and curated + vocabulary, followed by repetition/rhythm and attribution rules. +2. Implement declarative phrase/regex construction, the explicit custom-rule + registry, and the shared contract tests before adding specialized algorithms. + Prove both extension paths with temporary representative rules in + `test_rule_extension.py`; the test must add them without modifying or + subclassing the engine, scorer, projector, CLI, or report renderer. +3. Implement the bounded named-service runtime, fake transport, async deadline, + concurrency, response validation, audit metadata, and failure policies. Prove + the external path with a fake LLM-judge service response; do not require a + live service in unit tests. +4. Implement overlap grouping and mark structural rules advisory-only. +5. Implement natural-opportunity document allowances, rolling passage windows, + peak-density selection, bounded rule/category density costs, and exact density + audit records. +6. Implement the remaining per-rule, category-cap, file, and PR scoring model. +7. Implement `validate-rules`, `list-rules`, `explain`, `check --only-rule`, + terminal output, JSON, and exit decisions. +8. Calibrate on the corpus and freeze golden results only after property tests + pass. + +Exit gate: the initial calibration criteria are satisfied and every score is +explainable as visible arithmetic. + +### Phase 4: Add the HTML report + +1. Render the self-contained accessible report from `RunResult`; do not rerun + detectors in the renderer. +2. Add escaped highlighted source, base/head finding comparisons, audit details, + and configuration identity. +3. Add golden structure, HTML-escaping, CSP, size-bound, and no-network tests. +4. Review the report manually using pass, fail, override, suppression, malformed + input, and multiple-file fixtures. + +Exit gate: opening `index.html` locally requires no server or network and cannot +interpret fixture text as markup or script. + +### Phase 5: Integrate CI and override + +1. Add the unprivileged analysis workflow with trusted-base execution, full + report upload, annotations, job summary, and final decision. +2. Add current-head review-based override validation and tests using recorded + GitHub API payload fixtures. +3. Add the trusted `workflow_run` commenter with artifact association, freshness, + schema, size, and Markdown-injection validation. +4. Exercise internal and fork-style PRs for pass, fail, stale run, artifact + failure, current override, stale override, renamed note, deleted note, and no + relevant changes. Include external-rule success, timeout, invalid response, + unavailable secret, advisory error, required error, and content-safe audit + cases using a controlled test service. +5. Make `Slop Cop / Dev Notes` required only after the bootstrapping PR is on + `main` and the calibration criteria remain satisfied there. + +Exit gate: a failing PR still receives a downloadable report and sticky summary; +a valid override passes only the exact reviewed head revision. + +### Phase 6: Post-merge stabilization without expanding scope + +This phase is operational follow-up and does not block completion of the initial +implementation or its PR. + +1. Observe the first five Dev Note PRs or the first 30 days, whichever comes + first, and record false positives/negatives as minimized fixtures. +2. Adjust one rule or score assumption at a time with before/after corpus results. +3. Promote advisory structural rules only when evidence supports them. +4. Publish a short maintenance guide describing how to add a phrase, algorithmic + rule, exception, fixture, or calibrated score change. Keep it procedural and + limited to current Slop Cop interfaces. + +Exit gate: no unresolved common false positives, all exceptions are narrow and +reasoned, and maintenance does not require knowledge of GitHub workflow internals. + +## Security and integrity requirements + +Use these initial hard bounds and expose lower configurable values where useful: + +| Resource | Initial hard bound | +| --- | ---: | +| One Dev Note source | 1 MiB | +| Signals from one rule/file | 5,000 | +| Findings in one run | 20,000 | +| Regex evaluation for one rule/file | 250 ms | +| Concurrent external evaluations | 4 | +| One external response | 1 MiB; default service limit 64 KiB | +| Default external rule timeout | 20 seconds | +| Overall external-evaluation time per file | 60 seconds | +| GitHub annotations per run | 50 | +| Finding detail/explanation | 1,000 Unicode code points each | +| Generated HTML report | 10 MiB | + +Exceeding a hard input, execution, response, or report limit is an analysis +error, not a truncated successful result. Finding/annotation presentation may be +truncated only after the complete bounded analysis result has been scored and +recorded in JSON. + +- Built-in and declarative rules never send Dev Note content to a network + service. Only an enabled trusted custom rule may send its explicitly selected + projected prose through a configured named service. +- Do not execute Markdown, HTML, configuration values, regex replacements, or + candidate-branch Python in the trusted reporting workflow. +- Expose service credentials only to trusted base-revision rule code; never put + credentials or raw service payloads in logs, findings, JSON, HTML, comments, + annotations, caches, or artifacts. +- Bound document size, individual match length, finding count, annotation count, + regex input behavior, JSON size, excerpt size, and report size. +- Avoid catastrophic-backtracking patterns; prefer literal/token algorithms or + statically reviewed bounded regexes. Add timeout/performance tests for the + largest accepted input size. +- Escape source and findings independently for HTML and Markdown contexts. +- Use base-revision analyzer code and configuration for the required PR gate. +- Resolve scan paths beneath the explicit repository root and reject symlinks, + devices, FIFOs, sockets, and paths escaping through `..` or absolute input. +- Bind overrides and artifact comments to the exact current head SHA. +- Do not expose full prose through action logs or annotations; keep bounded + context in the access-controlled artifact. +- Keep dependency license records in the normal project metadata and lockfile; + Slop Cop rule definitions and implementation text must be repository-owned. + +## Risks and mitigations + +| Risk | Mitigation | +| --- | --- | +| False positives make writers ignore the tool | Precision-first scored rules, allowances, advisory incubation, counterexamples, and narrow reasoned suppressions | +| Score implies an AI probability | Explicit contract and neutral wording in every output; never call it an authorship score | +| Document length distorts the result | Per-rule natural opportunities, document allowances, and rolling peak-passage density; no single global density formula | +| Many weak tokens overwhelm stronger evidence | Category caps, low vocabulary weights, overlap deduplication, and diverse-signal calibration | +| Markdown and generated sections pollute results | Same-length prose projection with integration fixtures from the real Dev Note | +| A PR modifies the checker to pass itself | Required gate executes analyzer and policy from the PR base revision | +| Override survives later changes | Current-head approved review with mandatory reason and permission verification | +| Fork PR cannot receive a comment | Unprivileged artifact producer plus trusted `workflow_run` commenter | +| HTML report enables injection | Escaped source, no external assets, no required JavaScript, CSP, and hostile golden fixtures | +| Artifact link is mistaken for hosted HTML | Comment says “download HTML report”; no Pages deployment in scope | +| Phrase list grows without quality control | Stable IDs, reviewable metadata, positive/counterexample tests, advisory-first policy, and measured calibration | +| One current Dev Note is too little calibration data | Pair it with targeted synthetic and legitimate fixtures; add minimized real regressions over time, not a fitting subsystem | +| External judge changes its answer between runs | Pin a service/judge revision where available, retain response digests and audit fields, cap its category cost, and keep the central scoring formula fixed | +| External service is unavailable or credentials are absent | Explicit per-rule failure policy; required scored rules fail closed and advisory rules mark the report incomplete | +| Dev Note text attempts to manipulate an LLM judge | Service-side no-tools structured judgment, strict response validation, bounded signal strength, fixed central scoring, and no document-controlled endpoint or prompt selection | + +## Acceptance criteria + +The initial implementation is complete when all of the following are true: + +1. `uv run slop-cop check` produces deterministic built-in findings and scoring, + exact source locations, and stable terminal, JSON, and HTML rendering for a + fixed set of validated rule evaluations. +2. Front matter, generated bylines, code, destinations, markup, configured + quotes, and suppression comments do not create findings or change the prose + denominator. +3. The score arithmetic, allowances, overlap decisions, category caps, threshold, + base delta, and final status are visible and reproducible from `report.json`. +4. The current accepted Dev Note passes the default threshold without a blanket + exception. +5. Dense-slop and pasted-assistant fixtures fail, while legitimate technical + counterexamples pass. +6. CI scans each changed Dev Note, gates on the minimum file score and blocking + findings, and scans the complete corpus on `main`. +7. Pass, fail, and override runs all upload a self-contained HTML artifact and + update one bounded sticky PR comment with a working artifact link. +8. A manual override requires a reasoned approved review from an authorized + maintainer for the exact current head and remains conspicuous in all outputs. +9. Fork-style PRs cannot execute candidate code with write credentials or inject + unvalidated artifact content into the trusted PR comment. +10. The project documentation explains limitations, rule maintenance, + suppressions, score tuning, local use, CI behavior, and artifact expiration. +11. No generated report, score history, or downloaded artifact is committed to + the repository. +12. The final change receives an editorial-policy review in addition to ordinary + code review. +13. A phrase or bounded-regex rule can be added, updated, disabled, or removed + through one declarative block plus table-driven cases, without editing the + engine, scorer, projector, CLI, or report renderer. +14. An algorithmic or service-backed custom rule can be added through one module, + one `CUSTOM_RULES` tuple entry, configuration, and table-driven cases, + without editing any core Slop Cop module. +15. The shared rule contract suite runs against built-in, declarative, and custom + rules and rejects duplicate IDs, invalid metadata, unsafe scoring values, + dangling references, bad spans, and nondeterministic result order. +16. A focused review confirms Slop Cop documentation, source comments, + docstrings, CLI text, reports, configuration examples, and test names + describe only current behavior and repository requirements. +17. A fake external judge integration proves that a custom rule can make an + asynchronous bounded request, validate a document-level judgment, map exact + evidence when present, drive configured score units, and emit content-safe + audit metadata. +18. Missing credentials, timeouts, transport errors, oversized responses, + malformed judgments, and stale judge revisions follow the configured failure + policy and can never silently produce a clean score. +19. Density-sensitive rule fixtures prove that concentrated findings receive a + larger bounded penalty than the same findings spread across a note, clean + appended prose cannot dilute the peak, and overlapping windows are not + double charged. +20. Rule detection metadata and repository scoring policy remain separate; + changing allowances, costs, caps, density, severity, or enabled state does + not require changing Python detector code. +21. Terminal, JSON, HTML, annotations, job summary, and PR comment all derive + from one serialized `RunResult` and agree on state, decision, score, and + finding counts. +22. The initial production configuration contains no enabled custom Python rule, + named external service, credential requirement, or placeholder integration; + the complete custom local/external contract is proven with test-only rules. + +## Validation commands + +Run from `dev-tools/slop-cop/` unless a command explicitly uses the repository +root: + +```bash +uv sync --locked +uv run pytest +uv run ruff check . +uv run ruff format --check . +uv run mypy src tests +uv run slop-cop validate-rules +uv run slop-cop check \ + --config slop-cop.toml \ + ../../docs/dev-notes/posts/*.md +uv run slop-cop check \ + --config slop-cop.toml \ + --html-dir /tmp/slop-cop-report \ + --json /tmp/slop-cop-report/report.json \ + ../../docs/dev-notes/posts/*.md +``` + +Also run from the repository root because the implementation adds a project, +workflows, and documentation-adjacent policy: + +```bash +python3 tests/test_render_dev_notes.py +scripts/build-docs.sh +git diff --check +``` + +Validate the two Actions workflows with the repository's chosen workflow linter +and run end-to-end PR cases in GitHub; local unit tests cannot prove token +permissions, artifact association, required-check behavior, or review-triggered +override semantics. From 2ac596b0534ebfbc9520e91112edb7c1527dc3a7 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Mon, 10 Aug 2026 22:21:30 +0000 Subject: [PATCH 02/13] Exclude local planning files --- .gitignore | 1 + plans/slop-cop.md | 1855 --------------------------------------------- 2 files changed, 1 insertion(+), 1855 deletions(-) delete mode 100644 plans/slop-cop.md diff --git a/.gitignore b/.gitignore index 8e2e0357..f2abeaad 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ temp/ *.temp *.bak .scratch/ +plans/ # Python __pycache__/ diff --git a/plans/slop-cop.md b/plans/slop-cop.md deleted file mode 100644 index b32d7c78..00000000 --- a/plans/slop-cop.md +++ /dev/null @@ -1,1855 +0,0 @@ -# Slop Cop implementation plan - -## Status - -Implemented in `dev-tools/slop-cop/` with the analysis and reporting workflows in -`.github/workflows/`. Local validation is complete. Live artifact, permission, -comment, override, and required-check behavior still requires post-merge GitHub -workflow validation. - -## Executive decision - -Build **Slop Cop** as a small, repository-owned Python project that reviews -changed English-language Dev Notes for high-confidence LLM artifacts, clichéd -rhetorical constructions, overused vocabulary, and repeated writing patterns. -Its projector, built-in rules, scoring, and reporting remain deterministic and -offline. Trusted repository-owned custom rules may implement arbitrary logic, -including asynchronous calls to a configured judging service. - -Slop Cop is an editorial linter, not an AI-authorship detector. Its score means -“how many configured editorial-risk signals are present,” not “the probability -that an LLM wrote this text.” Human prose can trigger the rules and LLM prose can -avoid them. The CLI, report, check name, and documentation must preserve that -distinction. - -The initial product has four outputs: - -- precise, source-mapped findings with an explanation and suggested editorial - action -- a transparent score from 0 to 100 for each changed Dev Note -- a required CI decision based on an absolute score threshold and any - unsuppressed blocking findings -- a self-contained HTML report uploaded as a short-lived PR artifact, with a - concise sticky PR comment linking to it - -Keep the implementation under `dev-tools/slop-cop/` and the GitHub integration -under `.github/workflows/`. Do not persist generated reports in the repository. - -## Working names - -| Surface | Name | -| --- | --- | -| Repository tool | `dev-tools/slop-cop/` | -| Python distribution | `slop-cop` | -| Python package | `slop_cop` | -| CLI | `slop-cop` | -| Configuration | `dev-tools/slop-cop/slop-cop.toml` | -| Analysis workflow | `.github/workflows/slop-cop.yml` | -| Trusted comment workflow | `.github/workflows/slop-cop-report.yml` | -| Required check | `Slop Cop / Dev Notes` | -| Manual override marker | `Slop-Cop-Override:` | -| Artifact | `slop-cop-pr--` | -| Sticky comment marker | `` | - -Do not publish the Python package. It is a repository-local implementation. - -## Locked implementation choices - -Treat these as decided unless implementation evidence makes one impossible: - -| Concern | Choice | -| --- | --- | -| Runtime | Python 3.12 or newer | -| Packaging and execution | One self-contained `uv` project and committed `uv.lock` | -| Typed validation | Pydantic v2 frozen models; `tomllib` loads TOML before validation | -| Unicode matching | The `regex` package with reviewed patterns and per-operation timeouts | -| External HTTP | One shared `httpx.AsyncClient`; tests use `httpx.MockTransport` | -| Concurrency | One `asyncio` pipeline with bounded tasks, a shared semaphore, and stable result sorting | -| Markdown handling | Repository-scoped same-length source projector; no rendered-HTML round trip | -| HTML generation | Python standard-library escaping and direct template functions; no browser framework or required JavaScript | -| Test and quality tools | `pytest`, `pytest-asyncio`, Ruff, and mypy | -| Default threshold | 80, subject only to the defined calibration gate | -| PR aggregation | Minimum score across changed Dev Notes; every changed file must pass | -| Built-in network behavior | None | -| Custom network behavior | Trusted Python rules through named JSON services | -| Initial custom registry | `CUSTOM_RULES = ()`; service-backed behavior is proven with temporary test rules, not a shipped placeholder rule | -| Default services | None configured or enabled | -| CI trust boundary | Base-revision analyzer for enforcement; candidate analyzer only for unprivileged preview/tests | -| PR reporting | Unprivileged artifact workflow plus trusted `workflow_run` sticky-comment workflow | - -The exact phrase inventory, per-rule weights, density windows, and category -density policies are calibrated deliverables. The contracts, formulas, safety -bounds, and acceptance tests that constrain those values are not optional. - -There are no implementation-blocking product choices left open in this plan. -When calibration changes a candidate value, record the before/after fixture -results and keep the locked contracts intact rather than requesting a new design -decision. - -## Goals - -1. Catch high-confidence AI detritus and recurring “LLM voice” patterns before - a Dev Note is merged. -2. Keep built-in analysis deterministic and offline, and keep every score - explainable from validated rule outputs even when a custom external judge is - nondeterministic. -3. Minimize false positives on legitimate technical prose, Markdown structure, - product names, code, links, generated bylines, and image markup. -4. Make rules easy to add, remove, update, disable, inspect, and test through - declarative configuration or one small repository-owned Python interface. -5. Make one ordinary phrase a useful observation rather than a failed build; - repeated and diverse signals should carry progressively more weight. -6. Prevent a long clean passage from hiding a bad section or one clean file from - hiding a bad file. -7. Make overrides deliberate, reasoned, attributable, bound to the current PR - revision, and visible in the report. -8. Produce a useful report on both pass and fail, including exact source - locations, category totals, scoring math, and base-versus-head changes. -9. Keep local and CI behavior identical by making the workflow call the same - versioned CLI and configuration developers can run locally. -10. Establish a compact evaluation corpus and regression suite so rule changes - improve measured behavior rather than merely adding more regexes. - -## Non-goals - -- Determining whether a person or model authored a document. -- Shipping a built-in LLM judge, model-provider integration, prompt-management - layer, or generic service-orchestration framework. A repository-owned custom - rule may call a specifically configured service. -- Rewriting prose or applying automatic fixes. -- Building an MCP server, editor extension, web application, hosted dashboard, - general linting platform, external plugin API, or package publishing pipeline. -- Supporting arbitrary document formats, repositories, languages, or house - styles in the first version. -- Scanning source code, project documentation, issues, PR descriptions, commit - messages, or comments. The first enforcement target is - `docs/dev-notes/posts/*.md`. -- Treating every bold lead-in, list, triad, horizontal rule, or polished sentence - as suspicious. These are normal structures in the current Dev Note style. -- Maintaining a historical database of scores or generated HTML reports. -- Rendering the HTML artifact as a public website. GitHub PR comments cannot - embed an HTML document, and GitHub artifact links download artifacts rather - than hosting them. The comment will show the summary and link to the artifact. - -## Product and policy principles - -### Write only for the implementation - -Documentation, docstrings, comments, rule descriptions, configuration examples, -test names, CLI text, and reports must describe only Slop Cop's current behavior -and repository requirements. Do not include design history, product comparisons, -or origin stories. Write rule definitions, descriptions, and tests directly from -the behavior required in this repository. - -Comments should explain a local invariant, non-obvious algorithm, safety bound, -or repository-specific policy. Omit comments that only narrate what the next -line does or recount how the design was reached. Rule metadata should state what -the rule detects, when it applies, why it matters to a Dev Note, and what an -editor can do about it. - -### Detect editorial signals, not authorship - -Use neutral language such as “finding,” “signal,” “repetition,” and “editorial -risk.” Do not label an author, paragraph, or document as AI-generated. A failed -check means that the configured editorial policy was not met. - -### Prefer precision over a large rule count - -A small high-quality rule set is more useful than hundreds of noisy matches. -Every scored rule must have positive examples, legitimate counterexamples, a -stable identifier, a concise rationale, and an explicit scoring policy. New -rules remain advisory until their precision is demonstrated by fixtures and -real Dev Notes. - -### Keep findings and scoring separate - -Rules identify occurrences. A scoring layer deduplicates related findings, -applies allowances, caps penalties, and calculates the decision. This allows -the report to show all useful evidence without charging several regexes for the -same phrase. - -### Treat concentration as independent evidence - -For selected rules, the same number of findings should cost more when packed -into one passage than when spread across a long note. Support both document-wide -allowances and opt-in rolling passage-density penalties. Appending clean prose -must not dilute a dense problematic passage. Density remains rule-specific and -bounded; do not apply one universal document-density formula to every finding. - -### Analyze rendered prose while preserving source positions - -Markdown syntax and generated content are inputs, but most are not prose. Build -a source-preserving projection that masks ignored characters with spaces and -retains all newlines. Rules run on that projection while every finding maps -exactly to the original path, code-point span, line, and column. - -### The absolute threshold owns enforcement - -Analyze both the base and head version where available, but gate on the head -version. A favorable delta is context, not an exemption. This avoids permanently -grandfathering weak prose. A manual override handles an intentional exception. - -### The worst changed note owns the PR score - -Score every changed Dev Note independently. Define the displayed PR score as the -minimum file score and require every changed file to pass. Do not use a -word-weighted average that lets one long clean note conceal another failing note. - -## Intended user experience - -### Local commands - -The primary interface is intentionally small: - -```text -uv run --project dev-tools/slop-cop slop-cop check \ - --config dev-tools/slop-cop/slop-cop.toml \ - docs/dev-notes/posts/example.md - -uv run --project dev-tools/slop-cop slop-cop check \ - --config dev-tools/slop-cop/slop-cop.toml \ - --baseline-ref origin/main \ - --html-dir /tmp/slop-cop-report \ - --json /tmp/slop-cop-report/report.json \ - docs/dev-notes/posts/example.md - -uv run --project dev-tools/slop-cop slop-cop explain rhetoric.not-just -uv run --project dev-tools/slop-cop slop-cop list-rules -``` - -`check` prints a compact terminal summary and annotated findings. It exits: - -| Code | Meaning | -| --- | --- | -| `0` | Every analyzed file passes, or a valid CI override was supplied | -| `1` | Analysis completed and at least one file failed policy | -| `2` | Input, configuration, Markdown projection, or report generation failed | - -`check` must finish writing requested JSON and HTML outputs before returning -exit code `1`. The workflow runs that step with `continue-on-error`, uploads the -completed outputs, then uses a separate final step to reproduce the saved -decision as the job conclusion. Do not add an exit-zero or no-enforcement CLI -option. - -### Terminal output - -Terminal output should include: - -- file and PR score, threshold, pass/fail/overridden state -- base score and delta when a base version exists -- category penalties, document allowances, passage-density bonuses, and the - exact final-score arithmetic -- `path:line:column`, rule ID, matched excerpt, points charged, and advice for - every unsuppressed finding -- suppressed and advisory counts without expanding them by default -- the command needed to generate the HTML report locally - -Support a stable JSON schema for CI and tests. Avoid SARIF in the first version; -GitHub annotations plus the HTML report cover the immediate use case, and SARIF -would add another contract without improving the initial decision quality. - -## Proposed project structure - -```text -dev-tools/slop-cop/ -├── AGENTS.md -├── README.md -├── docs/ -│ ├── ci.md -│ ├── rules.md -│ └── scoring.md -├── pyproject.toml -├── uv.lock -├── slop-cop.toml -├── src/slop_cop/ -│ ├── __init__.py -│ ├── cli.py -│ ├── config.py -│ ├── document.py -│ ├── engine.py -│ ├── findings.py -│ ├── report.py -│ ├── runtime.py -│ ├── scoring.py -│ └── rules/ -│ ├── __init__.py -│ ├── api.py -│ ├── declarative.py -│ ├── registry.py -│ ├── builtins/ -│ │ ├── __init__.py -│ │ ├── artifacts.py -│ │ ├── cliches.py -│ │ ├── repetition.py -│ │ ├── rhetoric.py -│ │ ├── structure.py -│ │ └── vocabulary.py -│ └── custom/ -│ └── __init__.py -└── tests/ - ├── fixtures/ - │ ├── accepted/ - │ ├── counterexamples/ - │ ├── markdown/ - │ └── slop/ - ├── golden/ - ├── rule_cases.toml - ├── test_cli.py - ├── test_config.py - ├── test_document.py - ├── test_engine.py - ├── test_report.py - ├── test_rule_contract.py - ├── test_rule_extension.py - ├── test_rules.py - └── test_scoring.py - -.github/workflows/ -├── slop-cop.yml -└── slop-cop-report.yml -``` - -Use Python 3.12 in CI and declare the repository-supported Python floor in the -project metadata. Use `uv` for locking and execution. Implement the initial -Markdown projector directly against the bounded Dev Note grammar; do not add a -Markdown rendering/parser dependency in the first release. Use one maintained -async HTTP client for bounded custom-service calls rather than allowing each -external rule to invent transport, retry, and response-limit behavior. - -## Normative execution order - -Use one orchestration path for local use and CI: - -1. Load TOML with `tomllib` and validate the complete config with Pydantic. -2. Build and validate the immutable rule registry and effective policies. -3. Read each bounded source file and build its same-length prose projection. -4. Segment the projection once into shared tokens, sentences, and paragraphs. -5. Construct immutable `RuleContext` and `RuleRuntime` values. -6. Evaluate enabled rules with bounded async concurrency and shared deadlines. -7. Validate every `RuleEvaluation` and convert its signals to source-mapped - findings; translate rule failures according to `on_error`. -8. Apply source suppressions, overlap groups, and primary/related finding - selection. -9. Calculate document allowances, passage-density costs, rule costs, category - density/caps, file scores, and the run decision in that order. -10. Analyze the base document through the same steps when comparison is enabled. -11. Serialize one `RunResult`; terminal, JSON, HTML, annotations, job summary, - and PR comment are projections of that result and never rerun rules or - recalculate scoring. - -No rule, renderer, or workflow step may reorder or bypass these boundaries. - -## Core data contracts - -Use immutable typed records for the analysis boundary. - -### `Document` - -Contains the source path, original text, prose projection, line-start index, -front-matter metadata needed for context, analyzable word/sentence/paragraph -counts, and masked ranges with reasons. - -### `Rule` - -Define a small, stable asynchronous `Rule` protocol in `rules/api.py`. Separate -what a rule detects from how repository policy scores it. - -`RuleMetadata` belongs to Python/declarative rule definitions and contains: - -- stable ID such as `rhetoric.not-just` -- positive integer rule version, incremented when matching or external response - interpretation changes -- category and short title -- rationale and editor-facing advice -- contexts in which the rule is eligible -- execution kind: `local` or `external` -- required named services for an external rule - -`RulePolicy` belongs to `slop-cop.toml` and contains: - -- enabled state and severity -- blocking state -- maximum units allowed from one signal -- fixed and optional document-density allowance -- first/repeat costs and rule cap -- optional rolling-passage density policy -- failure policy: `fail` or `advisory`, defaulting to `fail` for a scored - external rule in the required profile -- validated rule-specific settings - -Every enabled Python rule must have exactly one policy block. A declarative rule -defines its metadata, matcher, and policy in one TOML block. Registry construction -produces immutable `ConfiguredRule` values; the engine and scorer consume those -rather than consulting configuration during evaluation. - -Limit implicit policy defaults to `enabled = true`, `blocking = false`, and -`on_error = "fail"`. Every scored rule must state severity, allowances, first and -repeat costs, and caps explicitly. Advisory zero-point rules must state that -policy explicitly as well. - -Use only `info`, `warning`, and `error` severities. `info` rules are advisory and -must have zero costs; `warning` rules may affect the score; `error` rules must be -blocking. Severity describes policy impact, not authorship confidence. - -Each Python rule has one evaluator that accepts `RuleContext` and `RuleRuntime` -and returns a validated `RuleEvaluation` without calculating the document score. - -`RuleContext` supplies the source-preserving prose view, tokens, sentences, -paragraphs, repository vocabulary, bounded helper methods, and an explicit -method for selecting the content sent to an external service. `RuleRuntime` -supplies a shared deadline, credential-backed named-service HTTP access, -response-size limits, and content-safe diagnostics; it does not expose raw -secret values through the rule API. - -`RuleEvaluation` contains an ordered tuple of `RuleSignal` values and bounded -audit metadata. A signal contains: - -- a stable normalized key -- chargeable units in a configured, validated range -- either an exact source span or explicit `document` scope -- optional exact evidence spans -- bounded editor-facing detail - -Literal and regex rules normally return one unit per exact span. A document-level -judge may return one signal with a bounded strength, plus evidence spans when the -service supplies quotations that can be mapped back to the source exactly. The -engine maps signals into findings and configured score costs. Custom rules may -not set the final score, threshold, pass/fail state, or override state directly. -This preserves transparent centralized scoring while allowing custom logic to -drive a rule's evidence and strength. - -Only signals with an exact primary source span participate in local -passage-density calculations. A document-scoped custom signal participates only -in document-wide allowance and cost; its evidence spans are display evidence and -do not duplicate its units into density windows. A custom rule that needs local -density must emit separate exact-span signals. - -The engine adds shared metadata and creates findings so custom rules do not -repeat line mapping, suppression, overlap, scoring, serialization, or report -boilerplate. Built-in synchronous algorithms use an adapter that returns an -already-completed async evaluation; do not maintain separate sync and async rule -pipelines. - -`rules/registry.py` constructs one validated registry from three explicit -sources in a fixed order: - -1. built-in Python rules from `rules/builtins/` -2. declarative phrase and regex rules from `slop-cop.toml` -3. repository-owned Python rules exported as `CUSTOM_RULES` from - `rules/custom/__init__.py` - -Do not discover installed packages, Python entry points, or environment modules. -The single `CUSTOM_RULES` export is the algorithmic extension point. Custom rule -code is trusted code with the same process authority as Slop Cop and may use -committed project dependencies and declared named services through -`RuleRuntime`; it is not sandboxed. This keeps custom code easy to find and -review without making Slop Cop a plugin host. - -### `Finding` - -Each occurrence contains: - -- rule ID, category, and severity -- source path, start/end offsets, line, column, and bounded excerpt -- normalized match key used for repetition and overlap handling -- score group used to prevent double charging -- explanation and suggested editorial action -- whether it is advisory, chargeable, suppressed, or blocking -- suppression reason where applicable - -Never put full document content in logs, annotations, or error messages. The -local HTML report may show bounded surrounding context and an escaped highlighted -view of the changed note. - -### `FileResult` and `RunResult` - -`FileResult` contains document metrics, findings, suppressions, per-rule costs, -document and peak-density measurements, density-window locations, category -costs, score, threshold, hard-fail state, and optional base comparison. -`RunResult` contains all file results, the minimum PR score, final decision, -override metadata, rule execution errors, external-rule audit records, tool -version, configuration digest, and base/head revisions. - -Use separate enums so reporting never conflates completion with policy: - -- `analysis_state`: `complete`, `incomplete`, `error`, or `not_applicable` -- `decision`: `pass`, `fail`, `overridden`, or `not_applicable` - -An advisory external-rule error can therefore be `analysis_state = incomplete` -with `decision = pass`; a required error is `analysis_state = error` with -`decision = fail`; and a valid manual override changes only `decision` to -`overridden`. - -Version the JSON representation from the first release. The trusted reporting -workflow must reject unknown versions instead of guessing. - -## Custom-rule runtime and external judges - -Custom Python rules may perform local algorithms or call a named HTTP service. -Keep this capability narrow: Slop Cop owns a bounded JSON transport, while the -custom rule owns request construction, response schema validation, and mapping -the service result into `RuleSignal` values. - -A custom rule may use arbitrary local Python logic and committed dependencies. -Any service-backed rule enabled in the required CI profile must route network -access through the named-service runtime so deadlines, destination policy, -credentials, response bounds, audit fields, and content-safe failures remain -enforceable. Direct sockets, subprocess-based clients, and ad hoc SDK transports -are not allowed for required CI rules. - -### Named services - -Define external endpoints in trusted base-revision configuration: - -```toml -[services.editorial_judge] -url = "https://judge.internal.example/v1/evaluate" -token_env = "SLOP_COP_EDITORIAL_JUDGE_TOKEN" -timeout_seconds = 20 -max_response_bytes = 65536 -max_attempts = 1 -required_judge_revision = "editorial-v1" -``` - -Validate service names, HTTPS URLs, host allowlists, timeout bounds, response -limits, required judge revisions, and environment-variable names at startup. -Permit plaintext HTTP only for an explicitly configured loopback test service. -The configuration names a secret environment variable but never contains the -secret value. Treat the configured URL's scheme/host/port as the exact allowed -origin, reject redirects, and do not let a rule append or replace the origin. - -An external rule declares the service names it uses. `RuleRuntime` exposes only -those named clients and never returns the raw bearer token to the rule. The -shared client applies authentication, deadline propagation, connection and -response limits, content-safe error translation, and an idempotency key derived -from the rule ID, rule version, configuration digest, and analyzed-content hash. -Retries are disabled by default; enable a bounded retry only for a service whose -contract makes the request idempotent. - -### External evaluation contract - -External rule code must: - -1. choose the exact projected prose or passages to send; ignored Markdown - contexts never leave the runner -2. send Dev Note content as data in a structured JSON field -3. require a versioned structured JSON response -4. validate every enum, strength, detail length, count, and evidence item -5. map quoted evidence back to a unique exact source span or omit the span and - emit a document-scoped signal -6. require the configured judge revision and reject a mismatched or absent - revision -7. reject unknown response fields when the service schema is strict -8. return no raw prompt, response, token, or unbounded service text in a finding - -If the service uses an LLM, its service-side judge must run without tools and -return only the response schema expected by the custom rule. Treat document text -as untrusted input that cannot select endpoints, credentials, models, prompts, -score weights, or CI outcomes. - -### Timeouts, concurrency, and failures - -Apply a run-wide external-evaluation concurrency limit, a per-rule timeout, and -the overall CLI deadline. Cancel outstanding external evaluations when the run -deadline expires. Preserve stable finding order by sorting completed evaluations -by configured rule order and source position, never network completion order. - -Use these failure semantics: - -| Condition | Result | -| --- | --- | -| Required setting or secret missing | Rule execution error | -| Timeout, transport error, invalid JSON, oversized response, or schema violation | Rule execution error | -| Missing or mismatched required judge revision | Rule execution error | -| `on_error = "fail"` | File and CI fail as an analysis error; do not manufacture a score penalty | -| `on_error = "advisory"` | Score is calculated without that rule and the report is visibly `INCOMPLETE` | - -An external rule that contributes to the required CI threshold must use -`on_error = "fail"`. Advisory failure is for experimental reporting rules only. -A manual override may override the final CI failure but must not rewrite the rule -error as a successful evaluation. - -### Audit and privacy - -For each external evaluation, record the rule ID/version, named service, -endpoint hostname, analyzed-content hash, request/response schema versions, -service request ID when provided, reported judge/model revision when provided, -attempt count, latency, outcome, and a response digest. Never record credentials, -authorization headers, complete request bodies, raw prompts, or raw responses. - -Mark every external rule as “sends prose to ``” in `list-rules`, -`explain`, terminal output, JSON, and HTML. Built-in and declarative rules never -send content. Enabling an external rule is therefore an explicit repository -policy change visible in configuration and code review. - -## Markdown-aware prose projection - -The projector is the main false-positive control and should be implemented -before expanding the rule catalog. - -Starting with the original source, replace ignored characters with spaces while -preserving `\n` exactly. Mask: - -- YAML front matter, including the duplicated title and description -- the generated range between `` and - `` -- fenced code blocks using backticks or tildes -- inline code spans, with correct handling of variable-length backtick fences -- HTML comments and tag markup/attributes while retaining visible text nodes - such as `
    ` content -- Markdown link and image destinations while retaining ordinary link labels -- Markdown image alt text by default, because it follows accessibility rather - than article-prose conventions -- quoted block content by default so attributed prose is not scored against the - author; make this setting explicit in the Dev Notes profile -- Slop Cop suppression directives themselves - -Read source as strict UTF-8 after enforcing the raw-byte size limit. Reject -invalid UTF-8 and NUL characters. Do not normalize line endings or rewrite the -source before projection. - -Use this source-map contract: - -- offsets are zero-based Python string/code-point offsets -- displayed lines and columns are one-based -- `len(document.prose_projection) == len(document.source)` -- every `\n` and `\r` remains at its original offset -- every masked non-newline character becomes one ASCII space -- masked intervals are sorted, non-overlapping, and tagged with one or more - reasons -- a projected span maps to the identical `[start, end)` source span without a - lookup table or reconstructed text search - -Implement ordered masking passes for front matter/generated ranges, -fenced/inline code, comments and HTML tags, link/image destinations, blockquotes, -and suppression directives. Each pass adds intervals; one final interval-union -step produces the projection. Do not repeatedly rewrite the text or let pass -order change source offsets. Unit-test every pass alone and in overlapping -combinations. - -Scan headings, paragraphs, list-item prose, table-cell prose, emphasis text, -link labels, and visible raw-HTML text nodes. Treat captions as prose. Do not -strip punctuation before sentence and rhetorical-template analysis. - -Segment only the projection. Use Unicode NFKC plus `casefold()` for comparison -keys while retaining original spans and excerpts. Define a word as a Unicode -letter/number token with internal combining marks and apostrophes; keep product -hyphens only when surrounded by token characters. Split paragraphs at blank -projected lines and Markdown block boundaries. Split sentences with a documented -punctuation heuristic plus a small tested abbreviation set; do not add a model or -large NLP dependency. Store every token/sentence/paragraph as an exact source -span so word-, sentence-, and paragraph-density windows share the same mapping. - -The projector must detect malformed or unterminated front matter, generated -markers, code fences, and suppression ranges. Fail with a source location rather -than analyzing an ambiguous partial projection. - -Use the current rendered Dev Note as an integration fixture. Assert that changes -inside its front matter, generated byline, code, link destinations, image tags, -or ignored quotes do not affect the score, while equivalent visible-prose -changes do. - -## Initial rule portfolio - -The first release should cover the following families. The checked-in registry -and configuration will contain the exact phrases, regexes, allowances, and -tests; this plan deliberately does not freeze an uncalibrated list of hundreds -of tokens. - -Implement this minimum rule inventory. IDs are normative; split a listed family -only when its matching or scoring behavior genuinely differs: - -| Rule IDs | Initial enforcement | -| --- | --- | -| `artifact.ai-disclosure`, `artifact.chat-preamble`, `artifact.continuation-offer`, `artifact.placeholder`, `artifact.instruction-residue` | Blocking only for unambiguous cases; otherwise scored | -| `rhetoric.not-but`, `rhetoric.not-just`, `rhetoric.no-no`, `rhetoric.imperative-reframe` | Scored with nonzero allowance and opt-in density | -| `rhetoric.dramatic-fragment`, `rhetoric.throat-clearing`, `rhetoric.testament`, `rhetoric.crucial-role`, `rhetoric.landscape-metaphor`, `rhetoric.formulaic-certainty`, `rhetoric.parallel-negation` | Scored only after counterexample calibration; otherwise advisory | -| `vocabulary.stock.` | One declarative rule per exact phrase; low weight, nonzero allowance, density-sensitive | -| `repetition.ngram`, `repetition.sentence-opener`, `repetition.template-shape`, `repetition.emphatic-fragments`, `repetition.hedge-stack`, `repetition.question-answer` | Scored after minimum-count and distinct-paragraph boundaries pass calibration | -| `attribution.vague-authority`, `attribution.citationless-study` | Low-weight scored or advisory when citation proximity is ambiguous | -| `ending.participial-tail`, `ending.generic-explanation` | Advisory until calibrated on complete Dev Notes | -| `structure.bold-leadins`, `structure.triad`, `structure.bullet-run`, `structure.horizontal-rules`, `structure.duplicate-title` | Advisory with zero points in the initial release | - -Every exact stock phrase receives its own stable declarative ID, cases, and -policy. Do not hide a large phrase list behind one finding ID; editors must be -able to disable, tune, suppress, or remove one phrase without affecting others. - -### 1. Pasted assistant artifacts - -High-confidence examples include chatbot preambles, “as an AI” disclosures, -offers to continue or provide more detail, answer-format residue, unfinished -placeholders, and instructions addressed to the requester rather than the Dev -Note reader. - -These rules may be `blocking = true` when the phrase is unambiguous in prose. -Ambiguous phrases remain scored rather than blocking. Code examples and quotes -are excluded by the projector. - -### 2. Canned rhetorical templates - -Implement these construction families: - -- `not X, but Y`, `not just X`, and repeated `no X, no Y` contrasts -- imperative reframings such as `don't X it; Y it` -- dramatic fragments such as `the punchline?` and canned invitations to pause -- “worth noting/naming,” “it is important to note,” and similar throat clearing -- “a testament to,” “plays a crucial role,” and stock landscape metaphors -- formulaic certainty such as “you already know” and “X is everything” -- chained “did not” or equivalent parallel negations - -Use syntax-aware boundaries and captured terms rather than naive substring -matches. A single common contrast should normally fit within its allowance; -multiple instances or several different template families should cost more. - -### 3. Curated AI-associated vocabulary and stock phrases - -Maintain a reviewable phrase table with stable sub-identifiers and exceptions. -Match words by token/lemma-like boundaries and phrases with whitespace and -punctuation normalization. Avoid substring matches inside product names, -identifiers, URLs, and code. - -Vocabulary is weak evidence by itself. It should have a nonzero allowance, -small point values, and a category cap. Repeated use and clusters across several -paragraphs are more meaningful than one occurrence. - -### 4. Repetition and rhythm - -Add deterministic checks that generalize beyond a phrase catalog: - -- repeated normalized 2–5 word phrases across distinct prose paragraphs -- repeated sentence openings after removing articles and transition words -- repeated rhetorical-template shapes even when their captured nouns differ -- clusters of short emphatic fragments -- stacked hedges or intensifiers in a bounded passage -- repeated question-then-answer setup patterns - -Exclude stopword-only n-grams, headings repeated in navigation-like contexts, -configured product terms, and phrases whose repetition is expected in technical -explanation. Require distinct paragraphs for the strongest repetition penalties. - -### 5. Vague attribution and trailing explanation patterns - -Detect vague appeals such as unnamed experts or studies only when an attribution -construction lacks a nearby citation/link. Detect excessive participial tails -and generic explanatory endings as low-weight signals. These rules need strong -counterexamples because they are easy to overgeneralize. - -### 6. Structural observations - -Report, but initially assign zero points to, patterns such as repeated bold -lead-ins, triads, long bullet runs, frequent horizontal rules, and repeated -titles. The current Dev Note legitimately uses several of these structures. -Promote a structural rule to scored status only after the evaluation corpus -establishes a useful precision boundary. - -## Overlap and deduplication - -Several rules can describe the same text. Before scoring: - -1. Group findings that overlap materially or share a configured score-group key. -2. Select the most specific/high-confidence finding as the chargeable primary. -3. Retain the others as related observations in the report with zero additional - points. -4. Count a repeated template once per sentence unless the rule explicitly - defines multiple independent captures. -5. Apply per-rule allowances only after overlap deduplication. - -Test common collisions, especially `not just` within `not X but Y`, stock phrases -that also contain vocabulary tokens, and repeated phrases found by both a -specific cliché rule and the generic n-gram rule. - -## Scoring model - -### Meaning of the score - -`100` means no chargeable findings under the configured profile. Lower values -mean more or stronger configured signals. The score is not a probability, -percentile, grade of factual correctness, or general measure of writing quality. - -Use a default Dev Notes threshold of **80**. Treat this as an initial calibrated -policy value, not a universal standard. - -### Rule cost - -Every rule declares: - -- `allowance`: a fixed number plus, where appropriate, a document-density policy - with a natural opportunity unit, opportunity interval, and allowed units per - interval -- `first_cost`: points for the first chargeable unit -- `repeat_cost`: points for each additional chargeable unit -- `rule_cap`: the maximum points one rule can remove -- optional `blocking`: whether any unsuppressed chargeable match independently - fails policy - -For rule `r` in document `D`: - -```text -document_excess_r = max(0, deduplicated_units_r - allowance_r(D)) - -base_cost_r = 0 if document_excess_r == 0 -base_cost_r = first_cost_r + - repeat_cost_r * (document_excess_r - 1) otherwise -``` - -`deduplicated_units_r` is the sum of bounded units from primary signals after -overlap handling. Literal matches normally contribute one unit. A custom judge -may contribute more than one only within the rule's configured maximum signal -strength; it still cannot bypass the rule or category cap. - -`allowance_r(D)` must use the natural opportunity for that rule. For example, a -phrase rule may use words, a sentence-opening rule sentences, and a paragraph -pattern paragraphs. An optional document-density allowance is explicit: - -```text -allowance_r(D) = fixed_allowance_r + - floor(opportunities_r(D) / opportunity_interval_r) * - allowed_units_per_interval_r -``` - -Do not use one global “violations per 1,000 words” divisor for all rules, because -each rule has a different natural opportunity and concentration behavior. - -For very short documents, use a rule's fixed allowance rather than inflating a -density. If no analyzable prose remains, return an analysis error instead of an -automatic score of 100. - -### Passage-density cost - -Rules whose significance depends on concentration declare a `density` policy: - -- `unit`: `word`, `sentence`, or `paragraph` -- `window`: the number of natural units in one rolling passage -- `allowed_units`: signal units permitted inside one window -- `first_cost` and `repeat_cost`: the passage-density penalty curve -- `cap`: the maximum additional points concentration can remove - -Generate source-ordered rolling windows aligned to the selected natural unit and -advance by one unit. Calculate each window from primary, unsuppressed, -source-mapped signals after overlap deduplication: - -```text -window_excess_r(w) = max(0, signal_units_r(w) - allowed_units_r(w)) -peak_excess_r = max(window_excess_r(w) for w in windows(D)) - -density_cost_r = 0 - if peak_excess_r == 0 -else min(density_cap_r, - density_first_cost_r + - density_repeat_cost_r * (peak_excess_r - 1)) - -rule_cost_r = min(rule_cap_r, base_cost_r + density_cost_r) -``` - -The densest window supplies the rule's local-density bonus. Using the peak rather -than summing overlapping rolling windows prevents the same signal from being -charged repeatedly. Additional clusters still affect the document-wide base -cost. The density bonus intentionally adds a bounded penalty for concentration; -it is not an overlapping-detector duplicate. - -For the configuration example below, a note of at least 1,000 words can allow -two `rhetoric.not-just` units document-wide. If those units fall in separate -three-paragraph windows, the rule costs zero. If both fall within one -three-paragraph window, `peak_excess = 1` and the rule incurs the configured -two-point density cost even though its document-wide allowance is not exceeded. - -For categories where several different weak rules clustered together are -meaningful, allow an equivalent optional category-density policy. Aggregate the -primary source-mapped signals for that category, calculate one peak passage -bonus, and include it before the existing category cap: - -```text -category_cost_c = min( - category_cap_c, - sum(rule_cost_r for r in category c) + category_density_cost_c, -) -``` - -`category_density_cost_c` is zero when the category has no density policy. - -Do not apply local density to blocking artifacts, a rule with only -document-scoped signals, or a rule/category without an explicit density policy. -Calibrate density windows and costs separately for vocabulary, rhetorical -templates, repeated openings, and other families whose isolated occurrences are -weak but clustered occurrences are strong. - -### Category and final cost - -Assign every scored rule to exactly one penalty category. Apply a cap after -summing rule costs and any configured category-density cost: - -```text -category_cost_c = min( - category_cap_c, - sum(rule_cost_r for r in category c) + category_density_cost_c, -) -score = max(0, round(100 - sum(category_cost_c))) -``` - -Initial caps should reserve meaningful room for different evidence families: - -| Category | Initial cap | Policy intent | -| --- | ---: | --- | -| Pasted artifacts | 100 | One unambiguous artifact may block independently | -| Rhetorical clichés | 25 | Repetition matters; one construction should not fail | -| Vocabulary/stock phrases | 15 | Weak evidence cannot dominate the score | -| Repetition/rhythm | 25 | Generalized patterns should matter without a phrase match | -| Attribution/explanation | 15 | Useful but more context-sensitive evidence | -| Structure | 0 | Advisory during the initial release | - -These values are starting hypotheses. Lock final defaults only after the -calibration phase, and record any change in golden score tests and the project -changelog. - -### File and PR decisions - -A file passes only when: - -```text -file_score >= configured_threshold -AND no unsuppressed blocking finding exists -AND no fatal analysis or `on_error = "fail"` rule error exists -``` - -An `on_error = "advisory"` rule error does not fail this expression, but the file -and run remain visibly `INCOMPLETE`; it must never be rendered as a fully clean -evaluation. - -The PR score is `min(file_score)` over changed, non-deleted Dev Notes. Every file -must pass. A PR with no changed Dev Notes is neutral and the analysis job should -exit successfully without creating a misleading 100 score. - -Analyze the base revision when a matching pre-change file exists. Show added, -removed, and persistent findings plus the score delta, but do not weaken the -absolute head threshold because the base was worse. - -Classify finding changes as a deterministic multiset diff keyed by rule ID, -normalized match key, and score group. Pair equal keys in source order; unmatched -head instances are added and unmatched base instances are removed. Do not use an -LLM or fuzzy semantic comparison to decide persistence. - -Run the same enabled rule set and policy against base and head, including -external rules, and retain separate audit records. Reuse an evaluation within -the run when rule ID/version, configuration digest, and projected-content hash -are identical. A base-only evaluation failure makes the comparison -`INCOMPLETE` and leaves the base score/delta null; it does not fail an otherwise -valid head evaluation. Only head errors participate in the CI decision. - -## Configuration and controlled extensibility - -Use a versioned TOML configuration with this conceptual structure: - -```toml -schema_version = 1 -profile = "dev-notes" -threshold = 80 -paths = ["docs/dev-notes/posts/*.md"] - -[contexts] -scan_blockquotes = false -scan_headings = true -scan_captions = true - -[categories.rhetoric] -cap = 25 - -[categories.rhetoric.density] -unit = "paragraph" -window = 3 -allowed_units = 3 -first_cost = 2 -repeat_cost = 1 -cap = 5 - -[rules."rhetoric.not-just"] -enabled = true -severity = "warning" -max_signal_units = 1 -fixed_allowance = 1 -first_cost = 3 -repeat_cost = 2 -cap = 9 - -[rules."rhetoric.not-just".document_density] -unit = "words" -interval = 1000 -allowed_units = 1 - -[rules."rhetoric.not-just".density] -unit = "paragraph" -window = 3 -allowed_units = 1 -first_cost = 2 -repeat_cost = 2 -cap = 6 - -[rules."custom.editorial-judge"] -enabled = false -severity = "warning" -service = "editorial_judge" -on_error = "fail" -max_signal_units = 5 -fixed_allowance = 0 -first_cost = 8 -repeat_cost = 4 -cap = 20 - -[vocabulary] -allowed_terms = ["OpenShell", "Dev Note"] - -[[custom_rules.phrase]] -id = "custom.empty-intensifier" -version = 1 -category = "vocabulary" -severity = "warning" -title = "Empty intensifier" -rationale = "The phrase asserts importance without naming a concrete effect." -phrases = ["deeply transformative"] -advice = "Name the concrete change and its effect." -max_signal_units = 1 -fixed_allowance = 0 -first_cost = 2 -repeat_cost = 2 -cap = 6 - -[[custom_rules.regex]] -id = "custom.generic-promise" -version = 1 -category = "rhetoric" -severity = "warning" -title = "Generic future promise" -rationale = "The sentence promises later detail without identifying it." -pattern = "\\bmore on (?:that|this) (?:later|soon)\\b" -flags = ["IGNORECASE"] -advice = "Name the follow-up topic or remove the promise." -max_signal_units = 1 -fixed_allowance = 0 -first_cost = 2 -repeat_cost = 2 -cap = 6 -``` - -The `custom.editorial-judge`, `custom.empty-intensifier`, and -`custom.generic-promise` blocks demonstrate the schema and are not part of the -initial checked-in configuration. The initial configuration contains only -production built-in/declarative rules, no named services, and an empty -`CUSTOM_RULES` tuple. Tests construct temporary local and external custom rules -to prove the extension contracts. - -Use the version-1 field names shown above. Add fields only when a required rule -or safety invariant cannot be represented; do not rename or alias version-1 -fields during the initial implementation. The schema must retain these -capabilities: - -- enable/disable a stable built-in rule -- tune allowances and scoring within validated bounds -- enable and tune document-wide and rolling passage-density behavior per rule - or category -- add, remove, or update curated words and literal/regex rules declaratively -- define repository terms and phrase exceptions -- bind an external custom rule to a named service and validated rule-specific - settings -- set the threshold and category caps -- select Markdown contexts -- validate unknown keys, duplicate IDs, invalid regexes, negative costs, - impossible caps, and unsupported schema versions as errors - -Configuration can specialize built-in algorithms, define bounded phrase or -regex rules, and configure named services used by trusted custom Python rules. -It cannot import Python, execute commands, interpolate secret values, or create a -network rule without corresponding code in `CUSTOM_RULES`. More scan profiles -are outside the initial scope. - -Calculate `config_digest` as SHA-256 over canonical JSON produced from the fully -validated effective configuration with sorted object keys. Secret values are -never part of configuration and therefore never enter the digest. Include every -enabled rule's ID/version and effective policy in the canonical value so reports, -external idempotency keys, and base/head reuse cannot cross policy revisions. - -`slop-cop explain ` should print effective configuration, rationale, -examples, exceptions, scoring group, and implementation kind. This is the -primary rule-debugging aid and makes tuning reviewable. - -## Rule maintenance and custom-rule entry point - -Easy rule maintenance is a required interface, not an implementation -convenience. The common operations must be: - -| Operation | Required change | -| --- | --- | -| Add or update a word/phrase rule | Edit one declarative TOML block and its table-driven fixture cases | -| Disable a rule | Set `enabled = false`; retain the stable ID so existing suppressions receive a clear diagnostic | -| Remove a rule permanently | Remove its definition, tests, and obsolete suppressions in one change; registry validation identifies every dangling reference | -| Add a regex rule | Add one validated declarative TOML block with positive and counterexample cases | -| Add an algorithmic or service-backed rule | Add one module under `rules/custom/` and export one rule instance from `CUSTOM_RULES` | -| Promote a reusable custom rule | Move it into `rules/builtins/` without changing its ID or behavior contract | - -Provide reusable implementations for literal phrases and bounded regular -expressions so those rules are data, not one-class-per-pattern Python code. -Provide helpers for normalized tokens, n-grams, sentence starts, paragraph -windows, exact source matches, bounded external requests, and validated audit -metadata so custom rules remain short. - -Declarative regex patterns are limited to 500 characters and the explicit -`IGNORECASE`, `MULTILINE`, `DOTALL`, and `VERBOSE` flags. Reject inline flags, -backreferences, recursive/subroutine constructs, conditionals, and lookbehind. -Compile with `regex` and enforce the hard per-rule/file timeout during matching. -Python custom rules may implement more specialized parsing, but remain subject -to the same overall rule deadline and result bounds. - -The custom Python template should require only: - -```python -from slop_cop.rules.api import ( - FunctionRule, - RuleContext, - RuleEvaluation, - RuleMetadata, - RuleRuntime, - RuleSignal, -) - -METADATA = RuleMetadata( - id="custom.repeated-claim-opener", - version=1, - category="repetition", - title="Repeated claim opener", - rationale="Repeated claim openings make consecutive paragraphs formulaic.", - advice="Vary the paragraph structure or combine the claims.", -) - - -async def evaluate( - context: RuleContext, - runtime: RuleRuntime, -) -> RuleEvaluation: - signals = tuple( - RuleSignal(start=item.start, end=item.end, key=item.normalized) - for item in context.repeated_sentence_starts(minimum_count=3) - ) - return RuleEvaluation(signals=signals) - - -RULE = FunctionRule(metadata=METADATA, evaluator=evaluate) -``` - -Then `rules/custom/__init__.py` imports `RULE` and adds it to the explicit tuple: - -```python -from .repeated_claim_opener import RULE as REPEATED_CLAIM_OPENER - -CUSTOM_RULES = (REPEATED_CLAIM_OPENER,) -``` - -Add its policy separately: - -```toml -[rules."custom.repeated-claim-opener"] -enabled = true -severity = "warning" -max_signal_units = 1 -fixed_allowance = 0 -first_cost = 3 -repeat_cost = 2 -cap = 9 -on_error = "fail" -``` - -Use the immutable `FunctionRule` wrapper and module-level evaluator shown above. -Do not require custom rules to implement configuration parsing, Markdown -masking, line mapping, suppressions, scoring, serialization, or report rendering. - -A service-backed evaluator uses the same entry point: - -```python -JUDGE_METADATA = RuleMetadata( - id="custom.editorial-judge", - version=1, - category="rhetoric", - title="Editorial judge", - rationale="The configured judge identified formulaic prose.", - advice="Review the cited prose and replace generic phrasing with specifics.", - execution_kind="external", - services=("editorial_judge",), -) - - -async def evaluate( - context: RuleContext, - runtime: RuleRuntime, -) -> RuleEvaluation: - response = await runtime.service("editorial_judge").post_json( - {"schema_version": 1, "prose": context.projected_prose} - ) - result = JudgeResponse.model_validate(response.data) - signal = RuleSignal.document( - key=result.label, - units=result.strength, - detail=result.explanation, - evidence=context.map_exact_quotes(result.evidence), - ) - audit = {**response.audit, "judge_revision": result.judge_revision} - return RuleEvaluation(signals=(signal,), audit=audit) - - -JUDGE_RULE = FunctionRule(metadata=JUDGE_METADATA, evaluator=evaluate) -``` - -Export `JUDGE_RULE` from `CUSTOM_RULES`, add its `[rules]` policy block, and add -the named `[services.editorial_judge]` block. The custom module owns -`JudgeResponse` and its strict schema. Transport limits, secret handling, source -mapping, scoring, failure behavior, and reporting remain shared Slop Cop -behavior. - -Add these focused development commands: - -```text -slop-cop validate-rules -slop-cop list-rules --kind builtin|declarative|custom -slop-cop explain -slop-cop check --only-rule -``` - -`validate-rules` must catch duplicate IDs, malformed metadata, invalid category -references, missing/nonpositive rule versions, scoring values outside configured -bounds, unsafe regexes, dangling -exceptions/suppressions, undeclared services, invalid failure policies, missing -judge revisions, invalid density units/windows/costs/caps, and rules without -positive and counterexample fixture coverage. `--only-rule` is diagnostic only -and cannot be used by the required CI decision. - -Use one shared rule contract test suite against every built-in, declarative, and -custom rule. A contributor adding a custom rule supplies behavior cases through -`tests/rule_cases.toml` rather than building a separate test harness. Each entry -names a rule ID and defines positive inputs, counterexamples, expected spans, and -optional score-boundary cases. The contract suite must fail when an enabled -scored rule has no cases. - -Use one simple case schema for every rule kind: - -```toml -[[case]] -name = "not-just-visible-prose" -rule_id = "rhetoric.not-just" -kind = "positive" -source = "This is not just a wrapper." -expected_spans = [[8, 16]] - -[[case]] -name = "not-just-inline-code" -rule_id = "rhetoric.not-just" -kind = "counterexample" -source = "Run `not just` as literal input." -expected_spans = [] -``` - -Permit fixture-file references for complete Markdown and external-service cases, -but keep expected signals, spans, units, errors, and costs in the same case -record. The test harness, not each rule, owns parametrization and snapshot -formatting. - -## Suppressions and manual override - -### Finding-level suppressions - -Support narrow source suppressions for known false positives: - -```html - -``` - -The initial version supports only `ignore-next`; paired regions and file-wide -suppression are outside scope. Every suppression must name one or more stable -rule IDs and include a nonempty reason. Unknown rules, file-wide wildcards, and -missing reasons are configuration errors. Show all suppressions prominently in -terminal, JSON, and HTML output. - -The directive must be a standalone HTML comment immediately before the next -scanned prose block. It suppresses the first finding for each named rule whose -start lies in that block; later findings remain active. A directive that does not -bind to a scanned block or suppress any named finding is an unused-suppression -error so stale exceptions cannot accumulate. - -Do not permit source comments to set the global CI result or threshold. - -### PR-level manual override - -Use an approved PR review as the global manual override. A valid override is the -latest review that satisfies all of the following: - -1. review state is `APPROVED` -2. the review is attached to the current PR head commit, not an earlier revision -3. the reviewer currently has `write`, `maintain`, or `admin` permission -4. the review body contains `Slop-Cop-Override: ` - -The analysis workflow should run on relevant `pull_request` events and on -`pull_request_review` submission/dismissal so a new valid review can replace a -failed result. A new commit invalidates the prior override automatically because -the approved review's commit no longer equals the head SHA. - -A valid override changes the final CI conclusion to pass but does not alter -scores, hide findings, or label the document clean. The report and PR comment -must display `OVERRIDDEN`, the reviewer, reason, review URL/ID, and exact head -SHA. Invalid or stale override attempts should be reported as notices and have no -effect. - -This is intentionally stricter than a persistent label: labels do not carry a -reason and can survive new commits accidentally. Do not add a second override -mechanism in the first release. - -## HTML and machine reports - -Generate one artifact directory per run: - -```text -slop-cop-report/ -├── index.html -└── report.json -``` - -`report.json` is the canonical machine result. Its version-1 top level must -contain at least: - -```text -schema_version -analysis_state -decision -score # integer 0..100 or null -threshold -repository -pull_request_number # null outside PR CI -base_sha -head_sha -tool_version -config_digest -files[] -rule_errors[] -external_audits[] -override # null or validated override record -``` - -Each file record contains metrics, head/base results, findings, related and -suppressed findings, score arithmetic, density windows/costs, and errors. Define -all nested records as strict Pydantic models with bounded strings/lists and -`extra = "forbid"`. Serialize keys and arrays in stable documented order. - -`index.html` must be self-contained, readable without a server, and usable with -JavaScript disabled. Use escaped HTML, inline CSS, semantic elements, and native -`
    ` controls. Do not fetch fonts, scripts, images, analytics, or other -network resources. Add a restrictive Content Security Policy such as -`default-src 'none'; style-src 'unsafe-inline'; img-src data:`. - -The report should contain: - -- prominent pass/fail/overridden state, PR score, threshold, and head SHA -- one summary row per changed note with head score, base score, and delta -- per-category and per-rule penalty arithmetic, including caps and allowances -- document-wide counts versus allowances plus each density-sensitive rule's - configured window, densest passage, peak excess, bounded density bonus, and - category-density contribution -- filterable-by-navigation sections for blocking, chargeable, advisory, - suppressed, added, removed, and persistent findings -- path, line, column, escaped excerpt, nearby bounded context, rationale, advice, - points, and related overlapping rules for each finding -- an escaped source view with highlighted findings and line anchors -- analyzed versus masked word counts and ignored-context explanations -- suppression and override audit details -- local/external execution kind, external service hostname, judge revision, - latency, response digest, and incomplete/error state without secret or raw - service payload disclosure -- tool version, configuration digest, JSON schema version, base/head revisions, - and analysis errors -- a short “what this score does and does not mean” explanation - -Keep source snippets bounded in `report.json`; the HTML may include the full -changed note because the artifact is repository-scoped, but it must never inject -unescaped source as markup or script. Do not include the full base document; -show only bounded before/after context for changed findings. - -Make built-in analysis deterministic for a fixed input and configuration. Make -report rendering deterministic for a fixed `RunResult`. External judge output -may change between runs; isolate its audit metadata and returned signals so the -cause of a score change is visible. Put volatile timing and request metadata in -explicit fields that golden tests can normalize. - -## GitHub Actions design - -Reuse the repository's docs-preview trust pattern: an unprivileged PR workflow -performs analysis and uploads data; a separate trusted `workflow_run` workflow -validates the completed run and writes the PR comment. Never execute PR-supplied -code in the trusted commenting workflow. - -### Analysis workflow: `slop-cop.yml` - -Trigger on: - -- `pull_request` opened, reopened, synchronize, and ready-for-review events -- `pull_request_review` submitted and dismissed for override refresh -- `push` to `main` for a full-corpus invariant check -- `workflow_dispatch` for maintenance - -Use `contents: read`, `pull-requests: read`, `issues: read`, and no write -permissions. Concurrency should be keyed by PR number and cancel stale runs. -Inject service credentials only into the trusted-base analysis step and only -for named services enabled by the base configuration; do not expose them to -candidate project tests or candidate analyzer previews. - -Normalize both event types into the same trusted inputs before checkout: PR -number, base SHA/repository, head SHA/repository, review event if present, and -changed paths. The required analysis job's displayed name must be exactly -`Slop Cop / Dev Notes` on every PR event so branch protection receives one -stable check context. - -Run the workflow for every PR rather than relying on path filters for a required -check. Classify a run as: - -- `ANALYZED` when a Dev Note was added, modified, or renamed -- `NOT_APPLICABLE` when no non-deleted Dev Note changed -- `ERROR` when inputs or analysis could not be completed - -Always write and upload exactly one schema-valid artifact. A `NOT_APPLICABLE` -result has `score = null`, no synthetic 100 score, and an HTML page stating that -no Dev Note required analysis. The trusted commenter does not create a new PR -comment for this state and removes or marks obsolete an existing Slop Cop comment -if an earlier revision of the same PR was analyzed. - -For PRs: - -1. Resolve the PR, base SHA, head SHA, and changed Dev Note paths through the - GitHub API or an explicit base/head diff. Handle additions, modifications, - renames, and deletions; do not scan deleted files. Accept only regular UTF-8 - files lexically beneath the candidate repository root and reject symlinks. -2. Check out the candidate tree separately from the trusted analyzer tree. -3. Run the analyzer and policy from the PR's base revision against candidate - Dev Note files. This prevents a PR from weakening Slop Cop's own code or - configuration to pass itself. Separately test candidate changes under - `dev-tools/slop-cop/` and run the candidate analyzer/configuration against the - complete candidate Dev Note corpus. That non-authoritative preview prevents a - checker change from surprising `main` after merge without letting it replace - the trusted-base result for its own PR. Candidate tests must use fake service - transports and receive no production service secrets. -4. Analyze base file content for comparison where it exists. -5. Query current-head approved reviews and validate a possible override. -6. Generate `index.html` and `report.json` under `$RUNNER_TEMP`, even when the - policy result is fail. -7. Add bounded GitHub annotations for blocking and highest-cost findings, with - a cap to avoid annotation spam. Put the complete result in the artifact. -8. Upload the report with `if-no-files-found: error` and a 14-day retention. -9. Write the same concise summary to the Actions job summary. -10. Only after upload, return pass, fail, or infrastructure-error according to - the saved machine result and validated override. - -GitHub does not provide ordinary Actions secrets to fork-originated -`pull_request` workflows. If a required external rule needs a secret, a fork PR -therefore produces a visible rule execution error and fails closed; a maintainer -may use the current-head manual override after reviewing the report. Do not use -`pull_request_target` or execute candidate code with secrets to bypass this -boundary. Do not enable a required external rule until this fork behavior is an -accepted repository policy. - -Pin third-party actions to reviewed commit SHAs, set `persist-credentials: -false`, and use the committed `uv.lock`. - -The introducing PR is a bootstrap exception because the workflow and trusted -base-revision analyzer do not yet exist on `main`; do not claim that its new -workflow has enforced the PR. Validate that PR with the full local suite and -ordinary repository review. After merge, require a successful full-corpus push -run on `main`, then exercise pass, fail, report, comment, stale-run, and override -behavior on disposable validation PR revisions. Enable the required branch -protection check only after those runs succeed. - -On `main`, scan every Dev Note using the current checked-in tool and config. -Failing main protects against path-selection bugs and configuration changes that -would make accepted content fail unexpectedly. - -### Trusted comment workflow: `slop-cop-report.yml` - -Trigger on completion of the named analysis workflow. Give only `actions: read`, -`contents: read`, `pull-requests: write`, and any minimal comment permission the -GitHub API requires. - -The workflow must: - -1. Require a `pull_request`- or `pull_request_review`-originated workflow run, - resolve its PR through trusted API metadata, and identify exactly one artifact - whose name matches the strict PR/head pattern. -2. Verify the artifact PR is associated with the run and its recorded head SHA - matches the workflow run and current PR head. Ignore stale runs. -3. Reject oversized artifacts and unknown JSON schema versions. -4. Download and parse only `report.json` with trusted checked-in code. Treat all - strings as untrusted data; validate types, lengths, path prefixes, score - ranges, counts, URLs, and override fields before interpolating Markdown. -5. Find the HTML artifact's GitHub URL through the Actions API. -6. create or update one bot comment containing ``. - -The sticky comment should show: - -- status, PR score, threshold, and per-file scores -- base delta, category totals, blocking count, and top few findings -- override actor/reason when applicable -- a link to download the HTML report artifact -- the analyzed short SHA and artifact expiration note - -Comment even when the analysis check fails, since failure is when the report is -most valuable. If artifact/comment publication fails, do not convert an analysis -failure to success or an analysis success to failure; the required analysis -check remains the source of truth. Report-publication failures should remain -visible as their own workflow failure. - -## Evaluation and calibration - -### Corpus - -Create a small, versioned fixture corpus rather than a corpus-fitting subsystem: - -- the current accepted Dev Note, split into representative prose and complete - Markdown integration fixtures -- positive examples for each initial rhetorical construction -- positive examples for artifact, repetition, attribution, and rhythm rules -- synthetic “dense slop” documents combining several independent rule families -- legitimate technical counterexamples containing contrast, product vocabulary, - numbered steps, bold lead-ins, lists, headings, and horizontal rules -- Markdown-context variants that place the same trigger in prose, code, a URL, - front matter, generated byline, alt text, an HTML attribute, and a quote -- adversarial punctuation, casing, Unicode apostrophe/dash, and line-wrap variants -- fake external-judge responses for clean, chargeable, document-scoped, - source-mapped, malformed, oversized, wrong-revision, timeout, and transport - outcomes - -Do not scrape or store unrelated prose. Add real false positives as minimized, -anonymized regression fixtures when reviewers encounter them. - -### Rule-quality gates - -Every scored rule must demonstrate: - -- expected positive matches and exact spans -- nonmatches for its documented counterexamples -- punctuation, capitalization, line-wrap, and Unicode behavior -- Markdown context exclusions -- overlap behavior with related rules -- allowance and cost behavior at zero, first, repeat, and cap boundaries -- for a density-sensitive rule, below/at/above the passage allowance, rolling - window boundaries, peak selection, and density-cap behavior - -Use table-driven rule tests so additions remain reviewable. A rule with unresolved -common false positives stays advisory with zero points. - -### Score-quality properties - -Test these properties independently of exact golden scores: - -- adding an unsuppressed chargeable finding cannot increase a score -- suppressing a finding cannot decrease a score -- duplicated overlapping detectors do not double charge a span -- one allowed/common construction does not fail an otherwise clean note -- diverse repeated signals reduce the score more than one isolated weak token -- for a density-sensitive rule, the same source-mapped signals cost more when - concentrated in one configured passage than when spread across the note -- appending clean prose does not reduce an existing peak passage-density cost -- overlapping rolling windows never charge the same density peak more than once -- document-scoped signals and their display-only evidence do not enter - passage-density math -- adding masked front matter, generated HTML, code, links, or quotes does not - alter the score -- wrapping equivalent prose differently does not materially change the score -- no single weak vocabulary family can exhaust more than its category cap -- a clean second file cannot hide a failing first file -- a stale override never changes the decision -- identical validated `RuleEvaluation` values always produce the same score, - regardless of async completion order -- an external rule error never becomes a zero-finding successful evaluation - -### Initial calibration exit criteria - -Before enabling the required threshold: - -1. The current accepted Dev Note scores at least 80 without a file-wide - suppression or manual override. -2. Each dense-slop fixture scores below 80 for more than one evidence family. -3. Every unambiguous pasted-assistant artifact fixture fails through a blocking - rule or calibrated score. -4. Legitimate counterexamples pass and have no high-confidence false positive. -5. All context-invariance and score-property tests pass. -6. Density-sensitive rules have calibrated spread-versus-cluster fixtures and - expose the complete peak-window arithmetic in golden results. -7. Two maintainers review the initial scored rule table, weights, density - policies, threshold, and report wording as editorial policy, not only as code. - -If the accepted Dev Note fails, diagnose individual false positives and scoring -assumptions. Do not simply lower the threshold or add a blanket suppression. - -## Implementation sequence - -### Phase 1: Scaffold and freeze contracts - -1. Add `dev-tools/slop-cop/AGENTS.md`, `README.md`, `pyproject.toml`, locked - environment, package skeleton, and test skeleton. The nested instructions - must require direct implementation-focused writing and preserve the - declarative and `CUSTOM_RULES` extension boundaries. -2. Create direct documentation boundaries: `README.md` owns installation and - common commands; `docs/rules.md` owns rule APIs/configuration/cases; - `docs/scoring.md` owns formulas and calibration; `docs/ci.md` owns workflows, - artifacts, suppressions, and override operations. Do not duplicate normative - details across those files. -3. Define immutable document, rule, finding, file-result, run-result, override, - and versioned JSON models. -4. Define the `Rule`/`RuleContext`/`RuleRuntime`/`RuleEvaluation`/`RuleSignal` - API, declarative rule and named-service schemas, `CUSTOM_RULES` entry point, - stable rule-ID conventions, severity vocabulary, exit codes, and CLI - snapshots. -5. Add the initial accepted, Markdown-context, counterexample, and dense-slop - fixtures before implementing score tuning. - -Exit gate: configuration and result schemas have round-trip tests; the CLI can -validate configuration and produce an empty typed run result. - -### Phase 2: Build source-aware analysis - -1. Implement the source-preserving Markdown projector and line index. -2. Add generated-byline awareness and strict suppression parsing. -3. Implement token, sentence, and paragraph segmentation with deterministic - Unicode normalization that never loses original offsets. -4. Add exact source-span tests for every scanned and masked context. - -Exit gate: all Markdown invariance tests pass against the complete current Dev -Note and minimized fixtures. - -### Phase 3: Add rules and scoring - -1. Implement pasted-artifact rules first, then rhetorical clichés and curated - vocabulary, followed by repetition/rhythm and attribution rules. -2. Implement declarative phrase/regex construction, the explicit custom-rule - registry, and the shared contract tests before adding specialized algorithms. - Prove both extension paths with temporary representative rules in - `test_rule_extension.py`; the test must add them without modifying or - subclassing the engine, scorer, projector, CLI, or report renderer. -3. Implement the bounded named-service runtime, fake transport, async deadline, - concurrency, response validation, audit metadata, and failure policies. Prove - the external path with a fake LLM-judge service response; do not require a - live service in unit tests. -4. Implement overlap grouping and mark structural rules advisory-only. -5. Implement natural-opportunity document allowances, rolling passage windows, - peak-density selection, bounded rule/category density costs, and exact density - audit records. -6. Implement the remaining per-rule, category-cap, file, and PR scoring model. -7. Implement `validate-rules`, `list-rules`, `explain`, `check --only-rule`, - terminal output, JSON, and exit decisions. -8. Calibrate on the corpus and freeze golden results only after property tests - pass. - -Exit gate: the initial calibration criteria are satisfied and every score is -explainable as visible arithmetic. - -### Phase 4: Add the HTML report - -1. Render the self-contained accessible report from `RunResult`; do not rerun - detectors in the renderer. -2. Add escaped highlighted source, base/head finding comparisons, audit details, - and configuration identity. -3. Add golden structure, HTML-escaping, CSP, size-bound, and no-network tests. -4. Review the report manually using pass, fail, override, suppression, malformed - input, and multiple-file fixtures. - -Exit gate: opening `index.html` locally requires no server or network and cannot -interpret fixture text as markup or script. - -### Phase 5: Integrate CI and override - -1. Add the unprivileged analysis workflow with trusted-base execution, full - report upload, annotations, job summary, and final decision. -2. Add current-head review-based override validation and tests using recorded - GitHub API payload fixtures. -3. Add the trusted `workflow_run` commenter with artifact association, freshness, - schema, size, and Markdown-injection validation. -4. Exercise internal and fork-style PRs for pass, fail, stale run, artifact - failure, current override, stale override, renamed note, deleted note, and no - relevant changes. Include external-rule success, timeout, invalid response, - unavailable secret, advisory error, required error, and content-safe audit - cases using a controlled test service. -5. Make `Slop Cop / Dev Notes` required only after the bootstrapping PR is on - `main` and the calibration criteria remain satisfied there. - -Exit gate: a failing PR still receives a downloadable report and sticky summary; -a valid override passes only the exact reviewed head revision. - -### Phase 6: Post-merge stabilization without expanding scope - -This phase is operational follow-up and does not block completion of the initial -implementation or its PR. - -1. Observe the first five Dev Note PRs or the first 30 days, whichever comes - first, and record false positives/negatives as minimized fixtures. -2. Adjust one rule or score assumption at a time with before/after corpus results. -3. Promote advisory structural rules only when evidence supports them. -4. Publish a short maintenance guide describing how to add a phrase, algorithmic - rule, exception, fixture, or calibrated score change. Keep it procedural and - limited to current Slop Cop interfaces. - -Exit gate: no unresolved common false positives, all exceptions are narrow and -reasoned, and maintenance does not require knowledge of GitHub workflow internals. - -## Security and integrity requirements - -Use these initial hard bounds and expose lower configurable values where useful: - -| Resource | Initial hard bound | -| --- | ---: | -| One Dev Note source | 1 MiB | -| Signals from one rule/file | 5,000 | -| Findings in one run | 20,000 | -| Regex evaluation for one rule/file | 250 ms | -| Concurrent external evaluations | 4 | -| One external response | 1 MiB; default service limit 64 KiB | -| Default external rule timeout | 20 seconds | -| Overall external-evaluation time per file | 60 seconds | -| GitHub annotations per run | 50 | -| Finding detail/explanation | 1,000 Unicode code points each | -| Generated HTML report | 10 MiB | - -Exceeding a hard input, execution, response, or report limit is an analysis -error, not a truncated successful result. Finding/annotation presentation may be -truncated only after the complete bounded analysis result has been scored and -recorded in JSON. - -- Built-in and declarative rules never send Dev Note content to a network - service. Only an enabled trusted custom rule may send its explicitly selected - projected prose through a configured named service. -- Do not execute Markdown, HTML, configuration values, regex replacements, or - candidate-branch Python in the trusted reporting workflow. -- Expose service credentials only to trusted base-revision rule code; never put - credentials or raw service payloads in logs, findings, JSON, HTML, comments, - annotations, caches, or artifacts. -- Bound document size, individual match length, finding count, annotation count, - regex input behavior, JSON size, excerpt size, and report size. -- Avoid catastrophic-backtracking patterns; prefer literal/token algorithms or - statically reviewed bounded regexes. Add timeout/performance tests for the - largest accepted input size. -- Escape source and findings independently for HTML and Markdown contexts. -- Use base-revision analyzer code and configuration for the required PR gate. -- Resolve scan paths beneath the explicit repository root and reject symlinks, - devices, FIFOs, sockets, and paths escaping through `..` or absolute input. -- Bind overrides and artifact comments to the exact current head SHA. -- Do not expose full prose through action logs or annotations; keep bounded - context in the access-controlled artifact. -- Keep dependency license records in the normal project metadata and lockfile; - Slop Cop rule definitions and implementation text must be repository-owned. - -## Risks and mitigations - -| Risk | Mitigation | -| --- | --- | -| False positives make writers ignore the tool | Precision-first scored rules, allowances, advisory incubation, counterexamples, and narrow reasoned suppressions | -| Score implies an AI probability | Explicit contract and neutral wording in every output; never call it an authorship score | -| Document length distorts the result | Per-rule natural opportunities, document allowances, and rolling peak-passage density; no single global density formula | -| Many weak tokens overwhelm stronger evidence | Category caps, low vocabulary weights, overlap deduplication, and diverse-signal calibration | -| Markdown and generated sections pollute results | Same-length prose projection with integration fixtures from the real Dev Note | -| A PR modifies the checker to pass itself | Required gate executes analyzer and policy from the PR base revision | -| Override survives later changes | Current-head approved review with mandatory reason and permission verification | -| Fork PR cannot receive a comment | Unprivileged artifact producer plus trusted `workflow_run` commenter | -| HTML report enables injection | Escaped source, no external assets, no required JavaScript, CSP, and hostile golden fixtures | -| Artifact link is mistaken for hosted HTML | Comment says “download HTML report”; no Pages deployment in scope | -| Phrase list grows without quality control | Stable IDs, reviewable metadata, positive/counterexample tests, advisory-first policy, and measured calibration | -| One current Dev Note is too little calibration data | Pair it with targeted synthetic and legitimate fixtures; add minimized real regressions over time, not a fitting subsystem | -| External judge changes its answer between runs | Pin a service/judge revision where available, retain response digests and audit fields, cap its category cost, and keep the central scoring formula fixed | -| External service is unavailable or credentials are absent | Explicit per-rule failure policy; required scored rules fail closed and advisory rules mark the report incomplete | -| Dev Note text attempts to manipulate an LLM judge | Service-side no-tools structured judgment, strict response validation, bounded signal strength, fixed central scoring, and no document-controlled endpoint or prompt selection | - -## Acceptance criteria - -The initial implementation is complete when all of the following are true: - -1. `uv run slop-cop check` produces deterministic built-in findings and scoring, - exact source locations, and stable terminal, JSON, and HTML rendering for a - fixed set of validated rule evaluations. -2. Front matter, generated bylines, code, destinations, markup, configured - quotes, and suppression comments do not create findings or change the prose - denominator. -3. The score arithmetic, allowances, overlap decisions, category caps, threshold, - base delta, and final status are visible and reproducible from `report.json`. -4. The current accepted Dev Note passes the default threshold without a blanket - exception. -5. Dense-slop and pasted-assistant fixtures fail, while legitimate technical - counterexamples pass. -6. CI scans each changed Dev Note, gates on the minimum file score and blocking - findings, and scans the complete corpus on `main`. -7. Pass, fail, and override runs all upload a self-contained HTML artifact and - update one bounded sticky PR comment with a working artifact link. -8. A manual override requires a reasoned approved review from an authorized - maintainer for the exact current head and remains conspicuous in all outputs. -9. Fork-style PRs cannot execute candidate code with write credentials or inject - unvalidated artifact content into the trusted PR comment. -10. The project documentation explains limitations, rule maintenance, - suppressions, score tuning, local use, CI behavior, and artifact expiration. -11. No generated report, score history, or downloaded artifact is committed to - the repository. -12. The final change receives an editorial-policy review in addition to ordinary - code review. -13. A phrase or bounded-regex rule can be added, updated, disabled, or removed - through one declarative block plus table-driven cases, without editing the - engine, scorer, projector, CLI, or report renderer. -14. An algorithmic or service-backed custom rule can be added through one module, - one `CUSTOM_RULES` tuple entry, configuration, and table-driven cases, - without editing any core Slop Cop module. -15. The shared rule contract suite runs against built-in, declarative, and custom - rules and rejects duplicate IDs, invalid metadata, unsafe scoring values, - dangling references, bad spans, and nondeterministic result order. -16. A focused review confirms Slop Cop documentation, source comments, - docstrings, CLI text, reports, configuration examples, and test names - describe only current behavior and repository requirements. -17. A fake external judge integration proves that a custom rule can make an - asynchronous bounded request, validate a document-level judgment, map exact - evidence when present, drive configured score units, and emit content-safe - audit metadata. -18. Missing credentials, timeouts, transport errors, oversized responses, - malformed judgments, and stale judge revisions follow the configured failure - policy and can never silently produce a clean score. -19. Density-sensitive rule fixtures prove that concentrated findings receive a - larger bounded penalty than the same findings spread across a note, clean - appended prose cannot dilute the peak, and overlapping windows are not - double charged. -20. Rule detection metadata and repository scoring policy remain separate; - changing allowances, costs, caps, density, severity, or enabled state does - not require changing Python detector code. -21. Terminal, JSON, HTML, annotations, job summary, and PR comment all derive - from one serialized `RunResult` and agree on state, decision, score, and - finding counts. -22. The initial production configuration contains no enabled custom Python rule, - named external service, credential requirement, or placeholder integration; - the complete custom local/external contract is proven with test-only rules. - -## Validation commands - -Run from `dev-tools/slop-cop/` unless a command explicitly uses the repository -root: - -```bash -uv sync --locked -uv run pytest -uv run ruff check . -uv run ruff format --check . -uv run mypy src tests -uv run slop-cop validate-rules -uv run slop-cop check \ - --config slop-cop.toml \ - ../../docs/dev-notes/posts/*.md -uv run slop-cop check \ - --config slop-cop.toml \ - --html-dir /tmp/slop-cop-report \ - --json /tmp/slop-cop-report/report.json \ - ../../docs/dev-notes/posts/*.md -``` - -Also run from the repository root because the implementation adds a project, -workflows, and documentation-adjacent policy: - -```bash -python3 tests/test_render_dev_notes.py -scripts/build-docs.sh -git diff --check -``` - -Validate the two Actions workflows with the repository's chosen workflow linter -and run end-to-end PR cases in GitHub; local unit tests cannot prove token -permissions, artifact association, required-check behavior, or review-triggered -override semantics. From a80c48d79a612db6027292dc9d6f1337e0be36c7 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Mon, 10 Aug 2026 22:35:53 +0000 Subject: [PATCH 03/13] Address Slop Cop panel findings --- .github/workflows/slop-cop.yml | 65 +++++++++-------- .../slop-cop/benchmarks/dev-note-history.toml | 40 +++++++++++ .../benchmarks/fixtures/blocking-residue.md | 4 ++ .../benchmarks/fixtures/clean-technical.md | 6 ++ .../benchmarks/fixtures/dense-formulaic.md | 13 ++++ .../legitimate-contrast-and-citation.md | 6 ++ .../fixtures/normal-technical-structure.md | 9 +++ dev-tools/slop-cop/docs/ci.md | 4 +- dev-tools/slop-cop/docs/rules.md | 70 ++++++++++++++++++- dev-tools/slop-cop/docs/scoring.md | 27 ++++--- dev-tools/slop-cop/src/slop_cop/benchmarks.py | 50 +++++++++++-- dev-tools/slop-cop/src/slop_cop/config.py | 1 - dev-tools/slop-cop/src/slop_cop/document.py | 47 ++++++++++++- dev-tools/slop-cop/src/slop_cop/engine.py | 5 +- .../slop_cop/rules/builtins/attribution.py | 50 +++++++++++-- dev-tools/slop-cop/src/slop_cop/runtime.py | 23 +++--- dev-tools/slop-cop/tests/rule_cases.toml | 30 ++++++++ dev-tools/slop-cop/tests/test_cli.py | 5 ++ dev-tools/slop-cop/tests/test_config.py | 2 - dev-tools/slop-cop/tests/test_document.py | 16 +++++ dev-tools/slop-cop/tests/test_engine.py | 10 +++ .../slop-cop/tests/test_rule_extension.py | 14 ++-- dev-tools/slop-cop/tests/test_rules.py | 11 +++ dev-tools/slop-cop/tests/test_runtime.py | 27 +++++-- 24 files changed, 453 insertions(+), 82 deletions(-) create mode 100644 dev-tools/slop-cop/benchmarks/fixtures/blocking-residue.md create mode 100644 dev-tools/slop-cop/benchmarks/fixtures/clean-technical.md create mode 100644 dev-tools/slop-cop/benchmarks/fixtures/dense-formulaic.md create mode 100644 dev-tools/slop-cop/benchmarks/fixtures/legitimate-contrast-and-citation.md create mode 100644 dev-tools/slop-cop/benchmarks/fixtures/normal-technical-structure.md diff --git a/.github/workflows/slop-cop.yml b/.github/workflows/slop-cop.yml index e9027c3c..0edfd9dc 100644 --- a/.github/workflows/slop-cop.yml +++ b/.github/workflows/slop-cop.yml @@ -37,7 +37,6 @@ jobs: head_sha: context.sha, head_repository: `${context.repo.owner}/${context.repo.repo}`, changed_notes: [], - tool_changed: false, override: null, }; fs.writeFileSync(`${process.env.RUNNER_TEMP}/slop-cop-inputs.json`, JSON.stringify(metadata)); @@ -64,11 +63,6 @@ jobs: base_path: previous_filename || filename, })) .sort((left, right) => left.path.localeCompare(right.path)); - const toolChanged = files.some(({ filename }) => - filename.startsWith('dev-tools/slop-cop/') || - filename === '.github/workflows/slop-cop.yml' || - filename === '.github/workflows/slop-cop-report.yml'); - const reviews = await github.paginate(github.rest.pulls.listReviews, { owner: context.repo.owner, repo: context.repo.repo, @@ -107,7 +101,6 @@ jobs: head_sha: pullRequest.head.sha, head_repository: pullRequest.head.repo.full_name, changed_notes: changedNotes, - tool_changed: toolChanged, override, }; fs.writeFileSync(`${process.env.RUNNER_TEMP}/slop-cop-inputs.json`, JSON.stringify(metadata)); @@ -116,7 +109,6 @@ jobs: core.setOutput('base_sha', pullRequest.base.sha); core.setOutput('head_sha', pullRequest.head.sha); core.setOutput('head_repository', pullRequest.head.repo.full_name); - core.setOutput('tool_changed', String(toolChanged)); - name: Check out trusted analyzer uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -229,24 +221,6 @@ jobs: if: steps.roots.outputs.bootstrap == 'true' run: echo "This introducing run used the candidate analyzer because no base analyzer exists." >> "$GITHUB_STEP_SUMMARY" - - name: Test candidate implementation - id: candidate - if: steps.inputs.outputs.tool_changed == 'true' - continue-on-error: true - working-directory: candidate/dev-tools/slop-cop - run: | - uv sync --frozen - uv run pytest - uv run ruff check . - uv run ruff format --check . - uv run mypy src tests - uv run slop-cop validate-rules - uv run slop-cop benchmark --repository-root ../.. - uv run slop-cop check \ - --config slop-cop.toml \ - --repository-root ../.. \ - ../../docs/dev-notes/posts/*.md - - name: Create an error report after an early analysis failure if: always() env: @@ -384,7 +358,6 @@ jobs: - name: Enforce saved result if: always() env: - CANDIDATE_OUTCOME: ${{ steps.candidate.outcome }} REPORT_JSON: ${{ runner.temp }}/slop-cop-report/report.json run: | python - <<'PY' @@ -398,6 +371,40 @@ jobs: result = json.loads(path.read_text()) if result.get("decision") not in {"pass", "overridden", "not_applicable"}: raise SystemExit(f"Slop Cop decision: {result.get('decision')}") - if os.environ.get("CANDIDATE_OUTCOME") == "failure": - raise SystemExit("Candidate Slop Cop validation failed") PY + + validate-candidate: + name: Slop Cop / Candidate Tool + if: >- + github.event_name == 'pull_request' || + github.event_name == 'pull_request_review' + runs-on: ubuntu-latest + steps: + - name: Check out candidate revision + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.sha }} + persist-credentials: false + fetch-depth: 0 + + - name: Set up uv and Python + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + version: "0.11.31" + python-version: "3.12" + + - name: Test candidate implementation + working-directory: dev-tools/slop-cop + run: | + uv sync --frozen + uv run pytest + uv run ruff check . + uv run ruff format --check . + uv run mypy src tests + uv run slop-cop validate-rules + uv run slop-cop benchmark --repository-root ../.. + uv run slop-cop check \ + --config slop-cop.toml \ + --repository-root ../.. \ + ../../docs/dev-notes/posts/*.md diff --git a/dev-tools/slop-cop/benchmarks/dev-note-history.toml b/dev-tools/slop-cop/benchmarks/dev-note-history.toml index ea45a71e..d48a9e4f 100644 --- a/dev-tools/slop-cop/benchmarks/dev-note-history.toml +++ b/dev-tools/slop-cop/benchmarks/dev-note-history.toml @@ -51,3 +51,43 @@ source_url = "https://github.com/NVIDIA/OpenShell-Research/blob/b0d481796b8a0492 expected_decision = "pass" min_score = 92 max_score = 98 + +[[benchmark]] +name = "clean technical prose" +path = "docs/dev-notes/posts/benchmark-clean.md" +fixture_path = "dev-tools/slop-cop/benchmarks/fixtures/clean-technical.md" +expected_decision = "pass" +min_score = 100 +max_score = 100 + +[[benchmark]] +name = "legitimate contrast and citation" +path = "docs/dev-notes/posts/benchmark-contrast.md" +fixture_path = "dev-tools/slop-cop/benchmarks/fixtures/legitimate-contrast-and-citation.md" +expected_decision = "pass" +min_score = 95 +max_score = 99 + +[[benchmark]] +name = "normal technical structure" +path = "docs/dev-notes/posts/benchmark-structure.md" +fixture_path = "dev-tools/slop-cop/benchmarks/fixtures/normal-technical-structure.md" +expected_decision = "pass" +min_score = 100 +max_score = 100 + +[[benchmark]] +name = "dense multi-family prose" +path = "docs/dev-notes/posts/benchmark-dense.md" +fixture_path = "dev-tools/slop-cop/benchmarks/fixtures/dense-formulaic.md" +expected_decision = "fail" +min_score = 0 +max_score = 79 + +[[benchmark]] +name = "blocking assistant residue" +path = "docs/dev-notes/posts/benchmark-blocking.md" +fixture_path = "dev-tools/slop-cop/benchmarks/fixtures/blocking-residue.md" +expected_decision = "fail" +min_score = 0 +max_score = 0 diff --git a/dev-tools/slop-cop/benchmarks/fixtures/blocking-residue.md b/dev-tools/slop-cop/benchmarks/fixtures/blocking-residue.md new file mode 100644 index 00000000..d94e7ece --- /dev/null +++ b/dev-tools/slop-cop/benchmarks/fixtures/blocking-residue.md @@ -0,0 +1,4 @@ +# Generated response + +As an AI language model, I cannot verify the implementation. Let me know if +you would like me to expand this into a complete Dev Note. diff --git a/dev-tools/slop-cop/benchmarks/fixtures/clean-technical.md b/dev-tools/slop-cop/benchmarks/fixtures/clean-technical.md new file mode 100644 index 00000000..f87db6b5 --- /dev/null +++ b/dev-tools/slop-cop/benchmarks/fixtures/clean-technical.md @@ -0,0 +1,6 @@ +# Request enforcement + +The gateway parses each request once and passes an immutable representation to +the configured gates. A denied request returns a structured error before any +upstream connection is opened. Tests cover malformed input, allowed traffic, +and denial responses. diff --git a/dev-tools/slop-cop/benchmarks/fixtures/dense-formulaic.md b/dev-tools/slop-cop/benchmarks/fixtures/dense-formulaic.md new file mode 100644 index 00000000..764d5f9b --- /dev/null +++ b/dev-tools/slop-cop/benchmarks/fixtures/dense-formulaic.md @@ -0,0 +1,13 @@ +# System overview + +Clients receive data now. Clients receive output later. Clients receive errors immediately. It is not just a wrapper, but a policy boundary. This applies in the realm of systems. + +Clients receive data now. Clients receive output later. Clients receive errors immediately. It is not just a wrapper, but a policy boundary. This applies in the realm of systems. + +Clients receive data now. Clients receive output later. Clients receive errors immediately. It is not just a wrapper, but a policy boundary. This applies in the realm of systems. + +Clients receive data now. Clients receive output later. Clients receive errors immediately. It is not just a wrapper, but a policy boundary. This applies in the realm of systems. + +Clients receive data now. Clients receive output later. Clients receive errors immediately. It is not just a wrapper, but a policy boundary. This applies in the realm of systems. + +Clients receive data now. Clients receive output later. Clients receive errors immediately. It is not just a wrapper, but a policy boundary. This applies in the realm of systems. diff --git a/dev-tools/slop-cop/benchmarks/fixtures/legitimate-contrast-and-citation.md b/dev-tools/slop-cop/benchmarks/fixtures/legitimate-contrast-and-citation.md new file mode 100644 index 00000000..8803f8a6 --- /dev/null +++ b/dev-tools/slop-cop/benchmarks/fixtures/legitimate-contrast-and-citation.md @@ -0,0 +1,6 @@ +# Policy boundary + +The adapter is not just a transport wrapper; it is the authority that constrains +device operations. This distinction matters because the sandbox never receives +the hardware handle. A recent study reports the same separation between request +selection and physical authority ([paper](https://example.test/paper)). diff --git a/dev-tools/slop-cop/benchmarks/fixtures/normal-technical-structure.md b/dev-tools/slop-cop/benchmarks/fixtures/normal-technical-structure.md new file mode 100644 index 00000000..02446007 --- /dev/null +++ b/dev-tools/slop-cop/benchmarks/fixtures/normal-technical-structure.md @@ -0,0 +1,9 @@ +# Validation sequence + +--- + +**Parse the request.** Reject malformed input before gate evaluation. + +**Apply policy.** Evaluate the configured gates in a stable order. + +**Return the result.** Report the first denial with its concrete reason. diff --git a/dev-tools/slop-cop/docs/ci.md b/dev-tools/slop-cop/docs/ci.md index 6d9904f9..7dc309bc 100644 --- a/dev-tools/slop-cop/docs/ci.md +++ b/dev-tools/slop-cop/docs/ci.md @@ -9,7 +9,9 @@ artifact and updates one sticky PR comment. Generated reports are not committed. For a pull request, the required analysis runs Slop Cop code, configuration, and dependencies from the PR base revision against the candidate Dev Notes. Candidate Slop Cop changes are tested separately without credentials and scan -the complete candidate Dev Note corpus as a non-authoritative preview. +the complete candidate Dev Note corpus as a non-authoritative preview. Candidate +code runs in a separate job and runner; it cannot access or modify the trusted +analysis report. The `pull_request` event can use workflow orchestration changed by the pull request. Base-revision analyzer selection does not protect that orchestration by diff --git a/dev-tools/slop-cop/docs/rules.md b/dev-tools/slop-cop/docs/rules.md index 3235b83d..ee744ec8 100644 --- a/dev-tools/slop-cop/docs/rules.md +++ b/dev-tools/slop-cop/docs/rules.md @@ -9,6 +9,61 @@ Use a declarative rule for a literal phrase or bounded regular expression. Add the rule block to `slop-cop.toml` and add positive and counterexample cases to `tests/rule_cases.toml`. No engine or renderer change is required. +Phrase rule: + +```toml +[[custom_rules.phrase]] +id = "custom.empty-intensifier" +version = 1 +category = "vocabulary" +severity = "warning" +title = "Empty intensifier" +rationale = "The phrase asserts importance without naming an effect." +advice = "Name the concrete effect." +phrases = ["deeply transformative"] +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 2 +repeat_cost = 1 +cap = 5 +``` + +Regular-expression rule: + +```toml +[[custom_rules.regex]] +id = "custom.generic-promise" +version = 1 +category = "rhetoric" +severity = "warning" +title = "Generic promise" +rationale = "The sentence promises unspecified later detail." +advice = "Name the follow-up topic or remove the promise." +pattern = '''\bmore on (?:that|this) (?:later|soon)\b''' +flags = ["IGNORECASE"] +max_signal_units = 1 +fixed_allowance = 0 +first_cost = 2 +repeat_cost = 1 +cap = 5 +``` + +Each rule needs cases that execute its match and a legitimate nonmatch: + +```toml +[[case]] +name = "empty-intensifier-positive" +rule_id = "custom.empty-intensifier" +kind = "positive" +source = "This is deeply transformative work." + +[[case]] +name = "empty-intensifier-counterexample" +rule_id = "custom.empty-intensifier" +kind = "counterexample" +source = "This changes request routing." +``` + Each rule has a stable ID, positive integer version, category, title, rationale, advice, severity, allowance, and explicit scoring values. Increment the version when matching behavior or external-response interpretation changes. @@ -96,10 +151,12 @@ An external custom rule declares a named service in its metadata and obtains it through `RuleRuntime`: ```python -response = await runtime.service("editorial_judge").post_json( +response = await runtime.service().post_json( {"schema_version": 1, "prose": context.projected_prose} ) result = JudgeResponse.model_validate(response.data) +if result.judge_revision != runtime.settings["required_judge_revision"]: + raise ValueError("judge revision does not match configured revision") signal = RuleSignal.document( key=result.label, units=result.strength, @@ -121,7 +178,16 @@ token_env = "SLOP_COP_EDITORIAL_JUDGE_TOKEN" timeout_seconds = 20 max_response_bytes = 65536 max_attempts = 1 -required_judge_revision = "editorial-v1" + +[rules."custom.editorial-judge"] +severity = "warning" +service = "editorial_judge" +max_signal_units = 5 +fixed_allowance = 0 +first_cost = 4 +repeat_cost = 2 +cap = 12 +settings = { required_judge_revision = "editorial-v1" } ``` The custom rule owns its request data, strict response model, and conversion to diff --git a/dev-tools/slop-cop/docs/scoring.md b/dev-tools/slop-cop/docs/scoring.md index 268460fb..d00e4b8e 100644 --- a/dev-tools/slop-cop/docs/scoring.md +++ b/dev-tools/slop-cop/docs/scoring.md @@ -91,11 +91,11 @@ their counterexamples and score boundaries are reliable. ## Calibration benchmarks -`benchmarks/dev-note-history.toml` records immutable Git revisions, expected -decisions, and acceptable score ranges. `slop-cop benchmark` loads each source -with `git show`, scores it with the active configuration, and fails when a score -or decision leaves its declared range. This makes calibration drift a tested -policy change instead of an incidental result of editing rule weights. +`benchmarks/dev-note-history.toml` records immutable Git revisions and focused +repository fixtures with expected decisions and acceptable score ranges. +`slop-cop benchmark` scores each source with the active configuration and fails +when a score or decision leaves its declared range. This makes calibration drift +a tested policy change instead of an incidental result of editing rule weights. The current references follow one Dev Note through revision and publication: @@ -107,8 +107,15 @@ The current references follow one Dev Note through revision and publication: | [2026-07-17 revised draft](https://github.com/NVIDIA/OpenShell-Research/blob/be515c9c2684e1e3febec058f1a9e0e90da16a72/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md) | 88–94, pass | 91 | | [2026-07-18 revised draft](https://github.com/NVIDIA/OpenShell-Research/blob/069696b0a28ffd0cd77e1e043a532f81b9cec3e2/docs/dev-notes/posts/2026-07-13-policy-controlling-reachy-mini-with-openshell.md) | 94–100, pass | 97 | | [2026-07-20 published draft](https://github.com/NVIDIA/OpenShell-Research/blob/b0d481796b8a0492053c7b3cac0c65444a2e99be/docs/dev-notes/posts/2026-07-20-policy-controlling-reachy-mini-with-openshell.md) | 92–98, pass | 95 | - -Add references that represent a deliberate editorial judgment and a stable Git -revision. Use ranges wide enough for targeted detector improvements but narrow -enough to catch a material scoring regression. A scoring change must update the -manifest only when the new result is intentional and supported by the source. +| Clean technical fixture | 100, pass | 100 | +| Legitimate contrast and citation fixture | 95–99, pass | 97 | +| Normal technical structure fixture | 100, pass | 100 | +| Dense multi-family fixture | 0–79, fail | 72 | +| Blocking assistant residue fixture | 0, fail | 0 | + +Historical revisions detect drift against real prose; their chronology is not a +quality label. Focused fixtures define the intended treatment of clean prose, +legitimate constructions, dense independent signals, and blocking residue. Use +ranges wide enough for targeted detector improvements but narrow enough to catch +a material scoring regression. Update a range only when the new result is an +intentional editorial-policy change supported by the source. diff --git a/dev-tools/slop-cop/src/slop_cop/benchmarks.py b/dev-tools/slop-cop/src/slop_cop/benchmarks.py index 4f9e056e..5f20e444 100644 --- a/dev-tools/slop-cop/src/slop_cop/benchmarks.py +++ b/dev-tools/slop-cop/src/slop_cop/benchmarks.py @@ -1,4 +1,4 @@ -"""Historical score calibration.""" +"""Score calibration references.""" from __future__ import annotations @@ -25,16 +25,19 @@ class BenchmarkReference(StrictModel): """One immutable document revision and its acceptable result.""" name: str = Field(min_length=1, max_length=100) - revision: str + revision: str | None = None path: str = Field(min_length=1, max_length=4_096) - source_url: str = Field(min_length=1, max_length=4_096) + source_url: str | None = Field(default=None, min_length=1, max_length=4_096) + fixture_path: str | None = Field(default=None, min_length=1, max_length=4_096) expected_decision: Literal["pass", "fail"] min_score: int = Field(ge=0, le=100) max_score: int = Field(ge=0, le=100) @field_validator("revision") @classmethod - def validate_revision(cls, value: str) -> str: + def validate_revision(cls, value: str | None) -> str | None: + if value is None: + return None if not _REVISION.fullmatch(value): raise ValueError("benchmark revision must be a 40-character lowercase commit SHA") return value @@ -49,17 +52,37 @@ def validate_path(cls, value: str) -> str: @field_validator("source_url") @classmethod - def validate_source_url(cls, value: str) -> str: + def validate_source_url(cls, value: str | None) -> str | None: + if value is None: + return None parsed = urlsplit(value) if parsed.scheme != "https" or parsed.hostname != "github.com": raise ValueError("benchmark source_url must be an HTTPS GitHub URL") return value + @field_validator("fixture_path") + @classmethod + def validate_fixture_path(cls, value: str | None) -> str | None: + if value is None: + return None + path = PurePosixPath(value) + if path.is_absolute() or ".." in path.parts or path.suffix.casefold() != ".md": + raise ValueError("fixture_path must be a repository-relative Markdown path") + return value + @model_validator(mode="after") def validate_range(self) -> BenchmarkReference: if self.min_score > self.max_score: raise ValueError("benchmark min_score cannot exceed max_score") - if f"/blob/{self.revision}/{self.path}" not in self.source_url: + historical = self.revision is not None or self.source_url is not None + fixture = self.fixture_path is not None + if historical == fixture: + raise ValueError("benchmark must select one historical revision or fixture_path") + if historical and ( + self.revision is None + or self.source_url is None + or f"/blob/{self.revision}/{self.path}" not in self.source_url + ): raise ValueError("benchmark source_url must identify its revision and path") return self @@ -96,9 +119,22 @@ def load_benchmark_manifest(path: Path) -> BenchmarkManifest: def git_source_loader(repository_root: Path) -> SourceLoader: - """Return a loader for committed benchmark sources.""" + """Return a loader for committed history and repository fixtures.""" def load(reference: BenchmarkReference) -> bytes: + if reference.fixture_path is not None: + root = repository_root.resolve(strict=True) + fixture = (root / reference.fixture_path).resolve(strict=True) + try: + fixture.relative_to(root) + except ValueError as error: + raise ValueError( + f"benchmark fixture is outside the repository: {reference.fixture_path}" + ) from error + if fixture.is_symlink() or not fixture.is_file(): + raise ValueError(f"benchmark fixture is not a regular file: {fixture}") + return fixture.read_bytes() + assert reference.revision is not None completed = subprocess.run( ["git", "show", f"{reference.revision}:{reference.path}"], cwd=repository_root, diff --git a/dev-tools/slop-cop/src/slop_cop/config.py b/dev-tools/slop-cop/src/slop_cop/config.py index c690ce90..0af99e6e 100644 --- a/dev-tools/slop-cop/src/slop_cop/config.py +++ b/dev-tools/slop-cop/src/slop_cop/config.py @@ -165,7 +165,6 @@ class ServiceConfig(StrictModel): le=MAX_EXTERNAL_RESPONSE_BYTES, ) max_attempts: int = Field(default=1, ge=1, le=3) - required_judge_revision: str = Field(min_length=1, max_length=128) @field_validator("url") @classmethod diff --git a/dev-tools/slop-cop/src/slop_cop/document.py b/dev-tools/slop-cop/src/slop_cop/document.py index 7a4a33ff..a3a1ef0f 100644 --- a/dev-tools/slop-cop/src/slop_cop/document.py +++ b/dev-tools/slop-cop/src/slop_cop/document.py @@ -196,6 +196,31 @@ def _add_fenced_code(source: str, ranges: list[tuple[int, int, str]]) -> None: cursor = closer.end() +def _add_indented_code(source: str, ranges: list[tuple[int, int, str]]) -> None: + lines = list(re.finditer(r"^.*(?:\r?\n|$)", source, re.MULTILINE)) + in_block = False + block_start = 0 + block_end = 0 + previous_blank = True + for line in lines: + text = line.group(0).rstrip("\r\n") + blank = not text.strip() + indented = text.startswith(" ") or text.startswith("\t") + if in_block: + if indented or blank: + block_end = line.end() + else: + ranges.append((block_start, block_end, "indented-code")) + in_block = False + if not in_block and indented and previous_blank and not _covered(line.start(), ranges): + in_block = True + block_start = line.start() + block_end = line.end() + previous_blank = blank + if in_block: + ranges.append((block_start, block_end, "indented-code")) + + def _add_suppressions( source: str, ranges: list[tuple[int, int, str]] ) -> list[tuple[tuple[RuleId, ...], str, Span]]: @@ -365,9 +390,24 @@ def _add_links_and_images(source: str, ranges: list[tuple[int, int, str]]) -> No def _add_blockquotes(source: str, ranges: list[tuple[int, int, str]]) -> None: - for match in re.finditer(r"^ {0,3}>[^\r\n]*(?:\r?\n|$)", source, re.MULTILINE): - if not _covered(match.start(), ranges): - ranges.append((match.start(), match.end(), "blockquote")) + active = False + start = end = 0 + for line in re.finditer(r"^.*(?:\r?\n|$)", source, re.MULTILINE): + text = line.group(0).rstrip("\r\n") + quoted = re.match(r"^ {0,3}>", text) is not None + blank = not text.strip() + if quoted and not _covered(line.start(), ranges): + if not active: + start = line.start() + active = True + end = line.end() + elif active and not blank: + end = line.end() + elif active: + ranges.append((start, end, "blockquote")) + active = False + if active: + ranges.append((start, end, "blockquote")) def _add_disabled_visible_contexts( @@ -564,6 +604,7 @@ def build_document( front_matter = _add_front_matter(source, ranges) _add_generated_ranges(source, ranges) _add_fenced_code(source, ranges) + _add_indented_code(source, ranges) parsed_suppressions = _add_suppressions(source, ranges) _add_html_comments(source, ranges) _add_inline_code(source, ranges) diff --git a/dev-tools/slop-cop/src/slop_cop/engine.py b/dev-tools/slop-cop/src/slop_cop/engine.py index f9b14296..682f9c5e 100644 --- a/dev-tools/slop-cop/src/slop_cop/engine.py +++ b/dev-tools/slop-cop/src/slop_cop/engine.py @@ -142,6 +142,7 @@ def deduplicate_findings( findings: tuple[Finding, ...], registry: RuleRegistry ) -> tuple[Finding, ...]: order = {configured.metadata.id: configured.order for configured in registry} + policies = {configured.metadata.id: configured.policy for configured in registry} values = list(findings) parent = list(range(len(values))) @@ -188,6 +189,8 @@ def span_length(finding: Finding) -> int: values[index].suppressed, not values[index].blocking, severity_rank[values[index].severity], + policies[values[index].rule_id].fixed_allowance, + -policies[values[index].rule_id].first_cost, order.get(values[index].rule_id, 1_000_000), span_length(values[index]), ), @@ -221,7 +224,7 @@ async def _evaluate_rule( try: async with asyncio.timeout(timeout): evaluation = await configured.rule.evaluate( - context, manager.for_rule(configured.metadata) + context, manager.for_rule(configured.metadata, configured.policy) ) evaluation = validate_evaluation( configured.metadata, diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py index 6dbb999f..f956386a 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py @@ -1,23 +1,59 @@ from __future__ import annotations -from slop_cop.rules.builtins._helpers import regex_rule +import regex + +from slop_cop.rules.api import FunctionRule, RuleContext, RuleEvaluation, RuleMetadata, RuleSignal + +_CITATION = regex.compile(r"\[[^\]\n]+\](?:\([^\n)]+\)|\[[^\]\n]*\])") + + +def _rule( + rule_id: str, + title: str, + rationale: str, + advice: str, + pattern: str, +) -> FunctionRule: + compiled = regex.compile(pattern, regex.IGNORECASE) + + def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: + signals: list[RuleSignal] = [] + for match in compiled.finditer(context.projected_prose): + paragraph = next( + item for item in context.paragraphs if item.start <= match.start() < item.end + ) + if _CITATION.search(context.source[paragraph.start : paragraph.end]): + continue + signals.append(RuleSignal(start=match.start(), end=match.end(), key=rule_id)) + return RuleEvaluation(signals=tuple(signals)) + + return FunctionRule( + RuleMetadata( + id=rule_id, + category="attribution", + title=title, + rationale=rationale, + advice=advice, + ), + evaluate, + ) + RULES = ( - regex_rule( + _rule( "attribution.vague-authority", - "attribution", "Vague authority", "The claim attributes a view to unnamed authorities.", "Name and link the relevant source or make the claim in the author's voice.", r"\b(?:experts|researchers|industry leaders|many observers|critics)\s+" - r"(?:say|believe|agree|argue|suggest|warn)\b(?![^\n]{0,120}\]\([^\n)]+\))", + r"(?:say|believe|agree|argue|suggest|warn)\b", ), - regex_rule( + _rule( "attribution.citationless-study", - "attribution", "Unidentified study", "The sentence cites research without identifying a source nearby.", "Name and link the study or describe the evidence directly.", - r"\b(?:a|one|recent|new)\s+(?:study|report|survey|analysis)\s+(?:shows?|finds?|found|suggests?|indicates?)\b(?![^\n]{0,160}\]\([^\n)]+\))", + r"\b(?:a|one|recent|new)\s+(?:study|report|survey|analysis)\s+" + r"(?:shows?|finds?|found|suggests?|indicates?)\b", ), ) diff --git a/dev-tools/slop-cop/src/slop_cop/runtime.py b/dev-tools/slop-cop/src/slop_cop/runtime.py index b43a036f..8950e6a5 100644 --- a/dev-tools/slop-cop/src/slop_cop/runtime.py +++ b/dev-tools/slop-cop/src/slop_cop/runtime.py @@ -7,12 +7,13 @@ import time from collections.abc import Mapping from dataclasses import dataclass, field +from types import MappingProxyType from typing import Any from urllib.parse import urlsplit import httpx -from slop_cop.config import ServiceConfig, SlopCopConfig +from slop_cop.config import RulePolicy, ServiceConfig, SlopCopConfig from slop_cop.rules.api import RuleMetadata _RETRYABLE_STATUS_CODES = frozenset({429, 502, 503, 504}) @@ -55,25 +56,31 @@ async def __aexit__(self, *args: object) -> None: if self._owns_client and self.client is not None: await self.client.aclose() - def for_rule(self, metadata: RuleMetadata) -> RuleRuntime: - return RuleRuntime(self, metadata) + def for_rule(self, metadata: RuleMetadata, policy: RulePolicy) -> RuleRuntime: + return RuleRuntime( + self, + metadata, + policy.service, + MappingProxyType(dict(policy.settings)), + ) @dataclass(frozen=True, slots=True) class RuleRuntime: manager: RuntimeManager metadata: RuleMetadata + selected_service: str | None + settings: Mapping[str, Any] @property def deadline(self) -> float: assert self.manager.deadline is not None return self.manager.deadline - def service(self, name: str) -> NamedService: - if name not in self.metadata.services: - raise RuleRuntimeError( - f"rule {self.metadata.id} attempted to use an undeclared service" - ) + def service(self) -> NamedService: + name = self.selected_service + if name is None: + raise RuleRuntimeError(f"rule {self.metadata.id} has no configured service") try: service_config = self.manager.config.services[name] except KeyError as error: diff --git a/dev-tools/slop-cop/tests/rule_cases.toml b/dev-tools/slop-cop/tests/rule_cases.toml index 802dd7ee..cbc70b58 100644 --- a/dev-tools/slop-cop/tests/rule_cases.toml +++ b/dev-tools/slop-cop/tests/rule_cases.toml @@ -245,6 +245,24 @@ rule_id = "attribution.vague-authority" kind = "counterexample" source = "The linked audit reports this pattern is safe." +[[case]] +name = "vague-authority-inline-citation" +rule_id = "attribution.vague-authority" +kind = "counterexample" +source = "Experts say this pattern is safe ([audit](https://example.test/audit))." + +[[case]] +name = "vague-authority-reference-citation" +rule_id = "attribution.vague-authority" +kind = "counterexample" +source = "Experts say this pattern is safe [according to the audit][audit]." + +[[case]] +name = "vague-authority-distant-citation" +rule_id = "attribution.vague-authority" +kind = "positive" +source = "Experts say this pattern is safe.\n\nThe separate API is documented in the [manual](https://example.test/manual)." + [[case]] name = "citationless-study-positive" rule_id = "attribution.citationless-study" @@ -255,3 +273,15 @@ name = "citationless-study-counterexample" rule_id = "attribution.citationless-study" kind = "counterexample" source = "The benchmark below shows lower latency." + +[[case]] +name = "identified-study-inline-citation" +rule_id = "attribution.citationless-study" +kind = "counterexample" +source = "A recent study shows lower latency ([paper](https://example.test/paper))." + +[[case]] +name = "citation-claim-in-code" +rule_id = "attribution.citationless-study" +kind = "counterexample" +source = "Use `A recent study shows lower latency` as fixture text." diff --git a/dev-tools/slop-cop/tests/test_cli.py b/dev-tools/slop-cop/tests/test_cli.py index 73dee26d..8f7750d5 100644 --- a/dev-tools/slop-cop/tests/test_cli.py +++ b/dev-tools/slop-cop/tests/test_cli.py @@ -152,6 +152,8 @@ def test_explain_unknown_rule_is_an_input_error(capsys: pytest.CaptureFixture[st def test_workflow_preserves_renamed_baselines_and_has_stdlib_error_report() -> None: workflow = (REPOSITORY / ".github/workflows/slop-cop.yml").read_text(encoding="utf-8") + authoritative_job = workflow.split(" analyze:", 1)[1].split(" validate-candidate:", 1)[0] + candidate_job = workflow.split(" validate-candidate:", 1)[1] fallback = workflow.split("Create an error report after an early analysis failure", 1)[1] fallback = fallback.split("Add bounded annotations and job summary", 1)[0] assert "previous_filename" in workflow @@ -160,6 +162,9 @@ def test_workflow_preserves_renamed_baselines_and_has_stdlib_error_report() -> N assert "from slop_cop" not in fallback assert "json.dumps(result" in fallback assert "html.escape(message)" in fallback + assert "Test candidate implementation" not in authoritative_job + assert "working-directory: dev-tools/slop-cop" in candidate_job + assert "${{ runner.temp }}/slop-cop-report" not in candidate_job def test_trusted_reporter_revalidates_override_and_uses_pr_head() -> None: diff --git a/dev-tools/slop-cop/tests/test_config.py b/dev-tools/slop-cop/tests/test_config.py index 22d2a2e3..b2ed58cd 100644 --- a/dev-tools/slop-cop/tests/test_config.py +++ b/dev-tools/slop-cop/tests/test_config.py @@ -76,13 +76,11 @@ def test_service_requires_https_except_for_loopback() -> None: assert ServiceConfig( url="http://localhost:8080/judge", token_env="SLOP_COP_TEST_TOKEN", - required_judge_revision="judge-v1", ).url.startswith("http://") with pytest.raises(ValidationError, match="HTTPS"): ServiceConfig( url="http://judge.example.test/v1", token_env="SLOP_COP_TEST_TOKEN", - required_judge_revision="judge-v1", ) diff --git a/dev-tools/slop-cop/tests/test_document.py b/dev-tools/slop-cop/tests/test_document.py index 3ceab769..122e7cc5 100644 --- a/dev-tools/slop-cop/tests/test_document.py +++ b/dev-tools/slop-cop/tests/test_document.py @@ -37,6 +37,22 @@ def test_blockquotes_can_be_scanned_explicitly() -> None: assert "Quoted prose" in scanned.prose_projection +def test_indented_code_and_lazy_blockquote_continuations_are_masked() -> None: + source = ( + " As an AI language model, this is sample output.\n\n" + "> Quoted first line\n" + "As an AI language model, this is a lazy continuation.\n\n" + "Visible prose.\n" + ) + + document = build_document("note.md", source) + + assert "AI language model" not in document.prose_projection + assert "Visible prose" in document.prose_projection + assert any("indented-code" in item.reasons for item in document.masked_ranges) + assert any("blockquote" in item.reasons for item in document.masked_ranges) + + def test_segments_retain_exact_source_offsets_and_unicode_keys() -> None: source = "# Heading\n\nCafé’s source-aware token. Next sentence!\n" document = build_document("note.md", source) diff --git a/dev-tools/slop-cop/tests/test_engine.py b/dev-tools/slop-cop/tests/test_engine.py index 21b60ac3..31abf488 100644 --- a/dev-tools/slop-cop/tests/test_engine.py +++ b/dev-tools/slop-cop/tests/test_engine.py @@ -40,6 +40,16 @@ def test_overlap_charges_one_primary_finding() -> None: assert any(finding.related_rule_ids for finding in overlapping) +def test_compound_contrast_cannot_erase_not_just_cost() -> None: + standalone = _analyze("This is not just a wrapper.") + compound = _analyze("This is not just a wrapper, but a policy boundary.") + + assert standalone.score == 97 + assert compound.score == standalone.score + charged = [finding for finding in compound.findings if finding.chargeable] + assert [finding.rule_id for finding in charged] == ["rhetoric.not-just"] + + def test_ignore_next_suppresses_only_the_target_block() -> None: source = ( '\n' diff --git a/dev-tools/slop-cop/tests/test_rule_extension.py b/dev-tools/slop-cop/tests/test_rule_extension.py index c9d7eb34..e509bf4d 100644 --- a/dev-tools/slop-cop/tests/test_rule_extension.py +++ b/dev-tools/slop-cop/tests/test_rule_extension.py @@ -179,7 +179,6 @@ def _external_config() -> SlopCopConfig: "timeout_seconds": 5.0, "max_response_bytes": 4096, "max_attempts": 1, - "required_judge_revision": "editorial-v1", } } raw["rules"]["custom.editorial-judge"] = { @@ -190,6 +189,7 @@ def _external_config() -> SlopCopConfig: "first_cost": 4.0, "repeat_cost": 2.0, "cap": 12.0, + "settings": {"required_judge_revision": "editorial-v1"}, } return SlopCopConfig.model_validate(raw) @@ -206,13 +206,13 @@ def _judge_rule() -> FunctionRule: ) async def evaluate(context: RuleContext, runtime: RuleRuntime) -> RuleEvaluation: - response = await runtime.service("editorial_judge").post_json( + response = await runtime.service().post_json( {"schema_version": 1, "prose": context.projected_prose} ) result = JudgeResponse.model_validate(response.data) if result.schema_version != 1: raise ValueError("unsupported judge response schema") - expected = runtime.manager.config.services["editorial_judge"].required_judge_revision + expected = runtime.settings["required_judge_revision"] if result.judge_revision != expected: raise ValueError("judge revision does not match configured revision") signal = RuleSignal.document( @@ -251,7 +251,8 @@ async def run() -> RuleEvaluation: environment={"SLOP_COP_JUDGE_TOKEN": "secret"}, ) evaluation = await registry.by_id(rule.metadata.id).rule.evaluate( - RuleContext(document), manager.for_rule(rule.metadata) + RuleContext(document), + manager.for_rule(rule.metadata, registry.by_id(rule.metadata.id).policy), ) await client.aclose() return evaluation @@ -300,7 +301,10 @@ async def run() -> None: try: await rule.evaluate( RuleContext(build_document("note.md", "Direct prose for review.")), - manager.for_rule(rule.metadata), + manager.for_rule( + rule.metadata, + build_registry(config, custom_rules=(rule,)).by_id(rule.metadata.id).policy, + ), ) finally: await client.aclose() diff --git a/dev-tools/slop-cop/tests/test_rules.py b/dev-tools/slop-cop/tests/test_rules.py index 3bd871c8..8ea0d177 100644 --- a/dev-tools/slop-cop/tests/test_rules.py +++ b/dev-tools/slop-cop/tests/test_rules.py @@ -49,6 +49,17 @@ def test_artifact_rule_ignores_inline_code() -> None: assert _signals("artifact.ai-disclosure", "As an AI language model, I cannot verify that.") +def test_artifact_rule_ignores_indented_code_and_lazy_blockquotes() -> None: + assert not _signals( + "artifact.ai-disclosure", + " As an AI language model, I cannot verify that.\n", + ) + assert not _signals( + "artifact.ai-disclosure", + "> Example response:\nAs an AI language model, I cannot verify that.\n", + ) + + def test_not_just_uses_word_boundaries() -> None: signals = _signals("rhetoric.not-just", "This is not just a wrapper.") assert len(signals) == 1 diff --git a/dev-tools/slop-cop/tests/test_runtime.py b/dev-tools/slop-cop/tests/test_runtime.py index 912eb7ab..902d4726 100644 --- a/dev-tools/slop-cop/tests/test_runtime.py +++ b/dev-tools/slop-cop/tests/test_runtime.py @@ -8,7 +8,7 @@ import httpx import pytest -from slop_cop.config import SlopCopConfig, load_config +from slop_cop.config import RulePolicy, Severity, SlopCopConfig, load_config from slop_cop.rules.api import RuleMetadata from slop_cop.runtime import RuleRuntimeError, RuntimeManager, ServiceResponse @@ -24,7 +24,6 @@ def _config(**service_overrides: Any) -> SlopCopConfig: "timeout_seconds": 5.0, "max_response_bytes": 1024, "max_attempts": 1, - "required_judge_revision": "editorial-v1", **service_overrides, } } @@ -43,6 +42,18 @@ def _metadata() -> RuleMetadata: ) +def _policy() -> RulePolicy: + return RulePolicy( + severity=Severity.WARNING, + service="judge", + max_signal_units=1, + fixed_allowance=0, + first_cost=1, + repeat_cost=1, + cap=3, + ) + + async def _post( handler: httpx.AsyncBaseTransport, *, @@ -60,8 +71,8 @@ async def _post( ) try: return ( - await manager.for_rule(_metadata()) - .service("judge") + await manager.for_rule(_metadata(), _policy()) + .service() .post_json(payload or {"prose": "private prose"}) ) finally: @@ -84,7 +95,9 @@ def handler(request: httpx.Request) -> httpx.Response: manager = RuntimeManager( _config(), client=client, environment={"SLOP_COP_JUDGE_TOKEN": "secret"} ) - response = await manager.for_rule(_metadata()).service("judge").post_json({"prose": "text"}) + response = ( + await manager.for_rule(_metadata(), _policy()).service().post_json({"prose": "text"}) + ) await client.aclose() return response @@ -99,7 +112,9 @@ async def run() -> None: manager = RuntimeManager(_config(), client=client, environment={}) try: await ( - manager.for_rule(_metadata()).service("judge").post_json({"prose": "secret prose"}) + manager.for_rule(_metadata(), _policy()) + .service() + .post_json({"prose": "secret prose"}) ) finally: await client.aclose() From 3a1d56eae529fef6000c80de249da9f0f9433427 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Mon, 10 Aug 2026 22:42:23 +0000 Subject: [PATCH 04/13] Tighten Slop Cop review boundaries --- .github/workflows/slop-cop-candidate.yml | 44 +++++++++++++++++++ .github/workflows/slop-cop.yml | 36 --------------- dev-tools/slop-cop/docs/ci.md | 10 ++--- dev-tools/slop-cop/docs/rules.md | 2 +- dev-tools/slop-cop/docs/scoring.md | 2 +- dev-tools/slop-cop/src/slop_cop/document.py | 14 ++++-- dev-tools/slop-cop/src/slop_cop/engine.py | 4 ++ dev-tools/slop-cop/src/slop_cop/rules/api.py | 1 + .../src/slop_cop/rules/builtins/_helpers.py | 4 ++ .../slop_cop/rules/builtins/attribution.py | 12 +++-- .../src/slop_cop/rules/builtins/repetition.py | 10 ++++- .../src/slop_cop/rules/builtins/rhetoric.py | 1 + dev-tools/slop-cop/tests/rule_cases.toml | 18 ++++++++ dev-tools/slop-cop/tests/test_cli.py | 11 ++--- dev-tools/slop-cop/tests/test_document.py | 15 +++++++ dev-tools/slop-cop/tests/test_engine.py | 28 ++++++++++++ 16 files changed, 156 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/slop-cop-candidate.yml diff --git a/.github/workflows/slop-cop-candidate.yml b/.github/workflows/slop-cop-candidate.yml new file mode 100644 index 00000000..5c804e36 --- /dev/null +++ b/.github/workflows/slop-cop-candidate.yml @@ -0,0 +1,44 @@ +name: Slop Cop candidate + +"on": + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + +permissions: + contents: read + +concurrency: + group: slop-cop-candidate-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + validate: + name: Slop Cop / Candidate Tool + runs-on: ubuntu-latest + steps: + - name: Check out candidate revision + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + fetch-depth: 0 + + - name: Set up uv and Python + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + version: "0.11.31" + python-version: "3.12" + + - name: Test candidate implementation + working-directory: dev-tools/slop-cop + run: | + uv sync --frozen + uv run pytest + uv run ruff check . + uv run ruff format --check . + uv run mypy src tests + uv run slop-cop validate-rules + uv run slop-cop benchmark --repository-root ../.. + uv run slop-cop check \ + --config slop-cop.toml \ + --repository-root ../.. \ + ../../docs/dev-notes/posts/*.md diff --git a/.github/workflows/slop-cop.yml b/.github/workflows/slop-cop.yml index 0edfd9dc..d4032f68 100644 --- a/.github/workflows/slop-cop.yml +++ b/.github/workflows/slop-cop.yml @@ -372,39 +372,3 @@ jobs: if result.get("decision") not in {"pass", "overridden", "not_applicable"}: raise SystemExit(f"Slop Cop decision: {result.get('decision')}") PY - - validate-candidate: - name: Slop Cop / Candidate Tool - if: >- - github.event_name == 'pull_request' || - github.event_name == 'pull_request_review' - runs-on: ubuntu-latest - steps: - - name: Check out candidate revision - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.sha }} - persist-credentials: false - fetch-depth: 0 - - - name: Set up uv and Python - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 - with: - version: "0.11.31" - python-version: "3.12" - - - name: Test candidate implementation - working-directory: dev-tools/slop-cop - run: | - uv sync --frozen - uv run pytest - uv run ruff check . - uv run ruff format --check . - uv run mypy src tests - uv run slop-cop validate-rules - uv run slop-cop benchmark --repository-root ../.. - uv run slop-cop check \ - --config slop-cop.toml \ - --repository-root ../.. \ - ../../docs/dev-notes/posts/*.md diff --git a/dev-tools/slop-cop/docs/ci.md b/dev-tools/slop-cop/docs/ci.md index 7dc309bc..79648a79 100644 --- a/dev-tools/slop-cop/docs/ci.md +++ b/dev-tools/slop-cop/docs/ci.md @@ -8,16 +8,16 @@ artifact and updates one sticky PR comment. Generated reports are not committed. For a pull request, the required analysis runs Slop Cop code, configuration, and dependencies from the PR base revision against the candidate Dev Notes. -Candidate Slop Cop changes are tested separately without credentials and scan -the complete candidate Dev Note corpus as a non-authoritative preview. Candidate -code runs in a separate job and runner; it cannot access or modify the trusted -analysis report. +The separate `Slop Cop candidate` workflow tests candidate Slop Cop changes +without credentials and scans the complete candidate Dev Note corpus as a +non-authoritative preview. Candidate code cannot access or publish artifacts in +the trusted analysis workflow run. The `pull_request` event can use workflow orchestration changed by the pull request. Base-revision analyzer selection does not protect that orchestration by itself. Enforce `.github/workflows/slop-cop.yml` as an organization or repository-ruleset required workflow using its default-branch definition. Add -both Slop Cop workflow files to the repository's protected workflow paths and +all three Slop Cop workflow files to the repository's protected workflow paths and require designated review for changes to them. A branch-protection check name without this ruleset protection does not establish the same boundary. diff --git a/dev-tools/slop-cop/docs/rules.md b/dev-tools/slop-cop/docs/rules.md index ee744ec8..113d2ead 100644 --- a/dev-tools/slop-cop/docs/rules.md +++ b/dev-tools/slop-cop/docs/rules.md @@ -89,9 +89,9 @@ from slop_cop.rules.api import ( RuleContext, RuleEvaluation, RuleMetadata, - RuleRuntime, RuleSignal, ) +from slop_cop.runtime import RuleRuntime METADATA = RuleMetadata( id="custom.repeated-claim-opener", diff --git a/dev-tools/slop-cop/docs/scoring.md b/dev-tools/slop-cop/docs/scoring.md index d00e4b8e..1992f385 100644 --- a/dev-tools/slop-cop/docs/scoring.md +++ b/dev-tools/slop-cop/docs/scoring.md @@ -110,7 +110,7 @@ The current references follow one Dev Note through revision and publication: | Clean technical fixture | 100, pass | 100 | | Legitimate contrast and citation fixture | 95–99, pass | 97 | | Normal technical structure fixture | 100, pass | 100 | -| Dense multi-family fixture | 0–79, fail | 72 | +| Dense multi-family fixture | 0–79, fail | 71 | | Blocking assistant residue fixture | 0, fail | 0 | Historical revisions detect drift against real prose; their chronology is not a diff --git a/dev-tools/slop-cop/src/slop_cop/document.py b/dev-tools/slop-cop/src/slop_cop/document.py index a3a1ef0f..40413eb5 100644 --- a/dev-tools/slop-cop/src/slop_cop/document.py +++ b/dev-tools/slop-cop/src/slop_cop/document.py @@ -14,6 +14,10 @@ from slop_cop.config import MAX_SOURCE_BYTES, ContextConfig, RuleId, StrictModel _FENCE_OPEN = re.compile(r"^( {0,3})(`{3,}|~{3,})[^\r\n]*(?:\r?\n|$)", re.MULTILINE) +_BLOCK_INTERRUPT = re.compile( + r"^(?: {4}|\t| {0,3}(?:#{1,6}(?:\s|$)|[-+*]\s|\d+[.)]\s|`{3,}|~{3,}|" + r"(?:\*\s*){3,}$|(?:-\s*){3,}$|(?:_\s*){3,}$|<[/!?A-Za-z]))" +) _SUPPRESSION = re.compile( r"^[ \t]*[ \t]*(?:\r?\n|$)', @@ -391,21 +395,25 @@ def _add_links_and_images(source: str, ranges: list[tuple[int, int, str]]) -> No def _add_blockquotes(source: str, ranges: list[tuple[int, int, str]]) -> None: active = False + lazy_continuation = False start = end = 0 for line in re.finditer(r"^.*(?:\r?\n|$)", source, re.MULTILINE): text = line.group(0).rstrip("\r\n") - quoted = re.match(r"^ {0,3}>", text) is not None + marker = re.match(r"^ {0,3}>[ \t]?", text) blank = not text.strip() - if quoted and not _covered(line.start(), ranges): + if marker is not None and not _covered(line.start(), ranges): if not active: start = line.start() active = True end = line.end() - elif active and not blank: + content = text[marker.end() :] + lazy_continuation = bool(content.strip()) and not _BLOCK_INTERRUPT.match(content) + elif active and lazy_continuation and not blank and not _BLOCK_INTERRUPT.match(text): end = line.end() elif active: ranges.append((start, end, "blockquote")) active = False + lazy_continuation = False if active: ranges.append((start, end, "blockquote")) diff --git a/dev-tools/slop-cop/src/slop_cop/engine.py b/dev-tools/slop-cop/src/slop_cop/engine.py index 682f9c5e..95841e7b 100644 --- a/dev-tools/slop-cop/src/slop_cop/engine.py +++ b/dev-tools/slop-cop/src/slop_cop/engine.py @@ -143,6 +143,9 @@ def deduplicate_findings( ) -> tuple[Finding, ...]: order = {configured.metadata.id: configured.order for configured in registry} policies = {configured.metadata.id: configured.policy for configured in registry} + priorities = { + configured.metadata.id: configured.metadata.overlap_priority for configured in registry + } values = list(findings) parent = list(range(len(values))) @@ -189,6 +192,7 @@ def span_length(finding: Finding) -> int: values[index].suppressed, not values[index].blocking, severity_rank[values[index].severity], + -priorities[values[index].rule_id], policies[values[index].rule_id].fixed_allowance, -policies[values[index].rule_id].first_cost, order.get(values[index].rule_id, 1_000_000), diff --git a/dev-tools/slop-cop/src/slop_cop/rules/api.py b/dev-tools/slop-cop/src/slop_cop/rules/api.py index 51ae0b17..0b9dccf5 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/api.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/api.py @@ -84,6 +84,7 @@ class RuleMetadata(BaseModel): execution_kind: Literal["local", "external"] = "local" services: tuple[str, ...] = () score_group: str | None = Field(default=None, max_length=120) + overlap_priority: int = Field(default=0, ge=0, le=100) @model_validator(mode="after") def validate_metadata(self) -> RuleMetadata: diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py index f7ab6dbc..11843a13 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/_helpers.py @@ -12,6 +12,7 @@ def phrase_rule( advice: str, *phrases: str, score_group: str | None = None, + overlap_priority: int = 0, ) -> PhraseRule: return PhraseRule( RuleMetadata( @@ -21,6 +22,7 @@ def phrase_rule( rationale=rationale, advice=advice, score_group=score_group, + overlap_priority=overlap_priority, ), tuple(phrases), ) @@ -35,6 +37,7 @@ def regex_rule( pattern: str, *, score_group: str | None = None, + overlap_priority: int = 0, flags: tuple[str, ...] = ("IGNORECASE",), ) -> RegexRule: return RegexRule( @@ -45,6 +48,7 @@ def regex_rule( rationale=rationale, advice=advice, score_group=score_group, + overlap_priority=overlap_priority, ), pattern, flags, diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py index f956386a..8fa473ac 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py @@ -4,7 +4,7 @@ from slop_cop.rules.api import FunctionRule, RuleContext, RuleEvaluation, RuleMetadata, RuleSignal -_CITATION = regex.compile(r"\[[^\]\n]+\](?:\([^\n)]+\)|\[[^\]\n]*\])") +_CITATION = regex.compile(r"(? FunctionRule: compiled = regex.compile(pattern, regex.IGNORECASE) def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: signals: list[RuleSignal] = [] for match in compiled.finditer(context.projected_prose): - paragraph = next( - item for item in context.paragraphs if item.start <= match.start() < item.end + sentence = next( + item for item in context.sentences if item.start <= match.start() < item.end ) - if _CITATION.search(context.source[paragraph.start : paragraph.end]): + citation_end = min(sentence.end, match.end() + citation_distance) + if _CITATION.search(context.source[match.end() : citation_end]): continue signals.append(RuleSignal(start=match.start(), end=match.end(), key=rule_id)) return RuleEvaluation(signals=tuple(signals)) @@ -47,6 +49,7 @@ def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: "Name and link the relevant source or make the claim in the author's voice.", r"\b(?:experts|researchers|industry leaders|many observers|critics)\s+" r"(?:say|believe|agree|argue|suggest|warn)\b", + 120, ), _rule( "attribution.citationless-study", @@ -55,5 +58,6 @@ def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: "Name and link the study or describe the evidence directly.", r"\b(?:a|one|recent|new)\s+(?:study|report|survey|analysis)\s+" r"(?:shows?|finds?|found|suggests?|indicates?)\b", + 160, ), ) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py index e1d53877..b60965d4 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py @@ -160,7 +160,13 @@ def _question_answer(context: RuleContext) -> list[RuleSignal]: def _rule( - rule_id: str, title: str, rationale: str, advice: str, detector: Detector + rule_id: str, + title: str, + rationale: str, + advice: str, + detector: Detector, + *, + overlap_priority: int = 0, ) -> FunctionRule: def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: return RuleEvaluation(signals=tuple(detector(context))) @@ -173,6 +179,7 @@ def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: rationale=rationale, advice=advice, score_group=detector.__name__.removeprefix("_"), + overlap_priority=overlap_priority, ), evaluate, ) @@ -199,6 +206,7 @@ def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: "The same rhetorical construction recurs several times.", "State the claims with structures suited to their content.", _template_shape, + overlap_priority=20, ), _rule( "repetition.emphatic-fragments", diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py index 9c32410c..24c4cebb 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/rhetoric.py @@ -20,6 +20,7 @@ "Name the broader property directly when the contrast adds little.", r"\bnot\s+just\b", score_group="contrast", + overlap_priority=10, ), regex_rule( "rhetoric.no-no", diff --git a/dev-tools/slop-cop/tests/rule_cases.toml b/dev-tools/slop-cop/tests/rule_cases.toml index cbc70b58..6c86540c 100644 --- a/dev-tools/slop-cop/tests/rule_cases.toml +++ b/dev-tools/slop-cop/tests/rule_cases.toml @@ -263,6 +263,24 @@ rule_id = "attribution.vague-authority" kind = "positive" source = "Experts say this pattern is safe.\n\nThe separate API is documented in the [manual](https://example.test/manual)." +[[case]] +name = "vague-authority-distant-same-paragraph-link" +rule_id = "attribution.vague-authority" +kind = "positive" +source = "Experts say this pattern is safe, although the claim has no identified source and the intervening discussion describes unrelated implementation details at length before eventually linking the [API manual](https://example.test/manual)." + +[[case]] +name = "vague-authority-preceding-link" +rule_id = "attribution.vague-authority" +kind = "positive" +source = "The [API manual](https://example.test/manual) is unrelated; experts say this pattern is safe." + +[[case]] +name = "vague-authority-nearby-image" +rule_id = "attribution.vague-authority" +kind = "positive" +source = "Experts say this pattern is safe ![architecture](diagram.svg)." + [[case]] name = "citationless-study-positive" rule_id = "attribution.citationless-study" diff --git a/dev-tools/slop-cop/tests/test_cli.py b/dev-tools/slop-cop/tests/test_cli.py index 8f7750d5..e115051a 100644 --- a/dev-tools/slop-cop/tests/test_cli.py +++ b/dev-tools/slop-cop/tests/test_cli.py @@ -152,8 +152,9 @@ def test_explain_unknown_rule_is_an_input_error(capsys: pytest.CaptureFixture[st def test_workflow_preserves_renamed_baselines_and_has_stdlib_error_report() -> None: workflow = (REPOSITORY / ".github/workflows/slop-cop.yml").read_text(encoding="utf-8") - authoritative_job = workflow.split(" analyze:", 1)[1].split(" validate-candidate:", 1)[0] - candidate_job = workflow.split(" validate-candidate:", 1)[1] + candidate_workflow = (REPOSITORY / ".github/workflows/slop-cop-candidate.yml").read_text( + encoding="utf-8" + ) fallback = workflow.split("Create an error report after an early analysis failure", 1)[1] fallback = fallback.split("Add bounded annotations and job summary", 1)[0] assert "previous_filename" in workflow @@ -162,9 +163,9 @@ def test_workflow_preserves_renamed_baselines_and_has_stdlib_error_report() -> N assert "from slop_cop" not in fallback assert "json.dumps(result" in fallback assert "html.escape(message)" in fallback - assert "Test candidate implementation" not in authoritative_job - assert "working-directory: dev-tools/slop-cop" in candidate_job - assert "${{ runner.temp }}/slop-cop-report" not in candidate_job + assert "Test candidate implementation" not in workflow + assert "working-directory: dev-tools/slop-cop" in candidate_workflow + assert "slop-cop-pr-" not in candidate_workflow def test_trusted_reporter_revalidates_override_and_uses_pr_head() -> None: diff --git a/dev-tools/slop-cop/tests/test_document.py b/dev-tools/slop-cop/tests/test_document.py index 122e7cc5..04e04067 100644 --- a/dev-tools/slop-cop/tests/test_document.py +++ b/dev-tools/slop-cop/tests/test_document.py @@ -53,6 +53,21 @@ def test_indented_code_and_lazy_blockquote_continuations_are_masked() -> None: assert any("blockquote" in item.reasons for item in document.masked_ranges) +@pytest.mark.parametrize( + "source", + [ + "> # Quoted heading\nAs an AI language model, this is outside prose.\n", + "> Quoted paragraph.\n# As an AI language model, this heading is outside.\n", + "> - Quoted list item\nAs an AI language model, this is outside prose.\n", + "> Quoted paragraph.\n---\nAs an AI language model, this is outside prose.\n", + ], +) +def test_completed_blockquotes_do_not_mask_following_blocks(source: str) -> None: + document = build_document("note.md", source) + + assert "As an AI language model" in document.prose_projection + + def test_segments_retain_exact_source_offsets_and_unicode_keys() -> None: source = "# Heading\n\nCafé’s source-aware token. Next sentence!\n" document = build_document("note.md", source) diff --git a/dev-tools/slop-cop/tests/test_engine.py b/dev-tools/slop-cop/tests/test_engine.py index 31abf488..991b38b2 100644 --- a/dev-tools/slop-cop/tests/test_engine.py +++ b/dev-tools/slop-cop/tests/test_engine.py @@ -50,6 +50,34 @@ def test_compound_contrast_cannot_erase_not_just_cost() -> None: assert [finding.rule_id for finding in charged] == ["rhetoric.not-just"] +def test_repeated_compound_contrast_preserves_template_cost() -> None: + simple = _analyze( + "\n\n".join( + ( + "This is not a wrapper, but a policy boundary.", + "This is not a proxy, but an enforcement point.", + "This is not a suggestion, but a required check.", + ) + ) + ) + with_just = _analyze( + "\n\n".join( + ( + "This is not just a wrapper, but a policy boundary.", + "This is not just a proxy, but an enforcement point.", + "This is not just a suggestion, but a required check.", + ) + ) + ) + + assert with_just.score is not None and simple.score is not None + assert with_just.score <= simple.score + template_cost = next( + cost for cost in with_just.rule_costs if cost.rule_id == "repetition.template-shape" + ) + assert template_cost.charged_cost > 0 + + def test_ignore_next_suppresses_only_the_target_block() -> None: source = ( '\n' From fab9a6d7e96927544fc863795c77807814d14dc9 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Mon, 10 Aug 2026 22:45:57 +0000 Subject: [PATCH 05/13] Bind trusted reports and parser contexts --- .github/workflows/slop-cop-report.yml | 9 +++++++++ dev-tools/slop-cop/src/slop_cop/document.py | 8 +++++--- .../src/slop_cop/rules/builtins/attribution.py | 10 +++++++++- dev-tools/slop-cop/tests/rule_cases.toml | 12 ++++++++++++ dev-tools/slop-cop/tests/test_cli.py | 3 +++ dev-tools/slop-cop/tests/test_document.py | 3 +++ 6 files changed, 41 insertions(+), 4 deletions(-) diff --git a/.github/workflows/slop-cop-report.yml b/.github/workflows/slop-cop-report.yml index 11ca9978..76919218 100644 --- a/.github/workflows/slop-cop-report.yml +++ b/.github/workflows/slop-cop-report.yml @@ -29,6 +29,15 @@ jobs: with: script: | const run = context.payload.workflow_run; + const { data: trustedWorkflow } = await github.rest.actions.getWorkflow({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: '.github/workflows/slop-cop.yml', + }); + if (run.workflow_id !== trustedWorkflow.id || run.path !== trustedWorkflow.path) { + core.setFailed('Workflow run did not originate from the authoritative Slop Cop workflow.'); + return; + } const { data } = await github.rest.actions.listWorkflowRunArtifacts({ owner: context.repo.owner, repo: context.repo.repo, diff --git a/dev-tools/slop-cop/src/slop_cop/document.py b/dev-tools/slop-cop/src/slop_cop/document.py index 40413eb5..71dea8af 100644 --- a/dev-tools/slop-cop/src/slop_cop/document.py +++ b/dev-tools/slop-cop/src/slop_cop/document.py @@ -406,7 +406,9 @@ def _add_blockquotes(source: str, ranges: list[tuple[int, int, str]]) -> None: start = line.start() active = True end = line.end() - content = text[marker.end() :] + content = text + while (nested := re.match(r"^ {0,3}>[ \t]?", content)) is not None: + content = content[nested.end() :] lazy_continuation = bool(content.strip()) and not _BLOCK_INTERRUPT.match(content) elif active and lazy_continuation and not blank and not _BLOCK_INTERRUPT.match(text): end = line.end() @@ -611,6 +613,8 @@ def build_document( ranges: list[tuple[int, int, str]] = [] front_matter = _add_front_matter(source, ranges) _add_generated_ranges(source, ranges) + if not effective_contexts.scan_blockquotes: + _add_blockquotes(source, ranges) _add_fenced_code(source, ranges) _add_indented_code(source, ranges) parsed_suppressions = _add_suppressions(source, ranges) @@ -618,8 +622,6 @@ def build_document( _add_inline_code(source, ranges) _add_html_tags(source, ranges) _add_links_and_images(source, ranges) - if not effective_contexts.scan_blockquotes: - _add_blockquotes(source, ranges) _add_disabled_visible_contexts(source, ranges, effective_contexts) masked = _merge_ranges(source, ranges) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py index 8fa473ac..4af5030d 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py @@ -24,7 +24,15 @@ def evaluate(context: RuleContext, runtime: object) -> RuleEvaluation: item for item in context.sentences if item.start <= match.start() < item.end ) citation_end = min(sentence.end, match.end() + citation_distance) - if _CITATION.search(context.source[match.end() : citation_end]): + citations = _CITATION.finditer(context.source, match.end(), citation_end) + if any( + any( + masked.start <= citation.start() < masked.end + and set(masked.reasons) == {"link-markup"} + for masked in context.document.masked_ranges + ) + for citation in citations + ): continue signals.append(RuleSignal(start=match.start(), end=match.end(), key=rule_id)) return RuleEvaluation(signals=tuple(signals)) diff --git a/dev-tools/slop-cop/tests/rule_cases.toml b/dev-tools/slop-cop/tests/rule_cases.toml index 6c86540c..5c3a7298 100644 --- a/dev-tools/slop-cop/tests/rule_cases.toml +++ b/dev-tools/slop-cop/tests/rule_cases.toml @@ -281,6 +281,18 @@ rule_id = "attribution.vague-authority" kind = "positive" source = "Experts say this pattern is safe ![architecture](diagram.svg)." +[[case]] +name = "vague-authority-code-link" +rule_id = "attribution.vague-authority" +kind = "positive" +source = "Experts say this pattern is safe `[unrelated](https://example.test)`." + +[[case]] +name = "vague-authority-comment-link" +rule_id = "attribution.vague-authority" +kind = "positive" +source = "Experts say this pattern is safe ." + [[case]] name = "citationless-study-positive" rule_id = "attribution.citationless-study" diff --git a/dev-tools/slop-cop/tests/test_cli.py b/dev-tools/slop-cop/tests/test_cli.py index e115051a..9e38a044 100644 --- a/dev-tools/slop-cop/tests/test_cli.py +++ b/dev-tools/slop-cop/tests/test_cli.py @@ -177,3 +177,6 @@ def test_trusted_reporter_revalidates_override_and_uses_pr_head() -> None: assert "report.head_sha !== run.head_sha" not in workflow assert "run.pull_requests.length !== 1" in workflow assert ".replaceAll('@', '@')" in workflow + assert "github.rest.actions.getWorkflow" in workflow + assert "run.workflow_id !== trustedWorkflow.id" in workflow + assert "run.path !== trustedWorkflow.path" in workflow diff --git a/dev-tools/slop-cop/tests/test_document.py b/dev-tools/slop-cop/tests/test_document.py index 04e04067..27a96735 100644 --- a/dev-tools/slop-cop/tests/test_document.py +++ b/dev-tools/slop-cop/tests/test_document.py @@ -60,6 +60,9 @@ def test_indented_code_and_lazy_blockquote_continuations_are_masked() -> None: "> Quoted paragraph.\n# As an AI language model, this heading is outside.\n", "> - Quoted list item\nAs an AI language model, this is outside prose.\n", "> Quoted paragraph.\n---\nAs an AI language model, this is outside prose.\n", + "> > # Nested quoted heading\nAs an AI language model, this is outside prose.\n", + "> > - Nested quoted list\nAs an AI language model, this is outside prose.\n", + "> > ```text\nAs an AI language model, this is outside prose.\n", ], ) def test_completed_blockquotes_do_not_mask_following_blocks(source: str) -> None: From 599cdb3c7f7b81f04a957dfe62e5b5e97d0e2132 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Mon, 10 Aug 2026 22:49:22 +0000 Subject: [PATCH 06/13] Resolve citation and quoted code contexts --- dev-tools/slop-cop/src/slop_cop/document.py | 30 ++++++++++++++----- .../slop_cop/rules/builtins/attribution.py | 21 +++++++++++-- dev-tools/slop-cop/tests/rule_cases.toml | 8 ++++- dev-tools/slop-cop/tests/test_document.py | 18 +++++++++++ dev-tools/slop-cop/tests/test_rules.py | 20 +++++++++++-- 5 files changed, 83 insertions(+), 14 deletions(-) diff --git a/dev-tools/slop-cop/src/slop_cop/document.py b/dev-tools/slop-cop/src/slop_cop/document.py index 71dea8af..c60b4551 100644 --- a/dev-tools/slop-cop/src/slop_cop/document.py +++ b/dev-tools/slop-cop/src/slop_cop/document.py @@ -13,7 +13,11 @@ from slop_cop.config import MAX_SOURCE_BYTES, ContextConfig, RuleId, StrictModel -_FENCE_OPEN = re.compile(r"^( {0,3})(`{3,}|~{3,})[^\r\n]*(?:\r?\n|$)", re.MULTILINE) +_FENCE_OPEN = re.compile( + r"^(?P(?: {0,3}>[ \t]?)*)(?P {0,3})" + r"(?P`{3,}|~{3,})[^\r\n]*(?:\r?\n|$)", + re.MULTILINE, +) _BLOCK_INTERRUPT = re.compile( r"^(?: {4}|\t| {0,3}(?:#{1,6}(?:\s|$)|[-+*]\s|\d+[.)]\s|`{3,}|~{3,}|" r"(?:\*\s*){3,}$|(?:-\s*){3,}$|(?:_\s*){3,}$|<[/!?A-Za-z]))" @@ -134,6 +138,14 @@ def _covered(offset: int, ranges: list[tuple[int, int, str]]) -> bool: return any(start <= offset < end for start, end, _ in ranges) +def _strip_blockquote_markers(text: str) -> tuple[str, int]: + depth = 0 + while (marker := re.match(r"^ {0,3}>[ \t]?", text)) is not None: + text = text[marker.end() :] + depth += 1 + return text, depth + + def _add_front_matter( source: str, ranges: list[tuple[int, int, str]] ) -> tuple[tuple[str, str], ...]: @@ -190,9 +202,12 @@ def _add_fenced_code(source: str, ranges: list[tuple[int, int, str]]) -> None: cursor = match.end() if _covered(match.start(), ranges): continue - fence = match.group(2) + fence = match.group("fence") + quote_depth = match.group("quote").count(">") closer = re.compile( - rf"^ {{0,3}}{re.escape(fence[0])}{{{len(fence)},}}[ \t]*(?:\r?\n|$)", re.MULTILINE + rf"^(?: {{0,3}}>[ \t]?){{{quote_depth}}} {{0,3}}" + rf"{re.escape(fence[0])}{{{len(fence)},}}[ \t]*(?:\r?\n|$)", + re.MULTILINE, ).search(source, match.end()) if closer is None: raise ProjectionError("unterminated fenced code block", source, match.start()) @@ -208,8 +223,9 @@ def _add_indented_code(source: str, ranges: list[tuple[int, int, str]]) -> None: previous_blank = True for line in lines: text = line.group(0).rstrip("\r\n") - blank = not text.strip() - indented = text.startswith(" ") or text.startswith("\t") + content, _ = _strip_blockquote_markers(text) + blank = not content.strip() + indented = content.startswith(" ") or content.startswith("\t") if in_block: if indented or blank: block_end = line.end() @@ -406,9 +422,7 @@ def _add_blockquotes(source: str, ranges: list[tuple[int, int, str]]) -> None: start = line.start() active = True end = line.end() - content = text - while (nested := re.match(r"^ {0,3}>[ \t]?", content)) is not None: - content = content[nested.end() :] + content, _ = _strip_blockquote_markers(text) lazy_continuation = bool(content.strip()) and not _BLOCK_INTERRUPT.match(content) elif active and lazy_continuation and not blank and not _BLOCK_INTERRUPT.match(text): end = line.end() diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py index 4af5030d..f624db28 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/attribution.py @@ -4,7 +4,15 @@ from slop_cop.rules.api import FunctionRule, RuleContext, RuleEvaluation, RuleMetadata, RuleSignal -_CITATION = regex.compile(r"(?[^\]\n]+)\]" + r"(?:\((?P[^\n)]+)\)|\[(?P[^\]\n]*)\])" +) +_REFERENCE_DEFINITION = regex.compile(r"^ {0,3}\[(?P
    ") - output.append("") - return "".join(output) + review = ( + f"
    Review {len(values)} match" + f"{'es' if len(values) != 1 else ''}" + f'
      {"".join(matches)}
    ' + ) + sections.append( + '
    ' + f'{_h(rule_id)}' + f'{len(values)} match' + f"{'es' if len(values) != 1 else ''}" + f'{_h(effect)}
    ' + + (f'

    {_h(advice)}

    ' if advice else "") + + review + + "
    " + ) + return ( + f'
    Unscored signals ({len(findings)} across ' + f'{len(groups)} rules; no score effect)
    ' + f"{''.join(sections)}
    " + ) def _render_comparison(item: Mapping[str, Any]) -> str: @@ -503,6 +686,14 @@ def _findings(item: Mapping[str, Any]) -> list[dict[str, Any]]: return _items(item.get("findings")) +def _charged_rule_ids(item: Mapping[str, Any]) -> set[str]: + return { + _text(rule.get("rule_id")) + for rule in _items(item.get("rule_costs")) + if _number(rule.get("charged_cost")) + } + + def _category_rows(item: Mapping[str, Any]) -> list[tuple[str, Any]]: rows = _items(item.get("category_costs")) return [ @@ -511,6 +702,7 @@ def _category_rows(item: Mapping[str, Any]) -> list[tuple[str, Any]]: row.get("charged_cost", 0), ) for row in rows + if _number(row.get("charged_cost")) ] @@ -525,12 +717,6 @@ def _delta(head: Any, base: Any) -> int | float | None: return None -def _count_findings(data: Mapping[str, Any], field: str) -> int: - return sum( - 1 for item in _items(data.get("files")) for finding in _findings(item) if finding.get(field) - ) - - def _finding_location(path: str, finding: Mapping[str, Any]) -> str: line = finding.get("line") column = finding.get("column") @@ -603,7 +789,7 @@ def _logo_data_uri() -> str: _STYLE = """ :root { color-scheme: light dark; font-family: ui-sans-serif, system-ui, sans-serif; } body { margin: 0; background: Canvas; color: CanvasText; } -main { max-width: 76rem; margin: auto; padding: 2rem; } +main { max-width: 72rem; margin: auto; padding: 1.5rem 2rem 3rem; } header, section, article, footer { margin-block: 1.5rem; } .report-heading { display: flex; align-items: center; gap: 1rem; } .report-heading h1 { margin-block: .25rem; } @@ -612,29 +798,79 @@ def _logo_data_uri() -> str: border-top: 2px solid color-mix(in srgb, CanvasText 25%, transparent); padding-top: 1rem; } +.file-heading { font-size: clamp(1.2rem, 2.4vw, 1.65rem); overflow-wrap: anywhere; } +.interpretation { + max-width: 52rem; margin-block: 1rem; padding: .75rem 1rem; + border-left: .25rem solid #5272b8; + background: color-mix(in srgb, #5272b8 10%, Canvas); +} .eyebrow { font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } .status { display: inline-block; padding: .35rem .65rem; border-radius: .25rem; font-weight: 800; } .pass { background: #176b3a; color: white; } .fail { background: #a12d2d; color: white; } .override { background: #6d4d00; color: white; } section.override { padding: 1rem; } -.summary { display: flex; flex-wrap: wrap; gap: .75rem 2rem; } -.summary div { min-width: 10rem; } +.summary { display: flex; flex-wrap: wrap; gap: .65rem; } +.summary div { + min-width: 8rem; padding: .65rem .8rem; border-radius: .4rem; + background: color-mix(in srgb, CanvasText 6%, Canvas); +} dt { font-size: .85rem; opacity: .75; } dd { margin: .2rem 0 0; font-weight: 650; } .table-wrap { overflow-x: auto; } table { border-collapse: collapse; width: 100%; } th, td { border-bottom: 1px solid color-mix(in srgb, CanvasText 20%, transparent); - padding: .55rem; text-align: left; vertical-align: top; + padding: .5rem .6rem; text-align: left; vertical-align: top; } +thead th { font-size: .8rem; opacity: .75; text-transform: uppercase; letter-spacing: .04em; } +.deductions { margin-block: 1.25rem; } +.finding-list { display: grid; gap: .8rem; } +.finding { + border: 1px solid color-mix(in srgb, CanvasText 18%, transparent); + border-left: .3rem solid #a12d2d; border-radius: .35rem; padding: .8rem 1rem; +} +.finding p { margin-block: .5rem; } +.finding-heading { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .75rem; } +.rule-id { font-weight: 750; } +.location { font-size: .9rem; opacity: .72; } +.badge { + margin-left: auto; padding: .15rem .45rem; border-radius: 999px; + background: #a12d2d; color: white; font-size: .75rem; font-weight: 800; + text-transform: uppercase; letter-spacing: .04em; +} +.context { + margin: .7rem 0; padding: .7rem .85rem; border-left: .2rem solid #d0a000; + background: color-mix(in srgb, #d0a000 9%, Canvas); line-height: 1.55; +} +.compact-matches { margin: .6rem 0; padding-left: 1.25rem; } +.compact-matches li + li { margin-top: .65rem; } +.compact-matches .context { margin: .25rem 0; } +.signal-groups { display: grid; gap: .65rem; margin-top: .75rem; } +.signal-group { + margin: 0; padding: .7rem .85rem; border-radius: .35rem; + border: 1px solid color-mix(in srgb, CanvasText 16%, transparent); +} +.signal-heading { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .75rem; } +.signal-count { font-size: .85rem; opacity: .72; } +.signal-effect { + margin-left: auto; font-size: .75rem; font-weight: 750; + text-transform: uppercase; letter-spacing: .04em; +} +.signal-advice { margin: .45rem 0; opacity: .8; } +.rationale { opacity: .82; } +.quiet { opacity: .75; } +.advisories summary { color: color-mix(in srgb, CanvasText 80%, #5272b8); } pre { overflow-x: auto; padding: .75rem; background: color-mix(in srgb, CanvasText 7%, Canvas); white-space: pre-wrap; } .source { white-space: pre; } mark { background: #ffe66d; color: #171717; } -.points { white-space: nowrap; } -.findings > li { margin-block: 1rem; } details { margin-block: 1rem; } summary { cursor: pointer; font-weight: 700; } .errors { border-left: .35rem solid #a12d2d; padding-left: 1rem; } code { overflow-wrap: anywhere; } +@media (max-width: 42rem) { + main { padding: 1rem; } + .report-logo { width: 4.5rem; height: 4.5rem; } + .badge { margin-left: 0; } +} """ diff --git a/dev-tools/slop-cop/tests/test_cli.py b/dev-tools/slop-cop/tests/test_cli.py index da33d198..dc2002ee 100644 --- a/dev-tools/slop-cop/tests/test_cli.py +++ b/dev-tools/slop-cop/tests/test_cli.py @@ -257,6 +257,7 @@ def test_workflow_preserves_renamed_baselines_and_has_stdlib_error_report() -> N assert "Test candidate implementation" not in workflow assert "working-directory: dev-tools/slop-cop" in candidate_workflow assert "slop-cop-pr-" not in candidate_workflow + assert "chargedRuleIds.has(finding.rule_id)" in workflow def test_trusted_reporter_revalidates_override_and_uses_pr_head() -> None: @@ -272,3 +273,4 @@ def test_trusted_reporter_revalidates_override_and_uses_pr_head() -> None: assert "run.workflow_id !== trustedWorkflow.id" in workflow assert "run.path !== trustedWorkflow.path" in workflow assert "Override requires a completed policy failure." in workflow + assert "chargedRuleIds.has(finding.rule_id)" in workflow diff --git a/dev-tools/slop-cop/tests/test_engine.py b/dev-tools/slop-cop/tests/test_engine.py index 2f845a39..ab436525 100644 --- a/dev-tools/slop-cop/tests/test_engine.py +++ b/dev-tools/slop-cop/tests/test_engine.py @@ -40,14 +40,18 @@ def test_overlap_charges_one_primary_finding() -> None: assert any(finding.related_rule_ids for finding in overlapping) -def test_compound_contrast_cannot_erase_not_just_cost() -> None: +def test_single_contrast_stays_within_the_document_allowance() -> None: standalone = _analyze("This is not just a wrapper.") compound = _analyze("This is not just a wrapper, but a policy boundary.") - assert standalone.score == 97 + assert standalone.score == 100 assert compound.score == standalone.score - charged = [finding for finding in compound.findings if finding.chargeable] - assert [finding.rule_id for finding in charged] == ["rhetoric.not-just"] + cost = next(cost for cost in compound.rule_costs if cost.rule_id == "rhetoric.not-just") + assert cost.charged_cost == 0 + match = next( + finding for finding in standalone.findings if finding.rule_id == "rhetoric.not-just" + ) + assert match.excerpt == "not just" def test_repeated_compound_contrast_preserves_template_cost() -> None: diff --git a/dev-tools/slop-cop/tests/test_report.py b/dev-tools/slop-cop/tests/test_report.py index d2e3b681..fb6f54aa 100644 --- a/dev-tools/slop-cop/tests/test_report.py +++ b/dev-tools/slop-cop/tests/test_report.py @@ -4,6 +4,7 @@ import json import re from pathlib import Path +from typing import Any, cast import pytest @@ -78,7 +79,7 @@ def sample_result() -> dict[str, object]: "category": "rhetoric", "severity": "warning", "source_path": "docs/dev-notes/posts/example.md", - "span": {"start": 40, "end": 48}, + "span": {"start": 41, "end": 49}, "line": 1, "column": 40, "excerpt": "", @@ -142,10 +143,14 @@ def test_html_report_is_self_contained_and_escapes_all_result_text() -> None: assert "" not in rendered assert "<script>alert(1)</script>" in rendered assert "" not in rendered - assert "<img src=x onerror=alert(1)>" in rendered + fallback = html_report(sample_result()) + assert "<img src=x onerror=alert(1)>" in fallback assert "https://" not in rendered assert "External rule audit" in rendered assert "Passage density" in rendered + assert "not just" in rendered + assert "note that is not just vague." in rendered + assert "chargeable signal" not in rendered def test_html_report_embeds_the_logo() -> None: @@ -157,6 +162,33 @@ def test_html_report_embeds_the_logo() -> None: assert len(logo) > 1_000_000 +def test_html_report_separates_allowed_signals_from_score_deductions() -> None: + result = sample_result() + file_result = cast(list[dict[str, Any]], result["files"])[0] + file_result["score"] = 100 + file_result["decision"] = "pass" + rule_cost = cast(list[dict[str, Any]], file_result["rule_costs"])[0] + rule_cost["charged_cost"] = 0 + rule_cost["base_cost"] = 0 + density = cast(dict[str, Any], rule_cost["density"]) + density["cost"] = 0 + density["peak_excess"] = 0 + cast(list[dict[str, Any]], file_result["category_costs"])[0]["charged_cost"] = 0 + result["score"] = 100 + result["decision"] = "pass" + source = "A note that is not just vague." + + rendered = html_report(result, sources={"docs/dev-notes/posts/example.md": source}) + + assert "Score deductions

    None." in rendered + assert "Unscored signals (1 across 1 rules; no score effect)" in rendered + assert "Within allowance" in rendered + assert "No findings affect the score." in rendered + terminal = terminal_report(result) + assert "unscored signals: within_allowance=1 advisory=0 suppressed=0" in terminal + assert "[rhetoric.not-just]" not in terminal + + def test_report_directory_contains_canonical_pair(tmp_path: Path) -> None: html_path, json_path = write_report_directory(sample_result(), tmp_path / "artifact") assert html_path.name == "index.html" From 3f1fe158063ae6b7f094da33228e2cda0c08387f Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Tue, 11 Aug 2026 01:02:57 +0000 Subject: [PATCH 11/13] Handle Markdown and HTML analysis contexts --- dev-tools/slop-cop/docs/rules.md | 9 ++ dev-tools/slop-cop/src/slop_cop/cli.py | 9 +- dev-tools/slop-cop/src/slop_cop/document.py | 88 +++++++++++++++++-- dev-tools/slop-cop/src/slop_cop/engine.py | 4 +- dev-tools/slop-cop/src/slop_cop/report.py | 81 +++++++++++++---- dev-tools/slop-cop/src/slop_cop/rules/api.py | 24 ++++- .../src/slop_cop/rules/builtins/repetition.py | 23 ++--- .../src/slop_cop/rules/builtins/structure.py | 8 +- dev-tools/slop-cop/tests/test_document.py | 32 +++++++ dev-tools/slop-cop/tests/test_report.py | 25 ++++++ dev-tools/slop-cop/tests/test_rules.py | 22 ++++- 11 files changed, 281 insertions(+), 44 deletions(-) diff --git a/dev-tools/slop-cop/docs/rules.md b/dev-tools/slop-cop/docs/rules.md index 113d2ead..bc36efe5 100644 --- a/dev-tools/slop-cop/docs/rules.md +++ b/dev-tools/slop-cop/docs/rules.md @@ -141,6 +141,15 @@ suppressions, scoring, and reporting. The custom evaluator only returns bounded signals and optional audit data. It cannot set the score, threshold, decision, or override state. +`context.projected_prose`, `context.tokens`, `context.sentences`, and +`context.paragraphs` contain reader-visible prose with code, comments, link +destinations, image alt text, and HTML tag attributes removed. Repetition rules +should use `context.repetition_prose`, `context.repetition_tokens`, +`context.repetition_sentences`, and `context.repetition_paragraphs`. That view +also removes headings, link labels, and figure captions, where repeated wording +is commonly structural or descriptive. Both views preserve source length and +line endings, so returned spans use the original source offsets. + Add positive and counterexample entries to `tests/rule_cases.toml`. The shared contract suite validates IDs, metadata, result bounds, spans, ordering, and fixture coverage for built-in, declarative, and custom rules. diff --git a/dev-tools/slop-cop/src/slop_cop/cli.py b/dev-tools/slop-cop/src/slop_cop/cli.py index 10ade97c..1d88f3dd 100644 --- a/dev-tools/slop-cop/src/slop_cop/cli.py +++ b/dev-tools/slop-cop/src/slop_cop/cli.py @@ -341,9 +341,11 @@ async def _check(args: argparse.Namespace) -> int: baseline_root = args.baseline_root.resolve(strict=True) if args.baseline_root else None tasks = [] sources: dict[str, str] = {} + projections: dict[str, str] = {} for logical, physical in resolved: document = _load_head_document(config, logical, physical) sources[logical] = document.source + projections[logical] = document.prose_projection base = _load_base_document( config, logical, @@ -396,7 +398,12 @@ async def _check(args: argparse.Namespace) -> int: ) sys.stdout.write(terminal_report(result)) if args.html_dir: - write_report_directory(result, args.html_dir, sources=sources) + write_report_directory( + result, + args.html_dir, + sources=sources, + projections=projections, + ) if args.json_path: write_json_report(result, args.json_path) return EXIT_OK if result.decision in {Decision.PASS, Decision.OVERRIDDEN} else EXIT_POLICY diff --git a/dev-tools/slop-cop/src/slop_cop/document.py b/dev-tools/slop-cop/src/slop_cop/document.py index c60b4551..8c4b7b03 100644 --- a/dev-tools/slop-cop/src/slop_cop/document.py +++ b/dev-tools/slop-cop/src/slop_cop/document.py @@ -85,6 +85,7 @@ class Document(StrictModel): path: str = Field(min_length=1, max_length=4_096) source: str prose_projection: str + repetition_projection: str line_starts: tuple[int, ...] front_matter: tuple[tuple[str, str], ...] = () masked_ranges: tuple[MaskedRange, ...] @@ -92,15 +93,22 @@ class Document(StrictModel): tokens: tuple[ProseSegment, ...] sentences: tuple[ProseSegment, ...] paragraphs: tuple[ProseSegment, ...] + repetition_tokens: tuple[ProseSegment, ...] + repetition_sentences: tuple[ProseSegment, ...] + repetition_paragraphs: tuple[ProseSegment, ...] metrics: DocumentMetrics @model_validator(mode="after") def validate_projection(self) -> Document: if len(self.source) != len(self.prose_projection): raise ValueError("prose projection must have the same length as source") + if len(self.source) != len(self.repetition_projection): + raise ValueError("repetition projection must have the same length as source") for index, character in enumerate(self.source): if character in "\r\n" and self.prose_projection[index] != character: raise ValueError("prose projection must preserve line endings") + if character in "\r\n" and self.repetition_projection[index] != character: + raise ValueError("repetition projection must preserve line endings") if self.line_starts != _line_starts(self.source): raise ValueError("line-start index does not match source") return self @@ -285,6 +293,17 @@ def _add_html_comments(source: str, ranges: list[tuple[int, int, str]]) -> None: cursor = end +def _add_html_nonprose_blocks(source: str, ranges: list[tuple[int, int, str]]) -> None: + opening = r"<(script|style|template|pre|code|svg|math)\b(?:[^>'\"]|'[^']*'|\"[^\"]*\")*>" + for match in re.finditer(opening, source, re.IGNORECASE): + if _covered(match.start(), ranges): + continue + tag = match.group(1) + close = re.search(rf"", source[match.end() :], re.IGNORECASE) + if close is not None: + ranges.append((match.start(), match.end() + close.end(), "html-nonprose")) + + def _add_inline_code(source: str, ranges: list[tuple[int, int, str]]) -> None: cursor = 0 while cursor < len(source): @@ -333,7 +352,7 @@ def _add_html_tags(source: str, ranges: list[tuple[int, int, str]]) -> None: ranges.append((start, end + 1, "html-tag")) cursor = end + 1 break - elif char in "\r\n": + elif char == "<": cursor = start + 1 break end += 1 @@ -361,7 +380,29 @@ def _find_closing_paren(source: str, start: int) -> int | None: return None -def _add_links_and_images(source: str, ranges: list[tuple[int, int, str]]) -> None: +def _find_closing_bracket(source: str, start: int) -> int | None: + depth = 1 + escaped = False + for index in range(start, len(source)): + char = source[index] + if escaped: + escaped = False + elif char == "\\": + escaped = True + elif char == "[": + depth += 1 + elif char == "]": + depth -= 1 + if depth == 0: + return index + return None + + +def _add_links_and_images( + source: str, + ranges: list[tuple[int, int, str]], + repetition_ranges: list[tuple[int, int, str]], +) -> None: reference = re.compile(r"^ {0,3}\[[^\]\r\n]+\]:[^\r\n]*(?:\r?\n|$)", re.MULTILINE) for match in reference.finditer(source): if not _covered(match.start(), ranges): @@ -374,10 +415,14 @@ def _add_links_and_images(source: str, ranges: list[tuple[int, int, str]]) -> No cursor = opener_match.end() if _covered(start, ranges): continue - label_end = source.find("]", opener_match.end()) - if label_end < 0: + label_end = _find_closing_bracket(source, opener_match.end()) + if label_end is None: continue is_image = source[start] == "!" + if is_image: + ranges.append((start, label_end + 1, "image")) + else: + repetition_ranges.append((opener_match.end(), label_end, "repetition-link-label")) if label_end + 1 < len(source) and source[label_end + 1] == "(": close = _find_closing_paren(source, label_end + 2) if close is None: @@ -409,6 +454,27 @@ def _add_links_and_images(source: str, ranges: list[tuple[int, int, str]]) -> No cursor = ref_end + 1 +def _add_repetition_contexts(source: str, ranges: list[tuple[int, int, str]]) -> None: + for match in re.finditer(r"^ {0,3}#{1,6}(?:\s+|$)[^\r\n]*(?:\r?\n|$)", source, re.MULTILINE): + ranges.append((match.start(), match.end(), "repetition-heading")) + for match in re.finditer( + r"^.*(?:\r?\n)(?: {0,3})(?:=+|-+)[ \t]*(?:\r?\n|$)", source, re.MULTILINE + ): + ranges.append((match.start(), match.end(), "repetition-heading")) + for match in re.finditer( + r"'\"]|'[^']*'|\"[^\"]*\")*>(.*?)", + source, + re.IGNORECASE | re.DOTALL, + ): + ranges.append((match.start(1), match.end(1), "repetition-caption")) + for match in re.finditer( + r"'\"]|'[^']*'|\"[^\"]*\")*>(.*?)", + source, + re.IGNORECASE | re.DOTALL, + ): + ranges.append((match.start(1), match.end(1), "repetition-link-label")) + + def _add_blockquotes(source: str, ranges: list[tuple[int, int, str]]) -> None: active = False lazy_continuation = False @@ -625,6 +691,7 @@ def build_document( effective_contexts = contexts or ContextConfig() ranges: list[tuple[int, int, str]] = [] + repetition_ranges: list[tuple[int, int, str]] = [] front_matter = _add_front_matter(source, ranges) _add_generated_ranges(source, ranges) if not effective_contexts.scan_blockquotes: @@ -633,16 +700,23 @@ def build_document( _add_indented_code(source, ranges) parsed_suppressions = _add_suppressions(source, ranges) _add_html_comments(source, ranges) + _add_html_nonprose_blocks(source, ranges) _add_inline_code(source, ranges) _add_html_tags(source, ranges) - _add_links_and_images(source, ranges) + _add_links_and_images(source, ranges, repetition_ranges) _add_disabled_visible_contexts(source, ranges, effective_contexts) + _add_repetition_contexts(source, repetition_ranges) masked = _merge_ranges(source, ranges) projection = _project(source, masked) + repetition_masked = _merge_ranges(source, [*ranges, *repetition_ranges]) + repetition_projection = _project(source, repetition_masked) tokens = _segment_tokens(projection) paragraphs = _segment_paragraphs(projection) sentences = _segment_sentences(projection, paragraphs) + repetition_tokens = _segment_tokens(repetition_projection) + repetition_paragraphs = _segment_paragraphs(repetition_projection) + repetition_sentences = _segment_sentences(repetition_projection, repetition_paragraphs) suppressions = _bind_suppressions(source, projection, parsed_suppressions, paragraphs) masked_count = sum( 1 @@ -662,6 +736,7 @@ def build_document( path=Path(path).as_posix(), source=source, prose_projection=projection, + repetition_projection=repetition_projection, line_starts=_line_starts(source), front_matter=front_matter, masked_ranges=masked, @@ -669,6 +744,9 @@ def build_document( tokens=tokens, sentences=sentences, paragraphs=paragraphs, + repetition_tokens=repetition_tokens, + repetition_sentences=repetition_sentences, + repetition_paragraphs=repetition_paragraphs, metrics=metrics, ) diff --git a/dev-tools/slop-cop/src/slop_cop/engine.py b/dev-tools/slop-cop/src/slop_cop/engine.py index 01702649..67159b70 100644 --- a/dev-tools/slop-cop/src/slop_cop/engine.py +++ b/dev-tools/slop-cop/src/slop_cop/engine.py @@ -29,7 +29,7 @@ class EngineOutput: def _excerpt(source: str, start: int, end: int, limit: int = 1_000) -> str: - value = source[start:end] + value = " ".join(source[start:end].split()) return value if len(value) <= limit else value[: limit - 1] + "…" @@ -46,7 +46,7 @@ def _finding( if signal.scope == "span": span = Span(start=signal.start, end=signal.end) line, column = document.line_column(signal.start) - excerpt = _excerpt(document.source, signal.start, signal.end) + excerpt = _excerpt(document.prose_projection, signal.start, signal.end) advisory = policy.severity is Severity.INFO or policy.cap == 0 return Finding( rule_id=metadata.id, diff --git a/dev-tools/slop-cop/src/slop_cop/report.py b/dev-tools/slop-cop/src/slop_cop/report.py index b3931512..f28461b4 100644 --- a/dev-tools/slop-cop/src/slop_cop/report.py +++ b/dev-tools/slop-cop/src/slop_cop/report.py @@ -149,7 +149,10 @@ def terminal_report(result: RunResult | Mapping[str, Any]) -> str: def html_report( - result: RunResult | Mapping[str, Any], *, sources: Mapping[str, str] | None = None + result: RunResult | Mapping[str, Any], + *, + sources: Mapping[str, str] | None = None, + projections: Mapping[str, str] | None = None, ) -> str: """Render a self-contained HTML report with all result text escaped.""" data = result_data(result) @@ -191,7 +194,7 @@ def html_report( if len(files) > 1: body.append(_render_file_table(files)) for index, file_result in enumerate(files, 1): - body.append(_render_file(file_result, index, sources=sources)) + body.append(_render_file(file_result, index, sources=sources, projections=projections)) body.append(_render_rule_errors(data)) body.append(_render_external_audits(data)) body.append(_render_provenance(data)) @@ -207,11 +210,12 @@ def write_html_report( destination: str | Path, *, sources: Mapping[str, str] | None = None, + projections: Mapping[str, str] | None = None, ) -> Path: """Write the self-contained HTML report.""" path = Path(destination) path.parent.mkdir(parents=True, exist_ok=True) - path.write_text(html_report(result, sources=sources), encoding="utf-8") + path.write_text(html_report(result, sources=sources, projections=projections), encoding="utf-8") return path @@ -220,12 +224,18 @@ def write_report_directory( destination: str | Path, *, sources: Mapping[str, str] | None = None, + projections: Mapping[str, str] | None = None, ) -> tuple[Path, Path]: """Write ``index.html`` and ``report.json`` into one artifact directory.""" directory = Path(destination) directory.mkdir(parents=True, exist_ok=True) return ( - write_html_report(result, directory / "index.html", sources=sources), + write_html_report( + result, + directory / "index.html", + sources=sources, + projections=projections, + ), write_json_report(result, directory / "report.json"), ) @@ -273,6 +283,7 @@ def _render_file( index: int, *, sources: Mapping[str, str] | None, + projections: Mapping[str, str] | None, ) -> str: path = _text(item.get("path")) findings = _findings(item) @@ -283,6 +294,7 @@ def _render_file( raw_metrics = item.get("metrics") metrics: Mapping[str, Any] = raw_metrics if isinstance(raw_metrics, Mapping) else {} source = sources.get(path) if sources is not None else None + projection = projections.get(path) if projections is not None else None charged_rule_ids = _charged_rule_ids(item) scored = sum( 1 @@ -306,11 +318,18 @@ def _render_file( sections.append(_dtdd("Code points masked", _display(metrics.get("masked_code_points")))) sections.append("") sections.append(_render_costs(item)) - sections.append(_render_density(item, source=source if isinstance(source, str) else None)) + sections.append( + _render_density( + item, + source=source if isinstance(source, str) else None, + projection=projection if isinstance(projection, str) else None, + ) + ) sections.append( _render_findings( findings, source=source if isinstance(source, str) else None, + projection=projection if isinstance(projection, str) else None, charged_rule_ids=charged_rule_ids, ) ) @@ -366,7 +385,12 @@ def _render_costs(item: Mapping[str, Any]) -> str: ) -def _render_density(item: Mapping[str, Any], *, source: str | None = None) -> str: +def _render_density( + item: Mapping[str, Any], + *, + source: str | None = None, + projection: str | None = None, +) -> str: records: list[dict[str, Any]] = [] for owner_key, collection_key in (("rule_id", "rule_costs"), ("category", "category_costs")): for owner in _items(item.get(collection_key)): @@ -386,7 +410,12 @@ def _render_density(item: Mapping[str, Any], *, source: str | None = None) -> st if not passage and source is not None and isinstance(span, Mapping): start, end = span.get("start"), span.get("end") if isinstance(start, int) and isinstance(end, int) and 0 <= start < end <= len(source): - passage = source[start:end] + passage_source = ( + projection + if projection is not None and len(projection) == len(source) + else source + ) + passage = passage_source[start:end] rows.append( "" f"{_h(label)}{_h(window)}" @@ -406,6 +435,7 @@ def _render_findings( findings: list[dict[str, Any]], *, source: str | None, + projection: str | None, charged_rule_ids: set[str], ) -> str: if not findings: @@ -428,24 +458,30 @@ def _render_findings( important = blocking + scored if important: output.append('

    ') - output.extend(_render_finding(finding, source=source) for finding in important) + output.extend( + _render_finding(finding, source=source, projection=projection) for finding in important + ) output.append("
    ") else: output.append('

    No findings affect the score.

    ') if unscored: - output.append(_render_unscored_summary(unscored, source=source)) + output.append(_render_unscored_summary(unscored, source=source, projection=projection)) if suppressed: output.append( f"
    Suppressed findings ({len(suppressed)})" '
    ' ) - output.extend(_render_finding(finding, source=source) for finding in suppressed) + output.extend( + _render_finding(finding, source=source, projection=projection) for finding in suppressed + ) output.append("
    ") output.append("") return "".join(output) -def _render_finding(finding: Mapping[str, Any], *, source: str | None) -> str: +def _render_finding( + finding: Mapping[str, Any], *, source: str | None, projection: str | None +) -> str: rule_id = _text(finding.get("rule_id") or "unknown") line = _display(finding.get("line")) column = _display(finding.get("column")) @@ -458,7 +494,7 @@ def _render_finding(finding: Mapping[str, Any], *, source: str | None) -> str: f'{_h(rule_id)}' f'line {line}, column {column}' f'{label}' - + _render_finding_context(finding, source=source) + + _render_finding_context(finding, source=source, projection=projection) + (f'

    {_h(rationale)}

    ' if rationale else "") + (f'

    Suggested edit: {_h(advice)}

    ' if advice else "") + _suppression_detail(finding) @@ -466,17 +502,22 @@ def _render_finding(finding: Mapping[str, Any], *, source: str | None) -> str: ) -def _render_finding_context(finding: Mapping[str, Any], *, source: str | None) -> str: +def _render_finding_context( + finding: Mapping[str, Any], *, source: str | None, projection: str | None +) -> str: span = finding.get("span") if source is not None and isinstance(span, Mapping): start, end = span.get("start"), span.get("end") if isinstance(start, int) and isinstance(end, int) and 0 <= start < end <= len(source): - left, right = _context_bounds(source, start, end) + context_source = ( + projection if projection is not None and len(projection) == len(source) else source + ) + left, right = _context_bounds(context_source, start, end) prefix = "…" if left else "" suffix = "…" if right < len(source) else "" - before = _compact(source[left:start]) - match = _compact(source[start:end]) - after = _compact(source[end:right]) + before = _compact(context_source[left:start]) + match = _compact(context_source[start:end]) + after = _compact(context_source[end:right]) return ( '
    ' f"{_h(prefix + before)}{_h(match)}{_h(after + suffix)}" @@ -522,7 +563,9 @@ def _compact(value: str) -> str: return compact -def _render_unscored_summary(findings: list[dict[str, Any]], *, source: str | None) -> str: +def _render_unscored_summary( + findings: list[dict[str, Any]], *, source: str | None, projection: str | None +) -> str: groups: dict[str, list[dict[str, Any]]] = {} for finding in findings: groups.setdefault(_text(finding.get("rule_id") or "unknown"), []).append(finding) @@ -535,7 +578,7 @@ def _render_unscored_summary(findings: list[dict[str, Any]], *, source: str | No line = _display(finding.get("line")) matches.append( f'
  • line {line}' - f"{_render_finding_context(finding, source=source)}
  • " + f"{_render_finding_context(finding, source=source, projection=projection)}" ) review = ( f"
    Review {len(values)} match" diff --git a/dev-tools/slop-cop/src/slop_cop/rules/api.py b/dev-tools/slop-cop/src/slop_cop/rules/api.py index 0b9dccf5..7537adce 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/api.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/api.py @@ -161,14 +161,34 @@ def sentences(self) -> tuple[Any, ...]: def paragraphs(self) -> tuple[Any, ...]: return tuple(getattr(self.document, "paragraphs", ())) + @property + def repetition_prose(self) -> str: + return str(getattr(self.document, "repetition_projection", self.projected_prose)) + + @property + def repetition_tokens(self) -> tuple[Any, ...]: + return tuple(getattr(self.document, "repetition_tokens", self.tokens)) + + @property + def repetition_sentences(self) -> tuple[Any, ...]: + return tuple(getattr(self.document, "repetition_sentences", self.sentences)) + + @property + def repetition_paragraphs(self) -> tuple[Any, ...]: + return tuple(getattr(self.document, "repetition_paragraphs", self.paragraphs)) + def span_text(self, start: int, end: int) -> str: return self.source[start:end] def repeated_sentence_starts(self, minimum_count: int = 3) -> tuple[TextSpan, ...]: starts: list[TextSpan] = [] ignored = {"a", "an", "the", "also", "however", "therefore", "then"} - for sentence in self.sentences: - text = getattr(sentence, "text", self.projected_prose[sentence.start : sentence.end]) + for sentence in self.repetition_sentences: + text = getattr( + sentence, + "text", + self.repetition_prose[sentence.start : sentence.end], + ) words = list(re.finditer(r"(?u)\b[^\W_]+(?:['’-][^\W_]+)*\b", text)) while words and words[0].group(0).casefold() in ignored: words.pop(0) diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py index b60965d4..e7244bec 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/repetition.py @@ -38,9 +38,9 @@ def _ngram(context: RuleContext) -> list[RuleSignal]: - prose = context.projected_prose + prose = context.repetition_prose occurrences: dict[tuple[str, ...], list[tuple[int, int, int]]] = defaultdict(list) - for paragraph_index, paragraph in enumerate(context.paragraphs): + for paragraph_index, paragraph in enumerate(context.repetition_paragraphs): words = list(_WORD.finditer(prose, paragraph.start, paragraph.end)) normalized = [word.group(0).casefold() for word in words] for size in range(4, 6): @@ -71,8 +71,8 @@ def _ngram(context: RuleContext) -> list[RuleSignal]: def _sentence_opener(context: RuleContext) -> list[RuleSignal]: ignored = _STOPWORDS | {"also", "however", "therefore", "then", "instead"} values: list[tuple[int, int, str]] = [] - for sentence in context.sentences: - words = list(_WORD.finditer(context.projected_prose, sentence.start, sentence.end)) + for sentence in context.repetition_sentences: + words = list(_WORD.finditer(context.repetition_prose, sentence.start, sentence.end)) while words and words[0].group(0).casefold() in ignored: words.pop(0) if len(words) < 3: @@ -100,7 +100,10 @@ def _template_shape(context: RuleContext) -> list[RuleSignal]: "from-to": regex.compile(r"\bfrom\b[^.!?\n]{1,60}\bto\b", regex.I), } for key, pattern in patterns.items(): - matches.extend((m.start(), m.end(), key) for m in pattern.finditer(context.projected_prose)) + matches.extend( + (match.start(), match.end(), key) + for match in pattern.finditer(context.repetition_prose) + ) counts: dict[str, int] = defaultdict(int) for _, _, key in matches: counts[key] += 1 @@ -113,10 +116,10 @@ def _template_shape(context: RuleContext) -> list[RuleSignal]: def _emphatic_fragments(context: RuleContext) -> list[RuleSignal]: values: list[tuple[int, int, str]] = [] - prose = context.projected_prose - for paragraph in context.paragraphs: + prose = context.repetition_prose + for paragraph in context.repetition_paragraphs: paragraph_values: list[tuple[int, int, str]] = [] - for sentence in context.sentences: + for sentence in context.repetition_sentences: start, end = sentence.start, sentence.end if not paragraph.start <= start < paragraph.end: continue @@ -140,7 +143,7 @@ def _hedge_stack(context: RuleContext) -> list[RuleSignal]: pattern = regex.compile(rf"\b{hedge}\b(?:[^.!?\n]{{0,60}}\b{hedge}\b){{2,}}", regex.I) return [ RuleSignal(start=match.start(), end=match.end(), key="hedge-stack") - for match in pattern.finditer(context.projected_prose) + for match in pattern.finditer(context.repetition_prose) ] @@ -152,7 +155,7 @@ def _question_answer(context: RuleContext) -> list[RuleSignal]: ) return [ RuleSignal(start=match.start(1), end=match.end(1), key="question-answer") - for match in pattern.finditer(context.projected_prose) + for match in pattern.finditer(context.repetition_prose) ] diff --git a/dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py b/dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py index 3f5426d7..0f3d8e2f 100644 --- a/dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py +++ b/dev-tools/slop-cop/src/slop_cop/rules/builtins/structure.py @@ -37,7 +37,7 @@ def _duplicate_title(context: RuleContext, runtime: Any) -> RuleEvaluation: return RuleEvaluation() signals = tuple( RuleSignal(start=match.start(), end=match.end(), key="duplicate-title") - for match in regex.finditer(r"(?m)^#\s+(.+?)\s*$", context.projected_prose) + for match in regex.finditer(r"(?m)^#[ \t]+([^\r\n]+?)[ \t]*$", context.projected_prose) if match.group(1).strip().casefold() == title ) return RuleEvaluation(signals=signals) @@ -66,7 +66,7 @@ def _make( "Repeated bold lead-ins", "Several adjacent sections use bold labels as sentence prefixes.", "Use headings or ordinary prose when the labels do not aid scanning.", - r"(?m)^\s*(?:[-*+]\s+)?\*\*[^*\n]{2,80}\*\*[:.]?", + r"(?m)^[ \t]*(?:[-*+][ \t]+)?\*\*[^*\n]{2,80}\*\*[:.]?", 4, ), _make( @@ -82,7 +82,7 @@ def _make( "Long bullet run", "A long uninterrupted bullet list can obscure hierarchy.", "Group related items under specific subheadings when useful.", - r"(?m)^(?:\s*[-*+]\s+[^\n]+\n){7,}", + r"(?m)^(?:[ \t]*[-*+][ \t]+[^\n]+\n){7,}", 1, ), _make( @@ -90,7 +90,7 @@ def _make( "Frequent horizontal rules", "Frequent horizontal rules can fragment the note.", "Use headings to express section hierarchy.", - r"(?m)^\s*(?:---+|___+|\*\*\*+)\s*$", + r"(?m)^[ \t]*(?:---+|___+|\*\*\*+)[ \t]*$", 4, ), FunctionRule( diff --git a/dev-tools/slop-cop/tests/test_document.py b/dev-tools/slop-cop/tests/test_document.py index f3753b62..85fb6854 100644 --- a/dev-tools/slop-cop/tests/test_document.py +++ b/dev-tools/slop-cop/tests/test_document.py @@ -27,6 +27,38 @@ def test_projection_masks_ignored_contexts_and_preserves_visible_prose() -> None assert "Quoted not just prose" not in document.prose_projection +def test_projection_masks_multiline_html_attributes_and_complex_image_alt_text() -> None: + source = ( + '\n\n' + "![As an AI language model, a [nested]\nchart](chart.png)\n\n" + "![As an AI language model, a shortcut image]\n\n" + "
    As an AI language model, sample output.
    \n\n" + "As an AI language model, an accessible title.\n\n" + "Visible prose.\n" + ) + + document = build_document("note.md", source) + + assert "As an AI language model" not in document.prose_projection + assert "Visible prose" in document.prose_projection + + +def test_repetition_projection_omits_expected_repeated_contexts() -> None: + source = ( + "# Repeated technical phrase here\n\n" + "Body prose keeps its exact wording.\n\n" + "[Repeated technical phrase here](https://example.test/paper)\n\n" + '
    Repeated technical phrase here\n\n' + "
    Repeated technical phrase here
    \n" + ) + + document = build_document("note.md", source) + + assert "Repeated technical phrase here" in document.prose_projection + assert "Repeated technical phrase here" not in document.repetition_projection + assert "Body prose keeps its exact wording" in document.repetition_projection + + def test_blockquotes_can_be_scanned_explicitly() -> None: source = "> Quoted prose.\n\nVisible prose.\n" diff --git a/dev-tools/slop-cop/tests/test_report.py b/dev-tools/slop-cop/tests/test_report.py index fb6f54aa..5edd5ae8 100644 --- a/dev-tools/slop-cop/tests/test_report.py +++ b/dev-tools/slop-cop/tests/test_report.py @@ -8,6 +8,7 @@ import pytest +from slop_cop.document import build_document from slop_cop.report import ( ReportError, html_report, @@ -153,6 +154,30 @@ def test_html_report_is_self_contained_and_escapes_all_result_text() -> None: assert "chargeable signal" not in rendered +def test_html_finding_context_uses_the_analyzed_projection() -> None: + source = ( + '\n' + "Direct prose is not just vague." + ) + document = build_document("docs/dev-notes/posts/example.md", source) + result = sample_result() + file_result = cast(list[dict[str, Any]], result["files"])[0] + finding = cast(list[dict[str, Any]], file_result["findings"])[0] + start = source.index("not just vague") + finding["span"] = {"start": start, "end": start + len("not just")} + + rendered = html_report( + result, + sources={document.path: document.source}, + projections={document.path: document.prose_projection}, + ) + + context = re.search(r'
    (.*?)
    ', rendered) + assert context is not None + assert "meaningful alt text" not in context.group(1) + assert "Direct prose is not just vague." in context.group(1) + + def test_html_report_embeds_the_logo() -> None: rendered = html_report(sample_result()) match = re.search(r' None: assert [signal.key for signal in signals].count("one stable result here") == 3 +def test_repeated_ngram_ignores_headings_links_and_captions() -> None: + source = ( + "# One stable result here\n\n" + "A [one stable result here](https://example.test/a) appears in a citation.\n\n" + "
    One stable result here
    \n\n" + "Only one stable result here remains in body prose.\n" + ) + + assert not _signals("repetition.ngram", source) + + def test_emphatic_fragments_ignore_numbered_list_markers() -> None: source = "1. Build the project.\n2. Run the tests.\n3. Review the report." assert not _signals("repetition.emphatic-fragments", source) @@ -103,7 +114,16 @@ def test_horizontal_rules_ignore_front_matter_delimiters() -> None: def test_duplicate_title_compares_front_matter_with_h1() -> None: source = "---\ntitle: Example\n---\n\n# Example\n\nVisible prose." - assert _signals("structure.duplicate-title", source) + signals = _signals("structure.duplicate-title", source) + assert [(signal.start, signal.end) for signal in signals] == [(24, 33)] + + +def test_horizontal_rule_spans_do_not_include_adjacent_html() -> None: + source = 'Descriptive text\n\n---\n\n---\n\n---\n\n---\n' + + signals = _signals("structure.horizontal-rules", source) + + assert [source[signal.start : signal.end] for signal in signals] == ["---"] * 4 def test_vague_authority_requires_an_attribution_verb() -> None: From 3adb41f2dba9d3f6c4e9e62ee139f03a0425f8b5 Mon Sep 17 00:00:00 2001 From: Johnny Greco Date: Tue, 11 Aug 2026 02:25:31 +0000 Subject: [PATCH 12/13] Update Slop Cop artwork --- dev-tools/slop-cop/README.md | 2 ++ .../slop-cop/src/slop_cop/assets/slop-cop.png | Bin 1209520 -> 1524872 bytes 2 files changed, 2 insertions(+) diff --git a/dev-tools/slop-cop/README.md b/dev-tools/slop-cop/README.md index caedf464..9c462ea1 100644 --- a/dev-tools/slop-cop/README.md +++ b/dev-tools/slop-cop/README.md @@ -1,5 +1,7 @@ # Slop Cop +Slop Cop + Slop Cop reviews Dev Notes for configured editorial signals. It reports precise findings, calculates a transparent score, and enforces the repository threshold. The score is not an estimate of who or what wrote the document. diff --git a/dev-tools/slop-cop/src/slop_cop/assets/slop-cop.png b/dev-tools/slop-cop/src/slop_cop/assets/slop-cop.png index d417ad173b7676e1b338d53f74393bd863aed835..e4435c100def25a66fbbe4d9a7b4d421f513a13a 100644 GIT binary patch literal 1524872 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

    +XEft>U3hwlIZQn`)*C7@Cz^Y&H1Ly^!6Bd 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%0AU@cKVuanrNocf2v$#6Fiz zZ@*-aq}k_@^Z5LD#KKrnXK}e)xYnfhr&jJ!T@BeK#pI9741R-fnZJA?wPn0?O`Lu; zF4K>oZde{qTpsitzXn2)6Hv^BsOGr!?Zo(kgMdBg!Rv`hn#l2n>O9^Jk-->vN-t}u zdTmB*zlLQ4E9}Fz`E_&c(mId0TL3_QvGtcnjDGP1fM$d`@-yxf5=CO^*)sotjs|t- z?xWi#0fsl^BC_MOgLtFRU9F91-tNTQh~3kI|N?a6`3OL$6w z4OE3hqLYCe{psXCVjN}OSI;@j$0@7Inf2cvD0d}@DfC3?*m3Z`qP^4+s}H0ycW#YX zo2+)u?UE5JWrP(fJ=zMX0fzFh`vb0J+$mAeI6fciDn*j~PiZTsr$0B$eR0Faj^YZ7 zU^bb(@g$%8t5NS0RLayR-6pR=q)oB|th>LMCySjml*)c#66kHHc@;4!a3>y;r14_J z4xtr1O}k8!7x7Q{g9yXrI_3gF$BCreLui6-Smwh`H2?ZdjlSR5{D6B8-Rl6qRK{C<g00(`*+N=9r6D{hL3xl4uaq>a+ z+@Whsa#Q8kekjM7q4c7CDp@$m*v2orv}&IvteLz{3B>$MbdbVdP=~wE>IJQ>Z?B~M zWy0OGEcyI2{SkiZ47Lj&pnc?wYc`>-OYJ(R$OzdOm@ivCb}5oE4`X%@t%-@RpvN@uA~S z_YZAv*nhmdCo&0x44bU)U6aYi+(4F0_ikU@I}-kvNLyLRriRqU(N* z#GTo2`|Zvm4D4(m&RC%!eP_hXsZ+=VV@fPk9Pgkh{>y)^?yxn1U5iipJSL)o2YrQy zWxi20;ggCqxm@;9;}n9~g5dXoLA!2wrF~YPfSl%JKD2$&&IKR0Rh{zcxR6DH8gMaA z>(ZtrT)*tSXq1JLDTU@jW5kAc^zO;adb@qooB~n5hxK!MNGIVt7cI5Mo1KRMp~87o zjnd^aGG5Zu^R>sbgAAtpAp5<>R9%GhU!SK> z;r;ObHDpaPi*>@fIo7QRd#wg-S`fQ&wjb1E^>vf8W=ybhcb?FzkGg}C1 z548fw*bMJD(cJZdn6QifE9YEstUB(Xo5pI(xq*070$BNrz)|=TS+=~C-jcqB*pkcz z5-YE-2j6VM()m+ZmtYznc?iyv(I=cYJ+40H=$%iMlG2VC2$_(2lDv>J_l}rzx|D(G zf=a*TbJ4E^@{}=Eh;2l3v5BZJzHpqsP+9&0L(lE7xdQBrj;&$+#Sb-T^k3IG^5`zL z)wg2E>T;qJCn0h;Uwhn|ikNX+2$gp74+uR*?w_!JLfJ>1o*DfN$?3?nI{R<%=Aq9C z<~!IYIJYK>y?GguO`xzufTAPPQKLb^h zGEI)MlD^tDyW^~8z(An8=uE68EB#~C&ZEmU*LNE)iI|+boleX*ncsqqen$bpceM-y(goO8)_%I%E*$~%(qlk(zb#)%K=6~zQ@i?`OU8*@ zR9=9I*hZdratX)E)uyAPv&;lkx_n$lc4h0Q^~itu40BCf_EF^n>~~ppChCP}6yiMk zjHAh;MD0A|@aB>3-dV3T)irno#$)$`&i=zT?$%pG9vA5+|0NR`=~v)W_z^lvc;(n} z%-rxPefZ}`YKO^pQZ9`{a<=lj2*{?FoieYT@(9(R+Y&&v{T6IYYX;I*0)H2@EFjm9 z-e$Y#$99tYo*o^SHk1}37llC@C5!}Xk`9k+5-Bd{ZLvQx5>12Xz83^)^c1%(Z^xnq zChsbq%N9JQnq<+xs>7d4E}EhHM=cnCjPaK1$hNBEijZTTJ6#dmk$66+nkM7P*L?Kh z8tacpECdz?RL}c_T(ohTcYq$~yKPQdskP`oA!09yqTD6?fN6x+_8INwYHAQhUDFIX!B7! zZ7cMNs4BymWv}sl;+U(;r_iZ^(h0hQe|_)$lbweZ7~0JQfsNBZYdaSQnHv(B251g6 z2=N$SG{k56J(EXN;CH3F5LvwmgDiu6H_~ILPx#R{m8rdj%LTHP(u*Xl zd!9%s$7w$@-R!>HeT&-*WB2LAT(kmFCt$lQ){QPOwm7B}e#9t&*L1Z!hSCkQz+ASB zI*yAoLO=c%b_2@PldPKC z#m*xy83frA|u8)H7h=r!KhXdi#~L$>m`Rj5wBbrkHtfo z{6J=IvMusgBL7V#Ysx(o=k)7iU@ht<0LRf^Bc^UsBTGp%mXt|qj~KQD9Efez@RGa= zcNc#EAbtp$wB1G2&(C;EJaE3OPH`lUSsb5VdH3N!+3(r>oR$s81Jb*cay3elh|lFT zi}i2tUJ3YgWaaN(TVDK=>zBqmN6mU*zh-D$0YMTbTRgb!Hj44Aif}0KG%@JE$s$H6 zX2DUc6O2l%Sv&P^2bwNdvL8hony$^jV#SuAA~${L#N$c^i%%&8kRu!9Tt#kJ5qQS5 zWNcI4fQVP&ln93bd*B(Xv#Ixs()I}zH5h9p)sDStnX!0C5ZwNj-8&!yrN<^B>)$1R zrwPY%E4tWBfd?54K6Mgc^3j4TqV-0xtYgr#2)9nrKpv~WE0OWUVYQUfB>;6I$|9S5Bqo$a`nV9}CtM;$ZYA;y?25yV za+7z%Dc$iRKJ}qMVXH->@S%DGoWv{3<(&nft?edVHpKrDeXRw&m*P=AmaQOwWn(dY zyk2q9f_Sp@dJRKiU*r|x7kFOcw@LUcuqo?)w)*9|zG9hVCdCDAEqs6h${u>RrOg7o zXxpKFp_iYALiv^Xw7xyua)zWP1S8$OM1PG#A&1V+bPfuQXu0-2xd?Xd(r3N`6LOr?YrW?M{4)O0Odl|k{^EQ z0KOpd@(B{NvweqtB^FpZs-pkQJgEBF7Hr%;)Lyz9>X4M22sw9-sO}H{Xm^zy!qX(a z=+dVaqs=9{3TU$u`WqSX&NuMq>&3+dk>~A85COjB@p638svGdGzxpV|>9H7!|K?1onb=q>w+h-2l|-)VYntdv5%R%cUe`(bwBA6R~>*n0Q{)25gJsNlAm{( zjF@QBbQWfxQ;)}OyII?L;}QDQaLKphqR0_|es;(`nNqwKV1va`BjiMA$pw2;0df9ye|48sQ#~@RA@S4YM)Emklc5XO=_fMZwf7%mEYCF#8~{V(ZOa_;}=P z{5pWiqm{*Zr(~Ue9AgQu7hkk}`7Pj2`S;5K`(DbwuvxS8R#q8b#T)=i3oRFIIP#9k zrq=kE8i$Q(p2otEaDe;!2hdXvAoCo z#;$G$nmpFn&Hcf_m~Vb^P5Iw90`CL-qp%`=wE%E3jJIQSh43)ubnlaESHK5pef$cMAa4t1Gv& zOKyPxV=AK4)kq>!Zu2MJdQiTLr=yd?j&=d@CN_4iGd`}ZGxO^Gv;|8oYy|g zZuIfGmA#z2+@5*2qDlDkAgy}y{{102ZeQ$C(@odAWf>hn{b4eysIM;BV{<9DBO)e4 z!U!6?Vz|}CT`_1R!ugU+)qjRzh zXj+8!gbFbQxHSjLzT_xixl7!fHeJrAE;RV!0N{A6MZ=HC;=qSY2vek`&wi`?=fn>7 z!bKn{bhI8CveX(m=J+Oa>XIM)XL`{$4|>JUy3iGrQ!f^@EkQaLJhZz!#s##@a{B^= zcNaUl#_`t$E@0Cx_16c?hmd!`epJK{WrmZOi<=%d1GB^c&L5CM)92up^9j_l{#TAN#&* zd&G0c{3?omcYSIfEG*h*cXZp+FkBGP>25@3nMj~-k82(EAi}(Q0)^S!q|j#y{`1DLv zJznLLTfeJm^(#tOQJrE%?-X?W&8EK=9I|@JvgSSgnCUoG3Tnf?V&J!Gz?l=f%27-V z+1$p%0Y^nXCx1qp%ks&4Ni$HS$%5lk71M)FZb`m;7iPz4M7d}Qaq~rVSGi=%eg(vB zOu5wUdn!EDThlLZia$))z3fesLoc30n0$@)rg_0LJ5~O*f7*AxZ5-{d-~vWU%=iCD z-}P9{YxK+XzFc^CMdmAB@Xz%<s$$9`hPdG$w*oxZfXdu?IF=E%p=U+MuiRLjR6xtVlHt^_{VzuTuQ zRHzNvLSID4Vx`5#rjHAmQ>LJy{b+6A+}7MBV^n4ty^x_h@nlz*p{Oq_6?AchBI;2l zpB(;Lapm)_@oJaP;9pM%3}J9VE2`yFgEz*LFq!oknk6KxrS)lymOzaDqioPmA}i)Y zo^H{FGt;MCia+c#EzYBp#*H~X5v%hQQ-t)>9PO#dxRmVyW(+Nn{BgMa#|FkN`jhpc z%WzD#RxD6F&_0RH@%^8?_9Ne;{S6Iw{4stLzFwd4B|8KkPMl$crK^-Pv%WeP@U9nXx~Ezjw)ts=ogA3ata* zS7ulN8hY>KAhKWWw8Yxw#D7c{jT`-YiClTytg4f_a_FAGels;~b|D2ZcYJgKkeE=M zwV4)4Es=pzfx_BkoW0-M`3i-I=?(>Ku_yrKk!Yv$)+s@#~{APP`=|)lGWamCmk0_ z`USKe!5@}Faft8Kk&bEGu_k{9`v$LV&+ZQ`dyzpx#!1;IkE$!2XZywiQ zN!(%JJl-R=X33Ob!PcXn#~-1d6|xk+M*p0(^@kZpisQ69s&@On_vcRA{+IyzTfRE( zY%}r{?rrTOXM^vOW9}LQJ19@OT`0Z#ERX74Lw~{-n%Q3;fv}vkD~mhFr7&EM3Tfi& z_N@k&el@;FN`G&k^fEtR->(Dz$cE>W4(hY4-w6K_Cl~LH-r6V;dKAaBbJ79|AlFjA zM8E7|J(2Byi}e2dREUDYItgtvCYhfq&6)jfxmfnu#F`17e1*3eLq?m#$D}ZWz9NXS zu9J_JeEks+_%H2Bld9P32$3Q5rP!O0X}o0`sT?OmGvrYaCwU-;{Bv~LX%$Nypwjd@ zQR+?e*U{YL2LQL13+wbHm2^&vY91=K7q%MQow9T9i%9kNiYqt$N80DS_Q=rxE|&^$ zUPpTWbfSE>%JcE%ZuT)Hr=)Jp`^zhSOWohN{*0E>XvoZi%xAC|&n<2}^gmrQ0o?Ym zNH<3w?jD-mty$zYitxbmY|_aB0)^{Jn!7+AqF7Y$<#+%$qxB58IvQclv7G%>X=8X~ zanF_KO&4~PX`u0}Nr6#Wi@w8Rj~3^N=MZ2^2SdnAd6eK}DHZm6+)Ed8irloe4bSOi zb-S<1JN*~MDW8J|gMz_UxldH*uBWQS=i&!^v^_4k6IF!hQYO+zS>cEu+lne!gtaVZnGDew4=LNxXB^9r`SeS=*B{z)^(G;bXHtgg;{=MY)vb#+Cg^?jIxLCpc%tQf zI(cz=TtWBYFH%S9O4rlIhmpaZX6h>gFL%27z1)lsamDED=hGaO_$0)4r=$LObHhL{5=a=xbglh*e<;E2gq|i#>1GSAE=j>LiH!- z*uvnl4*`QUFia8=YpUs6epeA(Fl3Ci7c3^_ueLzB3H&(VOK-<`{cFeI70#eb>4Pm* z)b)I1FDyi-V2&3{Z#W@18DG+5vwEn{iXA{NFT6(rMcaV!5|^=)fJ?ux*YX{$B`dBM zKo)khvlsJx4$m0cXH{SqO(7NmAWckGSKLDWY5T6Yei;S&EaHm@OlJ9ulo@ytT^~Dd zCa`E#viQdP*TihZ-}SQfnSVmQ%UVKTHQHPE>eDMY6v1_@W&Be8QRjWcddc9T0lySL z0rhUH*d*vveL4K4EwNdfz;_mJE%TjS!e7(BHr#oU?v)l8v@`3Cp#s~P2X3md`D z=d~+v#~AqWqSdU5pY~5#G($`hJB=k@*sOr;_|DA$`l7`y8Q9UY^C)Td+y^gOHX=nN zPl!ogwfWd3FMHYISXgOQ_K0Cq?VVz`%MRP6g{F@G!k#Vk(O4U5h>SA4zy5-Qrg_vH z8hfcX&rRUW{6OOFX>qN`6y+Q>9xas^d@7064qAs14#QdySIAG(v+T75s+j2bAhvvk zF{4OHog|ms&$wZ0^-Qk(-@i`a4nemoqjBI#2ywXcAl+xzghd^mjX@3cTRahGQ~ad; zPcM^urUaAU(Q)Ti@9=*+<`X(1!X_P;k&3AzZ*=v-70{C%nVCO074WLT+M@z+WGTkx zar0D=Aqf+$HgQR7E5SGYZtN+s%Lr!1w@f_eVjZi?%r6 zq|Jl395~YShMWg}APbev*=#zSs+W!z-OX_^@kl(fVhS<8tUuf_LXY+4`c5e^ zyHp2XT@-NKD`TzZe&fB>P1Uqur+cnwCr^du(3WUc>C{)Gz}za_Gm@)UWm$?nC1;Lq>{nN0?S zZEw$)dS_15nqGxF>@}^Q|4q5Clk|p}!{*oZ^Ye4*r>c>kRj&NWoMN$r+|@nS{U4#b z7sC`+LzF(5*RMiYPAYb6F&1z2gndQIA zIg%@C6TY-Hkyy-^S?f~FLPmkC=`Tw3^?^s z1WO{da2T~2Ji#GXZyHV1hSNrD6wDsp+uJ7>|G5MD>2)Ihj*w69zQuQJ$YUQ1aC4>N z|4UcX|1aYFg}mOl$vrCh*P+Sh2mTfBlS6D^zr1$XPcrhdThY&ZCz<8=JHt4ig<9c4 z06)pVcXZCgaiWIc%`|%jSn{1lm+ELt4$I*TYDVO~I_L0f=Ytmq>JZT2L5!a4ohI{-Q)BC=%JF@20at`NbJhhkn6 zXTvSfhfOFSI@wowxd|?v^!=uQ_9A>iUgj|=e@lIhH21AEQLigWoW=A(H#GpyS1VRh^y(HOM{T} z0#|&HWiFPfGIdcM6@tYEvmY*YY{@w@cv?gRnqof_z0kCsI@2Dit5Fx}Wn?K3?s$Y7 zuBpEG(bIr3>&k&$IUU{q6-2qjXX02tY|Vy_ZGWPq;nSx@_|>ZbJ23Gi_2sylbsy zpPTDHO6}d;^LWRtu(l$CaQ8gXQSB}Mzj6Hr{vDrio%7tB z^(S}~*WG1x(QLSZ+$+jC?b!R}_N_~-bqAh$W96M#0E|gf1FAZ>lp*83)3IugYrIq+ zy`s1P@1oJH?3{L*TC|qgy-=a|WoK?4(UTg1FlLrfI0jyJkp~s+-L~`fa-KWjODvcX zHBgu!D@#D^;%Ui3lliFtI|Nlz5_lKE*m2t-$3TMfItryx!%5Fd!4Gnx1CzzUx66}> zJJ7Pl4yR;3YG7TGlbTs1>9u){jE`Y2FdJLAGJ6w$LSfz#TZ<7z-_fJ0kdGI!OOB%e z3cyEu`=jU@w$}{G;?^49YC9z#5lD`2x+50hGH(9GU^GUm|LmSc9uZS!MC6W((zCde z#h1PhotUDp69PQ)D+@&eFZ#c@`CEqbzTf;yTJ@;^a=P``ADfxQCc(L7yi)lt+6g8U zqxK*?E)G?wd`b59(l;yiC^;C`W=dnXaJ~~j&6e^N_wN2bys_wD#v(tx^NeHp3umt% z&Y(oJ3&e|)bY-aN`!Tyo#5#O3vjXNK(+6MUpx8@*ge^aMCUGj~YZz z!gNM1OBFOpQF+&AjXPwWL278E;9*N3$N z(7fFjm?l@{Z{iE&Cpz5yx zE5#(}K~%@9lXBulx>tK~vVq$+_e06DiBWbOG~5ciF8e$hiHgo9K;4%Bv;WyI+XEOA zmz?cL*rG!@5ZDvh)A&xaptp1AYESgy^`vPYhrfDm{-*i^F)5O50%c?Z5+)8zVys7; zUXud~BP83ViUtVWKKU5>D;#lqbqn87U|LSv;3ndHKjdxt-FyX$^5<)Hne?`yMSz!)R3=?4SN+0PEWq64j`pPoFjC#EJl{oO^-s`pO+Q z4Au#M_YZBqCiJWWl{OHNqd&Tr6su+58^f4n5T^35hz3lf51;jsfdh_STo8PK4cdTD zVHDcRU}LcYlhy9C$9bs$3oDpVQvh*1lBL6p2>{p10R4dz|vU`Ylu* z(S_s1l1>oOW;9N6kGdQD=s4M-K93SX_Tm`+VLQVGzjt5TowE$upw$4g2co?^7Pc}+ zj@3eV`PY>HykJjuDBw|kBmw=dp|mg~O=Qd3gl(7E;ndNvmBAq+27GU1hpLHoyGTPd z{%*Ur1wl3&I7#g`8f{6cUVICmhg)n~`AzL2v4u)6?02V#8dq5y?- z9#i zB%OPw&Y2Us7yVv*2VZ!I_@FN(TEO-6fG}f0e(vz%vn4Z~{1b|e)7==G$k-U)nQYz2 zJ>9umfL*wod~)ckTAw=U13SI=FlaQr;E(hly@gs$jgXP@)7sdIlr%cjW@UU%Q^}Zg zaN%T^$8NQACmrII?|Q@-^03{G0rH?9>><%!gLTvdr15$u0LEhXTJgC3`+@}izWNJEPO_pT3q9Ew)I(6+!cY`8Bt=-<=>N|@j}5<{-a-7a2ayd zsp62xEC1Dq!n#1Ok0zK)+XzT6BI|mVJ%YYjGD3bmfDQa^i<*ny^FogVkY$^EM+N&^ zev%xor_wGNLAE2Y3a=G4e&GQ4l`?_R!zZkgPt=RI2<#TU!%5Q#J_w$Tw&)kNE)E>65d!NOy23el#iS(mobUZ37&55&+D`+Hg`h1Q2;%?j5%`2X{qyMe zsF+W#UX8lJ{|{XdPKLx{kktQ3F1>>z^k3u761j8dcWW#5t1CLD_E2~>!hiO<4^tjA z_hw(^y6yLb6-S~Zg68Za$*R{8yG}`yADk5~d6p(Il#Ce64Q`aG>>gTBY`>l%uI4-I zqhHH$$v}?t85zrWY1?=kFN=co-&jIKX~R;#pe^!-cjus)67P7sYAP1IG2o#P1$}yI zq~&PEMYywwybDd%Z^1X(^c297w7gw<^Y@uh@iGED){stDN%Be=hrXo+LS@XNsOcUw zcM=e}D9=-NEwLdlJ;TDnfjmf#4ip8X!{y9L2hc*f6_`l&FF(vo7=R<9?)TIq=u>$KtPpv`;xD!E8FF3EBDD=K zKklzfzWyw2TY=@jCdaITrx$YRi1Omd+yxXVa?uw*_G2)~-FVeUY_`M4b{d&Z;=w;A z{_%=<<)AYnueTZYecEW)^Ys~^jdtevX*0NuF_+4CIt;RR`>e)`twD`95fSmiaaYF9 zDAX5gjJ)j)r>YQfq5GO_x z?Hv~uPt-TYBP+{MUrJc+ElzCmzeZK9cRX++s=I60x%b>7N3A>8d4F}*3_QXRga7Eh zK4dO*czn=D3oNcyNq&*>9nY>l7s$mcSZMq+hhed1*mhKpV_%>wiIH5s!Y>pgY)WO= z5lG^>#G7k;H9|hFRi-apIY+2hoptb%N#Z6?C@Q!syq}`w1ieI0DfSGx7cdvxJ7GQhGQvkBO@GSL0A;}c~rw3!{X zM*F0iNY-dkyx<@H)Go8)XNtUN5JMGhfoj`8p>xn|xUJ}$t92v4__9k>EJb9feT;i1 z+*qdBR0D=i7CQ${`v{GK0;l8tw1YpmCNp~nC)%6T0US=oqx?U^ebXP;e#9Dd`Tg0& znloMLwN2BW>A4qAck;;@KbChp()tenH~mlJPdGO@ziG#vcarmo40GcSCGCz=!hMuG zN}lMoV1GmI9tzfXp8+tpuRdh}(gIcAQ%W?k4>plJNt9EipE{?G8*SNYZ=Jj5POc_4 zlE?dg2#^y6fvvg}ezi?s=!L>YP>#=eR#hKmM-Wf`j&vu7?{}^;p(|8WiS{>LD|olni~ed{B&Zq3N9|#^Dd@Y~7TdjIG^t4~DtJm7#^8`vGOA zK0<7F^zjr!2!ARd<&QRJaD(^MX|zD-CWQlM(02HZO=g*Hp|2*d2v0dCn=T)hK}Jss zlxfkEw<|O(sEK}F&I{>SOB}GXOu;3#p!8|M*YPPueoO8NYog3YKxsU{l|s|i_F6Dy zqMvE>YCGu;vES-K&}AJa1M(?W1Aa2iJ`@_S3KVmC6kOZ9w*+2HlzR6J0hY&w5i;y3 zdWRA@Rt(%-tE_*2oQ8%gcrm_|hmI$6tm4!7Tn4APZ5*YbmY-B~Zf|~nx_k2w6;VGD zV@u>Gyhn*#uD{Gu*O;FvudW&vt%I-YZRTume}nGeYa%}s@D=hm#w20LzU4LL+mm9- z&lZ_7nr`x%94k=gujL?ualxUwq1IdbQF$R&a=u6zQ=z1}7kcUt`b5U8>~`62GJ=^b z8126W-OV`be0IN{KsPW|jKf&*guCDB4~|PiewEt(0-MTj3}2a-$akYR+9q)FV~*YD zXhR;YzXmDsFep!YLdR+4+ZHTJ!Bxu*HyNKp6glYb=0&fmROB_;PSxa!eI6rc* zV4T|0%3EO|r9FZ#Pq~3E6<`Nr2?-q}ki_q343*a!+Y_AF+Yj}-g(4}At;pHNjH8=U zkwYYzr=Y#YL5`YOj@(82@GRQTcCZxCjY9(^eb!(6e!4J2TwO=$E~~Ok#*lX&#ig$MahWTZ5- zJ=!9Ga?TwQm&N2o;RD8ttS`8)d<7N(3OkRP>wbUFj4b(n0heGntRhm6EU286?(6@> zMF#$-5Y;;ox%2uMuBEcSHo;pHrMA(YG!!=-7C4%?#)Fa$*B>oiw5z>nOWRn@c67dE zj;Fr~xb@Kll@!OguhD@%8u23&h~iHyURv; zJ~BEk7UUr+x^z?v{W5sbDR@0qp#9>y#ka=aw*0(QMLy861g2CNnf)Xu7Yr_X^ihqm z-O%j_9Gq5|D@~$&vPmYcY02A<8rJrAR6m-Cw-+u#Fod?%U zd8g|n#I1vVL@_g09Uq2%%irYTmLT+2tq(XginK)_f#>D^UOrJl95DWPR7GVuzPM$TN+azP;=YoHOBm`6N3g{ z9C?;PPN;@9EQvBh3#?p)43jwljMZK#yjxb|$bZXQRy94j@_xs5p-XAmCjUo+=doSL zhzu`_)WoQ`fFqc=c{f98(#nt%6*RN@;f{st+9$1o9duJ7LWwxdnB4N2%@kcpaul4o z2Kf=zXxx^B=L|aZR!V|Y_$ovCm*)zx|C$kk$A{g%#Eutlx~NcMzd8nCRVV+~y+s)r zZoJ&-5?(_AlHOBP>B3}p++lL*@{&e7m2d#nN5L1KioCb05Pd8hwm>rcFtt4q$Fq@l zPJ*p97RZq@1BYEF!_L~?e5XD78UI&wk9+#YN@?yCC0) zj2BKIwV#4aoJ63us&WnQ2OicLZ*$h_A{E|oks$?t#d?UE{+kuCcI<7ZP~+7ajf2~G znV!W08F%>#UhIbW??>;s>&1!W>DO!AI^4#40%tA1RA#>u*S^btjx}U|xkMYpsizp^*sw z=QbetnhpNyNyLbWq9=&KPXsUy?N`ceO$Bl*7ZiC$&HP}8Xzg7WALfY4(=Ct*@Hf{q zAi%}7!OuH_cev_oCtC0B>2-%`7p6Ga3GNcMzWCw^{-j4I5Kna5eMul2+yju44(=X- zuzo||sUHr8(8*Ey zG%Z>vSfF7d3<;7O|5mYCR(~LLPf%Wb`%Xj`0UH>R6S_loJzS8AYCBcIPrTc$t=fc6 z6SpJx;ByP;qnnsOL`wT^3-p2Qroas9Ph{&sUUmj6Oa>asfN#>R@(?1fel3qd zgD8=c_BnnR5+}e4M!v825wvUs68(<-Rj#?U=g{|@5VpDwFr6RLJ0ldZ<`RDjz9|oZ z*SDvQq;=onTPwY|4&_4L{(P(T;^TXwegxjgOC;bek2DM3;e36SZ#>g zR|CrE_MhncJie~S*e|$oEdY!J^s~m!+=GIj$NiZ+u1Ql_|GlX*O!09l0R5ps=_=Vhb*>b?u$(4Su8+_)gpw&2EO^}o0t0DK}2{@C7 z=u-4NC-g`pShP-of5qq>UehQ1G9E1*h@ECOTcHb9nS^IDREey6Kj;seuaOp|mXE6V z84Cb_$n;IW(Ymeq@^mof3hFmXaRqCmp;uab^yJrgo^lNGvmq)?%mWi|k}V}RTSn%2 zN;m3Ck%2yHpsBHh7S^(|SdoGYaoz=yJBuyzI(lpz#kE7ZiY<@Z>#`V({JoPk6 zn{jifyknChCQmke^SNLS9Q`9iJ_j3%mWL8|)rs2)0I?Ax=md9;yTgCFhMXR0ICsje z&uPr3^q;OL`1kO*;)?5Y{B`&w*9lPVt6=Y;zX5xL=kHzh_!Tq|<-uAi_7`*w08^Ux zeZRMl+CH3moG{+p7w4`Bu2{<$3k(>xOhM1uL~70( z`L6Q*E+`s@vppHiWj;~XUki7YAzP6Yy4Gm$FWT9N324~HH<5I|B_t5@rz zVL>vRycWMGB!oW7dD59}DWrEkcH#V;B6`Wc`-upJFDDNs?v}^>Ae%=o?KDE1gVF&BSS+iRLr%m(_yuapQ6`bPi$`#&Nw z;&sU;*PI_vDqpYof0_I9sLPh@E)4wbIQJWJ9$vnAs8?00D$Oc1VUQ&RLIP}z+YH7w zxM^c++3sF+uWoyFukOE0+sj@a)ON!HVPVu@Ba8&d#*zgRU}4K(Fv!RVgs>O{QmN`y zz4tQn%WuB-#O^;L_TIl8=X{y@3gP8j_42#-oQNHJiakY~IHi1wAZJU9ypfH zC4tC=NI93y-ldcxu7{RIJUNxsR6@x3BC zlCZh%LavC&c|L z9UB+&KzszjcYoNENQ+q*Vz!AuA`r+j2ntA_InJ;j#Mi+;OPXiHYW-rQ(5=|J!}LeM zvdA<97@osGsIkd3iZ6{nv1(4;2!D0k5s7(LM%y97)-5If11oddA379V9>f!rkf6u= z3r0jcb5}Ns@_0}Gur`lz^S})(f2_dK{?A}<6~iL{k~R7&@}4#Bvd!m_JdUgTJRYCA z|J?AfB0QVO2KQO;o^w1q)aZHn_<=rG09fPKa}PxA+*kiY`0&O++ld8P;nS*O>9T=2 z41?;9I)VZ>It+Kk@k`?CU@pYgqdM+p7yLfiU}5J&7nZ{lIbo=+rRH0?lU^~e`oMv$ z4)?HJbsxSZ`Y4%k7ZfaJAKveB^_+rpL*E=qI($zZDdu`k$c8O=ASdhUBN)w>!OyFE z=Dg|fK08Bz15U2;!;&lBTA4qxb{HV>%2r8(SABaOFa)sS6rdW#YB)KoC1BgIJf=`_NIZf8HD25@?Zrng&(A)(y*PVwdv^MT^X}}``SR=qt@C~x zR(4PoZRa{~`s^fjv#$|A#Nt)e_VmCtRTNxaR;b9_Gomv9@W=iYGHvEE?LXPOcKvVd z9p3oSYd3HG_`%_|zkcJ^&7VFzxc+#5fA366nd>~)TIa?f=+xz*0@eN|fL0E$Q{$E9 zTf->)ifBAiZThBYkM6?~d|P?fb}*^hif6onPo3d4^ew82Nxy01uxqBxpjLQE`$7o@(1y7|sz$ z{zU`lC?x9QyCo4$W1kcJJa|et*@m0VmnN+!;F>>Yo2nsGgboEf)2Hw^OZ(rha}upW zyCO~R`~X0+R|3`QQGmnucp)$hAE7RLmTheL&jp**#^s;wr7G)ihXIN6AYgVnel!1^ z1*FHMOeuCqi#{fsFzJp*jsrS#c&;E9@Hp;bn;P5Tox$|h8{)6`i#Wp{3Gq1_J5EF- z&Jb|y0jdC!4>cH8AR6?^Y?SM`i6MNm;bHbE;cI;DbI;V>{9@#09WR$7?p`VrxKP1^mgsp7I&Tds@4zK4X8m;yMt@ z`ZV~@gOBym;Wxv08Xh0y6Y(nvaJ;Wq(EFU@UzIOk1(QE({9ohC^UCR2ILpu?O(}`{ zOM1rX!N25c9rK_=$U)@3w&KOm*=)qbu{)zdj0-8S;JCwn`j;?D*?7bl37*-^W?$ky zCv)VaBjILvWXd#j6Cm5?u7mCwboYJn-PM|%sr4W9T1p9?t|(CEu`YSs#||fI&Wv#- zD6*uB>5Cw%Q2&ezKZ+8LCa?0y$Sg}xda#;oaDp!Jhm^!uBL}WZ=|kr-ct7xszy#PEgq-DOL*M*UjT@x=blR~{qjm}DG{X6E@4H|lG) z(-QWMH|tEBLtVZd=AsbbB4V9gk)N1^#BoW*4WTv-wumdeK&GjdGPS~hiYRpN^77)9 z?dAE~7iTA*++Lo2;r8tK%jS!-*XzaQJw@F>b!s_P-PfX~1+@(kOSbA29Y0M6lw28u znmG&_JIjk*?H#&f(yGuZsuieOpqPO&ii{BGHllEm%DcLiDp~mE#Zg%w(qsa(B#9_ z;3+|ew@=C?)Xw@PQ-UHRzQl+8NC3+?_$X=YKEC6h z`Pn`-;WOG(Z|BJv;Saau155-vwcK1WySDC7iA!2s2$Z z_%iY|!yDv)ujr zUk3ROn_`l#LW##iL!-~*ona2HVYT`hWd6*yYoD?II-}|SGl~Gui_f$AGrl^s`ygXj zAe9WucwavlA6MHxCt?d5@SN>e<&>1?c|I1nl9CT2(0op#uNMI9%5xL|bgd1A4MG!L zK?Pc>QV*lHZjvsCol7K}BQXwNLazef zVP#r!-w~Ftiuj%2rNgst!n9un-;(kSgFk7-+ih5ki?mV|a?Pvt!JklPDxf5G55)x2 zuLT`_><(83+DvaF(YEWv6PhuSV<{ackRCQ9SR0XzVI&eTM}MAR`dOxRU%f5 z5D}G9bei@7$W-fm`{MHaOSb2yzx4d{_-iiDPTts_oxY*-_LkOp510YfBBeCTUM5P{ zYfm_4Sd!>cTSU+eV;7MK>^AIS_n`d+m$Dia#`Nt|}y*87+OjpRea+pG-x+ z?cTKC%)46F$7kQyD}^*q)Qol3DN3jzHiM+kAJzbaHTn#bkM>1+j&HL332R_v%i^Qd zOx@K6xw&ZLtaJXQ(K?JVm8OLL3LMOzhImFjS!*v@XOR6B9Opde!hQDM3*B1B(jbiP zMl-Qj7XUOh8*E0%ZXpB1`>G`SALMg2sq5{o8eJC5T!;Tbu^-3HCh+QOSM~SnSK#}+ z_n)_YN>HAHpM6XLyq&C7HCJf%fVx2#D_&R1Evub>XJa4q*+g68>bQr1uLh=?X0!Cw zgYmf@H;;Wwe;BDSLXzQY#`vlN0OKMsbCoc3`cj}z+qU@`%5Ve$#U`)^3c~O-!Ao(O zH(k!kY*32pgr|arNAE9W)ZoEBJ8r^T2x+ortWoX=`uMFW=||c+XLJVL&RtG^>}qFc zPW}d2Dm*wgPazoi$@n66KD3jW1Gg~b;bi@AL~0gJr8o}GFK-+IZ1No(w*!Me62N@m zRRbCO_}AW__0f33Jw!4u27l3>#k0OP$7I0Y83ImJ{k~&Ou96aDWjvkTHcs$86%YuI z)SnXM<$aDAhMfbje(?&r&_`PZ&o&kV-bR-|;*A}QZ_7dtbUSq`#KXbEh&Xq|{bi6oFRNS_`TcKxA|6X5G7f z>(Si@5B~D)+xPz5jhi=rXjArn5)+Q9&d|9=Vy5B|ui0Bpmd70cRv@UAep4dghkA{P z7c{P=1g9?Ak8Of4q5REEEMba&&knBk_s;_W9CsTp_$|^zYGdeD1h2!}LicR(`qA5}r1^Zp2qgs+9W~VQc&_J{g#$zJc^peH?EDMBG4l zf%+RxoNw{24fCtvZ*za`0?#^T);&1wg<2|-WPeTL1YoB-{AlRVl3z&kVJ%N#9ptew z;zKQRE*jhNQ`|Sgx7U1fY|isWBJ=fUYJI41b3 z`hF1D299mbRpYMRU!!RR{;WcTEPmzoSJNqjB9e8@D7353V94lZB8cs3JP_y`HwR2( zWjcK?JyD$9#b9vScMJXhAV<4D-+dr6tqU+Y~nui%I8C1$uq^z$QW^D z{mRxr2*KW8GY_Lbg4SVtUg2kXG^d}F&oq}jNlPV%em|(r^$@0uXF(rJc%HE?ukTdg zxwWRNfbdJ>G6YN7Z7dFeTt{s#tjl8oZ)N1L=^h2oI8vqI>sgO;Dl&&V)DrPO1 zYHHpSTL6$Uh5Z#k`VN2=?5PK+t2{B0^*P!u^a6<&1EQ@b4B8Ibi{E3C)a4C8WP(b8 z6=We$l>%tn`Jh!5wYKVj7EFgX9`0Yi^_L#J^74Oq|AiO+yTgNnzgx9#=eeTR+6pVS z;Hy;t)s_@ALM%~jzbk6(xOt#XfBRVh?iY#1_9tj^`%1iT|5hx+j-^BORZx>(`?3gd zq1xY0&^g%g_V8LY~X;1sONv-5A{D zgg;`L+@J9s?j%?lv;qtMAZ*SG{3xpAQG6aUeF=2%%KR_)N#hUv@fC8DTIw^-vvJJe zLHHY8(3i$F`G*?`rcnGeaCyP6MqeG;^iTKOUTh-I;16=cItH50iW}Rh&Gqp?>N!>rnHTdh|FwvrIXFXqbNPU%poahyy+h9t>eP|HCFR&`>ez#N?bep0%xbhids_T$cu zNV3=^R|I|o`Dp2iRU?bC!;5*)b>ee4e`=wyDyPKB(iPMZ+k#seRc z5>c+?ORUJdd4R-$n_@d30)Jl>ci!4+`pWpLyv>gV*cS_RBIFrtKyuz|nk@^uj8EA; z$3H2FA7IC&k)Mi4IJr3`+QPG5GX9VZ*KxU`jkLtJzsjy%>pM7sRXisaW{>Pmf8sD~MVUMa;IAMofW3-vj09ByRA{YGXlzlR zYkx^NMW0-7QS`G^#PL>DMG>HCg-UJtt!||3?WTjnPu+d#!5_c>!i(R3@BaP2GL^mK zxmL{c3|O|S(6++gJ*Wb<%02$|*I!vNpeMt&6U<(Y1-j?I#aP+tSHO1b@aw^x=YwT! zU_u_jqr9>kE5u4ZwTH+UX`2xKi{<^rvq9+4i(To=10H3`jU`ZjXS(w^+#xKCHotq&?H&v6}m_ z0eNj!HCFxs5=b;+@M9r^DPq|VZPw(Hxa5hVsk|W0y@)Q6Y;vL<=#Is}@Nc6W23zK| z+WZNR1PQvLeWs7cX?jer-CV?xAfASYiQSU$FGcY<7%{~ajyb0 zeg;)r4tgareHyS(DF6*adv(9HaqRO5v3bslQDU3$i%bG^;XB z5v)wshPQ7`AF6oCsHEy48xkP}55Dkt%}JP1Caid_NVu)AXX0SY-g~>Xs-`&(GjybP zO{U$*$7D@^67jxD7<}>5{Uxymmh6O>OgAK6S>o-7)lo&;9!l`pS*>oFPOt6@U5%tI z%pp5y0vcao@)5e;wal*jtFlJ?#hJh-|GU37j+j`enr|vEq$6>lB_i=K&L$edVLNUb z{h|nqo_w?(7Su$Qf2pU9KAv<&uXb69E2QIPw-f!mMPGtf!El=An)sUJL3rBAy!8)! z!zx%o&BhEmHPIXe1xfeK=B?qglt1Imyj0ku1!hnAKAAIkQfhOW`8CR&@NoJ}O2l{P z{{r851i&8!@B%=A6>OM)Qj{>jMnnOMJyKI+NdImtVW#U*1Q1b(&VcTqbqk$$sJk67S725^ zXFxB}k~w?kx%il^05Czy)QcjDc1T|ZbO+mA(56EHWFIIKWU~iM6J)b#uw?3Qxa+$~ zq=bDy3H|N*Z1gB(ZqQ4G>eP=MINiT<=Px{X<;@>@<+ay;=L~%yV@Wp(W)-I2ngy&Ucjv)H>!k_sCDs-v)ye1OX6Znm>zsX^( zjr(hYu}sFzuj+t*@D@Y=wEEpb1@H>C@x)cZ9@Vje68Wn!kz+ZhoX+yW6u2VE+s8Nl zcZT!UdG*T%U);7)Gjk5aZ;A&9Wd+d_1bf@osOz`IO=@$_nhvsdf1huy=D1?CJ23jy z?RH0)cTlo^U6ngq+#>ms0eJdHhTluj&jEvyg=e+BYJ458t>G~Y8vPaw`TRdu;lrP# z6D$2wUm28RxUq)$5cduD2Bm!p-cQ48IhL&6ST6t!hK<~Mu5iX`QW$WzX8D>=FkWdJ zC(Ih1GqB%c$RkBQVaAg)jH@D^&cG- z^TX*PE`{BLy_ee=!+^+GrdXkm&jkigT-ezY9jPCvpWndnLs%pkFKeP>pZrsFnIJ7Z zYKI^6@EO{9UY@SBoaa&k;bMZ&-B$Dl0jZ3lEIQ(WLfO`&_IQE z(Pa4s98K*FNA$lB4;$le8xTpNYtyL&e$K-f%L-9M{Yt{l zVEJ(jgl??xmAC~iAVs0!iegI&T!>d{_(;f`$1n;8U9sORGsZ3M`>Xc+ug}}G!Y^H) z@?VfG?*eSCOQ|A)xz4vPFHU~p*^@`V`QrHDKRTa2c~j@h2~ePv8S!4WsjtHK;UrSC zwmlx0CbB>3tg}@)5rv=vbw-`HsM{^-F3+dshG-X8Y$_pvDx%G4e$sC9?k_7WG{b6lREVZJ!U z_Ur@~r%&+Y{m-F!xdE?ffQ`JYiUF~MKziGQ~?dO&M zO1l9-iJ6UURy(aeQ*s2y6^L!v){f~w>f?PEiM5q+H1HY6ObPdpfTQDKK3kDswYk%F zH`q4j1%CFn1i!^NwBIuPj&1MldOTLZwA#w6**k>^H8v;&oy&wyou@qh)my+Rfm1-o zM-iMq2zY~IZzAdVxiRNX%%6ap)>GBsL?b>((&S+<#rt$epcNc@N$(%`?T%}!kITj~ zlHO(UfZO}d14qf^D^3INRyN+nQUF}`IWZgL6Paw1DHk~wNdnWEgG&GKPL{xv7wz)> zu8}GFAyGE`a>i@}5&b69Aq%0t?H9yXC(W0Y>otBSzMLXyFD%8-GhDUFY;Gg4YyfzY70A-s*w@3zw zys@ba*G5*1_pTyp9Gxe`2l*_N@rtn*BD=C0@_b`HRak&e6rM0^crMY(Mg#OauJwPO z!mm}nh|nu*o}>M9d}Q%W)6XS)#ZXzjzFGk2v%B4*t)v?5ka`)sWa<~P;XctrR@%w3 zZO13mPbclPV8K?)0ZS=yg*@KK^qeF zS0r@s1U@zD4%>HEr363RN3cbF98Wl{Ptr&4kYqCWOxU*NY=61v6Z6Afw-|Gdl29K+ zi2bA&7loauCn!*VxJ5)%C8`!s6sWc>@=`VsnIJMXTuO!D0;m_LXD86h6KFjH zWJ1~8#{RuGaQn57ThF%is^RVSz_YTdcj7Ev|J($^~ciFjp35kXbxb~nl1=JMLz z7k>234}awM-M;tWzXs&pc{`I$?K=WA3IW>BF3@UkOK8FMm@IHYWcM4~XcLymf_e)2 z?N0Jp(Vhc%9e%g_Nd0`gbbsuJp`DGnQe0riLk9rHcufCrZw0@A5o0#{q24R;#TqY? z#h&=5gg=s4mJvHD&46<|zd`u)phvoM;Dr7vnMJS?#fB(*D>Vc}6^cv*PE77A)dLaz)c*8Jxi3FJWmYFnYD$&xVs!HPoLJH)q?Wu3j@AsSs8f}_7EO1Kx&v@ufxQ)pp z^NH_cWD5sY{$=Uo$N9nF(xT={&qO~Rnz>jab3Xcr34*NZOf->2@`-hN`T9tzZv$K? z#M3`ljraNXdltN_w?lk>`@j?bKYFLBOBPy#;2lsOwlr@)6L%ZaS_>)(6CXFjNhWA?Uz zz}rLFY-p6+pO_pa`aMJboH!%_n4?KdBSTLz=zxJSi6aD3Vn_}$!T0KUXOKu#uAQyJ z>ZIFw+PY1*HF~RiyHrLwkywhZT%YNo3AoToy6aiAQ-{)uC zhcj2CXqgHWMRvR0OJ~RLf8E*RcYgKdqj$d<_3|Y}oiNE3vCDP}e&)&7%0}wqRha-x zP}x94P^195MV(Jk&z}JEV*p!Bhxc&%l`q9hAN?x4{Pq{)wGVv^FTe6C?!Isfhd1|7 z4hk-Jg0l<7`311uDz@8}cN>Z1MQrBYf)b{xp94fBXyhJ3s#49_mP3?l zH-Txt%~h>vGs@OVo3U3Fg@`DmJ&PdHkeGLyQucP&?!WjGue|+{|LFFe7rt*Z?LDk> zm6q)H>2GHhSP`HX0Mgq6D7fVWf$vv(YXEsTp9Lv#)$v-i&&hU0tc*8Xr4HYQ>s#n) z=K&|mk=WLlA(VWN1qWzsT?QI|+O$+2l>DaQRo%{Wf8P;deS9T7@OQk)rQ5jd>@2yG zxZ?iEnmT`aKoP%@d99k>BkuGW{XXncE$muTvY*Doi|1G!hkxq zgkL00&Br43XZ`hYdh@(O4u33BDRRmEqX?ixtFN#F>8%#hl|qUvagg|K@j=WVSm@wv z*MSZZiMNb+dm%mMGI8cL%aHj@gBi83q9+%)7+x+Y40F3XFGUopIL2UoUFI~wLmlYp z4FebUfE0(Y?1Z33OrwbpVpQu$SKt%F2gGb63>Qgy6z3O_zDmE}^)BdN76AMJX0l%) z4T?j0|3wbC+=e@nlt0h9|3N>W4?Gsy(_qPP|K}6$wa?mkKkxi9`}4=Ki^o+zK_B4(7F=JA->4H7hpy@MRdQ-!W;U=4b8UDbqOaPT zA6xMx47jz|1xQC=?e%ZG&KFqs_FXx~m341mMtxw!XagX!BEyyK`9mx250>%Tgq7Sb zR5n(Z-PCvCnLo6?nR<8vmk{zqWl0Z!R9R;_bM8n*jRb2fp5}W4BCrKfps7L*P{atM zAYcGPiDU@R+6hJ?xiFRK?jHvFlV8ZrBUS--CsWGxLKb z6Zo}h%}G9sQ{W5j&Li$Cbgw7;p8Q72L4(`2*7e4$8 z@Ya`nEk6A5FU5yG{0ZE?a|d!zuvOsVQgME+*zJJrwh2UQhu8U71npV;erY3$gFV5) zo?zNE$xnTye^Y=>iG<7SdR1Uo+kaa-Qedap&cNlaVmkx78Q7_!&h35d`+I`xHwx}t z7d&`SaBU-a@4XrS%U}OH_{qQWWB40??oZ;~pZ+oIE*?QPZD&B)-$&ahAwA(PZJUIs z+Lm>#g7&%tX<2-o_eJ)0`#10X#g{+y_P0HF>5U)W+uMJ#+ig+jxj#J?$)%lX5Q#s( zCBUtTO#n|esz3i9_u@AdbX8$*Nl5WTDje`iqDH@Dq(Jv|aeuV{pn7HhSUDeX<~9T` zjB$*YV;hE-6Ug?*{IDIbIN)V-pkJ%>NCN_!93Z-FQu6WY&BT8%SMymu)~fm9fu9VO z=>t4DPx#UJ&7Y~0Fa3rR%>sKBWA-_#;{%8S%jlzqJV%2k<5qX?;rJ=hKk|t9ky)}1xI@E$(CsekY%r(#O*$K8^e0oka- z-u_g)@irJ1--D67GbZFgBV4uh~GH*p_A7p^fgC*m5A9&oKr%xz+o-{fT z_WANB1)prTJK9=w55I|6E;XZJ<*OL9x*-^Sq zlx}2gCy{n)RDoHgJvu;cxT^a3f?golR_qkGxU9I`R?OQORTZTwZrnV;3-|YM|Am76 z3HZA|b&MbRlYbgN_9K4+pZibOWWhW(FFN_2KidOt425Dxv*d>pSkG0?v5so%N z9p9L*iJ-tEsz%W_-On&F@M59I>%=9S#lr?lJcq~dXoYJWh$C^&8uWih9kja!b9ukH zz5fjq0G3nh`PzG*9;__3vkd+IVN-cknEJmqcV$ratMFjHUp-+HU;yzvQW%hK$~f-i z>w~Jtb3gr>t#T=;v4qJR-x2_y@S`r|$?6kJ0#2(zWJF_91|32Gc=#Nk_i?NuOJsK2 z8SwZ`144xgN^r)ljBPm$v`U+hFdG@T6F#xR$j*lDd+;AMMcxK%MlkRZ2ovP|4nvvz zj}SkVE)pZhB+%)wfTM4PQfFK4pW~?Dt*uHXbj;3CKVOmez+F>c(;enp=mV{qCej3K zQyJ%&mg3#``R-Uv&bts2Z=5|bxB7-WvV+7Tg0Ft9^PdJ;RLMIZTaey))#*}huZTy$ zl3Z+DC3x+6`(4~|H+?NBBubB3SpPnMn;0bVz$@KW0D}y?&*O*u;P^y48FV z%pP6OgIjNX4LA0V zmld`ewl`H2O7Kb%s0yY6OjE(M5lqE?`)H;0 zs(@BYC_^No0QzGClK`8koe|JfuN4R`w~EWH;`9s*p`p)qRo8 zcK_y`A9?AG5B<*j4_^J@&1Q2l?=CUdx#gHp1w8`L66x`Icsq^12b`8{n^(83$wIzP zwXI~MC!-9n!{Nlnw(WaBth5TN8gekE_k=6vx~9|F(_;XAth}{b7vm+zL-@+jf7}vp zoZuB)zppLYvHON|@S^kA*kTvCprAxM$R=r~zjoe8cNS{%Z-IaCBplDUDm^AcSzck7 zn13OEi1xP<2CjbJ@dJc-u6@3d_3wusYx40)rp9k**F#D7omS(Y*-J{UT^?p$J03=& z7a#<7ye9JV+kFIArz;*!$U=76THCnOc@!HSI)0(AX$w0Df9Ef4`9~BdT)x@)#Q3CB z5v+85TwFpfvue6$ zaS2#9&VMXEi9b%OL?`-|7IV4p745Fdffbw$G>bRxLHv3DWRjlV?t=hiXWG6zi}?R_ zJ|A?v=jG4m`x*Iq)mW?;sl6F8Z%6@gGW6p2g$0D}THRo(_fO-eSrS3@h`A1Jo|oUe zs>!|G5hlTT=Q{0l2+W0vEaBuwgN#<1OG5Aw`au{b zy8N&^<`=TOjBj4NaQV`Tw7Wp@F}N5v&OOH^;jIKO7l6XKcO2A;8BCH;@*f2;?&p+mv>$a`HXIMsGF3%bNCCP`BABuk9T!%HjVFHWa#8>ZUtNHzR8OHR20Ui3+ zZEARzdH}!5GzUV9eQM~fjZEOw&r$@l)X~pH4_UG%ht>~A= z6j7i^#Z|pZIU^SO5DT#ObI1T7$oT9dfV-t)f~r>;)|0D5_Farl|rG0PI1_*}=^_ zfBKa-KlHorK6vFvN|E#3ZYx@=t>c6KGBl#iTlmn=mKxo zAMfA9SSuA4+$d=z*J`#wo!7=Ur^DKl4ktbiebRM~=ZxRop0Yg5zxql()8G60nGWuU zgU?J;BQxZm9iz2HN(@w3V`u=k!^a&dv%$2}*C_~hSL ziU2mgeRv#(ZSu39{}F8SPh84$J{V7l5R-}L{(~$Q4W^N#)b;B^%~_IcV^Ya`n0Sht6%*c3~vMU@NWW%o$%8 zM!+iUjIXgg^ImP0r>Oj>C^EVlK1rRkc_+n((42<6cva+YjZB^FDL(mLmw>L65{)+o((ve9vY*alHaaXmQSavh z1^s5+{BuR(4!WkGq*WK=E_uY@qTJ9x1>aMD;!il=aQaa+;d@Fwi67~ciy&z$e!pIg zw1L+`xVz6bTx`_Nn`RgDs_(ed#OccnN_=QAvSkh!#4|UqG*MmF0nYH^@k89P^6&lo z#808Eraz7k(>!?kgh%jP)6G#*k&I>?a*mMw8b5JA>$ffJ@q(W1=rKDMxGv$kPNl+3 zP!)7b8auI%GIoLSZYkr`p6D{vWS~#RMpVohy)UEbFcI)p+Y^2PGj=iCFNSDvM|f!? zF-ZDXvjI(N3l6VF7a!=eK<DYn?XBceWj=r|G{t#52O zWBnTK1Htnv1HX;3L|2}R;pR-Nv17uLe}fl0MF@Wyi>-MSQH($2f;G#>9w}lU;XNoR z2I0r>4F|)Yi&pXKK;xwaGPxha@#G(&I?g}7@49R{vgB{{V_q>m)Sq0vJ$ezR_6z*^ z{#*bMpucrbN|my~T<06-C+~gr>3g5~XY1MHZ-MUK)FQS-3#g`74M^YiAkbb7Xbm-V zUv$2Jo*e^vj_L4ay!NHvfKU9we+-}as;|Y1uiwEA1;DyqvM!&i(!N;zp|_{S(SmeD{DrAk)+c=tY6U z!-5-!6K>r)z|9*Q+`Tj5c0a*?Qvj`P>%N`-Z$$u(R}}HsKoR))15Sxy$3J-^#bU2w==ENut)trPGG4( z;48p>KMt@{zM3-;m_kO?(ew#my`xb`?!$*E3 zaXj7MXye6?SRK~|{dwHA{v*$NL}NTv!bgIB?%O`KVXi@AH0gNRbuy!=2o+w*!xGma zi8#x4!;D+eeP>5D(-E5}+?hBY)E^0F>JuI<vzBxS8sUhy=;+}yvn2tx7!_X1;r=0<$S0M}P=e9VOC-MSJ!*{W8=Q8eS zaO^>Ohmdj$f-Z|KBlgjBKk1J_CghzjLr&(>5T-g%v!cwTkx|m8Ef-u@n@vN#{`D60%V~Jkt+%rQ!JRM%oCfiZm^jy5F2x_HZn%ieW7pC zzs2_m`j_xLIp}iXWD3$(_$@&+wiCSZae+2Z1+l{*kY4Da4A)$QlG#1(;4pYTLGvfU zl8`CKNuaJuv@v{klCio>yg@j5PF~04$sk09IqPH|dqBi+a5*Wp$;vZslXs_%z|H9O zadluuFaAjkw%$OfxzH#TbAp}wbnOaMxt-HiTBC)jQk9_Wc3~%NwNMSj=Nps zQ~lfP2)(TYR8ff3Qbe|w7q6Wiz56X^k3RF8_44@3Rd5$ldL*iXcA7tIE5GSHO=&>- zV+#U6XUyj((908)!v}cj6W@R@`9Fj{w7s){4-~UJc7=HYR z{uuQ9vnV(2VLH6l-VOku>eNLp?Fp)?0x7df_YAcbLHYFlt^42e`r9A*_B;1q_&c@E zTIX4`y{(~7i5h+q3eckhir8)*34J6GjWz&wz#t3;z;7Ukew_!D&{`i$fI+q%G**nO zKCYk%Dz8+p!DqPRO7#kUYyHyi0ltqX-g2>$?#(s)6v9GOvwD^s<_vPduW`X961KRm zgfH^dA;~oFdlkKDq>PX8gJ^O57JUPMtIr6x2NKQ8acKNLCzt#ghf_9hiT^g5^=Dsg zt~s-A;H}|~fF+BjtS3mlGB6DpT-6^VLM%5LoW}BaNYE16@z6!?Gtg=OCUCr-;|k;k`RQO;Wb>vT1_d@8)y82MFwvSd=~V4ce1I#-&_{Edlj)8?`E8zUgG%V0!K#|I6k|?#pT=&HdB6&*~rfeSa7~_Gi8udig%ewfm6$8&I~<(jE~|DWbK^ZNrANC9JBY$o|jX zc=6>w`1;!){*LQ6ZvMdut*@v;`*)+&>~>xW z9=CM2Yc*Yii5rou#eJm)ji=)dg4`wm5(VLtjdsNEh-5f{kH2~4Jtz6PxE}+0kplU? z|EnV&nFq^4#Xz$qvS#Nv;aj2oD*W6QI~#|c5m@#M%c|{laH&-rtB5#%VxkiVEMcYJ z{YwhJd{vs@4-Dyllx zCzCzBnH5>mw?dqN3Qu-pEG)s=vOFZ*uvotVr?DWzNiYje=$c((yIHe_esaGGD}Ux*&0h3E@k9O)nM&fB_!{@9dUfh0e-#zh?_-7f@bBgD zVt5Em96_AS+hDpnTFgn#E{!|fXHy;j23~0e-S}aF-r^{IbX(KM6!8Sn^B`I>ka#nix%h~UBXK1h>59=| zywWq_L7iDY)r_CFaMm?``f2rx;=w=a6h_?+eeM0S{uhEn2ve0#yPG$Xe zSYUnc@}y^6Vnvx>yJ3t33qLec~6!b5Sc{E zbZfgk|0So7Kl{&}Km6>k(97dnC@K({yTS=9bX5Q-BE?o9+xBgAKD9FjcF>C_(A_yU z*I&ciU-N75HNWiF;G0AHX;evZp96D%^2Dq;GzqO%l=u1_TIl!-h zFTHj&iDH@*A{7@GibtowJMYanJ=^KaFCO4SuNC~Azxgxx?*H_U;wOIizrgO~A>`mL z%8l!tZ?*-$puLI_w!~UHUyD}Aw14=&+<*18-}BmsKJs0A`-kuDwp+}#iU>J-ZAp9- z0^%(KrpK)%y**&@rUC1VWdb@R^Xh78zs=S~GU~e#Y&Cdo%ot-q7DmSh=lz6UQo49GF3xE+xU6B$?2|1mnda<{d!Kts0H1n9cM_5siTk^D~r&bLOHjAM-L z*2Z}nUV{pN^ynYT=jn8ehg;-6`69(nE6C<8@y{Or1ASJ2T)ov_Qq#a%q93pjAeRgL z8VM$pHFsaivsuHdc9JCcgfHbk2nS)eR`|+E67yYT`N~3~FJCo;BwZH;ErKV+XtIhs zBpsNOR!y(qL0(B@`XV7ptQZsB9=;oO?g%L{cRu0j`AXiieXIbWAX)mUoyw(PN^qEJcJo@@Yu<)o4oCr_k`3+V(vg47W2;Sm~ROY@3TnwX{@E;7H^lF zt~p32lG-~f^Ekl^8E~-vQM_;x)BPCNaU5}Qx``J9Jw77_ye;*eU4S}?>i>N;KeD!!Yv*UF*!#M7Ph%cO|y6E<`OKJg-+)gSP4f341PPNYp}u{)1G z+REycud5BH?yMqyRBzIpg*}90G-MpZN#x{tZ6!Z;MHoFoe5XEEU@$l-K@9yiAF57| z8>VKWNxlq+lgmIlaA<{1&Cb%OPwfMDj%P-`EO4{-L~|Mw0V@jjE-HlXW&YZ@KAiE= z=c(jI$*1@G{`Lm?GvrZ8F2;@&^CNxur!sv0*5T1CN&H~~EoO+F6=9#Uu33Dc9yX<^ zH;fhG4eQY`Z&??_7PI{FI^j>fC!;3 z-yGNt6gnyk;G;HvM)NStVatIzvHs;t=a zVH>+-`SWi8h;5^U-M||gH&)v;x66t!d^%P}*dpPV+?E`zM)%|_n9ih=sz53rNCF+c zO&0Ud;h1_54>H?>9+zJbx8#A*%YHg}g6QK8g-Gt{-*8{@{e^B0{khnvoVL~BAA-aX0KY?zKFx~hNKJ-=pJABPI|608LC0~fM zx!~cuGcL~BzV`jSwt}t#%$F7CXBT*KbcEyM6P%u$q1G89z_giKLSLl4E8To!r!k5k zied+Svg|eHZ!vxMHvO;0YDn8L(h2}mkvJ5vC;OYtgvsy`f%LumQYO?|q0$dwQ^9t- z!^OPAO4K=5;{LGZNE$SdJK4hI*GFZ(vqUv5VO zr2V?v)(p(h%J`(;A8RHOyic703|2Ij=Vo+P3caIS*C zN))wQljd{68wK?bg4eU~O)KRbs9(i*xq@E|=PBcT(9fcFMFFKL&T8R7GUek+J%!DF zJ@I`gAceup{UR9(gTa-tY@^x*q5eAd7oqm(^F&|{n&J93bXeuitP~jxF`OdiN#kc` z5F;cxBR32(76c?5nFK$=|B?Zc7);%8^&kCSBz6*&dBd10qwXkpJWdK(OfGaXgbFO| ziwEaKU(TKh4?Em(;2$y34nG@<0_piWvx5?=>xl-t=J%O43kE_~t*}Cl&q*1OmWDk_ua>EGAcB#=?@oo{C*)|oktK774bUZBVL3Vx3Zi5 zHr;5lQ^H=Uo$HOrg0CU#mV6p+zEyRNKOIIPJbi_t&qZ^L8Qof3%#%uhw`EE2@p{8FiG*69B(X!)Pnq%+3ZEYI@EoD=slufPkmz_O%|6e(O z{Fz@ppB}vesTERcKZR~0quQ;8LNIsxr%)6qHmyNDK|OyTK*h~BzaC%lOMf%I?CX9R zZr;0r$482X4|mvYf&G2K;lT#eB&bz!c5;cwM^A9{@Da{VPf_O`WNL+hGEJSH(2>G= z(B<#*X9~TIt-zf({q=w$I4i(_=7#wOdjz1gM-1#>zLQ#rhZ-2tU-UipN@8QPv33qND;NGo0 z+`D&xJGUm>xhZn6*HGWheP6!WEc>`$!#pp91TDiKe?l^IeB+Peg|cV2z{yWjZm z$NqzB*Kho_%Zp1hthE7nmsz*X?0b$9c5yx1yVQ@mk)7|$lIp-^GpDISRH<52jeR@;CI02HTtj^2KE_{ZC-7(dAwho_*x;Q_SsS0I&CZ`a{Vw} z4!(9*VKhMLEgM5@1eRB@5;mmJ+#vWItHpf@cq9{>2|h>M-%(JYi3zUY zGb1l6*Q~d}9t^f2Z4TV=*7#%egp*m0r&MOPt>!`FI36*<9m&e01WbV?9;$#nn>>6h zSXrYt8`iZxfF&;EniKv@nNmVD^hw{7@g61Fc-KIWcVytV(Dk5C2)@tKq`ND+)8}OD zTroh|K8^fX&?~Lz!1LQ2VL*t9tG41i=;~tkiP6)1IJyDl6_N+4RMO%*Bob$ju(XHP!&uUs6x`;W~RCwEYE?kD;SpcAxh?l^x}P#&27B$75@aj_FH}vzThjr0=v23{YN_-KfDAKIJmZl{k;upRqVDq z93P+J@#7;LJ$i!ed;t-`W{NHMf_5lhA0LYT$~@2fSgZTD(Li9kgYD-L1+Z*jFH2IMtO-JmEfnsM1XcQ6x4m<*# zHU$R<8$7swh}U1fE^obl9WTGI!L1wZ(TQ5yp@B7crn_D1K25-8qo{KmrxbjFTXV5Z~nwP`d$CYAHv`H;Xe-ODW;pZfN6s|?>fzZ9~RiLhfGyO ziq5r^{cG>N_~wVc?bSCv{GHQg^X_(gSsGzdAyGcJmFU`&^ygx~Nez*qo? zmEgF}_+{GZJ^~*?lt5>%k=mzmVth@v2mXU`h=$8T3*#H}$nAF@XYuwYm#ubJp+vT( zX3j~EZKHn_6`T=)vqZn}Cz@`XjS#0d;;tyRWS+7eA}JtHAbqJC#+ZB1Yo_D656~C+m~dI8vgY10|v#5uaR{1CCduM*yR4nhk%B&s8MFL|niA zEYzMh-Un&#{nDhq8m|9%O4|=KE`5I*pGHPLkJ=nC-qMt5;)0npT3<0zkayo+eR>_7wgsw_~1z|HZ05*7VF)0axtjpwxMMg65Uel|lkF z=V$$U2$<+$&htGR%8i~x%T<|;L=X7NAnW`sVE78H5BqevF7J&D9CgO<8CGsrjJV+~ zW~FpB}mN_#2agG z&XV-Iw_6rMXk@;(QtVhOte7mF&qD2#^^bW!@Xh!IN#CX0lHliBe~G{9-P&XRWitb1 zukOyj;q37{|Jvo_&wYb#&#z-Dv$kXV1**kC^+^}gOCs=-8KPU%^Hb>V2-CGU@$s+! zjri(s`VDySkvDOCqImz^OI)09F_nUY{XJ~$IVym$Jd|`of)_5E;&N{SDa8&$q++5KvPIhI{|Z#pzDjM$hARSWXPosEQa@+c^Nc3e+k<0S*r*xp!+HZ@hW~Z@+dOZ@s#Q zdv^*Z0GC@}2T^|&;S5MYKO7K{+Gv@krYLh&9G_Rb`|c&S+lrT8J;a?`MgQ!d`fK>l zzvFk~|FXdi97zc~}tR<>a0;y&Aj=rG{$ z`vjp^1)5;T6+a`*#DOS@4_Og44>oWUs=@>0ZRS^k*nU z@Elnb0DK;e(KW646OQq*d+NDWcZn2*J>%nWKj8K8vs8_z_j^|RMSlm-Su`jk2e@t= zsmJqhZ}jF$kh1-=2|gx;%u{;`hC5nEE*bD}h+11W>cl^DwEkO+d`f;Tf$jRKAbw_r z48Oqqko478h{ec^6?Xe=yz}2ItAs!EMd`Fz+sP2lLVXu35KF25K5BhuHtxvR#{woDEiT0jP2>0(v zCiQQ$M$&8Y%Z4Z4@2P8NzW}}Zq>5TL8wGGUZ_mE&?BQqrwe6Glz8>?%buDFvZ}3Fh zAl?~f+fzlg<#T`-@1&lio;?P1hyB;S8ejGezX6~8MZXL;UV0G^-{0Zr=n|K^8T(Vg z-d2M82$G8J5%SxqjqRvY)y^F0E}ntQ5ET{-imSe zgz3xF6MkQ16*}oZ&5xKfs&mXANP7*S6rZ4qwn|;=+>`YgtpL!stNSDGeXLSYWP+3l zGEFFD(+Uw?iglg?M(vLdz~Hp){sKFHpqrx7iW&Fs?c?oNZ{nkG-M~xtCtSZSS_GJ@ zU|WG1ZD+zHO{F)J02L5XG!a+qb`{5G!26G9Ohxd@%X>O+xA-r=_lNO=fABl8{kb0l z4($W29i}DFLn7b!5j=l#KtYH3Et5xe{Mp?^ zA4MJ`9AairJV~D}OG23VVe~W2@PWoCNTGn8?MLx> zdhFD{lkU1NHlBvOS%25^59d=5ji@X~JY)UGJkMi&zP46GVDKacai2PB-xZ%BE?eAN zyZ-rnMr5vnd)1gpnN}D#ZcpJcpGLzt-m_?a8XXD6E81KIFLd(RSZDM1G;H|S(jesq zaZk;Gc7m2BaXDsMwMw`w`!%H{qhi<1ATcH3ZTv!B5nR&YyIdva9@&$jpBY%jlUE9d zjtDuWqKUINC*P8KkrM;8ALvN^IgvM_82Xx6De;Y=Wsqm|6Q-B(H6ud&G>5UI&G^vy z<-z(DdPjOi8v}wg?!(FSl`1SLQTFzPZ*EQruscY}u!y?VIpBOI)VoDacLoE^II~Oy z(KntKxBEg}NUlz!#Ri1CwROK4<4NMBNou*XMmkIziwg)N{3sAGS0w#m4lIj#S+Ce8 zS^)qoCr+a2cklv>;spq%%g^=M_(S8_$K<*?XM;bU#M8Cb#2!Z(3IWbbN&RW^6@iEf zRHmr{<;L#v^qbBee)|8hee$_aV!pg4rR>mOtEh_NuMSkuY5qX_)#jVX+_w3jKLTVA z55C}6;*;O}FW_Te`K2h+9v(j0;^e5UsBShBPy}_};qvShM@LWa`Nny`E9fZ-|ZQHu@n9LHIGffq}X8q-DY(m6e*BWJee&0b%<7o5I@_&p7*z6 zfnwh6u-jc?dwGHF^}-lK;JZ zY&M73JGj>V+uz6D{vP%Z_AqTW0NR-XT3bS_+IPYm&P5pc|2L%_45)LLyHuzOE@r{Wh2qJ>o$6Ha+ADjwxY*&3 ze%GJEfAd}6f!)KOLb>$-Wp5J9s_{`A)nTAbEjAK1i5X9d(qTmeubt{&s16=F-=0WTDwUt#abyADzz z!KSzZe7d{^<8Dk0CMEwg!<{A{%jrhC)}`uw1V%=;!0M^H-)nqhe1mpn`Wzq4!6;od;KCF#5R@@f6=z$@qYUf3OZYb8|vbvMN-^0Gb zRp}VBkz-mVI1*-tT%rab#wQgvGO~IJ?hS zm&fXgKi^Bncg<2cLx%aeY@1}KPf0-04S2q^Nc{Z|jUV_MPl%Vp2=PZUQ`7wzZ?r#V zC;b_9!jth?7Bx)bhMPbJI-@X?=?=b(`o}U3+}YuH3mIr1IOBcOwOH9*=qm9}!1kxp z7lcBvZbTn%525y%E_TrVS7U6~H@?rm={sy3Pm-l2zK)N#m6l8tDboaq z+`GIu{>HOMpZ-^OPu~4UbiTNbsq7k-rL=g~^L>bFJO$WS+odRq?x5SpsF#mW4qn5n zU;bD)j~-uQcX0_3!QNg$-6?jv8OO&@aQx&LCnv|Kb?1lYxt*!C zv$-!_6ThQiW%PmO7Z*KZwMoU{(D!Y$H}eUglj)a21o!VB;KOg;#3w#_4G-=W6ajWS z_{rzfBq%+S)VVXLyJu{*&MJUHI!i@CQ&Y9z$;2 z1!S)WTNVB&Ln-a;kq`w+dk^4lx3_oW)_bqK{n3Bt#aG|@z0i6#&sA!3yVVl!_-e^w z6a|33LqOrbVac{q;$sQ2l1x$`3<;!7*7jY!E#QfGzi&x+@H3drZD zq5}uslms$-hpE&q`U?Hd{i$avI`FNbU3|^>Q;@5KH}9kfKE-bx;OB9PCykJpNBw(* z2s(gZdJzZOT_rF3W$pc1;GI6yKYMx7DP1O+nSTSlqZ4h$UU*XQ|J zteCA;UjU3@>nPx)fURTuqfu>K!}qG|&%~Sh5pS<d@ovay_!g1y(4W(?6fLw^jsP_*EYR=C%;`>V|&H+)1Ri6JFIW=zN! z7|iwUJY4C^ct?Oo^T>3c65C|hDDep=vI3hxh=%duMKCB}0@6M?h;;cf%H zZg|~>XKR&`UN@%5AL;n@u_6)DG(9ZncXWjfv5lW`Y>!yL027Zpt*i?v^X>Rj(iW9g z6X#GsA)41`^_mAD8@HB78*d1|^_>?6c)b8%{nqge{31CHht%X&pmw_cn3N)%xo;6P zdNhxd>?UvFkO3acy{}T+%4~Cw8vR{{B;S!vW&Kg&w?zAZ?=J^lYZKL@%8|Uh(M-|s^ZS};^?0`d-SP)b$9&USLl4XhpFt` z<10!_Rg2^22mSTi?Qp~$^z41;e1!emAH~Oi@o&MGedDjjjTc_VljDk`qb*Ps`+F1i z_5|DQjI*;d93Qo$|MKzzsJp&0m?L?Oa;?4q2;8PI6pnc+3^#c9UtN1>;#t=r>J!cXnQFF1npIXhN}ut8e{pq z)>x75zN9CBOk2=g9B*icEef6I_Fo4zZT7H#a0A!x+{2AK_i^p|Elis|r~$RKs_(yKwjaMezIs|rA+TnrS9~85(-4AXyioL15(cqo; zp`Uwii~A4u@yg2uKmMaXjqm)OzfV5%mwrg0D%0&7jVE<(vS@nM!s33?ga|5X70e7renx^Is_V7Q;$k{@EI z-cOzPoFEy`x$o2Y!2sSsA-}(uv`~B|+%I6I{vMxbw8?}l;FykZ+`>t^x9j@m<#ul$ zudd{eM4? z0*&2y$U7PGxH{k;a?ayrx;=IW!hWW}GwVW*AL4qBRr4b*HjHy*@naZ2;ZGMxZXmg< z5Dcett$2_Nc^18STu(8+^T{1MMr1(Cnsg<@HmoJ-uMsf-&EWsRJ|pcTY*yH(wOfTr z{7;Yda+}7lwLN+-HDk z)OEfrhmmx$t9B#QU2q>IXjK^s(z}I|*W~o%l1nQVIzCEMOd=+Yd`h ziB$STe4ew+hy&Ug;J}-VI(FEAxi++}x!li_7YK zr+Lt0PEMCPKHMjr${5-8GT_TA`OB4TPyX$GB>w^k%Cu2H_b$$le);LcpZnM5llQ+K z^>Tx$>;Uu!<9Q2&ZF%?e{yeFbxJj! zArS2E@1c|l+w)7D9zVg8Cr3CvJ;Qc;iPBe~iwIx|0eI&|o?EO}5#Ti#s_nUU@j$NQ zEj=CS0ja&w!Gh5?@B5hr(r_tL+jd_dsPh)v-5JhLpWyuX2&czKI6phV?(!0X+FtoL zP3-`{w#B}a(X_~XT#Uz-GY9Q0Ft(d9`4@7Az~1hVCRN}14xLeVb5GhP>>pgm^;>sw z>;8+lcIyS~9UKZ&Fz@ZC#MDPd~U|+@uj@_=00v*SNz#O^^^D`zvnyf=qG;| z*z99->qZZnCsa(3#s~pad!o>`3Cuc4*+07f`WwIZl{Y`~A0J-7{&%-4cxbk zi`r`b>AofSAl|iWqjz6R zhCtVJY;L0le1}7gvLhePD2Ux1z3xc#0`}Mm&)TY-WW^gG65loYkDo9H#tVY)afc3l zSWelyC0#}4QrNHHMOd;WkA@5-#4aRXui7kW&TkhO@bNy~uKTsvwVDecOL`0ryJJ^5 zwzG*|zGigB*#5k~(}}GA)Gzp9g=pp$nGC#~9J_Hfxey!AX$b2GD-nBp5~>l7H6W(Uh%g zHS>m68WFb6zMFvx>^pC)yC*bcBgLQ(4`|zd+~97CW;_l7S{gdLj|23)OU^Uq?bL(8h0tJ@nWf;W3i#@m;DwXiWqUt z_<&B&LU)9cOxL>+c5#d$0+fx4K(-f8zWnt4pZkC9PTu=f(A~{;Bsq&(gPGD-@-2w!HZ1S<5s35H;Po9$-Ts6w3G8JC=v(QhX~HyZ099<~ zbDW(V;q>t%oIH7ii?d_Y?FB>|U1hV^l75+77s7Lx6Vjw6DG;;U5E zC@IGczH$w;1Wp}>)(WjV2nwdnA+Fzk0k>axMQ+@A0n_FHwN}ivr6{TsV2_SSymGKA zu)kmM;=Swm*oSZ7!*A{3b}t0f+I9>~8{pbOdwrm2yIwXe=zah3jL&@T617&m@u5TL zw&MH0_s`)6{?q>$+n@U}lxz1P*AAhzblJ_pHSHAvDJm$6swf9He)8oHz5VaL{Q6tp zD`h(0?sgOUZh(-16-1%{5Q%@k4(&W|_x-hkh`&vok$5$!sKbTuj)C4|NSw9Cinsew zmXRgwU4}x}TI-tNbAoI5f&QlCZx|<3)aV=Ac71X^Hh%bMARvx~;hfZ$?m2kl7Zq0$ zego}D^ztXRDL4Hm>rFJrj)d&hndjno1#F`)jhy6~y;6*zz=%(8;P+9fEj-kT@hg(S zSjd}z0-;-GW_k=^d`XxZZ-n&OLJl5JhZS*z9Sd2rz2exR^S9eZC0ORA-RCDb$S{cZ zkykR}Z(}A}LG-O@L8fD|n*!0lHH)6YjaJ5Q!w3IaWya{k)fO>!BrY;E%kzm*a2_#@ z9HLMTk;lyZA6*r3BIEuKQUF+M&({}B;yxT8JY}4#@bPgXUU()x&vX5Qe#QWmVYiEU zgsbpaYcnePdV8OaLyIt;SB;x{4BJdrFecT0>L)ATRTy(}EYvcd5e48zW`T_-p*_7Y zYoQ$yzgEwck+~!eC&ATz*WZrNA3u;Z8uCUt3-p!d{2E+%fU8_pbv%UVVgpK?T!T9% zmy6Hfh=jHk+W^9J1Ok!28%9Fh(*cf=PzbcqX~wzph7GPIf8@Z`V3`yh9|1GS``Z2R zZqAqVQS{a9u(Gk*2zU~z!S8S);`~lbg7KeMt{bjK-?)|DvGM}aa`#B+?zrk7tLJw3 zUfz;7$Ps~aB*S^E1Yc;Y|1iFdJaD(41VGW%zC=%1lpqGsT!0z(&3(g*Y=3m?$ zzxPk0Zr{=g{Sj)EresaB2BMq4HqTL75;&h?K6@XK13dWRUxTmy<^L=`{0qJc7hA#6 zqYGS|UbNTdl?`^gZF_y+(G#4WoV4fQrQw|ubeq3f7kn-u_>|<+<=37>5BtaM#N&eo zrk$J*KfSsLFio3w03Z~X7biGBd5kBIAL0D?5q6hnXz#+)_6UHKl<wez0UR z%G)7a|+Xb7`*u)F_?^?Dc;Is=(gzxR9am;a0358XXPxp5a|GxgI8+Y9ud zfNB+pwCDaynNcx8WqWYv{tv$K(U1R|_a40TWAi*?-p$?lindoF&}w#VZ(nE^;?V$J z<*t?>*XkjQ8oCR$1lkU8G^MlRK(q`0-sNQlgwT%RKI;fldoLp>&|lnWAVc;9 zPkLjeYnIR`2)+Z2M<%*w$~x?CC-A^z=${ijkB11q(D%FzKW!j zJr*=1_??e3-~^7}{0$(;^coCpmNXLFwJrWcPF2?{zi;w%(AI(C!QLj4Q%A@TtBd4X zVDSLQ2C8i*LYUw#SBhhp{{qBm{ff{6k2OeM97jN)y|A0p@lmGs)o@kEBRy`A^n(4l z(U5Je`(K(rj!B|%lsf{xUk`i+q{AoMt?`jmIu%n#y3%}-)IQ;>FlvHzVlv2aQ1t6K z89wFxNn{p!mqld)l|)+4AECd?C0yyzopCk{Ndm!u!O&8ZpQ@b@O%9HeAAo8 z8mdui<2{Sc=fhz91l3p3?s_=DTH|Xnh-2`MH6Dxabcp-Iq*+`EBgxQmV#565s^~zk zGNx2e;E2*%3-f}Efqfx{xZyWPO^JZ^krFKaIQ}x=O!!cu!e|QhALW()3g6*XEhoMK zDC6<^)Ne=}-F`W`fvdG>D{@S4Y`GqB^@K3pAq`_6Lpmg`Q?cDYyt?tUkK@m>mj$dA z9HefD?d+1|D}-m>#yjexI6s=+jr_HSG&b>sn}h?3q|sOM%}#q!LLA3D+a*apO#l~f ztZ>`7%g2}`0*e8EjQmJ+8s0$YNuKXEelA)xXBu51iMC)QY)R%>Bv$mD#`i)J7eZ|A zx|1dNOfT`(^_=J*i#vhb+SmoWy*=ipHC2%^RYj5A_UxnQkKg&$-II5Jt=7voQAD9A z5G{ZfvocD?R%qxV0_@H)pFM(XZsC=$`X}*~zw|fb)sKAw7w5py(HXYe9X9<{b@OhE zqlb_2_~;SN&dysB<@PNC7FQ)RkybP*?OH|qQEa>ZQdpgr#qWk(L;e;hTEHcxpp??K zx7Qil?Kw`5AK~QjL!6&HLET-Th_+&Z>2=JM(8az&J_dA#L#%i)_L96`nqO>dyYF$G zrFj*40h;JBhOOGRCG(o~M;c$+TMe45wa(aWF98(nAKt{B7hl88d#_>t;2P#y{JD53 zQ=e z?JRR7s5liS*RNRt0>P<7pKHCweK!HoBVbCV&&W!Cxc~K2?U_Hs=YT=c;R^p44r+Vt^6FyU$Pf+vEZ>t>6hZNxV#dvq7c zve|!-AgA6AYBS8yY?xKGF8D#*{~Lmnq99nH0&hpdb=;55i) zJ>6g8VdJNSq+6@p!(H(be?#8ja^Py5Qo@rVtO%5g4S_EuDx|GO>q34Scq~42Ju1Vo zdgJ7nJ#oHJfSQt?j)N<=AQ5^M9+1IUlJjLdIZA>G7j}EeM#6#Mtm&Tz5@hI;WAFqb zj}tiC0Kq_`VR`EvdIW*hUYUZXW=QS4X|0)R5QP10BritE9jE=7QFHV3_|x8 zQc5&hzh#?oZWEtKZydiqcHl?wN!~2~P}}wU7-ZC?9Woj0LmMyKyC`r3U2a<(4)c)< z79$?5H}4$qt1|R)IYwJA9#P^O+vMA*3P4Ix0GM|dA3b~g*>BxGdH2`qeEwD^y)EY} zO8eczFR{QcR+vQ;GM`~SJ3`sNhd00G*W)X{`Jcu8w_nHE6UE8VB>=@{Q&1JSJiElh z_a5Tt=m{<^F3=v?E-vV{TBsopw@6_oyZz7(*SZR)T}4-{K~*^V)2;JOAC z!PMU@psLuOpW@>5F^(UYm+>qd5f=b^3ssaDLpOVnLOk!!g1!ppex((AZ(>kc3j zbO!2-w)4dFL)ud#a}`{_c7O->Z{WipzJWJho^bb0!6ZQ6WsmFE6#J8{LJBYePfmdM zpUimw;SSr&iU%+4UxL z5!6{W*KYmzOCS1zZ+rEPx4%cA+j%=rYT2wp6}2b)wZCpm{ck+8-&TAhN$G!8owu!> zF*xpfvP%gx?=DE%(UTiKOt0w#CEGj>33M&NjLz zI`S~2Cp5g{=0Q#89ku6i)*mV9Elsu(*9JDg7szzvgS)njpN39(A%yXU`FR^l6CJ70 zV)vrnuUj)irv1{FJdyyn+7jhpaQ_}CAsIcC;gL#~pC^{l&ZN)9DAqxqyFRw*i8(@^%L0EBN5G@AGrDZDi3vTjyGwUO z{Gss{j{_L~`jq~o-h=r|xN-Z=B_3yWzAE}QaS3?{?GUge-{fn51w*ngU4Cee7-%nM zmm+ny{lwXmcYoXE<9GgX-JQMO$g7=DjaMS1`Cu!>_Kg1-=JR(^Hn;HRSN&v?2M{ zu<7Xj$dVipRn@+F-q|UkZS;RwvDs;7uVeaUg$Cmi>0RTALbJiy&oUc;@s587D)v!c$3-FY_8`Wqpx-8jJg z+t={cn>X;*>l?gqrx*8jz%(fi4+Wb7%(czD-CS{YQSs;)c<)g~Rp7N(HrQ=1@V(#l zC-LY1@bAEU`u8B$Uxw`MLs0vxcU7xQcHW~xO6{+_6jbbPJb2|#zwyzJ{d;$A-~031 z?Y3%dy040A&;Hx18LOY2K!*aV*?YQgk9G`kj3?lIYj^d8zLHOAI}X^kN$)czR8bJH zzT}ud9-9-zhG~RoRBWiU(_n$tr~cEPtZEwG)(Nhv0wBRyl9`_|jo`Oxt(709N=Apcm7^4iY~M z?nuA!rTYiRnd0zZgN8ll*pJTW7#}Neei1H_{Mt?8-GFaGf?y?SC|#?;N46o(pCvfA z?{3d+SW;-0k+d6;2Sr>Gwu1TqkqZ${*^b0Ol72CgYZvLG&$u6M@`HUoNI%9gudILY zaTCmBsn$Phx7WIj*Pe!-(~}bHE7~W(GW_OXBZK0=ZSAvK07#cOaSP=dD7cb+VdT}n zyW-McPpS!^5c6X3HQF_UnrBfYpd7r(f(0>7TMR@(7usk>J*mPDVy$Wt}=kP`JY zQl_7w`tM|zm^tVHBD#U+_ComZaLYXz0f*$ua$uU%#3BCr^HA~Ab|WUoDgM5|S?Ru5!O8ly^ixWKlrqip{IT;V?|$p$<9B{Ty*zyllOH23&?-GZ(_X}r z4x<+l(CpWIfqMP~B71oG%YGfc@>~8z+B%Yf_BS{0cbnlP0OL=@Z0 zw!Q!O(Yv@jIfBlY{k`{XXF=O7Kr5jnUJoPzVeN*s#>#(__frZ0mJoX4z^m(sgb{R~{x%&N zR^64xa<8yf5Qz3be}>z~<~9VkYpVMAuDNlVJtw^WI}$#>r+lCBU&FW8V@T7}&WI6C z0u_%ewC2M}_;m60gp>#wV`nf?m7c?6nwd3;z6X#$VO!h{g!rM$#kih-7w2Gn*lG9K!ge@Phh# zks&hzMp?42c9rlo+=Tk)U9w9a=GA!vAU{Rc&Rp?>4FbUtFoNN&C!IPUeKB4n6E{1Ayg%95Hhjyyo5~<26?iqaxtmtRBxGmPyZY5yN|PB zNVmMm!8;#DdlCFjE9Hn#WjrS#^JclCA4Q8k<0WWtxtl|^k22Uox0mxL^Gyi0UGF;C zn2;1#`}oco!&Ul#Yg_!IHNoob+W2h;UR&|st2%$}`SE-I^5x@qzDX}mUdE(zpVtLi zU6B&`^u`M*3aRZ>e<|1S(wF@@e8n&Mr*Zp@kK^=AaCS0dvsbX$C@wF~aPs5`$45ul zZZG;P_25B)R@*knD;!;!DESW-NzC^`@}yYM3vH$({X}}{bU~!8_Lm85m1l>G(fJjA>`Ln(^Qv;q8$4uf2MzAEWUdkh><2>CXT&3ImNWm4=YQdT6Jhc*!TD6$uZ zgW+U&NgJq1*2dmAFzS}Q!&s;E0)b9e){?!SoJ zFT8|yIhtM| z042j#TmbwW4Bj~yFkpur_D2ms_>le}7Z0M~U~pOE)PxKBpI>tw0r;%~3;pR%c!4XT zEgTN@1$@`cVs%~B^)|!lx(rRQtvEtRcGh(G9&rU;b{JmrL&`-7zEAv4|Jpcw3cpff z-0fWil!TA@$1!SP84&#*lZSkT_z`|U{czAI0uEzDX4`+(M03;+#>inTOwo6Qz9hU6 zs52hyy(vvkvX1_ebYyL(#@Lq&0I}Mg$79-ihRYgh)l6GoCxfNaW}Cs?lg#J6#k($}Vi zFdKxN)I1dc7;y^b42{();PCv51!86#74AHFt4m%{3j>$~D&%d+-X$6(XGr&Qse}7S zn%ExP4}qX2W1z96)M?=1G7tF~&TxSJnov1}5-Khltns@IwtQ_`>mva_EM?RxC+B5p&n)57`yl zdLJ_DtMbCOC*&p4-*FGy@=i9<`0xE}hd}TLC}F(?BABX35ykw4=O+*Uj~9>L`Dg0I z@qHBRTCS(G)!#V-R|7O$M5HDD=Z^r{!-FsWr|=cO{I}xnn;*f+!%Li9oI*Am>~HpP zd3u85Cy#Ob1=C?D#(Eex&}#4hy8Io5r`LEXf8W1Tr)go;i6QquRXJ0 zWP;9HT%I4}rX$>n>^D_4y2q@z6JLcl+OP>91BabHee6 zgwKie9*AVzY<{D`Uef4(LV{*#(J5-zb%!?C4-0Oy{nRdHA^XtVk$(xF(e>PtvmQvg z-4p>_$J^r+^RA+7_Hpy}3%L8@YdE}q3qZkcZajh($W*Y|+v~3o1n%CwhBsfijo9qt2l2RoEe-R=~$%D_fZ=TcB`^TpSG;*Ae~?BBk2?ZzM9?Y0+n-U$S? zi9pkQY4*2Y)0&D~+8-T=gx*fe=V$pV&4-%iM~0mfOJBuPg`ep_u?vssa^vLP=9SXx z4AUzL#eWBU8xLJ~m={R2b}dafxfXidrpS6oTlt;Vv7iyf7csp|_9W($-HQU6df(=6 zV9X3Eh{wr4!*I~Sch@-m-eG6_+z#|PK|L37*o)UnL%y{KevOqdeM$j}BN1_-mhFwj=>DfzN{Xykk8V9#@S2^YwY&amIFQ z_n!y1Xve8Mb4->RwP^P={IW8nOdtg`LqAH4bCoV;7R%n9pkEtT{4Malf>$;^&u)jC z=^V#_TuuM-`U;mbz`)&|ON{Ob5^|qZ>KK#p0i#4unn09D4|rQ#r^7W1YI7MezVN@C zMB4RHoq{{)K_m!Y)|cR5PBvNg%YsH?hdUZur5$ILCD!WdYAcdH77NjNLF$|EA#NC- zodJ@kTEZph_hg$h8)}pFhKhFfrDc5Xh{qiudHhaG8TCPy%AipsC=zob5+wvYL%);- z-0UQlbdR!*ewMrhYqaBKc}XPD0PhUoM4q=jbL^p=4?Z}x1F|`DItc$!Rwkc3-^6Kg zIkRrM9& z&zT$Y-j0Gzb$rC(`DCV`dh`vkYlZBt2x^^Cw>!wRhnsg^z?}!L;qb;?h-^@6flL!r z1=BR4Y}!zpX~Kj1H}J-5H}TqQd$@TWkiG!Fe;_#A2ln?BlPGF`HvW7o_}r1=)1N)Z zB*0s5AL8io3I6bZ{Ga2me&6qh%tzSVx(AdEstU9hm)hK^0E(ha3XzIgH=F%y+xxG* z`Nv**?ahB){6k1 zTodn{0PQlN-{BwnRi4uwetNzfd_Um3`=?|GL>bGF@sIhUsXyO$c%nJc^tng)gU1g! z_3RUuz|YO)S+4D^jxAjzW%^oQzja=o3>NpL}aA(KWr6g)L@z1+Rvk z8!TUB*v@hxcy0^*pQIDw{2%d*xT)!PENroE@t8@E7K4cMZj`?@A#Nr;=W&<@=%D)~ zPme+Rby6Y!ZG*8sn}-fod>#b=7Gk>~SSn5C&-1{0u8$GE#@qpq=Na!=xGjcWT$DTs zR@yx`ZC8w!cVhZvo@(Z>j9?NRo~W`ao2a^FPWq^XicP@4pOnwx4gCiy)(Zej zt}r@_mGT9dl5pV3;p48+Os#E|WnH7#u*;%9)0e-?sNS%EZB_rM^Qsm)t5^aN_$~14 z@YJk=!Yz(#gK!;D9O{U28p~0Y+@`}FWwa*8++dvUgI)=Z-RWl$IPTqev+m}C3GV`c z%O)FOAzU$BL-%W=-b>c!oM%v=PQ1wfkdw7dTth;WctiM@jsZO-B6x-a>06Yg1o13* zz_XQZrYF(Z`EPXP`Aj_YuhOvz`jY*SfW0Pv`pFH|1$gC~0mX`IP3CCCOQWn=hO1(fm zdjw!=iT^kLCcN;`ufUTh7dSmSf=q(_&4kOd3!I)D;r#3rb>6i@){~^#jt(`ri#ba? zML&d0q`%US^mLS2k%;LCf;cYpNzfc=~8u>dXIzO*+60HRezAd^ZdZD0OeHwU-w{`7;_-~8<_y!h&O33RS= zo!VSOC9y&~jer7GQGNBlB37*{9S}(8F!)?i(ygIr(0Li5Slr_xfVDC6*zQ%o-DKbU zvC`TvjkwC%=N$%&i|Kfb%lM9~kD9J$+Wo%L%67+1{9eX)vGT7VT8w{v44xLGnInGg zk2)^FqkxlEs@LR~_{u!bHp^*eyJFY9c!5PRCBTO)gnpaFQ9_=hs9a149x%KFzstjm zi-f1~*TVvqt@&ZXKf;GByL@S>KT9J!G9&0>Tp3>GFdM`H5BeoeQ;_1}g<1)q?S@JT zy5};zored+4_>Hn4iWFnI1{}_9)D!G$hX-aWZ8ur*hjfHBgDoK+VIKa&Apr&DSmOU69!CuEhKyW?&_D>>Z};Y6FTdwe!t3tBya(xNR`K%j!VDXJPt%<>c)V(uw)2Eg)9VmhkiD+b zjxq(*wnX@7k7Y z>GsL!W-B1c=7kQGFfOB~Oa5d%<5gasXC9=p3>}Wdqb;x<0L5|1`Z3aOiKmacq91lAWFPzr zI;^_xiLZ|Bj1bTqC%M_fX~e6=>U>J{hZTJvukHLX+3Nz%paZs(VQ6Q**zisMiR7FL z4qgC2@PWpQGZJVV5i*+XZz-j7hw$xNtUC;Gq}s{mdza@=e#OP3Pye?0`2BAL=8d+@ z27pXXtdCm}D{j(P?RTiBkD&_O`S`EEmwv-F=BOz(O#Y{;E3tsd#1jr0v?Y*`O4`JYVAE$wQnx zejnS@BM5f=)qPV0Ug&{h`$tt(iWH>7-5_npf|(eJx#9CEx%Y;T>jnE{m3XW!?1&hT zBB@5V+4cqj+LkE>D|DO-0%3eLjSsPekc$!&)S2j9Z~F?Lh(DI$a;tPYxnS_`rsw1Q z=>81trQ=#F=DDIw2e@_jMcjY+H5^{Q3$5)nkucgTAkzeyChQ;VPv|H<#h2)gnM`uSDp4 z_vijwq8~c|s>{pI2>_rvhmN@HD(RPYd#XujUi`6B^Lv58U`3(I+SlAK9h%2_l;NAb zuQdt)slUepIRW+EChqUpXVe89-liwYc_#wt->AQ;K7PPc*SX-cCUNt8LYA|_4J?vt{b1__gY=ep=kR{*xcg8u>i?G4ePPs3Q zpYb2$MGTL`+_{?YVq8Sk53dZ9rU}m$Cb;)?dL0)Gv?*<2N5HbgJtS*8S|Zl8zij5R z?bJA}pW3+l8|Q$_w8uUk!w^q~`AfpCA_4AN)!d)9{&#e_$ibt|~wA8hP_5+`khIgXW;Zn>6d)^;x#PopCf(0}>jJ zC0tkFz0_eIKjdlhwHC_v6OEF_W4#gLTVu81((YU08tSsf&=Jp(?@Ky5fs6ZNHy!0~ z`sDJGVS47>6lzdYBk`m!?JUqG@6#?Hg16vtlCvf0STW`%kNi82Me_w{1&nl>zo4JH zA%Mj#rA||k?ZwGgpFRG}|7CmhxnBp}?u$s(wpKdz=*@uBxaz0~D)jsbv|ixWM}8?j z`OE)hy!1t1jN?Z$p1gmAiW!p>%vEu5c7o$4N7!vI+o5dC+kQBl1uz}Q-o^}yJ(ATD z-Qv&rx59!cVu?%=s{QxCUnzpAYyc5lT%6$K@#k>%ao7eF6TX*o*oBOzNQ?R>eWZ%9ixN`^CT`G2$+Hji$r(41C z>5PZ(ZJ|=}k+%+TetLoL{9XSU{-^)q_e19kOtvegEL_v%Bqf0*Xq!aIn$YliYcpJJmHO|FvBUz3hBeyKXwz`R4LgmruJ@ zy`Kq&b;I<=lDL3JdTu&{C|E^o*Y4M9UWVbR;~9yR4&xz>(ubrM1%QJlIZ8*jS`c4>*uS~xJKPCEuUPr`bkYkY0bswK%>Xtj#6xVUl z19TnTUxhHpu_%%)c~d7Qv-@i82i1ponbz0ZomJ*}O17_>4cKd((6+H!!X0bE9XYrXz(~dUE`5?G0B`;RZ>act$nx?;&UHAaY{|xmh2GzlA*HB z2;B=h0v8eH58%n}D!s&{D|ncsx+nm|obxe;f=A#?`sVPn>%oFvrKEL$l^iX9#OYx3 zmABMK0c6~wmq(=?7No_O{H%3wxG zOev*QnKr1q-AB)lKJ(iyAAb5b>wJD!McZ@!z|&$I6??#PQ2u z#{ft{5h~ya8eG%WbS8)beKo(7cF^4A`4OHxd>0odM}Y1yZ8qMQx8A~L!eD!0a-tyJ z116g%9hRXGHlz2~rjI+-n;U>Y zFqJ*rym5$^9^Am&Z{NhrFK@8f0NZom)(zm+ZD6wpT%Id-b36PIMX|fAI6kj<@7*m9 z4huf=;eGu0k9`Wi>)-x1JpPFvfE?V1T)WX$y49YT0ieZdkyRlx6h*4Y{>|Gz@#;rD z_HW&P;g#>NRnO;nF4A9I?koPa6#}9tpwMbN0qBhaRGjj*fUo|0!n2aR+iD?isaN8y zCsJ5X*gbXjL_4%Aiaq8*kjBPP1c;vfTDs3|vMvWrL@Uo(cD{5^bV*afe-%F@xV-k6 zT3v~A+_S_o`tm!%hnOzEUXS-}%$!K(^i3lkG3-eZSE#pbf zjz1%iHF2%BADrh^{gFvgkj@PfmH;*y~$E*-tO;Uh6 z8pa5nhma*@&Uq`1Y2$h^H)HB*`^ivd^rO$(S5mdrOrjz_SAt2VMYpE~vy zuestX-B)UaXXr_+HoBknNG%L&+t!p<8NG5!NsI^6gs&CC+Mnf?bcbij<~aWn{uB_V zvDVrT#)Dmk8J+cAA;I^|hp~!}wZtxx2Nf^|rUqZElHA*m{Vm8Jx5LxK z>oV!`5Xrpl&4d0%Zi8Q(z62BGfK%dJU_$q|VGQ%mbS}11+I*ADf9FHu-jEE1{j-9q z>$i>NzJc-Jt=}<^G_NW)dT8sk$w7o4O_0_u5G`#bbW$lBDC&dDllTAm^Y=dWf2)^I zUhW4r&QP7q3Ib>gY9iu?^6@;~9iyH5XFW{KHf(YCPw@Dis>3)Fd={8Ac#cn6KcJmJIz4RJx-nkEyJ?wTB^Bla{ z+uOt5G~v#jYk2X&4Se_uZsFw@C+ru+ysfx?U2yHXKqkS(88C@rGbv`R*j`q=^B(Zd zyE8uW1&4TWTk(6o{Ri-8zw_HLpS}aR`2b~8P_*{91c<7@-jdl|P?=_^?m^}9=8LcV z*KdCGi+=m{>$m>;_VNOAokiMq0?n@h1XL?(BLucZ-nY`%+WDDJ^UtU6$72L0gUaU# zP;B7|g!Wj45)$4PK5qT?M2N=Ve%v2wTeYpoMq9US?BU#q+@JlbCjEr5n-WpgvA-_+ z_pk8#yc$e4pz|Y6&!>_@f{BE8nfY=RWx?rp|`^ez}+n^==u=ped(e0P|srGIwt-YOgPvgah44Bd7yf(R+6;a0@ z#-AKQIbYlhDci8%cXS->SAxLaoxgBRrM#ml~1;nk&HYF?~qahBm|Pr+);)F+9uufzk(o%ZcPa zoKI$5zOGMclY=Yz-mS<2RCB`MTuTholJ40%qAU&tXPb%)(I zG9{^@L-v3>K_{a#to9Ccr-0q?p*C#fGr_bH$>978SKVl02jNarN>Udi5Abbb%Ch}( zzO-v@TzdkQY}Ei?Aj`wgl2AH7D6qDbJiF_BcF$xC_VkHl68!a`+J_^)P-5n%w}Wgk zIXs&aIr&fM!(>8sm1ymw$7C5MYyUm!64ApNv~UoqjijmK$)|Or>xl+`9b@R$xVymT zj2V8ShiyPgTAW{!`RN0XmR}OB%DB`0NDc!x0I>_j<;O*}%Py8DT z0?GkSjAJ}AeFYT-jQ=dF;Hx<77@zwKe7k=?7*95P0H)V2&K~{x^Y?$|TkF~5Pe4>e z$_~(}JM(NLdnHRCv6)~#N429=(UNCy!9)3rzi_f3x`tUBm*WSRR}8$m=y_~+M>gvP;Z=CHM42TAq9$uAKp0pn9>l5CV_`8(B0m!&R*GHj z&gpi)xPD7NyfzA1VgHxA_=4Y(w6@L_Is?~k-NU_?UdN3)_fhMFc~`O9wb%IV?M;~W z_8_u{TX(MGtvBxABOf}z%P$Hxs;E2Q#tngN1gMIsbUtf^qTsVf1%K~Tm$h>k>{wXu0-{@8za7_hr^J(6Dwh9WskI$bFlvi2s2 zu79eP4SW;}sD1R0w-|(UDbb_n{i&Ca<#buB<83J7)6h0cI$F^&=vA9T8e@1ogWP`@ z-u?;raW`h1Qo##I?SqEU=~3Ga&f3Z=VPmcADIFuIwUu^Vpz(GDvtIqwehCPjpC(^N z&TX=h&bSIR@sN39dH_M+vfr&B(QY=Sn$Cs2?Vucy3_m5%anF5B?`Ch!FbJWhX5YDB z25*%MAyinQVnWEL!|_~#W0Ecsn>Vmxo5XLU+v5UfZU`bFNrh7zz+~fmGll40OPPZ) zO5*b{6t}i-KEF8dGJl!;0qMw4kQ#AFE(Oc+7xEu?JKlb-&w|KQWe^g|2ZNoeC(juF zgW_!cJ}6G(cn(8A@2SrWZc6=pc%<(O&5vYt4VSpKg2xrAU}G^X3mV|MHjK#{<_2o1 zNt%8-)QlA|kd-%Mo^ekTW+hBZGhl^wc0Sym-NJ%fGD>O5Pcoe;ks6IfqDPjxG#*f$ z-66}N%UO{M4h`sNfd>A2v5MtwGL5duRXVe%ykmyie~MopHG&2F)WS?3jP-13@0cE0 z=;WAmGQG?Xo&*NNXm*(96U4MlRzNVGtiVw~a`-e>6BQK*h{q0fkV}O1#QU+(LCG+0 zpNI1+^VK0r(BS0vg8_q8{h4rNeu|(6Pm-^hyjg#u3H(4pi5bF0lPDPE0szY^3JsxK z&i8R1c)K=egCCDhgp!KLR1_#T=I!ZkID7PS|JV8C;TNgy3Pg4tP!SKD%$_LF4m1;6 znJ>6Ny*PsG-NTz-{hRQ~Z~0BY<`y2le}s#RE%x{KQHtR5>;z99Kg9X@X-oV&Q(6FO zD>G{7Ih|7}E#9YR!)9XWK6Uobxb+kQ-w_ZYVdz*qqDTeR{-tv!3QT4*2OZ73 z-)Qx8T-6P+z~(i}r_mHEvc8MPaSc7sv4T2Y(s@YfPUv#7xAuxX4p@7E2DDPBh$ABW zBkcgac}A@TH}BoY3opNkgKM|2n-%k}wp|Kk!e;LPGEFE_aQ}rHc;k&*_|Th&xOc1I z#sP5SdOJ^G-U8Qds7O`JDkzg+JFEWvPtADm{T*I=b04q0Qt-on@+a|K|KY!nCx7?P zLax04J-CjxsYbLNnppuze+%POMWiZ3bhn%KZr=ToH$L+5-~Pf&ul=_dmlvq>Y^u~% zqeA9v#B_@Sfa@;?{p!U9L5y$1n09jkAmQQkTY;}x>r7>y|Ljo`K1%d+14ZJ$3o2w35RaIUZ#VwibawcOL%lugLB>DqD!QJs)ynur zcl96XU$Re*XUCr@9U_jEeY!vwn%Ku_+xdKgG=3zOrxt&stk0#2+J?q zA(xTSN;_R_ptZK+ZUc!-NK_%1CKV}C=Zjx_e)O6D=kCe7--3EMp-fvU~S7On?+%zJy*phLi)m^yR+}zu;Sb3$8tQ6A#}z#@X>1HhTh*3A@X496x@D^RpAw zemc3$NedjEGiDR|De*;0!~mUEG8L3* z!ro@Wox3;i#%s6m+RF!c`Gta)UKGqb$mOMCZv#x526`ikX{!3}k>Y25uHx)`#)m$7 z4L9}_f9Uu90RGH({SNFN|2@df2f%cQ0#%WgfK(Op0}7E@MHE%{rQ-DVt8aYA8z23m zZ`<47|GDkuWq$>ZXj|Q{0OD1Ekx*N5-)Oey*FDi|0!FRz>Oh6|f&oB+>OQjlu6Eyw zavG(wQJy}JD7j391^cEp&xZS4T;ODj;tJ_Hv1aSxySwpH|L5Nj*`D7zU1N>oF9v#fZ@*bNnk)c9;6#!f5`NT;SMA? z9PfD{-P=jh4-b=AKIlG-toYE(;YY`n>x*md^w&R&K~e(Y`sZy&IBVlx)%L2-RWP2n z&s98mT0d{^NdgN2nSk!x*PthOl<}ox#g&4vy+ST)tE+&xF&@Vaho5l_ zy}z#F(Nj@QK!(1I7o4wg!-6ThZ^><%O+L8?*s1RodQLd6OG*>3oO1+N3H8SEQSQ8A z9a4z)2`iub4X8LFnaAo4rMFY1zCb>MKpG|KH7t~TnIsD-?uKtcNLi6H_OEBIpjI^ac@#0y4`5@owWd`Z=PkhY}6Hp90+)-xrs z3Afg-nb(X%IP$>L_`|+15loDAiBr;U2~$Rpg~7NF?q<=C+lZsbW4JyK;}~9PjImH4 zfIYYGg^Lb57XYXa%S$X4D~eK3>-NQqC!hP*cTYb1FX`_5o=k1UUz?|Ag9A@RwfaV! zA{F)g7^)NQeBz(L*Zj(V0rx-jF+6(z6vvMrqZD9MHn_Mr!;_=OI6pnXJYV)lXXu;; z*i2cnR!91LKH4k%5HR?>3=Lk36qHFYm3Dl=Zg-CJ(?>Wzd4k>c0%huLV1)<^l83;F zKMRK%!BfW}P2)C8u8In*h4$df=+~f$oB{_?Yj3M)ilRxol1~8;fh*a5u-yTe z+br4?#UvG&L@&0$`^Uh~d}@bj5`6sQ8+`gxC-^=8!FS-N|I8l%v|_sdVh>;JZ2=0= zigxsaKp-<9Mdx|i9NzlduYUC7|MwSPe&hSLyKUX=W)VJ>&XQA`S6Wf~p@GhCjRF9A zVZf3yPo9+J6FO@0u>{B!KgD#Kt~dVkQj5CGJWbbt54r=|0nqx#+-$n-130D)d@kg% zb_sZH(+-0)K8E{tYuu3#_z3^b|4^c2zpc9+R8JWX>9xew73 zvdu7qE(29FF480E6suE`-eqkz+hu~$ln(M7`Il&M$Ns`L=(CkJRuHRA`gl;#I6%1Y}ag#DZyl!$&z<=!Q(YeoO7JBf9>=O!7>>+z46fn z5F(oS5ALLcpQ5>daRPs2_`7;@>~{5aGYjjV93mTs31J=E(-=Mp*T`5KYaPc0 z+^1Z78r-X3U)2^s&&e_mxCY|-#%1}Zz{7&y5u~mmw=S+baHP{g#f0Gd+AX4Bzz1yUiHq30(+J;CAY z--u8C%6|o~eBoE&&OjCr2DmbH*07pZIlv+jw&p7#fa zmH*zbR*h%%E%E7z<5VU9irw}Ur^gSmJw1ii9m-UkZ+Yvjt>hR=D~6V{<1mWZM5Xy0 zmNd^d8_(pYF(x{0}c*u;NGim;M&ax zPzdHNfYNpWlwJrZ(;jZ#yn%anuj93s4)LKk_vF==1cwK}yaVQ0F^NJZsH$LBfs38u z;Zeo=?_T28-3?xSb%Vd~-~J?i|Nr;faQeUeHz?O%fn2|-byf&w6tw5%D}a8+qe4nW zt1WD=J$U7hy!p|O|Gy7z-1ytO%dMcQh)8>ep>s8o``UJBbe`MFq(XrjuNU-ds_Bsd zkS>|<$8Oi6e=%=nX z#*c_)Mw)UG?E1|8(@ZjW0c!!90~Dtf1Dwn&32{)nk+yXjvi;%2Se*tNUu-att?{l_ zD5+G$Tg$VQdg(wG6$Vw&Po9n2Y~!GGz5#*(1I-SP+jaa`6IJ4eFa@2-s+o`OHv`Cm zV%Im3G;W}zgB*xgKA(nAVJ-I&zML$0;61$UZZ$4T5Y!0_A7lPy>j!e4*e!$ALHr5VJN zsCf8%8@JwboHoMqod={h-VZ=K>Aurr?G!*U#j-@-a0+@1V!(G^ii)7BsFWhR^P^vK z@#s_kr+RkuD^T=W*aa<7sOok_&<#Y}elMj$b|;uGo?yEBW%#0R{#JbKtG^LvXB!;7 z|1O}4gM&THyBS9h-^a=E6U_4tr2wj>vyE)ATeTAQLV}NgZ8JC88>34peh8GU$|&*E z1aSUef$EXzh3Gs&HyNu#~P!9qFn=(bx2_k6&$asPnyv%sd=I zHbhUn!l3_gJ5byn@ca#a$JX=Ue?uYU8otbQ$gfE7sPUcnXVb@Q7NX<;^yy_ocl$nX zcc@ixc=I0azx)Ocuib>|gn0%a6Ho-3y*)^oaQ*rrZr#3t7w+xLgWDUt@#;Qac~x+@ z2V7n#6r!cirCAlVR-B&Cc<&ML@Ui06S0~)LuK3>X{?qt@Z~yc=G=8cSQJ_?vcbjSN@KbkRd;8yc?X9Itt_)V{@EI)56UZKc1z zRxruJ{;P|mk$?aHiTl%d+mfs<6#b8wb2Ym;`}F5zd$O;N5=B570Yyc8pnx<=XMtBh z5e4*$2;A$lL&Wp? zSy|}&y;YTGuQg}Hh|$LwBVxvsq5;aT1y=Y)>lk%^ndcp>8onEkt&OU{PJC+IbZa)* z*gp9-aK;Bmkm^Pq$C_?gAtB4vc0x$(#cqwz<0tmYMYmxx5b_*8-o;q#WPgbSqQ}wE zNA5Lhu6Gj^`X+=%gSuD!KAV~(ea|7 z;sm|!v zW7c)bzE{7F=3WK3N``6(uL{#oF7IQ!SA+GwK09g>)#t47&%W<2|JX)2>$|=X$$yQ@K=NPAna7`~&?Z^s(UiV5n za?F;5*6KW^eUr?pfVie7^N?^fZ-c8U1iBc3O_l7D5K;v3XLw2%P+ zWG6VuASGq6cCN zA>_wF#?1%{3mjg&iVIio!)$Q?X2Ljf-Vs1OC;+qh42MVibm8J5E*#Eqem~&GjTs)e zmc86|%f*Ztpq#+2HiVat175r}fQN`TzHW|Z-g_JW=b!l|y!c=LA;SK7gvAVC;>1K{ z2SD+sT!4kV-Z`Yr-uWv(cK;Jkef_zk3qLxJBZH~D>jG@s`z3jnM7g{2UUfBU#V z?xPB7F%knVL$WwVY=ljVE3Ni6#0HzCmFqA1Zm`RthLv6dEQcRf38>&%Uz2kW1fNWX zOG2j;O~pHF$7<3RA&UN+fAI8a0YKY$ei+<_xQefeV}T=f=Nh?B#xa$`WnC&Ym?_nd zFnEkI3Z@JGVg)Z&*i#H=s(CHUPwb^K|M zJov&yRY-8d`SD4ui4=z&GmNt#L#wtE`&9j1;N}lR{FQ$sAYh)*L#~Y={eFTr+ui}U zCG!1)?#ChL^roLP>5}_Rf4{|a+J`3v0KvT$6ky4iH=ulT7rhf<+T3jaR7jD^joOax zs((wLTx}DstblTjOIw;ilwtjkU9=PvD7ME{UxQ0^4@oX}z;d14gz6$kag5aR+|x-@ z{2TaYz@BoCDm8cPz6H&7yE=Syw6rubl%JF0jGwlg!+@@w%J?R8RPB^O_P5dDoyCE= z0cZ!kx$9I9+N4lr>vUOlv#~k9vg_dqjwJTg%0(TiZS}Va%eSG1M5^ICeowadYqOeP z-nLQnyjhWU@S6UPj!99aDFW4eb~dw1r|fPa-08D7{tB-KZZn?kToF3`DCA_|ct@@c z)%aw8+vum@O0xTbV9(A|PIiluyCjt|dc+iZ=9Dh2PhR=L&8_FYl!w#%5SWqoP?kgf zG}NkOK>#QKfj5Yo6MznIW=t75-Mr=;+V0G^n;;=youDD2TFw!~*3Cu}x z%a=<#@_Jdnlicf!sgNrmJO5PO=eobeS9O4;ZjF6IuIvG=KM;qi{({_PI}EHb1f{55 zrEe-`^%xo;=I>QPK!gxF5IU&77w(k3?T~}(7|Dhb|4O1A=AS|-;z^-O$5)$e=pn~f zDaMJOmC1xfKb-yL@FE}%3Eg}j7p~ohqw`ll-3&1@V#@Sz0=hoXayi3=i$}O{VIK$k z0awn?@Wc}{TsQ&`8^$mKUB{rnNFZ!S!ggf5{Bp$eFKlsip~sbrgdhBe{~G`P?|ln~ z+wVl!zW{U#Fv@E$!Av19w`Va@A_@s95z%aO<;Ej_|N4WE{UxIC3o#D4^1xt5VoQV> z^4dU7@?EYo^qF*(i728^=xjApCN5e1u99c>UDJ4Phf-`1oq)ltlXf;+oV*o)TziL) z$E(s&hhJ`>ZS7uDd???25ybj?h^+k50s#A8LcbLmJ`bS9BFI3xO`iR~pFO7u;Gm zmXb0@ym6y3mCVJb2fbqVHKBI*#PxVBt#*DmT8vIDH`Vw$c4%R!y{}Lm%|c5xzfnz} z^O1V5m36}#6nXiF0=-$w_m7}D{-jqOHyUqo*bS+nG2+(@+wK551KqBZ56EgwWFjt(aS>111MXk`b=e|u_}aB&xo2XD2$4&vYIVA1ShY;3nxQAgH$VdO>$+# z*iWbMENv( z_B#Oz&ILKp8KkFdi!-i3bU>0};ukQlL2mHP6 zBR(B_m!H7;bd6!X#e5MEI>zcaC;sCwMPW#A~kWca# z8A!kpD1br-B0`Ji=b9cAR#8k-BaM*&nDcxyT&7rEphttEBM~O`FHV-AN_uS2Xsg0tHYRCvjoa74(z%_ zMBpKIi^B^~KlJ45-+Fld(p$$k+)RlB<$R1Yu}KR6DKSu1{&j_y>)&nCtgm}>g#o!g z-O`VpzuoMwZxhHOvn~GiRsnlYx!Mq0LTmAg>7iaqX$Sth=rNs_9YB7!j5Ie*nZgs> z-sNx1_FSJy+>45TekD26(k9-{#{$kjh$CqDn-z|zMTV8{ECUxagz93 z`z-|wh0D39WU-*MoBAcgjjMs|e&aE`Ka=}j_ZV;)y2-oTO7hx03m|HLD*P2ZlkI%* zczHUg;(qb01ltwtn5%P4nVV|=TgFqzR$OSC$X9%Y`c>U21utLoe{g*FyfnQP-@ijX z8j^{O>NduF<3THDA8gkJ1q)X^zuIW@SM+ID&fDpS&ba=5jqw`c?rQg%$9O*r6s|rr zfl(VUsiJv|Teerh5{wRN#qVUv`qLTq4or0}<{Gknn|^k!yjbE?A?`a>@ckbPK4AeB z`?1N9;maeWp#9ja7hEtSW3vS9>Uu~!@V551WM&7B=)F^jLq5asH zB6m&L#RvM}PMKf2HDmcitKMiOggKlFPYeV(r?v~8btD7uKInD)1FGO&ldFQ7n&+)f9B>Gb3IhT0aeaP4o_;z3HntUJMPZOi*_%->>BQ4Tv zM}frm7kj7*3iXMf1=bGScF^Om)vKniZ=tF7+2qWbYC1|E!P9iA6y3aI(ZWNKkrn`Q z5kR+5=SPo7gSyZGMCZos>HlkW`?)_doZR|g@E8y%f;luuHMFB7BN1tH0*(;}k9;iN z_%WZ0!w24g)twWp*DLh14)eal=JXy;PwrtDHs!T?UEzBU7*kn!Vcnk&5bbzvpK#FY zp9D3OgOi}Xs_cHC+_nonQXH^e-^1$oHsZKN2qhurj0;z%dvoTWCYr81LlO{~YP8=i zc!I+-IklMTOWvhTYKwAL{C}oia4Eku`7sG43DgQQX0wgngW*r!&(ICN1%mZQ<4O?? zNg+*wR3p5e(`CiWZ5J;I92LDL>c9y3b$}Gy+`;)Q0#0u0d9yNDbVy%eNq`o{GVUAm6>Vh=F_F^)yWIxrIEiyoJ* zT*CGHF5qadvacb|q31{_TQSCI3wychOvd1sVC8qmKci zSHsinTNt9n7iU`)>LM?=X{);J9tGJ+pHSlcZ+`T^(-vWVe(h$TWd)&44L z4rV~lcBpmTA=zA%uhj6p;8*d&;Y&buBA3We@O8x(QbzdVfTKw!GHLB+YUiA*>DP^? zOwiG4nYaCQ2an@J#WR-_WxlY0P6cHvcjX@+csbY_=%M&LEkfC|q-whYm+F-gzj8&sf1!j)(16%{nc#;?{|oXhN1H&q`cVoNzI7c}h%V+aB;fa3fAgypQyLM6A^VrmA%s4w zV|k+k5kOoDT)NfV6;#Ck=v?4@5t&7MdF%Zed-VaVdQh*3dGgIB1%xkJ*!PrxKyw^k zyoAGx*U|NJ48uq%W*%mn=`mZ*aQ*%(eEHHI&h7WOb}``kwSc2@gp`nFUHG07<=p_s z3GaP=z}Xl% zn;#slt~_+(A6>cjz}JE37vmValrx>kDZd$j69aBlze@hW@QJkUdE(|i7^26bt{Sg- z!?T;Nue5Pv2_S;~E=DZxtv7J_K3B0^Q>YN1Aay#BAhk6avepXzo@pjD(ZmK#u+sPMw0m{#7Ud!vP{D~RsH#WR-I3E0n&%+}h{0SIW5v#kefC6FO2Mn7H)~6>}uZ}@T`4xI4 znM2J=$X0*xRk~snb0)eR><~)4ND<$S^|yLlOd=c=W?5 znNw2tUMJsLFsyWpoxQku!3C?ee^TsGz302!3`I|p67Q^96H`B4Q^0levIU|-mjzAw zRt56*R{VUiV|#l|?PCpJ!_k5~a`r0RwnvXr8ZfNyU|8M3u)2pdtiW*qQ3A)5b)FUo z^L=#t2MF^$a0-yZNjK}!QGUIiuJSVhL2N?~5EPqp{_lNx2z@boB@C<>m-ZGwlCF0o^2lQQ!$Df+xmFJG}UElcE@eBXvyMXx~X#X65 z#FUeFPT4mw5)*Y@%Ie0<5&iy^tM7Q|#*<%vaPIu~Y=`YCr4+!F7>V;a01TZpeBul) zi5eH>mY*Men+pC;R- z+4b>T{>2t5`>Xg-{5D&`!B*03OrPAIWzSLo(FEP&=;INHY~*?ke;W7K9okoJ6_!s48k&=sZ3nwJnQr?IW6jnnD+|tMUY)0{cPDYat z3G5IC`dRRBF_zhrw=dg;n|+I5=VhdB*!dOX zC&_)^(EElR>~hoY^wYMdGp_G~*|PntG2d4^y-%&+-uLIM)@RW?9iN=Oh;YupFC(c& zq~h9zwj>Y=wpFeweDkV1x!z)2VJS|f1OlGU8s7$BWgkTWL*0Mp_>3KiXj8PPk|MPU zQG1wU_pX8}9)`FiwhTWK0{-~!7sp@*j> z>}ZzBO8XccQwQ6eVUU41RNBJ=9c;y2D&xW`=}_B+Ptv@p7z=mvUZhhy(yF7;L%Z-4 zTsmWEqf%7#xVG%<8s%S^}6r3`%Rn)7zl_2v>g1XX24x z|C!)!AKQDkK+Kr;9nvshb#fb<)e6ipAF3yO=mf6OB0NgW`nClC2wjJ+>%q(z$5Bt4 z&ivo0tpMfi{2dWu++wrJEB+j}pg{SN2Mwm072Sk-Hx?||kv@J!7!r_5Vl8cCUXs4j zR{a?}(V70?L)0;K`#lb5l&cN1}Q8@#y<9*#lS0OJ}QM<4-29e^Ix&A~JW?VU$=bPe7798w~1 z0z&A}&F1K43(V#VgwPibx$`5O@3qC#;#JlD#2>QRB5^I>oj$rQP|7X@<&D^+^T7-t z#St+wmiy;$;rfGE>>W`Y6UHqA9kQ+>pqq6#JlN-}_g%)N3kzI1*Wuv@I$XP&p~eXG zAwL!n0x%}V%l8=XeLmsdD&oqO9@j4t{>=~kC;X#t{YGqV{vx{b7r5(sq=Z}sV@7#= zh5;fbBxZ_8sSDjKUU~50e{t=BhyQ#C{eKxpdDb72eH4+qt@Qr2fXN*eSgy%g0>;6t zyxOPISg%tiw|1qrTJfLUhmL27tn3_dtKSUBqbZse`25-cLhQIn6;W67aUpVo;u1fwZzvNbDwSD8G zn(_U8G0h~W_orNp@xBaT$1ekFAX)LMR-_rIc2|(61C_j_sqobnz`3Tqz$L2vvo9o0 zAep|C%&Gcv5k{YCC|x4$1i6);>9cm&kgG&-uU4cEOSHQKe>6Pz!f>j>m3AZ zjiJ0Ux4Rj9p~e%D{fC8+&5k>VGnjgM#^U?XbY0$Qx@b*{u`4z#D%1rao#HeQR ztHR&KmmTEWMA!D+RgBmLz>Vbb@{^?+Md@GTPSsF$&j&Al(Ao+rHz>)8{1Ksh2jr8X z2^EH*-{?Z`Q*V4*dX;t_|NOnB((|TX8Lqf{hWx4iPP?w}K#pWAYUDM=uYyJ`Tqm3I zwO#?X08UYG?2y-<69k?AW<+O4^;o^c;#LNi-jKrh8th_?qSs9 z*Q@{fX||R~Vqei)uA`wzaa28$d-cu-@^FN98Qxkq-iFj4oK-NXR_-AZkg=P4n)K)Y za^JGruk8pR1mr{S5)t*=_3?Lma=4r5ALmR@ z&LaR3(Di*jd@?b{I3oIklUyJ}_5}d)!GCGMW_66!@g1Z%pzCF0L)JoFxfktnex`z3 zg1l-4tc)-7jaMZtRH_H8JZuhUN)*%12l~?$tkg7}ty)?jt4t11W&7eJ<^II;R#R&2 zhf4Cp;!lCR+G%#KIJU1NY{!tF6!NM5X~6dQ4o>gg#5f#-_!Q~%CGhrTq}46Zcnad7 z=*SG94hVClKT!`(J;Kogm|ePoesLagD9I-E==&LF^98!a9zy7go&k{4@MT8{13tmh zU1AoU8uET;hU=p%d*Z)JcjJ!P?O8htnSo)u1wxN=7q8Iy%l9L6OT;)L#CD8+8JfArGzN1pie7cO4=wv_lZCJyi_ zsek+mKSN(9D68=7?g3SIRz^>GE<12UpX(ihmXyi0HmS;w0Fe7FbDV!W02@3*$i{W; zZ76vLydAH`PkfFh$Pi1Bw;A|t| zN`Ao;eBI#6Tf63A3w)XPh402C_z^1^cz@gSSD97ax1=3a9ImUwDs$hx#lOMb-LJj8 z@xcnh)~kgh|B@R1s_ zH7A_gG*gB`*Vw=I2O2*)yjV!k7=22Q?3$~Fn~c4)D&vr>jCZOY?Xwu|{nz?A3;t{E zCm(qhFFKpD@{ zCxLPq&zw)uDHNGdtve{ep|tlpqVV*Tcz4N-tB#gvqO%iyEO<=%!;ediemQ*HOj2#Z zZ|%e-c|NfgKCs-}MITLnOaDrLwSZ}|Q+=VDh890+=xPf9lY$%X;9mhz@smZKmR43i zhnx0FZ)oV3`?9j{;49zl{^YMd=dXSy0}aHXpHm#SA9Q;A`7hnxdEqlSZI(nFIX_R; z)!v4n1%LuGPy}!8APu*%y#HhH#BcijIDGK+*d8Ygn^VkYJvt<$VU5#!cd=cc=426$ zE*GF>yU&LbYGEzpt=wYgUD*XNj(Hn+;sgqW6y1s$vc2UR2$lOI*6VxNoE#&K8-y+( zP?sg3A{O7wwccBmE(a9)CYNRfSo(^7am_&ud{jSK;u40zA@u@&k}WXJAJ;o)GQ8vx z^BqcGaBz+z&-aCImCu00C}kIv23al~!SNLF&NGO2-wSN-0yKgsA`n1b52OI<<^Vb{2pj^^n82~fA?%~S`UDnNoLl|q2c4HK3Lk4;M|`^!3!za^2V=zzo@UX*ITZl{ar3+J7N zTx5&@q!f|1k^1E!jxODY{i6#2dPL@YZb0Y(1g5UXayiGf`!3-6)qNc85#6|d#*aK4 zfCMVXC!m`%<{hvd7&mW4Jo|FOt-A?F7kWH=U%-$3@Z0cx-}L9Oeeowi2M?l~_t}e4 zkHlSe4=IWoF!BKnMCix;EBF1&`yYAYtCoBF|2>Y0OvO!a^=trSII<$14~&!71=`_h zrg1LrX8TQ(`;vrl)lOvx>^N;bc~etc*VhS_`?iz7R`?B{wy*$b^6c8x^dx7G0E!LU zMdu&=coTbMGi{&ry5!yWCy&32VWx*38bipgLVcP0ZSe;jykZ{?Um`O8lb2zkA2x4G z5n$)z0`9wCiTAYnB7)mnQ1@?fsOa`yK8(crX0*GhVDMAVB6Tf z_+IUVfawoBpGvF-G8lP$cz0bh$zPaG4!b{-zJNY62hZUDKYl8P02AU`{AhBWs_Q!% z?EJ73QmrMg0bln`@!rL32fwPU`+m*1?Ayo$UR|f1Xo?e1Qrg6!`Jy!e3E~=nJ_)ZA zUO~Cw<@bKeKU%C&E6Sfsh0z^08qJuU7uzwO=OB38i%7naZ8&z;o6|vF{DYQ ziDF;mR$|G+_P7z6i>NNKmuKnUj)!SqIA=!HeVg2>K4Ofnt?;cHyOAb)s$@p;eX3XW z6}TR7BXe`8Q#k^D5;TV|eQQn-;A}`8|Cv0id2Fz~to>)X$N zN!lJ?1(lQ5m^pZK*KS{&0Tcop2U;C@%Q8Un|>2k>k+HtJDAM~9d$_K zfYtF`Y&R>UG#WPvd240>mG2(;xJBr?virc#1&&l$z+Smvk@Xpqza)XWvQrhi96XB{3pjCp41!fh z2of;mPiSn+aPzt;+a_)0J(Xu?g;pu326tao2*p<1gyek-k+nCjI8E`1zt~6doz>Yj z*(IUtdJqGvJ2$a8z6BtHW*y>i8^en~3qF1Ugf&0|kYagNW~L`}GXQ;ddDJ;xm1H62 zgXrksA?!W;A>i2&c-$h;4EePC{3^&Ubm-;_bp0Y11478@N+o|^z-IN+Ui-xNS^?Hs zPZJB6B^E8L?)!pgfz1RUffG|43G@9!oV#=#%Y!3;I>ZPt%Atr%2z|i$i-&mdp$j;e zb-4d>k0+n#ap4@WS%XIg0yAcP#{1SWaPuDF?lEI^Z;MBtm?I4XzWp!%9sKMMelv(i zbcYv!e$FX%xnPwT`K=2P$lC)L+$F>qy1o5(UViwoKYi`KN4}RijWH%sNO_YbbSpiN z0NbiR>-7Z70VD|VzfszWmWu2FJM~}sxc(ATOiq`t3j$C$A_FI5F!W6V^3RU3^tVgK zWNW(Usn?+FKRh1X{Pi@~_t}l_XY(2!DqQNgliht+q}VZ*(YfQgdlbR@OJ4x+12?5{ zdu^Ucw8FuDORNJlgj96e$}~5(TR(2U&G)wSmxSEBsoob`Z3_up|D&+IKDWuR=!YZ2 ze9eUKc3u3gw~@&s3T^`Nk0AIP-jjCqBd6JaZBg!kCTbRB|D-jtb$msPim(HfCf8) zc-)F)+YTg*-))7C`Sw>(arce->Ddj?@pjSN=wuZpdpeB%sf~#2#A(&ssqIgEO2&}1 z06@;63JAMbCzTmL(^s14hyP>?2xs$H>1$W;P2XF5YT8>qxi&swR^GHSb+toU1# zLQK_3@z`bQhQ}E?AY5eZpij6>3WMBuIpLIDVC1EI$)?nC5r`NhCF_6?2mvF;)0YwEm+-)ceLf!fuusM~EU-Gh zgFryn1*9}!eR7OpyF!Yi`c(^by!~ex%4_MmzQ=qqM+iLqkH=w`>U0-b6?7@Nw(F4|?T~;2{w$!#u!NJM2eV#K5 zz8qc%HU}?`Rl2IXVgl>_CG$Z|akikCVM=jFl3!n?a{kfluLOiPFS?n``@kB#>Wcd0 z0;t-hrdaqb-9(Z_oH=YRjp_`84U>v8(d9|7%M0cJ~8jC?9#p*|5a5fgO@KtSU4^3t{M zec;ijzV_ho;ycGU24-erQiIA#egyl+0?L^HntUf&No*z|(Rnuh!|})`#QCpVY2T6D zdHBANr_a!fUjQJlrBp`fefe!GotjWj@D(!HXhFSF?k08Xqcm2`Fgnt--y~_A;D^cm zY5<3y!SsFVvBX1q`m26b8_&bi#%9Ml$*lY+m-*W#_*BCqM&&;}B$1Vat?ioP0Jrk- zuDr?6tK9Plih@^9{w>N03y;5u?{G! zwSsa@pRcX-QBWrDIaOAEOL;~wRL)LzXZT$cHbEJDqt)%~5V0_J9JVO`*eb8$lf0dl_-%gBD`EyL12SP=jq1`~xYh0tN#o;-ef>*+r^9>4r4;CPM$Z2@$J zK%3@-@A+*D6eu9@h_tzblm=XQ5z#I3gcIW+%Ik!+?Z(B}R0yqYfzz*lhAM z{&C!*>!_^i=Dn{T6uhFW&bm1J#iPFhGpe$z5#j z-Ojc|j4+!ap5Dgr>`w#3T_B9;=oEq103sMb;ttID{0B;7K`-Z<=z4^nL2&~{1SbO1 z9EoT7jR9dF%SV4b`oo7XZnq$G2!3vN^H=Tsj`$BFYc>M*Bs7q8>!;(h4)1!4?E(*r<^t`E3+{W7jxKEOOM zE*{PB*rRiP;3{F>0h>)8W3~W>lyLh_!pWNP!b=IKtAra*E^x45e9yQ3GyK?he?55p z0_fl}2pxz5v-)dMRAPiKA#@3mDTMx=mmYrntFAxr_zxn`7{^FNdEZao@*j(`mc+k2 z5}E*M2gl;wSW2R{mW*X1c z^htbTBC^M(SuOx>Y(M|#PAacWI!65ni9^`vXDDo)zW{gNlwWVLlJr0Rael-Gb)Q`c zc`deI`M5fU8~fD?007)87G52frX12-MHPWq8;@1_o->6B40|Ttk8G(MIT$VE8uQ&P z#1K7Us$?$lQGLxZS;df6wlYqY%oby^M;*vF_1Ns7LU`f6Ptn$KK-2#ESJ++24HnEv z8+JTaI;QgV{Hu5cC?1|Fv9o$Nxm)p+nXu*4PI_t_vTZ9ekVE%sRcGX9@%7y{xeb z+to4FCwGwI1_%KuMbLZ!-W+55^xJ^(7}P}&=L7!;5kwtgN=WMy012V%aBwikg>!r8 zXFawNc;Wfy!6_p2OCaRcZIrhJB$|Q81cW^-AO0|O=buE}tkH=NbZ;Oq`36weq3h@9 z=KBc!T$#aO0IEP$zi<*iuiE3LFb_u=s(b;NKO)$!Q0Zm<9xAXp5i7RA37it8)M36n zhx1n-#Qwo$Bm|5jtDHmM;liaOT)un`eb-^R41E3498W&lum8IJbC-U390!28Y*a{`lc7}Ti6x=%+xUF~Zn{|)0rJ*ySy@H0gh+~i zRdVW*B5&8~!hMpdeF2u$e`epc3VL4lKDyaC_J;=lB-9hj86u0N0i}sY5cEZq-rd)`?~Ow|FMvSOzw=Ty@Vb5 z=!rU@8pq^$AYgam@A++mnK@WHOSDPlDHEy4M{#o7uPgeML4ugfF;>KyBJ6~z^P;JZ z;x2Qd#&5Df@c)C)Bq(QY`Taj<96v@g{`*sOIP1DilU%i=`k&f)RxBko>N>5I;Db~j zDkF7co0^>^EXUb8138o5(*PY+0iY?W?c{HDy(!^oP^2(DMs5W_fA6Nwb5k9;(=Doa z(VWRnovrv;+hSWB3Hj}4 zjc=if1~_zif;)^ZPfI1IhTr1s3amQTA?L(M`L!#lRlbn*RjgdXs;hOtgf7oBUtExH zQ(3lSo6dXqnxL?Q4?qqYt9e}GWQ7w)LnBYO^6k_~{1NIt>hw|C*IT-!Kr(?-QC6-~ z%{NEvq&4rrRf{pI$CA*yYq~m}$IIOba%dh++IJwLus(VD6V@-k=a0qB-H$+E0#TlM z8C}gwKS2_@Kt$;j!|Eo&@&;~v^cUc<5C0TwP9je4-O8`w3xr{{!gjO5Fl_UrF0^Q( zVlpETQp~5ace5Ghiv>d0A#p_9j)>8}Dl8-E6I4)sJzBn&5AowTVzVxZe;PpnkVEh! zND!TD{guroC4lnNh6>NE9%w>ungI7pY`R+EXxnm$@v4cycvXCfx(1=2{C$Q`_NS^Lu4i1V}dP;RgcZu)_NI7KY6V2#kEt;|TN}5F@rv z|5xzl80Z)stP8>AhLZKq` z2>l%WY%iZZppG%GL{YGgQkba{1qvoVNYPGsTF)i9SFm7O5i0th82(jsL_}aJwll;2 z(G{G(azFa{Ufwm32o!n{fWxDG99=kv<^F;R0T&Kuxbff&Hy#RD&a-ZCWP}bFBCsBS z(=~ASIO5hT8$57hfeV)czT;be5I_EHe;z!%032Qi!i-Z2M8q5@0U>Zofk0iZ*im4l z*oSWRix(ew^e^A{@Z;Y_fsWG{L$Q@42{LocyBl;BU+fq~Ba1y3{Y%BxsI--2w@Nt0 z7NiXWwsJ2#_x2@UTryV1ZdY4f)(7!ha-YOb6bHcv<-oK0x*4F4y(*;K9hu-g9aYo+SgUtC>R5_}I-++mZK;w3tVdiO)+!#q6y)6IAKQ&gPVuFe9yK9m2lgASRSm6dGp zi>|q4zhBvBcX$A_1pry$ZrlBjj_b$RHGW$JI1}F;u&gajuT~kdFw^%Jb=@_RQ|?Bs z(eg=^NvyRVXHuT1%0C{Cb)qt^kK-AnCuahvx6G?!6HqigFHIa*lMERIN1q?KT18=K z^~`0rRWZl)*VSlOd{8~Ns8=1KvR>(PEB|s|=z}DL^~%yjuLNJ|r-`uPm%(!-1Lu7w z$&sR?h)>5C9U`|vR!OKz&}HIkWaE>zDxnrSToO_6we3@Yf8Nyx%cAwP13r~;O&)a{ zOMr|e`AgFd(~mC@*qFAvLB`ggguFa`KWLy@kBf?rng6bd>avp;jIU_MtGBe-Sd-*m zzE}E^`CrW`P8aJUjX-FP*5FC|YPW!wv#Pt}z4uM>yBWvyfTry`!DB{*E%ApxC!iP(0UeK&R(HT)T>Leki8ub1 z-v^qV$LXz?k;a6+Bcvf>vsq!g-2!P8#z6~Tjz5Hu-&4;C6awap1^U?>492kC=B@tB z`PF{Ru=lGMrlssJ632`+1*DX)U7zIDfN$@fIsRC7ZKih^RKizRG9GPo)V9JkTq_VoEIxF6;ymm1TSRdcP_T(~v{{}w2 z3G_X{1NyMRENn2Q8HUw>*FBc-gMVrt4}HuM9Vc{H0;g-x(XR*H|0jU(Fqjk4_%iR^u|c|X+b2tzS76KQVa{i91jWIiBoPfmlltd^JY2yA{c4hdbqhjUl1 z9_euTJOPO@Ch_--#Ei`*;dB#m z^HzQo_=TT;9)II6egp2k?VkY4E1>xv2nppS9Z1|ee@h905boS5ar&RMU)vNHf!fFW^ zx$9DJs7}XMe}D!*8Q;Z2g$A?l1`p?V44?8Jxj(y-@C>McDfpwt%lw7)pS&tr$Mm=~ zaNGkX_bA-c!b~zwIx9CM>iRL zUI*))0hVC5yerp>yvY;X@Y{U8pJ(hNJZb%TengGTU$=9KF|Xo(P=48t0gb^5z7rfY zmvQ{8^vW}?-nk(1@0 z+v^QpXSMqu{hU3%+fK5h-=zH+kok=JRT}OUv+B>2o~l6FU4pODM;(wrAq%)5#_e%3 z_zX7(wLXNVfqDJKStcyFVl)AlQej5WzS2)_cs$vE+l9+yiz+FbWTLZM8nU8hr)|$R zhwJ3Xjz2INw!`YZ5(JXFdA8oTH4mSBPgTIiXQ9Qlr?vrnU{N(wotO+lrVQ%j%2;kZ zPfNAE+v$Yv?Dw?DUn11yN^;J}!*%*o4dJ=xx7NGw>Nm+`(ImDN-PKQ7X{JVh-Kb99 zXZe7s0I5cf?E2IPIC{J;YFkpXrwM(HOe^_|ybPuW_1>l%<*vl55L^AT6}`#Wu=`W~ zki*TDGx%JGKa$G-zzzINN<{m0m zDO8nLG={FIZvwXWC~l9jc<`g~tAG2KVE=*F-IP@i5sBU~g^1x8#}U3Pg2RJts|QthhTstIL)Rp10GSlSgTQ=Q$& zIYjPP7Z~kBDv26i%LA4PKrNlzd?5Z&+@&NiX3w&c%3R)1;8ZjO%8BIW6zk(#h~oyK zD~VG|dDAmTgnow23qKFO`z+9fEMu(EA?8)+^?(}>Zt;`feHDw#_mJLujC2}7-3+ty z7qR#?UkU7eD!@I`_zIZz5#tiS^ke@RANwg^ft$xKWAE??F?JZ@66luzdLRuz4CwCr zAS|vt1s?JnDnbDKY4B1gt^7doyG$WJ9x$7Ox`o-RO|%vFy&uqK;*VSYdY`4MtHyWB z;AB6T2&!mHOo)-NcX$rxuRVz6-g(4WcHksJzwCH#e-8(T=dgdUz`@=Odvn4=56yp^ehJQwe-gE@;MmgX=__qiQH5vbzf#37qk$B*B(R>3g>G|-ireJF!Y?l;R2Jub zu*N@}YS~DqqW4;8C^-4CMINRLoMtX-i+i4o3BaQ(-#yB=Vo$$lD}=6GEFvHmob z|E`377o2KkwrBvMZC8+%z^;Pn#u3Nts%TUGG~3Bt66k5EP;gr*TUTZZt`Y5Iyj}XG zu>4Ae=O0x*%m<_OeSfzxZlllKgFL@l;d};$Tw&j0ZV6$e!?TWi(NZwYQCsYCUoddg{GbLtMy-Zz_|V%qv`kd5>5WipMc4whPNV*+AK^? z9#7$Q%L{$mgly?2m+XU36{UneBBHKmMxgDJr#QZQ8-3TI12Ak>Sf8x&bK5EdSz*q)K`4j* zA*gTY`x)lTIl8{bxE-pUVGs?5T`M|8M>j2Ix{-^iuV%Ve= z4PhAzGG6U3#odTDy3hvGk3AGYilf^VL7tIqFxe&qMNTC+%PN(NJ)E{!pWMZ`J_Rr$ zbc8sLKuSm{0vOQEXV~0)2hy$gA|Mfa|Y6#rmh70Uhk+ z*=-SDt;}!^>~`m-y)4@g;cAD>p&Q`;k&v1*aZ~I;0^1 z9MD~VGxo0LB0xTHlCrro>Dd(~aM2uc_4xpr&C&G>bhAZ%ECnvGbjo5yW3r&Om71zV z71*dg>A%t~>u{~$Ab?{z$6}7dOZV~N#cSyLIZ`B`V-R{Q_V#diw2#BX11y&vmh*t~ z2OS=Mc!tXtv)aa(ZG!;}BQPey@p{Cqmj`Sj@Wc}fJpc3^e9NEti@5vte+pWj2NwJJ z;6;GtMJ3q+LS{n)NA_f78*WYv08&-s6;rK@7i=3r0R9P#BU_cXf4C z5+zC8+@X8MJFnBFZ53b&OvmZ!+3NcAe@mEsdni8UAmGN4c7A+oC+=Z)qUdo&gA3b@ zhNh~p;Oy6i@hkf7uZ%&~ze?&F94eqL(Kh^CJ9s!|18p)rjnC^eQ4-Yrwg|^(NFRf* zG?Jjn&X3EJal)HY;6(Gf*@71l=~jHXmkZwBPMzOW)+Dw6i9Sv~E#K%>+8h69a@Bof z$0x^X;g!xwO0wy7nUS1aeMnT(FH_1C|E6#u!xbGo#PH9HxT>X{`KcE8qx63nU*l8pnG zV5>hh-N`%-75s9;1?ct4EID1ZCHBnlj0RP_GXl-M3I)|`mK^_d3o9^%wF|!Rf?)PT z*ny8tGhY9yA`ej|j|zvw56GFppGMiJb?3G9${ycDZfIBa}fE2fw&w8XW;^ba= z#vXvay#UBbdH@gz0Ub0&qL5GaUo0@6FA&Fw&31!v81u8n8UQEfmkCLp{{^EfrHgU1 z!s)%+7`AH=ihohjxQIdh3Y)yEXHuMgx!|wPu)Y6e^I!5&d{<}YW&LIH~@xS6XfBF~T?Z5C2 z(B8x7dLSSmr5@uj126)d&|iH6mRH||G;Fe7bRGPgCyKB^u5eb*F+gHM*U!-POLX&P ze(v7ASfhEvS5mjiI|+VgfT^w%EtHEB9mX+|`37K?!ES9(11aEJXpU>x#e0Tc*vWFRCAL&Cik@Z9qWmoE3X zdYSQk-~Ge*Pv7-T7;e7@ba(}!??C0D@{}vN%$(N`3B;g~D8&wm_~7dO|Mr1Lp8Cr9 zeDSt%9Ak1(qvxQ#g(4Mwm)8YmKai4L*HunPp|S8>k|0+os1rdEha~@HhLihh{#FE# z{<_j#CM(6u6bYF9+syC59g=-HT@L1RPjzJI*{WVh?@SA zFT(MeRU=e)9KZeUH@(wT2(&Qb=a(ucbv{w#PEMbc|Dp>8AJH9^k#+K=29n?6UzI01 znW}HqN3Z;+(w*jG&zbznJ`LV>?Nvw3pZ0FsgU)Ps_V(>vBO0%$YUKNPi1zxs(v+>$ z?vH6!Yp1XFIWuvSZ%!^%TbUsJPjRl&r%5Dzj$nP9N0W9H+Keh;t0306?xMrIgajUN zisBMW?7-FIQ3ZD1+ynTy1bJS0!OG zQVV#h^hg8s3f0`#0xvW==L$la4Au#IwvE;qd4A^rN&a;(TXCdNR{b|8;KbN}^ta-v-|#uuzw#JP?%u<8 zwJOPX#OnASh9RHqAIOp--5yE8=YYJMAfW3zEcX^zEccKiu-$C28MgTVz?4J#6lE8I z+v1yYL4ZOoFvM|#ljGYMR;M6JkR3~v%9gM4NaU^$!+c-uCH=Qr%6`tU0MZ2~uC;Fu zNiK3{=aX_rfzE0OsMyhF+5l?>-Y4M35TtMJ0 z&@FKL*|+1jfAZ(!C*J-J^yeN1#SzRs;@E+SAY0A*%df}s%IguwP4-RHl}8)$TPE_Z zfbxpXa$bVjLLIMA*Q1*)(a-nMb#qM|tGJAd4^ekeJ5jMMy{vHz?bLIdZ){G1(0&y--c72Dw@3Gw9$AwE5u-NMmm~eD1;E{*txOzF$I1DHW6N4yW zjD%GTc=4r(VLRZFC+2wJncMigfBD<-^nd&wP~W3FSOOf7nCu)QH3$YMBm#lQvFn$I zx2`_)*f(Che*a%(;BG3r2&#a*=zmVYlP3C_+_GJlVWe2#m}@p<40gKB`dc3*Kz&{N z*RS;e1P2e#wI>HBgY`uQgT(BYrYtE2P#usxc_cx{a{9wQnYVsEshmvWmA-m>9er%~ zjC@;RHrK`F^{<$;gTNt&htf`{p6Pe!c_Y-VVorVaQVZw2YR zbIlyN_{%oA7C)?oBf-V%io;QK#{27C_}hF@zxALk=vGO7MX&L}?xX7Cxj)@uQ0En* z9~oH*#2k#ujw{HSKdO(@{=T^_=!yPV;R0xJY={+4s&0ksvczfcPXXXHecl&<=04RJ zp80uSIH^H27iC|TnG(5ns-9CuP7)pY$@N%1_-PO*;RVq25t{*PrTR2~7Fzb<}cpZh046ubw*x+d7gqv7b;urpsE;@vBxILox!$?#aJu1I=I_PP;PQ z_P4<@F1CeK$Z@|NWs=luvRxXqy9{iVzoyOeL-h?cDT=$3&#NZ?GNyZXecgbxi{iuL zScOmInzn^5s$mv;^ZM-ZtAkq8clDEHJS{YoT?)qX8h17C)}{ey5ulQ_;nCVQ^mnZv zrgQn49hN5Zn*ElfQ%1afGmsxwAk9fKSvA z5CVb5Q^a9|#kCK?6CeHgxbXOgVRLeV)yW-nT^@0Le2mTN1c_r#{6m)yPAWSX69E6L zKM|qtdn}fFI5=E_n6Taq*le~K$DCy4L*r~4EdeEPNizR~h!Eq5)$tvyPmckN2q8ZL zpaGHcwB5-8({KNJP*}GeUa|@VWOY@80rhuIPhI#aK~pna6@)p3;5ry@-A$F;IR!T* zRh2z^La9D-+3%C^0jJ+5=zVQ%AmsEZC-y)-jFHob?fM?Jt7FKjH4!70E%itP;&ua$ zThMHdw7HG=;?Dqa4eB}sN?>$g4hUTU#aHmjAJpMHzcJ$U-6z;4#$u1q(SZ5uJ{-%} z|L@@N6u<)r&mgVe4w}6IzzXr@?*uPC7kN+(E#M^%nVetTf z2<8rq4l$J#(8TC3K91St*CUPt0H6yY>v-r8x(;$^W(Yx))#8Lk9*Kd__2~K~`uP&n z&7hCPXwXWIr#2%niT*fwN+Rifw~Lc&KUC|0%;(JcHJklnfrF#VICtS1DC8YJi34Wy z1?I~o&R;sh;o$AARdz!pVDn9JGHCm@k}uCe_HC-%)=5U;-$C_AX!hv8xX~_BDs+F8s%oM&gu} z%BF8tJ+uNq($(YYEdt^*oXx2pF@#)lTwquC%WAz#=2eFI1qOCq{DVtynVrQ|342{A zuqNyU@2-i2EjVF^vjZ@J%hlfT7N2AH@b{g zYf}|p8eRzge&>4CrzW++$NXHaFABTOSAFs?x8;YIr4B~+7@g3!E5CC(W0NE|ZKn8n zRT0|sryxfXYc}xw{JLYf$)}xP9alht6p#Na=K6TkpKO6uXP9A;@8^}L1omzF{LMWo(iBMQ ziJ;a6<%i;u?;BsZqT94I#Un{pL+On)nVyn_{Uj1NW2IlsOUR5qV5BW~AN zpWH?qH~K2P6eE};2zl#&+MI%U3!3#v+f&3BehL^*fG|U#gsw|SJVU|)7?1JjwU_ZT zZ@mHxui*IZ7GZCOfC0-#9>ns4z7`0-7Af9E*KL9EXOUL#1}*Lfb?3k*KLTDo1MGhy zc>nVd(;iY{^!*&$mwq0`Q(S4b2;CyjBU~#Pdp#DbXW8pz@({m4Fn?+D z16-_Rg#dX2gy;%$0wOS99^mlOH7pN~FplL7W<0}eF~h;(9?oAl#NoL;?9DrzKkV`F z!!ukwPZ%Sx-2mn7tq5RreZpo0o_jIk&T+!Sk1ena5#Rr9{}@01{clCuyn=9aRP-+Y z$1I68io%9O6d25b`sGU(A9(oduHFCexApz}bc`twDCHDEUJ;lJ3Cyfp|C1CLOF z%$)R-&yDlD+!>yt=>;PCcd&+${|_h#H?ymmXg`6ihMw6lwugfAus7o3@TdAJk$ z{LU@AFOPJD0walEoWL>rbpGB&q9y}z?n*1zZEbgR5I6AULsWLl2~SA-*<4oh+0TzM zrfX2O6Fdn`J5QJAotHz&rR-4`?W$wxoGZFg1+wnD?_T0ou}hb7l$)|+g(}&oAJsTh zbcit(c)s4SZ%PBsxPMmL*V2Ahe{OyY91V(L6Zu)=csMR3uISDeM4&b1Egcqo@$^1h z|7vN_ncvW&Oa&_&@ z2TgZfcvzZ*6#l4_qG?<84J{1M58T<0GG(w#VWhFNRNp8yFNSyHxp)Yg<^s_nU%Q+T{8D_INI5AF7 z)>v;g0P>-JoMgqgcR=qdlA)8xeO zeUYjIb1Bl2&MzzhCM1w5k3ZBiLqUU!xwZvVH@i3<7)fH|PP>$jq;@R>iB8H~Xn*of z2IEiB1bscC1#-|o_85Q`CN;Ruqhxv+DGk`1-ovmy0aHE$BCon;_yNGUStD&vz}SNN z9z2|4eDUXi;Z8m;qP!kHfWWjwiV+tMZsNaw{RKSm*eNzI-9wxa5;11iE@SW4eJyDI zQAp_yh+Y9UPlLi;AgutN1G7W$>Dz$qGvK%Z&wexb-0wrex%^m4=&^qJm+6Ict=w|3ag5j;{3%!T)cRMy}cfX%MRDC%yIpJ4qYH@wg5+<>k|4d(-(_HD@b<*dL}!y$^5TGX4yCT zxlDRW!38z@>VYQL&ny7!#PfZ$dtbx(_OI4vqM$wi=302KK8~nM6ZohiIn0S%fgz73 z=4Gcod&g(}CwwAI-al&icyZSsy*?=buw8eZO`$Bg^1L;SO|@Iz>k2Wdf2vk`_?TRE zmQs!9Cv-0K$}&tdu4wwsXHBUdr{$Zc+2jPnQTnmmcMd_uqgwU=oUs}_FD0YDVSs*7 z_cVoBWwG_DiD+9T7hTCO_uKXwcS+D*YZH-^tP7_6VQvavnrT6z=1abPMsPJLgcx6@ zr6d@nmc9meztY?mOsmy=ctn2Ulvz)USA4_2`mpJ1I^)s1+x-Zk1M3@G5U)igvUSj^Ktdb zkHF^MDb||}0s+Jc!)A^3=_z6w(DiWfuWAV(+o926HlJg$+{0oqM?cHY3~W{#tX6A` zW8TLr&Poe@R1UD?B$5IJ!gh0t)8jiBHsxf0)!%w$OBK2;03Zi*e)X!toH8u6?*fL( zKb9x6>KsFY-g1be%ot7)C#xj{aM?0sV5PC@DeE)EqI)uWxmKx_R4Ul(s*eW+p}Oo@ z5UhNZ6ovdp_eeChA&+%T+&Ln)>l18N$9YSCkpA{~1|c8XIBxPA0I2W4!!hE`p9i*g zfez>}pbHU<4onMhVjM1B!oU5Km+{6A9zoCC1n&V6Bk1x0<{$F42>YJ`#$E96a|rYb z5Vt_+fV2h21e)!GSN|OtZUTJ*uWti;9}FD+VI;l=PK162@cP~Otk3u&{J_8YkHGu^ z3}XN|g33yAjL1cR<^7o5|3-u`M~Vrd>k&c^-3icjjgJ&rIligiAk|&b8wx$T`4U~9 zUm?hHFfrTy5hrMa;iXK~FV)9t!NC--n%^iCyGRL~fUaBM;L=qr4=#f_AN&_WhxvSg zy@P#RxO|9nhfD0uX1IK5hKC-WR1cbhvDUd)I0Z?Ap%sVb3gAy@jpKiJK&C?m7GE7WicLQxa}nHD|d~{!>$7wXeF!;J`wiD0KIX$dk># zowWmi9E{4BKz5JTtF)Cbalh+T?i!Ac=jc=y>-rfS-`C@-PSN;W;q1COJJ7)x@X3MT zFT7G-XtNqOnvCS|mnUkvYoUHxbkihzWelU25I72-0x$tZf+T_-FH_;A(i5j_!AvH7g&c z^BNibdaoH*NA%9HQAyuc>7z4m)nP1`*1HsFXWLi#co@6zB(xXmM1poI`mS-roSNC4 zjp0I(iK*yUP?wnUijB3155eEshMBXOGH({4+mS93UG~fzkc^P?e!@}tWQso(g>(u zVE~*1^N^GKfU@Ghm}9Zn!(zEW-_H;zV6)labajgDb}$R77kd4=yYI<*f}&vZ_bAm|Jac zWC^4Q`kwaUtcZ+@eo#^;C|ibQe86wrltPA_0hr}N&dfyfykBBH1W{;aF>+_mm5#ez zH%g!L^F+q10K&Lg1xW1L|=djvK#b>Kii z+JNH#nk~VbcY?Ps7hFaVUIup`fVlt1F{b-4>w&%pz<2QlpZ34tJAUwA0rUGohzJz( zj)0*9BLOi2iz}Gj|7L{Q0eFn%%z`fe?fQH+1;iY4!N?*KSI`zc6iK*wI2RNa2(u+9 z%v1)GI4LWai-W}0Yz{Vm=?j`V%VZow)@hxWOW!o+Lco0QJkDLdj@e=#ab%>F&j#pc z9S)E7asI+NoI9N3U^&B$hnBc@UqBpyab$!(JG&q|ce;e_CgFvb5{_31k3O-)bHDry z{^r;JAGr53{}fnW0_~s6Co7~83`Sxqj)=e^q;g1Lpu{{sf9c=c|H$jV{=&t}|8^Kg zAf*mDed3Y`F~@|2lphIThVBrMSGM_h1nlh3t)xqWYL?@Eqq@)K{1TtIn>|7Ma zk~UR7B0~2gs;;`qpPyJgCfUbM>2-8YwkK0VzcRol19F2J{F(&KGo;-n&7611`6kMr z+J=ouUS`c$%C}w8b1Rk2M#&Tciues^QX6FmFYZI7G5_$2*4SkKQ2<^n?c_rzf_iJP@-MiO);esYK zHZTNV9giyc=Y~PY%WZNZ;QJ_!+L82L;cNaUbWDUx>wB+!>H6iTe}CHCy@n10fKURl zAY-&XH3t*}rR^;s?Bo0spM)nq>UUxP!hJZocYex@6j>4hlM{`1cqR5fpzW*>;0(DkY6}vkT3AM<{OCjVIFkC4dgj$wFY6V9nOJ(x4jDl1`t6!qVIsN15zRo-Nirnva9&GPwKIK z_9g<4nDHs-h|qo5p8%cz5-=jbZwIzN4WteTdzt5M#4Ds$d9ii@Cfki66O!R8QuIm z(slqshtT%`2ZTNs1VEH`$Z+Fx+;{Wzm8My;Kmpxsi7;Crbn{%`aEYSKmsyohSiu8$mR~!NtosymS?eIXDrBy7IPw84iy2aCmMX2g?~faD5+- zJwE6847A-cGXwn$m{Cr;y1wzT|ww_ zO*7~8%oNHQYak{HsTAh|(d_QUM;`z7`yYJtFB9YG7-L_u;Ka-Dj^ zN;XTf=>C?(6Kd~l@uDVcC2JTL_`Hds_zS2uCKxsFj&Xe z(F>0DTMLu08P=m&a2zA3??5}OcEaZc#xrI*m&MK#?`P&hw8TQ1Ms25 zlqnkD*(@sa?3o`QzEx!Tpd3@ecd_Cu_^;O9-=73UJK9!9kMBo64Vt=rRk;y~)4E4K-aK*@Za*UW|o8uYWlb2_E? z=&GMUG0UoSQ-4pCwTXb6_J$AO*6U&1ZOa!XGqnXp+6_d_7uq2|^($=rXn5(W0|gtW zGv$l7>$(`@WZUA<;OlwmG{(NEFR8bDQ**x>yBLwx0LXc17~>oGimyQT#SXOHTj4sK zckrOz0pU@o$EbGA`1|fVd6%b7lvI~2S&%_?>qoU%IP^>a0RR9=L_t)teTIA{^!vg} z>2JQ?+k0bA)W8s0x#mxeGlSXVXs|2&a9mN^WV}khsk!fp03{Gt-b(w57E<$NA_8@( z>v|g2_kQE*mG}Occzo+4m=ZHMQ9j_0s)SN)DU_cKjHi^wQ|vwP(RlKsJ{Lz1e-Kv3 zcde~Fr;4B6pNZnC))A_JSqi?^&jny-ePqH{ zT^HR+#eN%KCqY;V@VwJ({e`Hn*^xL$+tn=z06R|&HheSyl8(+A^oygB6`$mE0?k%g zN4}rfoULjZfe2lZ%P^c`eR>aR97<7$3xN6+VZ=ZhHi+XU?uz2u;(C=NvFsuOT%UKwCq|o*Gpg%jqLp6fR{E>f7f-H?4tk@F} zW()MQJ%oM^Dvt)(>R*PPT}`vQ&G|8lcTi7R<#1)^?BPF>)C}8*etCck*B-?3;6i>h zB9*zJ3s^1}I5>Ami`fkKU)|>?9^0d<*8>j&5EIY`U_NJkdt?fP?Z|lU*#UP>Mm+V@ z63@SQ8{hVI-+)(s;(HKg=YYc_a3pbW3}U4GEEE^MW@u@o#rbPLb>oRQe)ZwG^FO@Z zZes!mFcMOJH-Mf2kYtO0);&u~+{!&O<(As`nn{4KKXV^HlfS4H5#Tk%PM%Ac$3G!!o$Wi;8gXk@RT;>_`x2G9quY3mm`k0C50hHr_ z79^y-jZxtRDQx8bQgZXKAC>)YIoGEi-xp{spK*+AXpmM_PQb3f)X*z@(cHe#Zoj+9 z(^$pR0^bLOJ3k7wY0}E84i;?hry?alydad83A{B2zt{NQd2| ztqw+FCdDyKLhefd<+mAG zU{BVAs2bnPsrqdkJwvzhbsNjZ$n@5Q6g#s46IdQ+am3SAe8)WU<2yN5R_>f_DU6BU z7_KFKAseU4d_4c%Z}Ta}r*;C7e#*awzrIjKu6?CXMQ*L^C*G{3zbVA{ReUPOTDP-t zrib|n{bfq2Xp(XX69O^yGo*2QD zI7WBy7(M!tZ^899|3++9jFaQLV2%jHh{J&GcAEoY$~qQ;&10hUU00s*-`mH0v2WTy zgqR{Wt2H*O4Tdk%=kiem=4tHG#0%Nm2#>w4Vh~pYvN&HP~+3~QMhjbnhKIZlk z2-r0zGlu0`R95m;w?y6+y5v5ruk4h7O~+Ll)v>Ctf$E0@YVwX32cKoLrD%*L4&u8F zoLh;p)+&PF^i%Lry?`k?*%!bSjkwT9%8O!Or7eX3P6=t;V6!?#9M@pPEU%Pu5kP}< zhRls=*yiM)Q-%>w5nuQj@a7H>2!sJ0mCTv~kbrrAm;T-#e-xkeNhdtK`xQh=2)sdm zkPtrf_W?(L6hH^&{|21=OVIWe-rCfj7@*yDL#KQx6I~ z7yIQpH4_&CG}%w|B}G2Z%rdPFSxuDFg0bjgqu-(i zrm$id&d%5!Osto{1f&$fvB$xMt2lT0esujD<51$D1cX^n2S@uj*gN2Zc~6f%dcZdx zo?~xG1$3b7mp3wIRuiPX2^1C-UJm2A=8$JHz_x>pU^;`cxi1*$JEH9y3bSl5Z z1lBXy^CeJVj4_06escN7W8ZQA!%zN&$oyO!M*`>L+K?oH%85Odce}IKU!Wv(3H3@g z@Az#V!*&&Tdoun?Q9-|}pM$$z?+B<06Y%0{R$XC4j+Bwz;K)51@qbJaZvn| zd%r#VzAe3M_tepOdX+8kk#UD>6VLrzr5TMFu~k?~x>HwSf1i#5COvH4Hs#Wv^KPRR;# zRV1kRP!%JkzfF7<4)sMCd8A`#p=Vcj83)l_^MWlQq|4Rn&%Ho;o zzgN`C(oUP+)-ZN`&KhshuKCT)UD|owggyzLeL}rs1jcKjL0}uzwVAi@xq{0c^QI8e zegyZ57=Pa#(pUGZMscV&^zx2-V#HKaf`;4G2n;(%0HN8DLDjI_GFb={?=qSAUH?X( zP3dc?)V!`g5|nzriY=A-xC%rh=&CtW z-4IQHy#9@9-KfSZyzm7DyIsR<_Y&Ffv-En`eR1sWn&YeK4^x{v-ejAb^*xr$C6>!2X3GUQ z1q)6nV7u93wK~NxY%O77lt2-XfEz{Uh=E~PVRi2|hV2?5XQby~ly>e&ihhD**XGKpt-c+vku^Ehy;*bs(ApVFpG* z+H8>yJ{hU|1av(x%Ln@72fp*K;e20$Icd=LG6AEBF7afQyu3M*9lA^IY7 zviE-yB$NByx<>}Ui7}2qKi|jss}JDd+$E&Mh+_f=LSm-n-aa2)I7joo_xzZypZK8T9?0!T}*8~_Tvqwt&$bRNwmX!c2pUvj*#cIs0r`U$d9E=|exF#@16 z(ddOe@8vBuq(Jh)vaXGjZ#9PSM(5JDz>xo@BnwS7Z?w3q=-NE!`>SlpefRCE>pSK| zH1ccnDyOqD2MRVaueU6fxi9Oc#ZEPUJn!tf#hp%TG-vSY@3^BAr4-O>d}@+*IaIq| zAAD$k>m2}8)`oWQa{~5^0zlio0X6yj&o2P95SkF^RSN*B4b?d995o%;yMk%3wHsCw z?VV8oP_gbv0BXKb`In}B<#&^y_`8*XG)b&h`lwbO&uw#bFn#dJvWF$Tx%8YORpV#E zn-l;lSK~`%6Oy#GttHIfgsXTFsT1~ijmaQ&2d1?PTd55E^ z8nw}DP3|jYwQH5!JmPL#VO6CkqVE&xWGtW55Nr!=!wJV{ucy@Dw$mSZS`|*MzxEh{ zdsL_-GvxRshxzH>3Z^Pape`f|T{owd#qFu(9PPVc;gVY>w(0VyG-gt#35Iadn|;sF0Pjeb7Ea&HgIy?yk3 zk9^Q&f;=iU4kI?}4K|y+y<471mH3#5b;VzJlj4Ard$+J%pCAyIgoyROY9~pPc}#pp zHLtqsm4B{(tG>G6s&SKg-}J(QD;N5h-TT6Xj_>qCb{dd_*G%KGvgKFSJXW>6b3v)R z5yGv6Og;q2ib#c@I6k%!4DAwZF_3t`c6|@SdIjc$(3Rp(fr}I!=NQZp1R#wg(vWuv zpzpwOKz#A%fb}hafR45Zv;`v|rThkoz|YWM`TQIBqCYfZeD4XEw%~C9EfQuQ{1&E5 zUk)Gw@yEb-{&_w;5c>enL7_)}o?s7HJ_U3a0X_w2lb4y}UGVl<0G*RX2cjOp9H1V| zK-%5`@BJpw{%5N@3IX`pAN>dT#J7AY-uv`T^!wMrv_MJ$pq$WiWTYV>oO=lK>#qaT z3_QeK$fE#+4upWvzRdY~glOhDp*`JC~}-H2a!$30xQxWtpMo8#aA$WP-R{*`aS_TB$C=M4Z<Dq%&eB+qntrTNNp!~W(@jX7N*Msz2!ppW} zKztKHl2bd3&+e-bVPllH7+%OD%d_5EpvzT7k6j#ggWzvKOThOl^TO!^`Y%< zf!tr{gXx9%X^064e=MeukL+F3JNmlaV$sydO8M={^U1O2x#t=5nfiK>iLH&ARE^_= zPmYXw3iB)Q;^)d&(I|fhWQZRAC^!S{$MV}hcl8VB%YgWOP zItZA(P6930x($M;;WX#IYFw4l3eIp7b7^b;_+ga?611vwZ&$CJz*?v3lP7y-v!;`| zx@Z%*wr9I&Efhw(b=JeREr1$|Sla?bg9zbGBVS7bJq}QT**JwK-bou`@X3EI=Rz<0 z`;Jys2cF(j+Kdi)O$e8u%DZ5zGTKU?Y<+6&qnfCk9{8G*Pc-GX$wkojyl<_XR7R5I zseSt-R%mI8U(7r3mGJ?{`{zCUw#Y-pSR^?VJFN21CZVrw&yVLg1oM*QE1yBgk52f50Yy29 zDFg<`hfZ%j`(@kP&;DLc!+8)547P`eHOK_yz#Ygt>EnpBy^H?*oAB6gcndB)@e#DT zcY@97U1^S#M#LdPo@)j2qe@*DKpZkJW-}Zd9$>LtqU(CKU(u6sh#0mTtWQ@M$9zIJ z%6yn(f|oKBf740QwUdXQfxv3i!7he_{K9m7X$12El*A45~ z;U7`R`fRpgfw9fK)y_Ch7}m!aHYZ3t=0TE-ka?O50LfsM*EsSxAP(zt+W!nl1L8|R z4_@CY%o{NaYjoX!#68Awj}V{Xzwo;+(jWV(1H@-)%pJ;LH~#_SLrPs;9+WANq~0G*p#I^;tMa{s(a9>Lp} z5a%C_xc>zR0SFWkDBz`c{onX~zwayX1OMhfV|H*KILtEb+=FS3I5Kz~f!PJjA9xeO z{0M1`44B-w%EgLxj^5~ zap`Cuk3D>Vr=FT&xgd-qBPF1pWnd{X7RyZSFTOkC*6kH;JiZT31ODOP{(k(__x}xW zJV7`*@8dd_iG!7fayCGWytr`v#~ym}O<%b@IQ-A!b}RW<61yOM_CKjTiY@1J1LSZ% z_nJO;U|(Lzb>oXKlxsfTVK^8?)|!Y*Q5ME;!9ne__&?pnWbI_9KozG}3(8rA6+FOBB_~GUuIREJ956>_6 zyM<@5x5J^qscPrpv4ijA>SInVnpCltj3;_&@_?HkKsC>FD9=*>QlQcV*0tAp%-f90 znS6~OYj=MruI;Y6y0GSU%Q@Ywc&B&@48x(CPxbNZ z922yQ@YTnM0NzEn&39dI!`9aV|IBtxFwzzPc8_Nm*9sv@=~ge`Zup;im(+>W`1`5F zR#>Jh@qTsQf--gjw$@_g?tRz3AG?k7wXMNa<6kKm zDLi{hRJ3x3rnrK^=F-FsBZ*jO<--io7fGz3Zjgu~aZb*IXfvQF|hSgYiCi;o5m^ zsqv}%DP0P`*)7r*768bKc7>|i6Xk>3Dl|#Q6h7sYg^F6Z-4K<&wlvzdWYxzV`jO$X zS2vw7{Kh=5U-pO!IeyeK^L(r(FD+b<77unN{4yQ|$`6*4@MK`6aIteC**KFi1ZS8eG0|`*MIG2lo!AaUtCQP#TWtww)0n`B zI`K0YUFhk!BMjCVfK9Ed~2X0yg-wZgC+z~%LQrUxZR5qSdu z61J-ooSxi4jN5#+KxOfs$Bz51NTW*U{FY3}>Ykm}_?42%w>doh<840ps)~rBKR&XO zK&$HC`lt38N$*K4sVigof9v3aSzjGnJ$l9ZMnU-EBnfl|^vo4Uo8rT4D?f~C&LIH9 zc705-RQj&s3)Bl>PY z*CmRnN8H}T*L>1LANSBOXP#_=gd~ zMIdbfbQrg{@fW`GtMKRk+INBG7ZDZ*hy#PU2V)NA2p%HP?V-Q#jpz@rBgU9boo0Dn z*p6*AFWgiPn)j`jL@F#&Z7<=dRp``FuZb)u$fJJ*W#<>@6{y?_t(2aP7)I-thW8 z+<2e^C15)+LIC<1gGbJXk@kc;$BcJBeF`SVjfdxW=Py2u@BF53#L3V9TZH`!p!vMi zqByHJanVfx6d2ScijhJ$d;Y>hkA1_nhaUaw0M=XWJ%-thvk zt?-UE;kgz`3;miG!xa`_YAi4;;e*kxiL>y{(a**wb#OkJ1+>3<;3ir3EBD@~i|oDc z7rMnzO+JpFLVq$m6mK1uOzv*_Xp1nu5bpWY=2ulr-@rGg;u%}>2Oy`{bpmeltJj6n zue=#(a$WNx&TJIXvvQgLOs$KtmB~n%8DJxo()a z^r)#=)ikjE(gMI)+;8CcpdGa=xRp$$XO^&M^h|>_C>40(-CRM%?`mk}k8DqNv;Fww z-vtx(KIBLucgf4z z$$>Q#BWpZl22c{=NouXEHA$fr?+n+#(@G+e(hD16)lFGgcm|iLb~!wvDti%!=oe2 z_x2FSh?ElgMUOxMahtH+Zm?OeupKrTo_nQVN^HT8OH8+$6Rb{dW87{)o!>KIlWwc0 zrlO?3Ey(kBE%&_h@hbt-z(izgiHilZQ*TmRq=z(_w~H<0DMjWfhp6If_biTJx5!fD zBVXNWV&kvG)ZN_7ZbaE1Aj4bHf&g2ogscJqT_B`!i_PW)~zB*MG(le*ae-Aw7MJ*?J9{ zkHDPK{pwEzE`JSx4v7Dm@$z?oS5E`s2%tGA%#aHJJ*)tb&%i(cI9vqJ9{|E3cz6~x zK99W8&$$7Wt@!9c=<+z=lF&t@@g-1r5OnEFkkW&Q!zn_yk3bvzi@*J?`0W4n&*5YR zbbD8`jh9pTQ>2`XrWwMO$I)MW6iC7RJ_S8vBb0+LL%TvxfF&X#&%8juB~T!s>>Tj1 z8x`6JpdPbD-Vs1yR`iN1UDhQHGDWojy2w`(q(-mhTN{6{6pcC@UA}^Y^H)J(ju`vm zv7ae&u9F~i04g!MYxL09yf0dzAUGUMjW0nb0T!o_O~oWBt8 zkH7OD;m7~(w;+voL5Js&&xZgAiGf(=TOv?ML?HnT-i*Wi;?*Cy@3ANU?78!oeqtO) zrlhA7=L$k8YRUI}nZZa9qhZ+Uza?kR2eBmRY}{g0zty{FvhA4Z3I>Xr1>%6bo)zNL ze0wKPpYTrPX?WYv&A8QdM-Lkf{t*V}DU=7^7kPiBS4HL3e;QwEFK)$0_5bQ49Z&Ti z>+P(oxo>?02Y7xudKm3^#$WdGbMP(EZ08O4x=zXT<_80`ZRF>0zM-MYkTwY8ZdtW7Y7O1`gi z6eq+Mt+mkUz|-$4T=gRf%}xsFHn8NL(!aro7G zx`SR*2$hGx^m;zQ+x5@8(hI*GU1noa2q=lat3HI#BgOdo_3_OwTHkv1Ej*rH08-vB z$=n%5Bn*aG3ljDv5uJmH?K7Bd-(!L>&&! z9pK>b5DY?$3EiwmKbs+r5!+2Z*?+s;AjJ`kgcS2L?K$?clZu5e5UyOV%zqK0#b|^w=0a> zQ!tOpp%ll0x4jlk0y)wAI1T_3I7aZe1&0w70@CU>;w!(LU(Xi;LKxBU07j359^iy7 zJV)RDg-7_zFFe5Jy(dVUfJHb(zn>6()u#gY{lCFH2gV-*-~2Y<^jXkspTP?t^gt+E z|Is5?7&i@QO1Hr{LOlE; zjQnN1LW5)c74KT&3NyN5qFOx9=VQi^eIcMw1up%nxJ?fibjg_W?dE^n ziZ)N-SC2+0W6Zzmbv8KKpHb1Qw0OTy1opcy*tc)SB#)ooaC~a}Hu+6cMDg^sGzzXP zhnXt=5JqYr@y-lZ`Gr!%OYSv}L~ySabfJg(C;9DnmX%0}1RvJ##=jkpH^5+0ndr2j zoDp%;ZP8>CR)Ou{HL;z4%Yt_#)qL)EZx*<|DA91+L_?lt=bHq#U3yTMseViK-P@`E zh-Z5r1pwcCGTy7SYaOdKC|8;R&mP`GoIso0qaE;lPs2;tvWqgi)~@jToW|(}BueL| z-%ff&up%T?a#MRhIeKR5Gc=58((RBl@*M#3*NoPB)z{pE29*wb1M8CX;$hVe7`p{( zQRQLo4ID$W!}5 zuIL7QLN%eo6-X3o!Cwm?dg^~k`~v}Wv|Zo(J*T&x{Uh=8){VSU#UmJ9_EfC>>hSJ5lU=ECXN}RChUdG@4;sboz=k9}_y@fa= zq%cD`V9Y-7Q$bh03cwOP{wMH@e;qh|FQ_{NXa=SZppFsdAoKwBgwP=$0+_e+BXmI5 zf$0F;-_MAz0ORdKW0%`d2bXEH0GyaVG?MvIp7!5GX&ZFU3#- z2<}lLP~O=9DUSJ~HD%YKMFZ1c@tYK8==ToL&6c^~;ol4H?X>8ttpNL2?bYT?HoYx6 zN1Tg_6ng9(Uck|n`!QP_ASFhM1az}}*y#Q~X0th#iyrr1UEkj=O5#3-}_g<;|aQR7YlkllDr<3C1VIoq08@Y z97mcRod2c!AAkLyJ%8cKKOKhgIDrEgDOUmHB>T(@Ul`DYSNuvU+KV@QQ3IIBZwfM94F{j{G8|jP!fa1$FnmZEei9BiYrNXo2QO%cTLacaPQ1q4l z9sWz`oldq6{;tA6!I7t^*Fi+}r&)T&vD;1+U(RVAg9_PuA9lVu9klLiQe4FUZjzp6SoQYXC`~WM*x#B}^BVcy%#rRbh zKFTOleR2sdftt-H9xqGyeUdCA_;C&2DIcqy54-R$G`B?`@s*ipE!>*dRU%e#Lg*Ek z&8`mRkBz@`Ck8pbIR2;~(`WqEsS$O3BI>#{Za?bu&U0Tm+`IW(IBr6IUmtg+Om4<& znH+-%ff$qqr0t5jqYuQ5kNRvJ-2Z{t+fyUdky}MIhd%n7i9MosJSoIHECP|Ez?KiqT*ZrfCA8U(N@NJP9YJN{Y!Z3 zAG(H5`}9-9r|$tFf@VEvZ;tQ*pNVkwj{{f$(8zdyor`mH&;BbKMzBi&fydOM9 zP+5ufx=E1p0bEfLRumutSPu`Ry5OUVRr@=?)02rn-3+tkIrQ^A5JGw8T~=06D<^#7 zQ>&ceXR$(^w3HTQcYTVCZnng^%hzytbS1wjfyIK-n5 z<=qcMc~j|P4s?MLM_{(h9{cBiX^VG1cLxtYvXAHA^Y*{ZS3}a_b5I!tCh#6?rZqg ziSw>4@pj+v(uJNzhdj;>DJ`IQKFh~;1~?wHT6zZkElhF{WNgy=Hvi;DLA>X-u>e$O z26!HdELj}8+X28pl_OO!x&Ez%fr^eP9{RgUcq;uOn=k6Z1v%cr>6t~Tst4Ld;*px~ zwzE%Y-A$KGxvh*F5^5J(>A&uJa8AC3*N*RX#eaLhcL3NHcq;nQ5JI~V+MV1nWV^>} zD**W4_4VD)DYNh?~0&uxRc>kgjL}t z^cz4{dJKFCI0_Fc2Q5K}$6wkx^qux;AS(XQJM3xVC4PpWYJz$k_?2~oWNw#q;-@2Cf9uKZ;@gZs)qcm%`jLQwqY;qhQ}B}ZuEqr^k`={OTG+ui+#F9l-Hv}A zUvBh3=uz)d@D)2TxL)sU{M^Lx$Kj{)Q$1lFPwdqm`71ZKpZlD&J-vcZ_F5BD zj!;eRIgt&JlNE_a@b(^Pb`4iP__J{B4Zj)N^%mRHyC6=Q_@~5r6pC)~FV7ZtA)uen zv441o*LcpwN!F$#zB+tgFUc35G3dJp5cwdA`5 zRi-&bj&K35_-rYDQ{H}^%4!t(fZeYSlz%e%d9HB!>cmtBEEdzS(^;ULQbo+HvnwEv z2KlY{Qeeyl0BuWD+lwGswso4Tlq5j(zBFVd24$;dy)dM~prBxWQuw0pkru!2ddo-o z8wU)V6~=Lc{0hiWWW|W%m|y2u68_9DTluG=o^jX$7{TKJjw6^Dp`Rh%eGlTTcL6*U z{f(G)5q&oz@`A=V!}tok#}0PcWU2TlRu;s^5j9sdQt_=DevH+}9Gp*wdK zym}7k5`YErYXLfV^^yoHEN{Z=#jl+Heb7{V!{KDhD&E4Fm>{ovL@39slROX8F=FiJ=g!}` z`tXzAa^do|Z;s<|GsQ%l-MHHgAZMz?Npi!?<;@s{cU5wge<$7QFa9V=2n}ww`Rhu* z3(_p1DfZdK?iO!)JoFo?6;?(CTM}S${d_`fMUEPt+^=xe0)fA8ynu)2<^uEgZv4uB zv)YS1LSZ^vXoBMx05Ii8Nmy3Wh1SwX@GJ6w`d27C(*Ax4f-NS4$KT6>HHOi78V-;0 zF@124G-!5O;>Y&zE61-u#t;*#1#9sD!c4}9JEupgtUA-%%rcnz^Z2b*g3)BlF zCkrPt_(Dd$>4Te^2+z!5^fmy-Lzvp;YGt z82?MVATqP|onO0H)PUiT?M04MGo*O zfrky46P7oA3vPVGXCutdVSRiTND)DTix|rmS9hX#!Kv?i%$G~-?d@YeUx2!-$6c2b zs&O2#S*@@gh8&0nLLBpU?r}ThRS7~_#VCOZGvctp`t&Zg!y0*eyV!>maGeZ`kJhBs zw{sJBmWKsc-gSw;EJ-;-+ry7X>StK`xJh0V4KBGah!EiXNYPYsu*F{#Imte}oan*@ zFILDieYF7Jh{=2;g{1IVJv?)H-J0%Xs%ovCp4KNyUk&`m5yNJUIBvm6khdyQX`AAh z9~nt8;}u}RwlXl~gq0)GumN*f`R@Y8Tkk@;^KKB0F3@819aBF8;+PQl75w1;dIcZz zsS)GTYoHrI%%Hs)`d{@0plg2&gakhQC%{YJ3#4NJGoY;C>fv@EFqPGRws_BbZ{wjy&*Av?i}?O;`RjP; zzkMI5KZme)0Hy%uS+@UBI1(d+VCHT_rn;OByX7P0D$Vc zCZ>fEveGRFrb=On#c4?&^@Sx_b_q0#-MQZ+jP{RdI1zccf`|B6)d43{X0D&pcK2EC z!+yJr%zjhTPW=YE@ddxM6Q1}@!Kd=M@cuXLh7U}}SC8ubugo!IaBZ$I{(E?SeD%%d zKt)`3-{b4&pn|`*A%8#jOS<}B&5be{u@!oCHWL~FE7&orwJ~3WvTHzjt*q*Y6e|2_ z`ZfOxosNH%yJ63NDNH(AD|!kA+~PUqi*~QL=|drJDQPqUq7q9;8$f$8dIp#j}Nt|x+>qeYAp9Y}J0FyV!LsT?Mnq^F{{;VG02CdY=61lUPFid(CbP6sMSWc;ib`u$dX zD@CyheW&*_sCxc}f#G zo0IN_yIw7Us!#4KJuLV0mT70}M8u*UL>xlLal3il`u1~QHQc-TyTQW(A&eOb4sa79 zQ369w6f7(EJb;J0po6FIz(;-_E3;=-4xfNlG4eZC8+iO+y|fDskw?9 zIltxu8qqc5h{0Fmgju!~0o)6BJ)cP9rrMMnwA2d4@1-#x@HcGpYnOufAe4j45@JdG zvk2{gKnsZTb&e4^`Cow%fsR1Th_Ac@>F(1&i0C>-7Y3vh5K~8?>k+WVa&{B{*OyK3OiZJq_P8ma*{7Q0B8=z z42%xc2M|Z#+yT;RgMal6{{Sz&Ys1SWaC*wPas~Leo}2)5nx!DTqr5dg zCu^xnMkLDS!q>#tLFYdU)V&cY5n_ty`x)N-4b_cfI@)!tx=+F=*|AkvIIL zF@n28%&xr=bZ{*f`qEf*#h&}m1$IK$^%>8ucS?}&<(&e>{zEp13FC8D!p1Ylc}Y7^iD^z$W-F5id6{&{c$;z$U64+@07U!a@! zI6BzFV~0lw*v>)fNqKWj7S0yId44xGczc32}B7AUAK35@A{1=zVX7P`~GT-@m3mRF>9gU zzY)ME^Qs*J; z&s9FP{#_S0^x_0xKc2a82s>!n39q6@XfXVC;tbUen@8jv z6%W}Ji)7kRSj?8ZHi&DX$j?>!*ob|spd+}LUCIuFmcL4+D-b9=6kRUA$hWH&Ws4sb z@?>sxaFiDJy+S~IZFS!wZfnkU6PwJNz8<;uzTjwMvd{oP0($S$V4DTGg|lnOS53GX zutPEwh;?9ixPAnZ|2qa#^#?ny+be&kI~i<6PGEB-l&VUDvpybM(r@*L8#q4k;_BJ* zs)8&$@xf%drYpX3jSOmKERCv`K@^T$m!Oc!ec#?HUgYqE1}C z-H`5HaK5#LF9j1nJ^|Irzl`7Tj~W@Y?WcJ0WW4-{MU9fc&gw9Ii-P##v-sra3=|!k z(%;w#*(#&*Me&ycOVGbUEN9?EAw*7TxjlaQ_pEO{`!&2hc{uOW4-CJ}M-?T3kcj0p za*p853ZMnfeZVKYdnBfwz$Yu( zRg!Eg=gywxyG+34z&vvPm^J9h093r}^q>frKzT>L6q*W?Bq;LZ*Z!B)=co%}uG`7H zK;~K1J9CkX;H>n)e3{JYetv=Me9*TmXy_z~KL94@oT}X}O`IT^)iA6Px10QoesKDW zEbo+JIq*-O_0QKeP$%S|FXpY`90#Ov1I7rN^+4JnzVu7r;}^1v4hdZt(T4$%dm4EO z9#3%b+#USTpFD>T{D^(X`c$g#PMvOdYp=ED z9PjtX=-x5cKJk9vdaBM|YtGTU-FUmv9Uk!Z@Ayfc{P0rSQCL1cnt}74=?Gr?7hlcJ zCwwmb!2<0M5ZA|T7Ck~29dMHXux??TkylxwT?;#3K<8dZ-$UE4Uop1MlVVQaSg6Pg3yj z!sQ|HTF26(0G zU^G&?9zO8sl1CrE!5tU35RUlo-}AjZ{cHajq{Z!?A)Tlg&P>se0SL5L73YCQq|wc@ zcl_#|m+${uqw(~eUEkM^N~TW=+H8 zFu|(Ya#r7=`7lVhP5BtWCLNgf;AgN6yeITud6f4dwQSka|s~rY5!SQ?AsQFeB72$fYx(&&)CdTpB z(x5|J56~|UKXHEjsW*2AH$Drx7NG~4(qC#jIUSjsLbpU$hcp*n%>$qD70k}Rh@)FC z&@C1r2J%XZih>^Sd2)0#9x<71u(`QO+qNNCXdG=jrfFMxuN=?k%#Y`+R$Zon;KPi+ z`s|qaz9Z!~TIX0C&zT?I3irdOy?I%_Qg~g^s2ryJ(E#Tr#gMMf|GTgb+r zLiGmRd@J1ixtJ^(Tl`5j6NtLp#e?u##El6z1B~(FXm++>e!wsNo1fsZ_Z~7DJC0XQ zT?1{S%r=w}&@{rUzvShd`_!+*AMSy_1-Y!X{aD96F`J#LK9T%d%nbJxD{-OlYSYG|eQ+ zXg%I)17^m9O?+Vz)d=ErD6u3b-glmMG-LbBd1hOu(LUg+2u<5EnoMZNEtBz>%XjVY zqKCG)>kcP=rF1KFI)TYVSsp9i3F=^fUwQwB_BcFVa^=c4fAFsN@Y8SkHoB+(CvJ8Z zGTV;9xlgwQ<_w)W=b=&5H_dqCsWW%p`%ULAUjENs>D2qM)}rJMvb^NO0Z~vbXQ|{B z14*Wb34{1N*CoFXWy%TyOJ_SyEIo_5FDeJF+PhSFGi%)@j z2=6eF;nQ!Um#ZGUk2)&JZz^BfQ}g=-V`T8vTz-B1aKN>Yavcvff2)bySk5MVDtlvi zo9o9hxn_?tETvZ)NUzPoc!Z za#AwVxv|n_H43Pf*{{h-wt0J8(o!!Y^r6A!Y)_WGZXN#0G>l z9R|-5+?m&Ts2~4 zPwL;M&(N%#0F&g{K0A`Bd@@Wiu+A1G_kR*!Y?5zX{z5@3cUsF!YAu73V3s^n8u;g8 zz>#?7%KLzmLr`3!sNbF6c<$>LH=q70`r~s5ora~Q2CN24*sUt?Z*2R9W`3ET*N2 zP>;M?Pv^;o?7Wcak(-MBWWAh3C_1GoQaMa%%qGV+fh8g_5rHXhXI<*W)D|8KU!qq% zqk?h5q9c`HF!T#wm5Q#`8VE(_kS%ksI zvjEihVba#n~y?wh-<*PFk`OX$0hkrw7bTuUp(d~zwI=$ou0*$*BMWQ zQQM=JKaS?1HzDIs1AQ93_T9*>-$t4dxQSt!rL9)mtHM=)qwv3L!8OR{DOk+;KBv^LqHC&%eUO&-!9mjq&p%a2@zA(xxjMH+o$)&9XNU z4#BUMcy}*u_s`+nIed4FXG-HdzxLn0nJ@g>Z)flD7`JgZD|HfX00<7adXHbMP@N#> z9-=*c4|J;GY>%Lq(xHDihq$n+C(rhq10B+#pLvB&{yzE+f2imdQG7BXgs2wj2N{o z8`FtAaNj8&e({v88G5v@jK?sWh30)9I`RTfUhVnlNA}q{J7V{=@MHhshxvma{imQF z**+V`L0Ewm6I$xkfw;Iw%ORfS?99dga`Em5zI8U+dbIC5i9=75^(%o=3f#Ta53b3VBE(wa#N9;HAyq>YO$qF0jr~XT# zDanPk7Ph?Uc@U6STLcU}pwLWAJ=<6PyVR-aW4+G0T(S!V*P?GN1eRWjzPXOEBe`{x z^e8jlBFmz3arT@1HfaJWY z>C*sftkQ}7to1((E(ZM-yax`C#PGu^?X^0o-C_2p^mh{7vR%^Tlv^lbnZY4-RRSP1 z7+NyGxB2G$`yYl#{2Tuz`* zp~=8`G*jP+3@M;Sh5=>j-|#sFv34v@EcViTB}sa;Ot#h)ScbY2E60 z|26Y#kAHK2c=I*5us%{z2^UbC{3(%s@n(6a9e%No`i|M%f1HQ@$XC&9oabQgI(@gI ziQ~rmo+bwD+Iv)l(Rj>gJYh1M(l!lk)6z68>^R);9*^nP;v@FlgE5Bbab-|BHt?6rx- zDGJNGjZ>D@ zMeh2W;2s43Vf4ATz~Q@*b^=VpxQnO#2U2TP1xbOrXuD$Y-?pF)vU?UiUhvD`{o_3O zo?A?&j)P<9y>jtVL*rDRf2wCX6UI)MO_kPpx?{)vpR&t~zxdCgoTERw3htN`pi6x+ zU*uf8axfh_NZ5Ly{UKg2!tR&j^+Ea$Y2+s3$(ZNg^|O5WUwSjY^xN-4#usR2({Q_o zhI{Tk4!=@#)xpL^#us0Xv>WuRP8G#Dhf@g$AG)wz2o+pB%(LiC$>#uoAWhj8P>mHM zr&-D>$1Um9I4)dEGoH~-w{X$~Es*S;Rj{$OV!x94kUV^fG6ow&g#N;K@*diDlby47 zu(7oRGDcL%$Y4-`m$ZUa;f3?82Xj6vFX^DhOYYFLn|E3m5)5O z;O4C*4?eib```OPe)yk%3-c#`4cR;o?I?_ubgNsC!#Fq^FXFuV-nn+;edq3e;2SU8 zaruAv-glk%5)FdpfEdksR(+3GJL7K-flI5p%=p*1%Im~K29uYm<#|#TC(gu23#VFi z*?J&a5)nyXFgdc3g^HNbP5R zntoeRJ_*0@SCT!@`dx*O)(PjFPO){WfYW%$^iVLQX}QvWj;z+`5gSg(RW2G37| zpm-1e`vkzSKgqPJaTz>3q1+G(On_~R4uiB|eZ9^1)TV_j2MXCR)t{0f3f4)iU{vS~ zW`lDCW`ZUy{a0MbgRjth&Au9Z!ryw9vq*3;?ikQ>&G?{FNCxq22x7og1teM(U8iZ1 zzob~Ct|JMz>>!)hV$^}bK@Hd?0DeG$zX&x_9V-vzrk1NZ@EsIpP%@HE3Lh%b7>o-F z?)A2X2!DhpIW{Ti%nIMazb03O2W#|~!lP6&lsQR`V>_gk2SZvI#YmE^TIgzZZR$mt z&QK(so#m{oV6e%(Kn}z2!TSoSC>z1QH!CqHV=<3nsbxEz)}QJpo)-9Oxs$421FuaM zWJfmsPn_|GaP1Z@Hl^V}uVzf&clXY3Jo7hJx1RlT_{An7>5#vsPI9U_x5Nb}e07X= z`!t&`oPbWAD*M*HnBPP=+lgS9@ z!XCq}>p40+j0gwTFyD#zlrY_IHw3H!KKAlNMe#s z8?NNT=)Hk`L5yQ$dwtIsB9w~O1E0DIzGa$!j*ni8l@{MOwE8UH^oBF? zb#I=c&(HA(`^X5I?M>VRZ$QrdHDDY1-^M@tJ;>2xNV@?tK^TP@^+@}Adr5Qv^A?>J zZAJ(!Zub;=bjbhwk3Y{7?>l6B=Gi|M79HGozvHDZKLvRG;CpWJ*oQr%v14n~GZLj~ zg~P*!J02eKhyUD{AzN4I_O9dHJZXB8S}1}BB>~_-ogfZz9`6_0&sF@+7o*J|qjAvq z7m)E5e(?N5ZJos{bUlPKK$>tP=<*ocjP}AyXm;+V>sFw>IvgTx z>{~Km;+m*4(z7^jqrwz%h>MAWsQAm7d}boR_?pA9oB}p+ZC()|ZiLOtWUZTZx*gcX zkI0g0#$EoYny)Vo`l@BNxx@CEI~YwiL#y85oY0IMZ9A5xZJABS+=s3w zS8<+@7n*OLz4)Il-~W>5Uv^9x=Jlbs#o5~QM zkpd&C=SfB9eg_Oq`i|UA=|8n;pVvWW;gcv&|jy%33bFnt?%yA{(U*V}`S>v$PC4 zz}UgqPR1$0R|n-8^J)cv4*1KkT?3=B|HH|7PUvgsUaWm&@OxOk=oZPusNUynQ(faW zyZ@+R8w9UOs#3cr^>eQi<=g-086H0JgPsjY$BUl*(Ca zL)HM40brHxvH=B_4(r@0fp}@BD4CO}JqT)Tu`-;3vJkP4skR8%_qo^P9DEEu=OCrt z{ZbvYCIe|0z?XD=h=Wb=mhmRfVApght**zr>vSQuZ~0=(zz{R+%)Qk>V#*W?o~ST< zm+**mG{Ji5C&_n`!8Hz735z*DrsId|5e3TM}}8K}1~R zJjmqu@cNe=Uwi5s{POT#9A1Lw(WY26>i|O+aSh^+@yEB2_B3Z-`NiD*s?TM)^c?M9 z2Omz`FLa5<(JQWL7*D25CNsj}SdMnovava3G95E&8_+Q0d9Z)T!Ttfu<+2*bVQ+un zo9}~DDiRJ4?E58$`!`uE!g7CS?uXB`OODBaJ!Pee8ha&_0J~;sk?VTtX4Xr|F-p#9 zRHj95i8;(xPtcXv)~YsZ-B#C+?tzg*TQ|w5@xCVN*9JpIUm=@^a|p7}A{|ImmBAD-a4 z1+EosrVUSgc**2DlJ>~wYd{?# z3*tc2p@aZVya}z>oXSZz z57M@@lTF(3R@iosg2^LeBi^!%oiQ^J-osD-}MoG zn4PVwHwEfs02OxY43(s=sbwUdo^p1=FyH=nt1`R9GN>b-i0;6*ho zSyDeZ10bxrDuHWA04U_^)6%=TOd6|d)Ph#@vW}JwjMF>Y9!5VToma2MDD4cFa+kz` zd6pSy+DQBylrNiW=Ac0Xt_c2q_-(?W9U=; z&3)Bm>aNj7tzT{Gn12UeW*mQmcI-Es0I2AlpPHsm3gk0UlM7lE zhoUADe$ zdAJQAwVG{>b=V>waMTK za_c8#^{VCTFyMdPmW8*PnU*>cVdc5_`DJE5!x-@zW&<@pFKs3M)$*9hl3FaXHmIL) zPb&!W%C?HP1Na8`B+ZbXZsao&3PS;MQozL7=|o&5#C%XJNIdP0pWfvbxlLxEna!}!ed|G z9bWrXJ^+;2y`RawpYleU*5&_T=Pnh*D7|^TR!k zj}Ab)Fxwjw1DOKG;HBBQYFkf~rR)zyMNs%t>*cH)Yc*TjzmkpDtZR}!WKiDJ&r1nO zV?GFQo>8wNpCpTe_Dmq1$C9xZ0`a6~$>hoXTl}=>W=VD>f|s2cses94<244E2|}Fl zU(D%NVLL~H$JQ^{g;{@}X8q0R3$PkzHkMJ}qg}j?&Ix#rzx4$E;91ZPL~%}WvZ8T4 zh~Ra^YB6UvIpW9v<~FbW$_e_!o~*hBjD_~%6`K40I!s;TJ6%|yQ9IOU?Cg6Jf@;YAc#-09ZdcB{%hsLcKwcw9F%$xt}oA{RR`x!i2G@HA$ z(na}b@P0(sH?UejGo!uuBHY$p>iaOxoO3wBL4Y!EKQ7 zl!zPn5%KF#Z^j{ls?dxkw6jgx(Ja(bdq`<2UIbgym{ZAPuku5&vz11ttD+r@W?Sr> zy_3mwE8bon{FZd?iECRX;|Z59@AB}&8(cgSwpJkF%D|qmML<>Y;(6>@&!bPwxp3D8 z+dCaU^lyHEM}GWYfK%Mgsp5Yi_>dHiYRGwU&ZF9h=Wyqa%m4A>m50B*9giRDx~`EB z$$KU0Thc*;@vID0?3Sufu6$31cRdME^lJ&Oh6jko=eIkp-{?8bTCS8YbHmYIq{H4y zOA&qr%fCS&DWrFHg@AdV{0pDjuXR)EKPdr?3Qm&guq!EY%dzb$Ibag4*%_nER>)r=a1Lw$q=hT>lBzIuHANj#}KRdJfUF{ z79`wqM<-Cl1lWlpsljqKnQbJL$$5)Gqe=0h=ABKFM4`pPX#%N2-|}po|3ldurkRWb zFmTRfNH7YV#veEGk=iK@75=9rMft7NZLWVxTWYjqMf+^XZM9*0MlOvrlxSPYi45MK zK%Z)c+6GJ~)UR~`MJbu~hrd(fWn371Z2OiD5x%6%PlA6 z#$-GLgr;p6jVEmFY%-dRX`7rfV6|FtcyPr2-XY873e~X3J3Cg{L5s^!W6j0!Ax8&$ z_u!sc8i2;GK z!pGCEj#({^=({EPu)YLmhCPmz$Pd-NEIUqESf>$k&@aUO{@oI#4+qVyj`24hMdvRd z(#Lz|w8Z^vj!Ez99VEH=pL7PnhDKeI98R;wLS7N~5)XgBwsOEqg2}|muEM-4UBaK8rU5iSKJH5s7ktg}J|MpIfZmn>QaJ&?{&hx+n zV=iBru~^O7xO_!Vzv|0y({n7|_k%1ReJA7Di2XhIz27?I<_*}`k}w9HXVt@v7vNQ| z-Qi__`pc2g7J7V*rtOim=RY3&hs1P{m!N0D!8axF6_4+a=#Cw1e-S$V<2X?ou7iy6 ze#P&+^?UfUZ~6{C{M<8)XXl}HXy4#z@qQF!Athxtuh5)(Sar0C__QTPAgu-<$tZEg zKS@gZTWphaf!^h86UjDDOX(onX^;#Y@I0;&n(>tJbc<$Wt_~ddM@dRG`FLt3eR8|T zYs&B^_>#;vZ0??A^YnQdH^TdvKT;trwpr8i=uZ#b#AZ&247AU)e!pUsLM?Qya=z_>#TSb-YYp zHVDpytI8DHS!Bi7yTQ9b6M;giC$^vc!8D8ppX3LXL}uzZBQ(I@%4yxB)s`ixQ*d8P z0Ko0KG0&4znhWTld}_63)&DOEfEupwYi-%|ppT+p(?HE`aMh?%BOY2AcyLwCdgjL_ z0Me7SS^g|6W!S}hT#fq)L0b(+oo>jGof!Ftf+_JaY*k~u3W6#+S?5^_II5>wXttIB z7|<1lw2jZR?H*c818^=>oJzEojp3|qCcq%EQVYR)muq{wxlKO_w*me0{_5PY)b-X- zEV5}AD28Xr5lTj}z)<9E*lJA&8?2Y|gW2;$U#nmSkf z5{HMG%|EGLCA(6|ath=FPEK9pWI5k^<kDXTA_X0)4qVP=7-?O+Io+3!HMs^(u_uIZSNu?G|n-b&Dhx5U^1N| zPQ%{+#>!*9?QiMPNJ;lAXXvHttBoD zWl~i`K&WvHnjrtAkE+q)#)%5U$T$m$>sg@EyX^7g_J*r+)(vxkx)NiHiwQuIBo>DU zvv@9hR=M%y7*uc!=#UZsSxwkMV60pPwb4^ykN*MvYKg>U$OZpl!XT1PJ-rVn{M#8P zJChh_pJpOG+J(dZlpaP6I^RdHe;5{f;J}IE8joX%YJ+!87&+b3eA+8F`H_D(VS080 ze|4WxyP!F>A>93$s^|WahA4IQyA9~|g5!V0{N)TNR+f2`_&Ql!W%#T>KX_4&> zj^6uWe)Vl1WO3*jwaRh@D=)n0;SqOT-k|H}OfKES<}3e{y7q3MK}I9=>7V7`T|ZAV z5td8g-M@K@=blusMSwW zNGxGxfZ|bI(Jzi+`cmB1mm+eSzF*L<7Pxkc)eFDMoBql-@$Y}~*YVA1WU`BTiL46u z+^c%}WrsF9+MK?h=G0}BHlE}qlobep=V{9bQfx!G(I?7WR_o<9f#G3-NgkCvNTTqT zl`X{vf#4WTXN+cBI5*1r$GFd-whg4L|DyIsvZ1A3fF%UZ+AE{cjIFa5naoasG^lq- zBRJR4wj)N92^-T5?zptWl`CV;?>e@(q3fXUV_#0_6c#JxspnQa^ZcAkmnUpaJ#YQD z-^)jT>N}C~47am`?_GhWZ1M^}r12FJ`F3SUfr8HU8;tfx#Mqy%`e_QDE+Rl>IK zLap_g?ZK>d1^?~aPW6gkazZ^rhhou60?M{|Qed5fbCRtyxS95=SVcAW0U8fuHMCE( zNR&7HEV$P^hBCG-Zh;QT#%SF|{+*Kkrrt2fFQwOl{W=LTH1eiygxL@HmhEY#;hH@y zb~f3_3}d9MVwtwiO(%OEMW_L3>^_9R%MuEF z%<@J*0&Cas)z7u2*T-njYTIN7D*a0`IyIqk(3&3&lM)H8+IXa)UO76I<7S;pD}*+n zsslO^3t7!-gLzhN$q1%CZRlw6DX`W3S^U!qf?}tPv?hX*gNRZv{jtH8h~ZBe;JIJR zm}CG4nXRIrDTZFi3Lz`5j8AM(lCxs{YNJ}Tz^COwrdt@)_4R;>Fd1xv!w~NzcuJ}k z6aW62NCCCAg#l+V@}xPzkeBtFWP^fvU$Zaao#9W0=R|niI=qQjseSXi z;5(Fsf!<1ZCd?a4 zwYy@xgSg>W2s3|PF#B(vD7rib-!psQk8%Gee=+UGISy~$qF*gZb-S)Fw+gBv(lFha zGTqolRG3UB?3~(S)P|WY=LFX_c&{8D9Yx>w{$GP^2$VC1b>Df_$3u$A9g{Y8gO#g5;kON(en{g$rxql~r0rpj_j zqArLi-7+opUl0~8+m#qv_)LK-@!k6_ob6!n_jW0;XiN|(;n2TT2>zq~^@q=+H$Mui zLy#uy`FA~y^E6FIuOqt7;q)qh< z(Wn12?7t6bXCM;^fv7{xm70O4uJBgE*i{O=(GSdgt5H{S7ne*32$r8`!fgmW)k zD?IqnL@(bnW!WtmUA%|sE8d8VcIg-UxMqZN+c3F+KKDO4{QV!r)6>W+xIo|6za|S-^FMbA_FM2h8ehXz4=z`1VpO_?oXcTsd_t&G~30DfLzX5sy z+5QST|1$dCDY_)EXzL8q>XX9=W31e1JIZ}mxIDa)mm>4wpClhJfD zBm&~n+&~&*_l(`Jj=S|gvd+l^C)!;F->ncDrrW34Jav(#-H7GFs*=&TWjvWN8c#TP zVT;q7E$7dTxpdjlIygR#W78=ripO(vUwQP2CF6= zb~1dXjIR8YygRNHuxC-V<($xGmxY)W`7_$wr{S4+CDtW2QzWto^ zyv#_QlmM_xtffLE4^GpzjXYD0b8yPHU=N5DQN`$1iJ{26*QTa8_>$sovM5w5W zVQf{}&OH@GtZ&6_@V0HFC-n^eVBLZhG`Sr;rQ(a$uS(^rywvR*eUM~gy%CFpT^h<- zfL7qw0-u-}+R70({pNS6pOf)T<+K!x*Dz7!L&_556URih0u1^UW6KLHnKOph*3l?@ zm;BR8bDBx6lz$Es*6}N_x$0*HOXihvMDpX?uP&(Z8P=D9atZ(BU^b7xq&s3Wk)EY| zO;61Dsz!CN3ej&0j+}+hW>#~5vHg0h0 zE0CQ;WW8LWNr7)|MM09|V5mhJQN+y_hkKttzxLSI>0<8{G_;EJc$(6<6d8}S4d%tpNGjbO-p-?LiInIG=ab&C)bRRop(G=sL}m&Ae*%bFRS zBqwSdnWT_3={Yk)BvI0G+c5zU#USLW;*1yue(P`*DbA2sKOo`LFBf#nL;BSsL2G1_ z+(K}w%IHb6ir)8V3>sYC`r>m>sy$)(ae&r$OT1skYvl;1{O>)9Xa|iTq}gSqX#_VC z`qhf2J?7v2g;RX#S8gEJuc7l>bh9nwu8*g^@|85>R|5+;{!#Hy|2O4$KV0+YTS1(P z3#aDW@mV5QA?>U|g3qKlWHv@74bT7Ddw9psKMkECPU(B08H+yj@RYmm-9|a4Id?zf zm%IUK&!GJ+!c~3>IzjywGTTA--p&5+z73sUXEO18@ZEd7_YZpdk;7|{yHV5A9YZVd z$G`gHIsd7jgFl|5-5hDarGrB4b}=KI<&uclzgvMnqF*Yy@!9mv>uKDG#$88siD!db zkNrA-`7iuSe&m;b1J|CWoo?Xh@!Hb$lhB9rXxAy)BHNd7XYWPa27T{I%bNuxp8KJK zgrMFvl@64Ybg_2JIl`)d25D;ho#M30%1YLqwcSy0u8oO+4MawiJVhE`#=hkhEtD}D zb$z}%ERXr5V}gA9-qVaWneAR+wzZ3Mqgc+-v@Pv;MB9!zbN&>Y(}q)9Em!UtbNaNf zJcd=LG$RfBuAOka5T3idOk0MtwCF>q<*@cR2$KTA{jT>{SfcMc9skZs#5HlrjbN;@&RLDJXe zV-g~Pbmjb;tZpq0DS9-s()17Y83^h2fGTm3f^y?@7aEm7Q%@|b^|MT#0&fc9jmuH> zl`Ey8VqcMNCXn_1GvAZVjxMGl02zC+2ttpGyJx0#!GAa zpX8$ixEbW6iwd8u4Yf}K4KmLS977W=a55gZ|3s55B>|8Xr9sp>#Wm2D$QZ9CB3q07 zdhcr;rQvI#OK(a~YsdYb;ePH*$*u-VfzK29InTY5Ww<)vy(K)?_f#(9$e*mz01QJnUF7 zl49h-&g5nIWYE6}IERUwBF|)HtJS#_Qt>hOQ}MAvuzXK=4QQQM=VJY$a{f2EBh#%y z*vNgE*;mEPtefSU3GQla+c8rsH_yasQ|MX;d~iKHA57 zkEqah;V>xeyV!)owPPlmn`~}w(L@}!wzt^W+(1MaPgH9t# zYt`Nao{HjePC-50YQfR|t#G=(qa=1R7Is`~v4T-qlrml^nV9i!=P_!N&iFITZqKe^l(bs9oZfM^oe3Cqc`aV13wTg`z)d*^&oCZrF zRfR%=41XM(p}pD>0i|Cp!XE$C0?8*_B^Yh_0kID96cWnIghjcP88J!&j@Kph`-5|J34;k>l$AEN6)Z&`Z}^YqCGW* z`#%rP|5e0YLi91X`Ge>SzW}-fnSqacQ z-}TeXuRcaQRUZHFoOk}-g5@!cr{FtfG*Yw=3nD({4Oe*h3%@cX*OvQ1=cxm2qa2qY zIB;4D57NpF*Q0)kcE@<`!0o&N*E~$`J>BvquAR}kLw@qRzMH@F=I`Z&TQAUzE~29u zz6*3|oG60yoyT`e)n=RK?1RYWoe~b354SV~AT-YFG^CXPVRk)iISMNk^6(70Q9;sn z4Cl&<01bLBJKp&pasZz{X>6z<&4|%#i*^#O4)iHux#kO`PfE&3u^(nUruSvmF}(EN zG1=H<>(oWs$u!6j!8VB-;hGVr&Yog>Ys$vdaq+^KD_6n|7X2zJq(*2O!K2KNdY*o2 zg=^uy`$zoJ&;Ax~|E~X=?$!s8t#fEIBHRL@WzeIjcZ$P<3SIBo+4l82?tSS0I(6p4 z_jg@?*sCv2S{~z3my-hY64)0#pXf%`(_#BSYN}>{R?m~d^`;+kzlLdbznM$AwzQiB z%^>2;P#!yqA$X;pr&uU3eOd(!9Wo*Hp5?m&J%c)2o>&W$>94}2h<0!Y6}x;o2%!usg`YCu zSOu~e=2hOCVOT#UN z=f5bUp)oJAXwk0Vv3Mt3(|c3TuHqmSDJG+j=4R4`8p^G zO3i8=%os3QJmF}>$f~QzZLFM;F z52lDkw53^JmQhoUPo&^7uyM&TN?oN`Desw#gCW>!EwUaJv~{p0_pgeTVubpt#Wn{lU}pSKkla z0k{Tnf}^8tJDl@)ow3qQSUtxpU*h=1Z<%rWqGNIO79Bm!&JLp&eKGFr*8scF{Ve+I ze}(-=k+uaL6RuAa!eMpc^n45-!x)V;l{S=jAb8x)4tjLVyWaL&eE6M*OeRiyAI{3y z*n$UNyu-ySXYjsfeBlz)mwq;k&ZEmc#2u4Y6W~Cb_`LybkntGp_BeXa&oY1Z{YghUX=pHse#i=F4y!_u!8XKsw?ad$h^fZ;Hk_$-W1A z!s&e-s-4gup*^tsIrO}qt{>C5IiuzV;&!`V+4PtQ3l+9D;m~Nhm zTM$591GLbz?CfrF`s_B-NyDk_mdlr0wl>1q0O|!1rEQc^<8cn2d`5ZVnK}19Fr!K4}86A$G_Wmeb8q}%56dl zyyDD%od8JJ2O7W3E0_d8^7Bg|8+AoK{XfXz+UfbjK-k~r;LsdL7`=qKQ6{xw^r7u1 zq|QzGfn&OUs=rokuLbghz&f|J7MPa+*ZQ@YKKXa8ckSx5s(tg_E+emI`K7d<#y~zS zH^Gv0`S5lI+k?S5>+n)}P;W4CnVy&gfDjYiA_Znc14#U@KXvG0;1Sk&6y-U^KS>la zZPeDYc2Y92UwGOHJ*WipkC%pML99;*xrk~65q!LDxot3sCbc?Sa1=_ zKQ(maTb}V*qk#$SBtfU^@2cTUrduvq8IQt)3P)4-#E%yIit>{@fGT|L@IFCcB@en# zD+yW@t?V1>fMBIR$yzJjvKrMAn zqH~?(i2+(wbU6E7OHg<%(N-2OJz6v0SdgN$r~Ua6>o^DmVxcTf_;=#SsU4*XUQrG>yypp)9A%gEWGv zg?_eN;-rAYnJ%9UdOkZqLSiGy4`x+Ma(pr;HFsAmx(NbOp92S_k|aAMQt|jA?@`WU zve=nWqzHWNpc;jjbhE`j!;rj~+Suha5mC9@L`$)(>4~T7mUPQGeYZ5DMdQ_ix(Aes4%4g@u7nl=W<6(dZ;1%_&P{%d6rlo)3{rH=Y0v)a$At~pDr)hdzN~d{`X+id;H!$J>W0gOY`8@(r$eoqI>9#?}w{D6oS!a7A{yHUqp>G zXC8H%2r4e?PdU9w|J*fx>j!?1Cm-#YPDDE|bUp0s3NL=iCKs-p;&=tqOAj%7>1RQ^ z3Ckm-St8-8#t1`50ECg^!nOwmni0wo-ACTe;UmAzXrdhLEARZReLniA(oP)XR+x;H zQKKB(QqJAg@Y=ulCz;;&8vM~d>W{+832#;*Wy#k_R|UKvy_Olb9;ByV9f%+OA^iAD zaqbLla|9gWbpue|^|l}2FMY#X_}vdZLOVT6J9elKX9D!vgoFt_(l60w1GcXqJC_2^ zec1LPh>Dm5K+=;g@Tk5upiX`Vlmgvc)8OJNf-JXMq&)dHd2m?2OF_laj3$gWwrNH) zAm~SuPKkfB_LreON%~)NKg0LxLqC(*Hru-w7)@q)6}*OPR9(DE^~{CSY;R8(0T(Zf zxNtGhpkFB?r;Hn=anO#1{Udna2j+}tBOZ9Dc4O<{%$@iB>oe!>_`kjHZ~5Lk@*b6F@$KyZs%TubQ_XlQCD=;7 zWa7tA4>njx!=8=BUjzklZ19od? ztUWf!lt1ZUN~89QtQ7lK#{vasYrj6$C(+D$phd>iKFzROb>a=Z>{daks9gFQXrdaH zRL1(QMBGonqavNfC%vmpJN8jDQME{{HJ+XCA_mrpR17f&9hG(l1nh0E?So`j#z?yjaow^rZy>af>@pO zOklDP^*c^lZ?OfNP|VrR{5JKU zDIU9s{7#23R1aXa^ ze8PPH>YI+PJ@y8_JZP0ZOs9MAjCqLtmOaZNimaAsH)nLmr*h@f{tVNdJ2~FFj_>=B ze29kBNxGs-5Z5x^*kC-J(YS_H@0pCJoH@J8=H?_G@(FzpdwU1$?;WyOF2izv2i>yE zSNnw_9`^i3k;C^r^P^iF&-ZchDnBY+Ek!ltGd+enGIDN^oV9FKEo&%z%&uo=Fn+fQ zBI^jH*?lcXS?B(W_}PsAnody4e^#19A9nm8c@ElBJMtx73ISR|red&`JK*ZZ6LcKno zJnoUn7#90<&%FnZpGVqBK5Wj>;R!*dIEVOSCgYp@+rPBI7k~AX{@D(9v`@3;&^tdB z?)?T_`$|OLi$49&kn6vKj5fec!G}BQvvA_jbjV+RCX$~cAU>?x)&@DZ%kqPd@QdH~ zL2g_PEB3p%_5I9Q$4g(f&6$gvth{G-&#RceXn%;4rLjT5#;Q2NP9A~WUy@me zxE1{qZ|CSEzlHQmdOzWPzqikO|3J|Owl-nhDD7C7AHt}GKk{WS=iF=lG=9;ct2q)^ z1EhmhOyEzrd@emJGqM`vL*E_J`?EAVpD9iI>3Bb;>*j>maTmS$yS(}9{t4gq-+msU z#ZAx06#(Hf5M4>^N5pFbL_w){D&TcYx!uDp%9d|Ws&VU}ADxH8b%r<{x z)%8xmheHB=oG-LVfOHsOJQIKzB&Tcss+sew1+pV)bxT@Jko`WJM94yEo>?bQwd~oq zKCBI*2To(9!|V*W4&a1xTE5oLE4VE0Gkwf6w1#0AkPh%ITHEM;#o$!*eRZ0?=Cpcw zenK*$vLorX2duZ15+1tt&SWBDms@4f2wcJiuBZ1SchWj^ZQaJ#}IYaV<@0VAjEr71$zg#hJE7-O@SsFib>9 z`fGwXs~EB~SNa&ny>-AFa7*;GvyxSiNa;5R4f(ng*2>tYwmnO~{5Bz$o@9Bq@>PVe z1TL0FMfOs#uIYCk-!)oO`^_k%fFZ0r+*tf+;484mSONoy&pX>UGmKNq(G>6)y zIC%yCM10bW9{DgSiEx<4YdI+iyo?V}PNPm@6B95RgL*@!eCt6PlhJWi!pwP?Q54eh zUy#C^Tq-5 z;{|=+L)hyak^nw9BjI#^C2plgeaCWf#Qb0n@0U22u}=fb;7EjqO0e4 z;C|&7|G|vQub8rY`X;`IcK0;R{a=Q=@Yg}6u=pkX6aNr7cna5UgN)G_P-fX9*~WCZ zpNnVwiKsUCc$+5lxX~CnwaxYa^}VS0eLwR<{N=Cv9)9yfA3@z|++-Ucm#sULUZMAb?>zJhvopx< z72L*|FaYBDBUwKtU1?TI1>I|sHP%R^@t*>9CovIF5({Al+|2AH`;(J?Ww^PfrI~Dn zM1ULT(Nz-Q)`!tJKkw^UdA-dh|R4j=gyyE z+%{~^8qS{|ap8jC;sUV7h1(`Ztrr^Q#x2j2&vdMM;qLn;eB=+F;H}^Ot$OtMZy;Nz zz@;-Gx}Z06Vnh|^yogivw9R;9e(uVB-*o2u6NDD@G2hn(OL3e70ECCU}AzsPfJ2`TT* z>}f7wKZ$|1kjX6=f)8iYOG(qN*dO)JHD?6uR;+?dR;;mBbgr$y-!1_l13qaEqh$|IoqpXTIh5 z`ct2)-Mqo!!>LV5+yGjb5rQifB+PtuEBxx1$)!){zEA&h+O4}dy7>a#stb3e8&0Qv zwd2v4+13^t8(W|at5ruk9&!524qMwZoCtld%#Rn`x_QX{{vmxAu8B&w1$3(}p1AMv zT?+mKS-RCR^Mjk=PH`6!4ml{y4p77>duS33bKxa%Y$SbAIR^-KX?hxi#W6}v8jBYb z3u)P>wN=Sc2`eN7yGPS_5=98>(Vh%vZ9`+j#dcWvwpv4N_AJvyjPMmlkAdSC{w;}+ z^_dJIIO^&<`qh%YUxt7@pK>1X&4GR-esK_sBOh20miq@M%U5_?=aF>3xW;Aw@t{A& zL))S{$G`A?ID9U^-i}B!aw6fHKi4Y#Qs|b~`I65(&A)rIFr5h8xJmCo&wT>TJ%5X4 z>yINcN3VY;JpC5vR>WD^ANqfoKmRoC$Z_jh$Gd;G@i4pIq5Zz}{SJQPOThgR#Pv9LNW&r0oWmbI!GHb7 z|D6BNcl;3h^Fx}+MHr9KPVpZ4z6o-`DsBO2kd5=WQ+MMgJ25YnPD*bxjl|F?=`SFj z6_E5mu?fY@DI!hST9Q^=p=SIUJ!3y{$f*jhoiLhhGn#HAZj_WnHTETr&6L2@c->_h zKOxzdiJEm-fu&{p)EPEUod=oF`G%$$ha)1#BX-a3vb{ZJ(zIMSH|Fx?mT?=JXq?iZ z(zwviaR<*_Ri3-LEGW{+$9h7=S|D{%v?lgK&Qhk#Q!Vk7i7rRpu3-PR! z!TSmeE$|x=FSJcQX0ms2OGUC)@#dNeuTUV_&q1Ol<45L+Sp1|klRj(qHoqU7_>XNz za$g8BQCHfo6DNjd$>t5HYLgRIo>CId*0F@v6Y-U`at1IX!^S7b{tOj?@_{^4lu^rHUU5q_)te;)smHBEoor!xLpDuiC+<@1dgoJk(xxs=@lcW z>;0ED5;5!khcM-~rQn-n#0I@C3!;VG@HY|3h}sbH+VpAZMcK zkOsC8hEGW@t^5`}m>j}7VPq0)YxHpSdxVq#$j^lw^oy8TEfB7>~ zeq(=h;|fkY2$MWP0a&RthXx7Icj)o}nOx%HCw(dBU;G&?kLDa79>k(yHr^>TO~Bo? zBPN?0Y;SMVxE9}s*{)M(Hrd|Zz&WAoJgZ*W+dJgu&3zWfVNZBkR^P2UeBTAx@53GM zg`VkBY;}PS26f5Y7vpH1l+2lAA~L_C`Aw2ctGWsqm zJW22DZ>?)u8Bab8V%}+zmH4b016uhBMVS??Vo6i%RcUXy)UnW~#!`Kc`W4-38Th7Y zwpSsYzE81#@2&XgW1iVm7&i$e$KfGt%;1y0@Kv1qlrKP+N6_yf%?ecTKGK%} zsX$i0J_@gOriE}jLi~$>_M)<)U(J!(AH&VQ1lR;!;r$9_MBB71pZ#^d;cNdf|LP}y z5oLmGT)=BfziM!@!m$MUa1dlCcqXuMLEX+>$aFWzV6XA4x)QjDkIM=`lsG{UX8d!4 z(`1kn>0Q&{q>cI*lZYFP7AfO4)D5^d;|)f$9oorO7^)t~K}DioYQyM@s1L-9DSNFO z8duV&GM;R*d*Lod(;c)ATPR%9qAG0e&NzMc6r0l#r#8pjefNY@r=qxYDs8JcQM?nD zJscb=k3GJiSGfD$iN54#-y@1Z7`Nz!kHs#=^RYd6w! z3a{1J$*R5bp!!qvducP_Qn;JmO9h{8KR0P%Gd86Do~dX0Oy6$qrNtoDtI~$(7J3%^ZHti}o{VqqDAun+ zNFBgk;WLDGi1Xmt08YE2$QHAcM(cQ5Jv(T<28lH~h?$Ty^fzAWVD`3h8-{=+XFoYV z_4~BMG9gr&vrh4#S>uBb@s>e(t&1mf8JFc*2BaW8b9k-pTIYzF-ImG`vvN_dYAAr! zTLudJHL6OXb80ItWv&pDiVIZj7#>6hmkgSn38v~i@TR7VR)j6@3jAVAnR3a4Gl*L7 zBR!I^r(saiHzoHh0 z?bl2Hi_{JADUy`>xBXd%&(^sOT{2#=)#Ri^d9_YUQFLkcx#U4JZ4F$xL<&&tEQlIB zOaNV${9}gYfDTD~4gXU6>r3T{{FU6ERoFGW2^721AoXj;M;^x~&>zT$^O0uyhuUMv z*Vz6r(Pn~&v`n4M6QQ2r54Z|&?^p~nGTxdc>Rn0}t zM8cKTS502>jE-r}+jOzM6?C13Pra@61>M(?EljlQqU3~}Z@@o znbLJ5w0n+MKH&Jpe|U=BS4`=jy-MG8xbt_@-1{}S?XSSe2wnUn`sg>o-g8Jh1;YMq zToe9p;=zA;D^6KTp7ev#5|RLcYt5-Ctd97-AN+mZ@#{;rcLZsX`7#jcp$9}>^pcr6 z-^11xyRZ5p+_{&c%Q@ma;Z*;y4<3n0kSrs${wTI3@CN$$zoPWfUbf)Is9WHl`yCEH z@GG!9Vlojv^1c=Cf0xI#FluA&u!U}=_=V?{uRYKGpa1#D_yT%-0J1`T;FycIa|FSS zXF~|&gl2L;)PZ=x^@!dC&fsTXfaf#A@_ygbHgm?~23Yd`pZZ?@?B96{zx#m?L30Tm zZP2i!Wgg|Mq4zGF7tpK12-&_svwImCZ3n%hiB^zrV@i%)vX7CL&ec3k)}efN<+{Oi z+khRI+0n8qLbL7$8rtb5quDl1I}LDnvu|DU_%FIU>8-T)!l#)~&3q3e_Gs55Zp`+X z3v8dhh-!oH1$2b8%6Ky7)Y(()Y;ACAd(6f2V=mp*&~2$1Bg{B3 z^pZ4UT~pd99@Sr0)u)UVV*DfLM9r|9AMB|cB%3e%o_P~I1b zu&gR83DoqvzLG$*DOQVD_M43j%1ONPzFH{|;jiGq(&Gg9)xa;Mera>io}pLPJBCoh zQ~pa`J4<0Dj{TA#z>SZE=o z7m~ppZi%q|L~hl@E2(hdYXY}Sc;;1%L)?ax$~s3lSw3pNwXBXTAP))-zuR)@m(&Q@ z=T*(RzIDtB5_NY~Pj&I(<286HVGSKt4+e4SphZ(%B(I7{ZdrwsQXKnIX|Rt&3^G=* zt?N|7nagORl_`^p+2@5+p4vSMNKU@`XQX5tc zBz)3qSEJ7m&jEdsqeod0a1uU6wo2Ljk4W`BIr%eiQGM0@rVxbi7q!p@~va=5q0;^;7h5)zg! zH%*vTbRvwWGj?~kn9OFN!m?9#cD6Woev7T`39Chq_B|fQjT?ttec=|z$4heH>J?GX za5;5_dAm2a`8G*DEDfM>D#9nx)_vYr#&SI(cs|6cj5m& z9QsGtIwEa@tPbg3ct0FH2aO96i-Hr6b3Kg<%eK2!hu1yc^aVTogTFJwO?$ZZJYF3B zj@RNY|83m(<8j=C8{dyU`|Zf02RDfa{l!^*b8kE@{!M{xJP#n)(h*1#59Jfw>0SC~ zp5^V||1O?=%(Jx{j;dSsifiD-4>#QVz$X1_!RXXQwqN;r*uEd_mLYax1T;}c^x0`t zHNk$=A=$Jjq=WgOL!=`l4v6Q8MEfjl*gmoMIEU~11y(OS$;O88+cT zD%S*_EsvFp_l)?Yulkcr@A^ad;{&um!Zk}oU637PKLpIyvh=?r4K#6}enr1r(aVGA z=AT040on#easxO*Wd~h8&RhT0_wd)h`3JeScY}6zhISHA>3gBq7OxFxJkm%#$ON`7 z;pK-#Zs?4rp*rvg@Q;Tyx3W42+(T zmUg-o5&_LPB*k+1GOCBBJ$o=dCC)Gjz9<6T<2z-xwad=AI~h&3=(;dAoisF~mfh3a zoH?_@bnG~HX2QK!#lEk0lJcbrFWf*s{Lv%&-t&o{u*tjL`9a?LPyZ3e z&%6V-b0%)%0___`a#AlURTmC?QQx+coyRZU_wYBIId|uOUoDqQpVl<{6k-M*l>|V2 z2w=U^sOa{r=TiWrrB2bjQSaCQBDYa)1+e{<-|N@MVQHRtXOg`sp^@IF@mut_d0!7; z({+N+>Qg&2pD;7^hiyUG8c?-s>JJhOSa>torR`)BZ2};}hJ~%RoauSR14`eO92(5zxn-s7i8nBiC7<9kxjK$|-aI^gm zDx|=&J}7#KYuc)$)rtBi1q+oRM^81+AW_4V;j)Y#K&-YStt#er*Ki(Avt-(qp=C)? z!Dkyg=@Xsea!BLQ8z0hHOP7Y*GYy*4~n{>PvH(s*eHuwoVxniSmOLF8Qw=gOdMd zc^=AQ#gvjXsE6Li;E91DfNvcx^W4C1>7HlK%RsE#H;|R#QjduOpT&PDFH$|LR?t+q zNbGH}1w>N)nr|h!k!GLbKH{?CKtP>{c$&tomWQuCc;V51)a||SYP54W*P+_hK%~=b zf&htAr0?*{J!Eu2&VRy}a^a+w`0y|+HL!(9Co-m`ZCV^R>Db~>- z_jenei;xomx$B@@3+MyKh>!rNjorY24A2WjG@iDvA+Yb3VaC6YhwY)!xmUvJ<9!VN z-Vhx3i7h@kTiJHxPFLy5B*b`p3xicf=Xn5ojBU z6wljmpt!K~rYVR0h3oblDouQE4guVrviI&s_^I!Iiun=jo)Xl-s#i9q%FA9c<&L{| zSRNfSzW5*;Fa2y}au&Z_K+^|YXc%6R8uBlK_Y(TH`YQ9=BXo$YaMB^JH|i!01Oc7E zXo~0&#~=7P4j%mjHm1VfwT}1v&JkB%P+S`pK6oFFKv*2ZsPTO2m%f5KKK+Xj@6qK= zge75Cwu$OZimVN7R5ec`s_OBpL(xvq*{9HKem>4!z7yH_r9Hf z@k2jB*DY|f^LUwrl>@!t9NNa1(|Z?a#SGaxkK4KvMw>w%eOa2FGM9c zx4GEcjeu8#W*~XMJ7j~G88#X5s?!Rv)cU*L62YpOZp&A!+ z3%ytU=o2d*f9jBX9^7Pe>iPbE^?f}0_O~EOgN&Sw)=R4lV&|j`ksRMEc@xVnnT!hK$|-7D>lIAHcI)Lu9cgk zrHu8;sz6%{Jh`9h`aeAZ4z1cR-kw%x08|Nztal5XwS7pl@kzF%YCF?IO1nvR2li(W zVAuNG%vINTnew@B+n$hd8zw^X3cJJ)UAJEWqncmq?<0k(G7%1A&us#|?x#)w$)HSz z+6MM!ybjEE?!W$Rd|~T5-0o9^FZ<=?i}h^_{`S3XKdb3=H)b7xQqGo<(n(d;I9pX~ z$v}u9gz2xMe%)2&HVuoV>L;}?5pGSv(@@zOoRWYJf&dwO%K~Pc{Hn<`h*Fk0Id%EI zB|8&c;0%M+FlrD`*;(bZOeFAMvVAv3*3h8{hap#neb}zWJS97lSU>JPH{_4!2k#YT4@YUZ7e1*oDHWWvrqRk2PvAR=EXfN9vBjcr< z=JpE?g{P_ClCZRVbQO$wOi|>|@+0?e_*pCII{07XUv^wg0zu=LOsg_1y)wR*KY&Y1 z{LQQqLb}>7EiHCA0RTi7Pn`3r{rQ6%&-@?9*Pi%Vy5k)hmZ0HIG7oWzk93bc2~Y8` zJU|th-Sb)8_o-ikx*d-9uhaM8zV&=qmw+JZnuh6ggRN6LOlLEe$17+W&Yj!gjyrZ} z8;9?eqoWlb;b3ph&0B{omn&BNimnSw`+e8btvb3c1pbneeP}r3?`V(JY95wvyN0mj zz78VOc+EVooE^KD^2em>V^H6BD>UA#o=0ucsTzWF z@4LKZBio1Mct`k%^eI~&;%tXNUgoQYwsF6@@54$0?fVdI(uby9gS0Jre3kzCN719J zAYuQ1(|8(LMe!e@eunRR8oA1!|D!Yh#ou#`FK)29{yd!ua_(W;OMjVW^K%hVIQ((+ z(Ko~4b;QlW48Df(n8&1~RdNzm8;FEk09;skpxT54fI7q}&BVdj@zGy=FK_>e1EwRG zZV0_NyeMbRz$-s)i=A^5R*NGhcfE?y1FuDxfi9rYIDXrx2VK@B$uaGFiAjLQxNq^J z3fkkO!^w)qtq|v9T$|)Ool)SxH_%LB) zvV8|K*$t~o;&qZD5>_x|eQxcv%fWrtHO?L!Sa=ii1F?KMG|>27nLUYPN25H)GS(SXiOIf-~^M7z$7H&1`~()}<0yIZHv{ls!H?=?7QK5YZY=YA;puU%SS zk^*G?QUcO4vz~^p+B$0is)jaGWTQEi5P4Aemy0JGlzpah=wI0ipx8U=?d<~ruM)7Q z{>r&z7QcbsOnMnx)*d)p$sLgHX_a&KS&z?y5mGdg1TxPuM_LF@} z@>|(g3U70wLNwo!7m^X#o6I!v-e|yNGYw4M8$T%1I59H9YjjhwnN~Jxen=S*#UIS{ zDa-Uh@oBJY=_m1~*hnj*5yPY)C~X%+t=*;Imww0ZYulLA&@acOU}ZRoe?qNd(8-_J zcrJ7Mk~K;eAE^K*KFh*7uy0ilgTOL*WW~j|rFC$NK#i+&DX6uAE2j23Me0B%JJ6}O zBABGvR#PvXPLBzMD#5DzPGz&-C4-k@A4P6j167g2&ZegZ>e+_mhgKMyz{Xq}T~|tF z)IJ*U2@H=yojfqJQ#_m}D>wxsSJK~!Zw3CWCSvo3mbp)rMA0eMW~A>aagZDzGaiytsJZPvgP~|G1W3N9gfByIT$4|F^gK>@Rf4@d2{DMmOG|JNIR{bAOel zxf3VPBQJbAJoSU&6h4_iAC~%Sxmq(&RHR(<=fW5biGU{muQ*hDn%xN;9Pqz>>=AzN ze=Rw+1C2l@!crZV&cnxl;tm@-W4i8`jR!vicjXgd)r4TQNphWLox>^sRY#sl)!_8@ z9#kE9OLUa$K<^%jXCXAwWjt^(7|98a*sg?w3uU~C?mfc6yM6?J;~B=&mZu+I@ZNWK zT)!?f6Tu0zjp7>5a$nirg-`mTmvG_LpNG=ok8a|cRamj1WgCU$q+}dp;bQpWu?B}$ zLh!f3FOTTCAHVs9xb~Gats<H#18g}3tNZ~Y$L_G|B^>x9wPDQ%sg+R*nc zo-v+y>OLOveW2&$6taB>Oiu+`^gilAa|4UDM^cgll5lZlt3a|x*4`-LJOSsL@K;>% z5t8&PV1qUh#EluvwrQuENIMRFrGPb!_sW?sDnIF?G=NnEC-K$_6`IkE%~KcH*gB0W zf%`73uGrY#W;`2*=A@XE-g;IgV8zpJH#n)*iH59uR@&R86b z`+cHK>+P)b-q6+*uM;5# z{w#+{CZ&FCt2UbvlVDqlP0@KwHCC z=x3dmB3l_I0?h06L;DF{Ik7FHhz)H|TGf!VuL?P#GZ^%>sk18tl6*;(U|H`c(a6ex zNfDZ4Ln%L`{owBjw5w$_Ighbl0nDrzRhblYIFRrG)HSX8etF^G`jc;3TzmR2gGah|71K;mp}hoWgR^<%?2gTI{$>>NcHBJ+v>$EZJ2yHd&BM`#vx4FUz0{VMIcJ zhbn!yiU&0Y-j<+!Fv~zEipOOrqNIL@U@wXnw-+B!C zeWYnaBhw}^J4VEo6za!AuN&k zPa#iz8}8Nz!`^-!q3KFTiHG-Pn;-cs6880{@#|VN1%b{XZHsI;7EfH`7vB0L&pxf} z>STsV6mBvF>(_JHLfPUkd@qO_G7R$R?63GGS)lC~Lv z;6+vA6kk37PU7uuDB%49-}lJq6*N1a2izZ$9{n8O&uQ9i8h4fV{>1n5_5b___^ID` z52#bOaSqQ6uMOV2u!4YaTD>axPVv2><5S4yMP&0FxDldeOb`S9bfZI*3nlEMPuo3$ zoD7a#!Axi=I428;qtqw4*7>*$>y7m6^t3BaMQ~deB9A zZnBM0ZJ2KEvVHmjZ954EzPeC$G;L*bYlF5OF=|HKdwGio9~iT_0msK-^g4l6C*TCv zDA#WEJodyfi09t>r~LLW{T9FYmVctU{~_G=X*`V}jY^s&E((gUGzCZJWxR9#*Du}w z;=eiD-2R=_awRbk^JxXu@K8PV=}@~A=tcdK&qgo_M`Jh2Edv-{o8N;a`pNTA(~i|= zQVK`C7dK4guC>&w5})N+?xTXUwjZSvi?4;tzDuu-5SGHFkAY`p;VR`*Vx(X%rr$aV zVDPPCr4owUl?>s1jfV{ArPM2fv29i`)M0IkwsYb?@w_0C;Y{XO%==Q$Q>{c@!*%#{ zknl+WXRs2@)$p!hmHSVwqe(CXy`oe&WPc;km-Ok^GA3|m~8Wf6@oP380#VYMU= z#F9+30SvM8JV!U=sA;PfGYh+6Z_HxYN!7~Hs-6vlfe5jh5+?-KA1eWnYZ_cja9>>2 zVKSqjB6(2Rq(M;_6lc)X$*+yyYYGg0rt)g~Aop24Prpy-7p>b%WfJ_!;H@pSx5Ac| z&L#OW9jpcP=EsotHqfiGXT`DIXOV?s z)KBhnT`uYp8K0=7GJHaP`ub-$47n9u45T@E>oYY^9PwqGIL5iH$fpft) zUlo|jMtCf|Rq$^$ct!tGri?Fxe_J_{<{7szpE_(sc*YQUbmB1-^D(n+}Sz%ai;y91itmvQkAy^*auUc&P5 z5WiZAiwFGWjJt=XX_#(qGTYu^G?@jrOB|<9Z|a?wc9~5ZR>ytVS**hI&mXYAcSP5B z_}=3hpELL>!`Zkdeq^%am%nxtT_e-2Bvl?VQ8}YGDk`(L!!Q2HW})~`bCJ0uA&65NzWnW)aE2}iGIZZWXC)p6Wh?rjVwY|JdRvETgb{j zO2*k*($t96(^)qOvBx;8uAaW@;%vUJ#z#`(E?$A=eK`ED?^Y!sH#E0>rlp!1`}2c6 zyI>ujxC$U%_a)I8Pg@IAd!z}6sp;|a_!}QW=Qjc_O}J{Vbv=#i>9l3VEX*`5uX5L2 z@NfU@4zK^pO@t+@{TJw(E!^2R&|dsnTzenlA48w}HhAVok$#TI2-U_UUX(P;ZdX}_ znR6kn-U-23i;q{qxp9N+Y;f(JALSQ+;yUwNu(c(0y`%Tas8wG4qJ{@wb_&G9=0#>N zdmXZQ0bLw}bde2lrdGlXvzi1z@5l7M30n*VWU>KnOy3>x%#$~G_StJJ<}0RS&-V6& zJ1?JNwsR`1=$OBN?|M8Vn#P425}c6EGzd7yS!M_7+Yk&l;Gh3(_Wt1KSRKuAZp71% zEqLGWA8~76Xs1mKY@uH|Rq_+n;ya_%@@;Nm6 z7{!#vZ>pqiB_SCQb+wf7oqcLGdQDo|=?0_OCQUmIy2l5)C7&QCaI8KP1E)z|g_uTY z+8JA?FEHKQMZMB@iZq_aIhk&3&`u^eX*jdH!Al-V@ z{TB7Q>U-aS3r9Daz%uC=*7QsY?u)K0GrINf6sT8A>e1@#fXchd`oHv-^kUYe_Q1k5 z{YMUHLvu;B!P{vwbVr#?O1hPFW_O&ELl6^EufE3>h>J7IQRKB2= zels`C^WrZ?dYX0%3^gr>E9#OTklSAC-^`d7M&-VeKWY0ao@}yTHIJXpwd-5TM_?73me)fAA#2*GWD7wRZN|aAZ02t!r4$00|Zd#4- zl@eJA)m__mGIc5tWzZUf=LvCJK7(4wl1tYJGI*;+`QGNU7HG#GWobr@S7}`aP#PSE zfeAw@XUHlltSw)!K2raY8lGApV!H{qkA**$_7yNiiKKy<_gqV^tQINEtV%LaYt5!5 zwL`en)E~~Y5BZ&mkP#iyUW$jj){>eM>7QDrO8d1`)v`!-AQLZ!D=UgjSM8rf7sQkk z`y#ZxcJKVj@YVR#Gy5eF9`fD%y$$>|zD0fm7_u&ZIhZH&$p&J>OlCDBH|)2<+i=N@ zf$CWjN+Sz3eJs5s>yAvXkC_0l{X0VwQ`QNU1DUV)lc0RXsfcskYW~WjYma~9^49aO zL%Rvib)Zd}F|9Rz=qR-4@yj{5Ew*3!C%O1>ufwkzR>ucOpTgO2s=tp8z<9R7_U?X-DuV+V=r#?@`}nhgQWwKSysq0tZhB zxJ7zxB0m=?htqI zHsqOq2DhFLC;W@VEhA!xt;Sa{<0~PXf+!ps4@H#i4e-kQe)%!p^&4|gn2w?AVbM9Z zH-wLSdCQdtH(AbmMweg0=tZ9mZiX%ok){WY2MH!UCuz+_gGx(S0T6;#HyYDSPjU0P zXZgYZ_$&O#&ppDs-uD7~@v6;m620flS>e+@ahtFG>Oaha3GpP+6f#!#^DElp2H^}VKix&A1Lp8*AX9mMDgMnPaKW&Oh#dLeSV3!}}mG^22(qwfUo)6IKHpL*z5 z;3mlU6l`Barf0)dkUoibTH|WY1CTTZqlAZhOA&D~KsFNwDR_#>)qq-4ZW0j5x4$I4 z5Gt1KVa;SpJDJgr#&Nq&(kHQPV_(v&f0FSeTf}<4S43JSTf1!Sp2szlK*PQlX&vL~ zjOlC>q+vR4^}fqHJoKUo8&je0!1qei#4ROGn0La}7djq$?2z$HxNxE6SAX(n`Q5jE z2lO{^TU#Ju#~M=Nwy5Ad(u6%Bt9~^;b?)cyxaWay+}Jwxu2t6w3=(OYix>bEAylTkF3=noKb+q%l2PB65m&mQ--&+7y4Ys zBNxy8ulGTPzv<7!YYCrv#X!ZLnmz+K)Z#a!w;Gyd8tT9%hIf`Po{u?HT_B^DuebblkQkcF zS}BS=3<5bdMRPD^<$4h4iZPT~#&Bgo!7oYSAfPsFNOFcObW$hcO1~Cn$q*0Wt5>27RzeIDUirP0@s^w} zg9oYq7)S)CEY2CZ1{`OOZeIPX$Jd_t>wd9+o<{oIKp7wb+B5@{=+Ymf-9F9PPv*`~ z{xZg=?xUaI!h1z}!qMRpjgAk&#P;qE+q=6oZA0IMJEG5=-Qo0^4O$Vr_u8v6U-Vpi z;gG%kqi}$fq@I;-)v-8U(Dy64m>5X3=~fGl5BKQ%Wt{m7+9cH_>x4ntH;GTAWu*~{ zcaV9Ll!0xfXsto!zbH{76Op8OX|3UP>@UGGoY786j5Q-%!D0GOxLaNhyqijIWPaNb zU+eMU7=|nJe7B@kRha zw`Q!a&-q_J{S=RV)H9h1qmi;a4iq_mPI$#DHrP2cq3b-ehdu*$&nJU#&~886jOI&U zDX>hs1ZnX)#`^|oJTlrsnh`(zy}!xVzWMDu|Lk>fZcE$gCT<*qJul%Z&gC4xd;xTi zulcHn`1XJL7ilLWba{j{El!lCNi%m=*Ak6v7kTH9W`g=dR!{r}2Os_om>=OrW1jlx zocFz_=h`jDbW<2NiW>=SD=ZhDkyBp%c~|7}pZHVY&e0z&fK><>eG|rxb_y$mj*t-W zpuJHI$u7F6wiWy_elWJQl^DI<5T;p;5Bl`ZI{xSaHzxW^g#P7V9 z)v8A(mrysxdqKNC#GL{z>P5WA_a4<2b=$Cc0k?GlH{L{~Me$~ZxWr_pguvU^HaXGO zS`n%-W&Dk}oxr(b{5-a zuQa0>vz@cdwl+ets1FAzHsdK9+gpsrWBLv*oZH~V4{dSjqQe1Q7Z@c?Xv?c|c-Zsk z(@U;hTXOlzgj+8>!;ih?yEypZPa%_2$aEZafgq%tUR;<+7Ey6{I`2frS5M!4-@iV4 z$Cd9wx$eDph>P)P&_i}rKzNZ>Mp#`{k_ACs#b?w3Y}p#1^*JnA18dfop-sb)Dw$9e zNe*7CXB3!IU7^AS^W54hhILKfYkIq?pXy{!Y*5cWCqK8bhMtIXg2&b|_SPCiOj`pw z6>DbgZ)(>Yx`&UQ2rz^gw7qWs%af9%w_8SP{0mP){ek68raRN4phN}Va0`PiSSB25 zdPL}RJ*}%%pMmd`$ez@BPM)NAq$FvQsr&yU0iaoh6=Aflv|aKjYi~*I*r@O}34l^l z1}&Swzz|^=0G1^pso%<-On_L5QM-Woamk`43YaAkWv0g9gb4zS5Z3{3gjq~K87|X* zB9qp9DL6!G*r3CrWs4$afTqk-Q34g7R)B?)sIgLJ=$dEHaB?r$d6WvW$*)8RU}TD&yWb0!bDV zE=Cq?0^wv?E;5wKRGn_0;5TiUgi$`su7Xe2>9zPg~Mg``RYqLhDiK##PHGwT{DQxy{LI8QvaW4NpUkl1zMwIcBvwS=3CGd%=h zbD~YtvYH=!>f!arzjd{D?Ngx#@TOryr?`*SE(Kg1Lc7h`SAG#^U;J8DD`hdChg}0{ z)~)YFr3Z0LW}EDsKF#LVHr=YD8MT}~wZ*yfTZ~5yzE@VAvRZj=?H%c@n@21b%fxk@ z5bjv-I*u0$`mRHL7gw1I>U$0k_E;Vth1teD28vxtwj=#; z3AxScU2;16Ra~|oXZwwtQ`L!dl{iMj{`8(M&iE4#4azm616xLlwLNMKRm9KNGjQSF z^?1M^kY`%8kAX@YAB$V`Hy=fho(Gm7f^$7iyfm&?Cq2E6S?Lt%S2S{qKl5oD{Hr(3 z*m%VmxcW35Bl`1Si97oxjK+5((xV4IjXw6x$k8)M+aNw1n;|0kZu;!FB|c_88}BG$ zuj;~?f38J0x48C!=lHdsxyIrc#?vsq7c0e$ln1UjUi$J4#v2W*e#G?Q*C7{Q3BAX! z4nsh%K|Tt<1SHKMHwZ2+{U6axpqZZMTfX_n_=bP@cCZ$(YPW&7if0?%^m2*=i}X{;{62gJ&jyvcgjK(w$9ILRy!-JOwPmAvb-)US9-oRv+X7envalUL3(4>dskf`tD z%cf_|FT&`fWG|9$5Vwdm%?LLdgU-F*4htX_LDCtqd4b9aoY7VIeqRO zm+pJJR`U`h5yOL=>{LDv3ik{4p_ zL1~YwJt+3QE|Yzf)CmRlV($jY6H5DuCI#LUyF@$eGZ89&q_V`a*#|dvtJq1?e#K7= zy$0lArS&R=;x?5Et0Kqcr!!p!++=^s13hj`i`!jP}vu^uQ_LS}f7an8h* zTs-r_w68S-ZkyDo1JNOE4ZSUX8JEQC0atBcZ4JK(+zk;UeN9pz$*Kv|wQ74^UljV= zaak})t2lD3Gzk8a%DgSSq=0%Izhp1+^DJWpr#$nSlyEh^N^npODI4Gu$b0s-k+?Eckfu@ZyVLWV&-}H;wWq(%ck^w8wAR~E(KyLua0)~^bg@9aXL|WH z-2F*!K&BTsI+)Yj<)@kw7Aj5CFx%N;_tY7jYw#X+PHl4T+$I~d5l)1@Q&wI%*k5qt z`XTe9g(k=VSOQZM5F=q` zI2k{+8o08Ht?1#xwT zXfF-k=6SN)BE;FVJ|EJjzRwO+CtCOAjG%Uec8BYTF8e}AD%fyGQ zKP=tCtr{LsFUV{JZp0(M{WQP*E60q-Flu4tg~dwP*npS4q~-pHc0m*!Z!v!8b#VG2 zbiM+agX@ccX`*|5qI|HQ4PHm|y`$Ye#qa*=qkQ`3ejmMV!p3QO?{KVWWkp(55v0Y3 zD+1Ng(}wF6_us>R`8TiQjeq`Y@Q07%nkFOwBwc$JWi#I5AoNi-J*2(*J-B8Jvcf<2 z9_AnXEtUuStYpM9Pb_%k155S}gz>~N8+#eKa3;Xvfv{LMe8Qi&kB7hDi(zyYe|Vt2 zKSo@*tw3}|SpFXq8TeuWV-g_CX3W@$fJzVjf_}B6^LN4K>(S=w2?o(h=yA#Xr?gU#ciHN zW~Y$R21tvlpx$T65u=X=DQ(IU?`m*H9hmGz6Rr_#TAFr*NNdJgN&=LzDNPe_o^H}k zHgU}aBwfWA4|&u=!xHF`^+g)DP8w$0yUezBftFS0plKOTHrUwSVKyBzn>OrjO}OXo z33py>XdU#OhRZRcM7b7@j^RD;KjMWOa~^!r7JJWK<0t;ZzvISxejM5Q$cYyWV9XF~Mp;Ch4K1Z?*be1)-S+MSm4N z7vE)%+qOYz8*%`jk_(A1bx@3{m*`X=NzO}|Dl`4$%Ep#yd7m3s&3nj;JxvLZlC;Qn z*R(FV%S0n%Pg6;Y&%nOqJ^urHThU?|TTHSY4dL!Ukw=L$aK6y)%tEW*gxs_khVH}W{R8KK!w2? zEMnONyM^AiN5Y)$}7!Ukg`Y z)B42P3Bc6bNc5Km4q1TZm2t)G}vhy)AaB>@a~+E*LkoGWegUGlq2x6I1_% zU+X-tbx55wDdXFetprlCSd{itANEBW&t^6-!7jE=%^%fpU|P*H!*dh(m%Fgj)OY|; zob%2#ZZW_083)gQ^zZkFH(o7H2~m(Xc{NTS5-Al!(_H4JG(nHqu{VkHl|#Wh3!i3q?6So) zJZnG7DyJxysz8s%6Zw7b^GtsRKieV=Ga>`!n#Y@Ze7~gcm(lS~MXi%%^(Ly%)M(Kzm$D0GOK^%62Hl zwL*9J0%tEOAN|cYG2NXC%j38RqX$WegOmV>Guvs8u=XGxw2QLUK-<94Rl3K1gZa}R zK@pCRl*b=g@#JG(RF&~0To*Z-I=ncpJp*ShIbQRnuVLroKVSWFCAzq-!Vy9j!OzD8v_;b#as83s=KKEb z5AyGR_?P*}lh1&Rk@gfinxMW#y~BGEC*h=fM@I@GeGf{5$^@P4ARFh9*_oIOXefn> z-jiaCGLIzd7GvY{!F~4H!3NikaZQULcnt~HwUwq2w$n5d+Q}B9=@#v17G$4jL-I`k zM*h;xbN;Ur+33ekG>0N zsE2sz0gpY^^MQ}-bN2iOm+or#t)Kf%e);?U8QsnI0nI{U;{z zpr-BNOm;O3oa|H91SUH01-7Cd%5S?I-QuFd-$p;z0p-vx6!?n!RO|QjZ?Rq3s2R9Q zUkM(`b$r!-JrR)TInap%`(j}cSf`&I29_elxaEHAldzhC0l!KIw@=M z0dkw=N%@_J&Ld!ETZCcT(0<{4iss36J zoKswbJ`=iT!~|X#oNUoTeDm~VJo0lJ=<2Y4$qFW4Pgi|TYTwM5XLvDmD9_d4ShZC- z^a+&Ie_R&C0QZw%No`?f+f&WN>m(`_ez(WRzEcBN5hKh0LHRsbvP)EE-$kN>!invr z0EQAnm*)|;T31v+RCu2RPc=?*e}cWeBDa%dP{gcMvHVL3fOuzg$}%YqhnJ>Re0Tof zg(v>z@%1PEy!z!CL^=>BaiC||#Lz|s=fc%~+V^a~HE*O_wjAx>KzkpZh>!pP z!8I-8*_5rF9meAg>HCgmJm!vzyIj0uo3<7FvO`9WzK84Aj=A>20mt(tz4qZ?Do|Br zdAwjTpR?+gbY0lX+c-hJ=lJ-5#qk`$=j4b_Cwm(XR2gth-=$6h#K63))G+qO=${a9 z*UPw5Kxz}VWj|*ql>5yxrZ}nXLrOwubWU>ePmKN@I6y@wt7$v_mKw$^r_m6lWU?f~ zq|o~=2mKlYiemMRrq>D?Lf~N&R&jQ(U*Y?(N4hL?&1sQ>BQ%gJ!!@hpf z3FW>I#20~P6axGCv-lg2!r~@4L0qFEUK+R3#w}vAj$TL7`xaKu>fM)G{=;7x^GE;W zE=rHr9>4YRaPBK;H(yKRrqKTZ{iA;$x%O*_^B`lSkI6k}&)X>D-14;~03`k&`R+St z6rGH?`hhvW^{ac_cmcMyK%Jvog;UV)y}RL|hqu|-Zcy);-2L&mdp;3l7hSB7Hbq5I za`T`NBPdCi_^5YUR2^=%$+M3g^723WA2>YNX0*9M*Lzld69b!cZiD7O>C?K7wpr29 zu-bc)AN}{A&*y&GXNf;}R*^=8Ud2Uuh{3<2aivDuPo0c#Tq)xFa3_2_Mr46L|NAT+ z`CV2AhcxYoo7a1J?1RU=@PfifZ~$9Cq`%J5HZYzj2M5aG9{S=>JIgEH@C7tyAA-dm zez^~%l?;lANAfBFNdtv&6N5u=T68h-ly3og!LLB)C_CunkK#wK!~0$J9vXMR$lbuT zGgMdfd+*}szVF9*%a8mDKl_^>X0i0(P9x(@pcN-QjV`0uI8?xU$^WOD0>a9G9o*(w z-0T!G-hj9kT>XGAnumRmg)E0su7E_!jWHVV78lRJXj~a%*_?%BLAa{20cjC8W;EMo zys?dICsbR|lHSNV#K)CIF}aX#3vm;sJ7<_}oucm@UOl1>&2)q9v**~}+GH|r*x78k za_5x0E;UR?Lf^;J%oRkHb_9Eeo)3I<$-$B5-Up}n#hf4h&hO^&U;R%on!$L2NFVS} zAN_%-Fr8Cel#6NR5WivGIDEgCMn~@1efu-uMP_g zZD{0B8e3)7IqE-3a=`|xYHUFHUdI8N7y6}YTJfZ`nRHXR9YD-)+vo7R4d_cEVql+Q zg0sL|pWdHXur4#Dg}j0SJ6eODE4MC~0bqQ9)OI?QIQs^+KSL*L^HLH=Dm_}pR87B# zfATkC$y7Dn{vf8^iecFP3gzu8zqPFg5#YR~K%(c6{2qdSsJ+(ueLnrt;Gg3ziJq-! zK6G^W(EL^%T}s8GWba*uM!E6gDqP%7aBBI3gw=Y6JXya=NH2ht?Q?L)|TlT z$2q~9g0S`RRcV6ix1CiV!d&5K+pz&^erlchs`XqhJy}a0*@Ti7*&1#)$TBsM!#bx} z@F~UW+4*%XQ3vR$T}ge}zH=XgF>m0tx=E|&C)4GmdX>>V;e8aU%)dg{@_z~@^7D$W zB55WkE%pyT8s9X|9UtEKBZtp_lQc81_D@D`(eQ`+N#8=HvtbiK&g3%lHP*C}>(#`LRTD4UUR zc+~Ukvj^Hhl(+&1M{rtG&35KY8Z^!60B4871Tp)FYUR`20O`r(X@HVUtmO~=&ejy{4&&P z;VX`g{V0mFR~p8iy;oGb7^rvnI72U-VA!)qU zu_w|j`MaO9!Poz-iMAJ~$l)!ty?{UarReUTh2}0Ao!26?uIla`e);4xbMiz>y43~?INXA@a47RZWn_z5=EC*S#6)b5ajWn8^PX3)=+@ZT`-9IY#@96RN zXXgC&?yj(E)vA?h)v7?V5^Mn!i}XD*G1!Iji4W}aiI2=th4IM69?uqr^;PBdubXh` z{uON7VOGbCANUI7#C>S%wn4@CWS#M@cqK&!1L&+I}`Fcup+nA2pwDfhu^42T->F<0Cf8%fbFVgQ{Q)on_Q;`;tls_P4 zxeG>A$QJIOTZ=n_Z4s%E26Vnn_qktTarFg^BB~89K6}73&sq-W!gy?{u#BdFh~Bzo zFyorHe$7QLebv`NbDVy*kJw!TJOVAn2Ozy4W%{AWKV&s@EYQd5t%s7Ee2qr2S#th!qn zR1N7C0mVfv2*}vw30OIXOg5Ef6{$v`;!iiYI^qqEbd71C%V5moDZ?lD!(G4U!u@N4 z;;uLcCQ=m+0I2*e0}ajU2BYbwdlz_;b-cy#I~${Rv=31jZb#hq&`j4@-8x0xjOmu3 zrUo-+b$y+!6YH$5PHC!|GbhJfzTlz(`p(0QyD^{{DGLiPyli>(>YV9n#l_1Fzy1p! z;^+R^-=yDp8nd?UMPZfrs{}qN>M~~vSe5bS$q%2q?={~wURi&C*S0=lz(>HVr&raO z8=!Cigx^syu`YrrE+QM>YtAnVBX$^Fz+n9hd8iKl1Vc46X9wl-dPgG(a@Zo@fY^Va z85z7UVv=(MIX)a-6PL@>qwo!l^#EhCt3Lnj1PMP!BNxJ}n4=(!y_l1{y&wo}s+*4@ z*2`odX$_RRNx@73^?`MX8zoLN9Ir1Yc`q5BV)?xNIM_7y*iL$_1lkUt!~@)~%)ScF zm9YPm(@!ogGGGeTJ4aRd?el+fG#)X2{AAtT5Wibna#slQT!Beh%%?hQS2Db2?G@8K z#Al&Y9YsmGQ=$|*moji#4CHdrM+RTfUH-=4janQ$CgfV#1%8yC5qk zL2oigs%9%O_4|2@z+ikQ@73pldszPnVute&;FqlJY?xtud8OPD5ru0BUm9X+Kf;;8 zeB=|1+I;LXEbGURXR9yDNP(AWq@0oij%>m%)W;uMNPRAf$w0@Jzk zCL4!;pW~#2H^Y54rqo0}e^S&-EtlmI56{-Qq*ii=(b2NWp`au@b00~Z6jSb)|Xf8-mu z@{V`2Xbt5LpdHAQ^p=Fy6~TI}YH zIoEIQb8s+2d$$8;DueBv@wk}JbT*sQcT49KFb2djKRBRW%)ofes&(3)2EO8Es-Shx zvn}N=LMk7rGMoQ=*-F-8dRnM3LGo*u>#}^9>!2~F`S$Q;5;|X3!7-o(1526I3$O}i zq<(2jf)7Eo$KtZ~TWj6bi9TwgT>rj)Hm=lmpu239c!jF(mUP_$Ycs=NAQ^On=7KU6 zh7u5wX;Sg-Y}+T}-}-F+>fpEZBF06a=;99c&T}xk0oq||!AMYQob0qdxt=i!%Nc6# z@c3iv{IfqX;-Pn}(JxyS+hLA>4YKhqFnK$OL3e%>dF8KSc5i@bfGp%cbOn?0JXc@)<}y zfl6WfIoi*CK)RhB%(&vt9n0rFxyOyG9mZJdk>IZ&U^X}G-L{;*43EG2agIIur3f{$ z*h6#=saj`b+Y0YVRksuF9ROrw4N9=uD8zzV?9R5&6m2k**HTTt8sv4(khdLux9_s~ z8-tMrcK5^b8$a{k^*ulQOY+md_9V0AJ|bH%T1V;%+qz!6{=ZgE6(EBV&AGW^pn1!2uu@ zE)onB<1+nkp7d86+GJOUVln}1?MiUFuSwOkNsai!1gEp4brS5 zE9@N~5AP$gZdsDvoD0F#%ep@kfeM-1UiRux8e?l8&su`@j& zf0~VbFcBGEvoQ~x0MSX1=`2NS*?h<9lH(?{!{C$6Pub(qF-Q0^U7{4xN9HR&i==;- z&Qh^l;nwsR;x3M3OsT6T=bHA6|JxVoj z&`9JjQn{x34qeWvPrQ!HU-Wy~Jo_kn+c#J)7QTOphN*~9kH<{cHyMp49PBTsOwEN0 zr?_x=liC<*mzJtAj7EmT!=7u`54gR(PuKNP5Q^=wy=6XMFgrYCxtOVHk1;N%z;dx* zHrvPA&O3^fpmPP(x%qPqMt%`Tn$}oUY{Hrh^&%yDekTb_ftMu#={xkP3Q7Y$gwgr> zlGb}kkAY4y0WIq0S5x0ffCmFI-z_QSoWy@aU8hW2>(BFdt#bfqP>v+x&atvw!3j7_ zM;KzSfi_hM$pL$RGe7{x0CA_dPyiuhtuDk}q148aqbRoP+*o{ue;dwiu^V7QceN_&1STzvf^wBh=PTLYc~A-Pr+=rkwd0m_W8(E38(D=W35>EYd5_ePoXh ze{jZp2BR@ZWoWHaTJO75^YEkVj8_cwmgfF1MDBSVVk@*=B9#RyL`_@+AgB=^+8vG- zd#A)*mL?do~sVnTxtNhVF z{969u-}@cd!(FU3BGO{aLd6@FN@*meaA76hksjzkquc&E?{@VCOEfTYU}( zal7L&sUtxj3Vg-iA`pxojRD3$hZuK9qpjYCPQC%F4-q22g*#McMqRZcW<^yOa(L}G z_?h?o7=QmqKgfrkdC6hJtRbUypg{zTbQl-0;AOt?hP_V((5qUtK3n++niUwWW5$~> z-f-dXW=u>hJ5*~mY1MA7gTuhlq*M)6HF9%qT;zzD8s`KE&S@8YAk~=Z=1J=D8rr*? z8XN*FmLBMn17MIn-*zrSXR@}%%GPPbOc8ar6qr%tq5+O=Fdj8D4P3Zqg$J&T8IPdr z!CeO8X{S;S=ay?XJ6?Ec#_Gn1d+(`v?|=FQKKL)c50)<=Yxg3}#OwL)mICkX#(NQ+ zrQBN`Z=L+lXD&YU=U3LYKHaswyQtHJXC&i3-VTuXs%Fm%Bh;5Gd2Lu<;aqzbC7=)u z;$S01d6m`^d2zqH17ud)TLOUTOU%X7yDEkuA)&j;%-uU^;`MSSvF}4@vfon^T zmiO{A!4w=qn%U}_#;2t97;%!}BZIYoH;iqdN7(FWL8_m&mBMj={Cyf*sZYf5WO|c> zSrdMJBT+vc$p0uPJ-$FPoCVxOMZ?cw!c%U0g2wFrMf-8Ufqp6ADd+=5q8>YRaNz6a z^RJmcozF)^V+KrNTuAwJ;7J(n*cWd-z&U>_chZNwMOIP366+^RCzcA!F75E8IuYDR zD5Sc777bem}_B?-<>9?t!%qWSAH1$}JQLJ7Vx;eOc$ply4 zKyI`Lrjk1W0y{%VVI@TqQVg^(j!F0rb9CgBCC^ho?qouf48pvM2K zR053(+AffKljD!Rn~QJ#8ro&eY-h*s=z4gJ`&QQ#E9>h_*49`oI+hE|$y3L;bom79 zYmJ~z&#M}t@0B~-E!VE^FrWLY{lvK4e=N4^I6OGyaCS)FEip#5GD6?>EarzSmkaP& z!gE18prW)Uk8r7=wQwZce{4jPa*_Ct2F6IxG-8#4%z_XNzp~wx$Y@PcG;*3Dz)Ymi z#DB8>vh`jr=4`ZnsLn`koxvZniK~Lzl+Gl(S~cv9ghrBrQ?7mY%Y;toJD1!qWC#!S z0wMcEIfa~VkmVA_kI=7tt#e#-O{e$p7)bKB9l?``#_~U|X$LBC^ED0v|aI1E*6^ zVjVr$jJA~+F(B6S0YP=h!~A9X=YEau>QmGsSR7cM`qYf4K4Y~Lm8Mn|RgubS z+rz;=Os2|f-?=KUeb<-MoOu+wCAv6t#}o_*b(}XBI3)>ILg;#2c#(#~3?QIlQC(oW z8e2b%9ep`cy&W+Xl~|12M06i(4@IhzC>Cu$%V*#FtNhC!c^^OV3m@b88+Y8?RO?iu z5vKOeiRhRStTluP6Khp{UJQ3-BfY;h%AnNd^|T z$L?V?*#zUpDb$SDRycn8n5?ceYI~K_Csug)fhk)XXxI5;P8JZQGD_RQjXTPV*OnaY zwOqQ=u(NZApZbU2&(6nx6d4`ItgJf9vnfv`*CK8z{KU2BW?L&tz4qht)0kpp?izb5+gw3lcwmmi_MtZb}P9wCSh00wPE z*_y!@CoDkY%1Zt_jwis9WK5`^M;Dam#q z8}7p+4N3pc921^Y(1eYMpU5+_NCZE|pw_rH{BIlNu!kz- zBfI-y(lfl~_>OvZzy+YzmUa!PzN$|v68a`Ch~il$DsuxXD?t$C`RgI@U_QUzo?$ORyICr8@KpQVY;N)4LKj|xOAmjg-g z4HTHW^j^Z9Q~zLw<9MT$RX~*>k{mxradbBWz6i&cwCkD}3kbO&JJLew2n$9RVG&BU zs>AdTl;XTyNh40ICn#LLeJz#$a;%a~UBW}@2ut`a=}FSyNulsX=zSP-_WNiQ30Zk5 z7J9jugmD*=i9gHPw`kWhI{OYD_`+{xv~ijJ-CHb|9l>;{stQG^s+#fY z3hSF2XfGVj=B%x)ap}@&PMn%h8Ik1zq!OwM=Ch7hU)kr*_5p}ROoi<&7PrIGcP$6| z`z#i7l%BdWpsHOv=Wu@?+jmYM1)@O^2{L)qqeCk*UdvGYjQLBTKP6`X(K+||BuOS* zvsMX|=5|qWMsB7+r0U6=em8DZ(2%d6PJ4;xQKa?cL9w<+wZnEj+FQR9ZxgJV;LLX~ zB6`yG0YQU_KLgzg_^266*DbNZ@Q<)1#<;L(V_ZggYioMzccd!=+Cz7h^^FmK@*7t9-~Yr(MwgGF^BT)#s*T@@ znZ6TcORb&3{1=cH{w6Z}B*yk274!l&+>;(0aDK4iioe9b9ZtfU4-rV=sLiy3y5{yL zclh;RKH$!_Wzr~hrF06*CERnb;juSQnVhWXW|rpOH&9=A2gn5413sjRDs~x=^^0|y45mFLT!PJ88zRaKb z-(JsO{j1+Ze{dUj%jgm#?r2Z0lt+mY4V?UWz-Ndk@i1%k-gSuwzU(WgR?n%l3)IdrG6Pei zwgIhu-v*h&n>(^l_lUz_?0Q~m6=B45^Asx^TbOE$Y6Yf}W;EjXsV&wvrWk}t({SbT zlneJ(7$dq|x^|7YR3JTYuvA`orRAkp_L#1XxNvX7Fa7-c_>F)4_t1l9k+suUX&moV z0kOfI>)5gjxe>IVPmbU7qxW8U9B&?%zEaXFa<~WmWx8dAJ+xP-7n<>b1b;%IX8#f+PU7!a zO=EkSJG%#M4mtvpDL6+_C=>%1U@+($UD3M|ifP$idA>7KI*)u(zp;em6O`I=eGTB% zVLJq5QBF)4NvM|$iULM0ABT~r`;ybk;h5t5$5k4BhISKvV`y|92_YsQLYgCQ43pz0 z&M(;xs2m-yhW7y<-pG`E$^sqn`QOK`B{Ga055-smqd0=k!F&e%h4wYjY3MjOBnk|t zzmoa}iS5Su&-rzRr+7_KuvA3`uqN6_j3qAPsJNwtJlL_0`elM4y&uq9IY9s14BnS( zPeSN(j{h)DP4yGHGB}hXQp4^14eN&}oxp&^wNqmP7+_9w3F(4joVBd`3=| zXIqZrlfih!k0V7*m^=*CEA-+_Oc4>S>e{r+`P+A|J@q%*JJ-HY>8!Uvg_w~n+{c{l z^opBdUCc0}vz&eF@8sk|U&>;C&V052!8;wCz^RR)nNC>W+@zVTFq_T5R9rZBg0uH* zFlr24>sU(FIQ97U%>~!5?=U-@Q5l0^=xtBeb@bMYz?(Bj^PL=ro8lg04`*Bh0X~0S zSKqm;{-tP@)NiI3-Tl0HhC@h-n^%5aVlclenC&=9U84wgu|vQ261sO2x_!TdRE)70 z>8Pq6p{KVKS~~%4pxb6LZTS;lGvd#D=LVaPY+$(om9|u z&=}?6M{6E<{c*%BXl+At|GVJCL$K_S?f|6qQzhO&354pe9Yn}41BphuFXzO$Kl|nEx2LR$6 z0H!6J?a#$Ap3cHmY6Lotx?xz4VQt~YD=IFc$N&>$JVB(Vf9XTapZf&T9%x-zo_+Er zPkyqKTX&3_k-_#NB8q7&eP@~Psh+zJdB-g2PZ(}R9*xqXoq$)q?)4DL+JR+P#&kZBd?Y%5WPcXmefs)$QanB-+Piz{oHTx z3-A2|Kl#hg@X@EQayUP5#xO42UyMO2QSrAMRN8s{$IEwXQK>*HzwQF`g3E!BIg3Qx zEeKKrjSuw~poV4@vwjMhoS<4giBzjDv|Qa$CaWX|leI`)vwG|vL~7JJ=W@6@FY$yF zeWh8*JBs%c)Qna(SlK$oXtIvMi0y@DT(Nn=9SNw6Yx&svg!>;@(Gy$lqK0LwNaZE6 zfxcIE_AF07KWBUQfXfeTFx$JsfBdIE$o5Bn9F+#MvgVGSM9Hacc2!i2Si~r{ugqxu zBd0Ds_-BuwzVM4(*J1k}i3hFx=t4vT)+cxj$sEJZb$(<(lYv_p#Ojj=X1p}Wx!iG* zl`kU9JR(zn`NzYO8J=lgh-)s73@F+OvasO!B|J_xq03R6u<8-V{}liFzQKq zLN0@YvpKJ4f^#`Lijt3KxV06=lK4^>aydUy794pV+8K;DLrIk3LcBE~qAch#N>MLA z(vZH(5j>`8P2~&Fq7!4#K`6`capHe@-*IGvae7_a42GSQqq}=A5@CjKNta8{gK<+L zRLUHCI;iD^q>@5Xi0%02xh0xoBX@t4>QsT#+z>fh`t#Q-6iJAS&EfTKjhQ$}aVT-@ zNBc?R3d<#6v7F$bNE9;`+72`ojmgwTXqoUne;)9mIV{=kd=9eu9|L1J8=UXrXyqf% zH2t|-y$Du3qaWbSV9S)`d_E*Yex#yEUxTp)t9DG&-Rb&h%wx3r%Dmn_j8U(+pGm5Os)bGyp_lZ*vU@w1U zLODIj`tk~57)vbc-deTTe(9YJHmjW}8JM_>5yqI5t)OUSeAV`Tsk?HvcgGZBR&aIq z*JA`@YE;24Zee#{LJw|2Klc&FiVFi*F{bwp0E-wy*N^Dt9ZkLD_q=_=U;FbDPQ0Z- z>~V}v(D4^xr{92;2eH;r@jP<-hp1ltS1QXLq-mgc2EQ9mu2YnyJ3N=B!^>=IYmf!;C-IY1OX!zecxcs2$`Ja@vr_neB%APG+QUJwxhEl z{|Lo=;`5S7hyXAkm7qH>@Mr(TWBirx{d)TSZ4?}fGOeeJe0`ZnFL1fJyo#2vBrrr z$C*qg%w|2!Nc7S@tK5INVN||#uyBz!3cVKw0>)T(SFRZCb#LwT`M-Jg;%onL-Hdj-cIi*~iH3-*80w$@ zEe!qqefd1jUrt+Oyr(FiXtCVzQC~E7&W5kSK@rF{th2<|kMtSGl$9U!UmEtBHI*C? zQPa)(=kvA~UL{9i4&RaSL$v3DT*~3k1*Ci)9Or+II`nfq2K_sO-{waMbXX%g8j5$C z^S&HjGW+qUyw*bA=e?x&p^c=HB>KpPk@c5F9gx_<5&N>3+rXPMG^NpamKYrXneV4G_t=ti9Q;))2Dj2b~MA~;Vsx*TnS4iTY;r!p_SuB@e zmJD9W>bWTnIMS>&$SHm3fJ*IUt@$>R%2)Oq+DV&2!5AFiVDP=zvChVqN#qQM)UFz7Vh1eygGA;wUQG}kp7yOY#Oy$ptbPH5>c*DghKlq(zcPJD2q4rhmt$&ML`!`hkFCz^qR9-iAP)B_rGV+YidHN_ZDTug0 z9IHZaD_CpLy(ORi;69)Jbcd)gs-bR_t_9l}F5lPi=$qGQYNcJYj4!_(x%d`f4P73B zSwgmJ7#tHNeFYkm$lDxTA!mUnGar$Y_=A8Ny1t>O!K|L=>wot@;(z?qvoy!=!P=hI z=E(#HvM9SMPehSguy>y4&;Q9c@jZX(U37cf4lc8Fr;|i8`6}5O4(mS9W2W^LifFE* z1wkUDXeWbeh16qcYGnUuZ9ntN%x}CTNYD0d`1Hq?yzqk3T4*M&;igtbjiql@Md9M3 z4R8D{?_}e(??f4+%YEo)QMq+j?FsIzxXobBC_*6J77_3z&iW>EYuF{K3vmvNvqEqcm0$e?zwqHF_1B(wPHx=VR@9%_ zt)^6?u?yp;#@Y%MTvU(k{hF;3d;w{TN%$%Tq{jAOyE!tw#Pq%|L8>XX>j{n- zRmEtB*pA88X_}Se*shCCz(O?)*b4-rNlQzzRlwGaRySnh#92n8G0S#IRaH!;D{LM= z#&ms!w(IFy(X%Hfy!N3fCpLw?cRb8m2VUPfmbW*veD1kJws#j?xPP7b!7YCB@BIS~ zKKWzFm)EJfwsrH-HPr#=r)PGBflekQ>y=xKCpn zMivY$n)Mx>1b2ZmfD!slI(m+uq`Bl3gXmAiJ#Q92#sN5S zgWWj*BsD3xbB5x(((pJbFC~#kf!rfXVyHI^`!5^-W%)oL1NDxi$S2Gc4uGt^OqL}m zMUG5NvFj8B10}vvXnBGoSY_cHbJ40uB7~$OyH{RTA{lIwV=%Sp%1Dx3gSOm^OEJ(w zDG17LM#$vbU9oIZP*cdYA73V@NeS%jq zW4^?9j*_GtX86^-d{UkQNNxcJBQY(tawj^`VSa?fIhb5SF%&hUyM)55J_)|yv`D0w zh$KIPkamoS$PW&P2!CiREpp!uhzU-GgoE^6O8OnZnx`Fgm!tze73J@I~O`^9FK6UASn)EhcG!=l7m>{JQ3$H85m(T*<=U@0qE%| zgrOfn!M5qXmT$k<&jZpvsRXWWOKeQSFk+Mkj}iI~Xma$$a#j*fIJYX;p1xaRZA-ddDk&;a6^QFCj3{3X5O%s;4ePET>#bLQyZA0T00e)V zr9o|r&Ti4~yaKbEpgmL-E}^}RSpYE z(~m}UX3X|eGk*P7_SwFpOvhj<&zpP8v2}Re>sB~@agFwHflgMKzV>U8WA{PVx`>C$ z`aEPx$e8ZnOL8RUsrU%pHyzA_mmZ^);Q=RBPw?V}JHX_!s}+!!*Y) zV6CO|`42Ltl<96M389F(oOwGh@I8O_E&TaE_f>Rzw|u=NV*0Xf7(obeHQsfX89wfq zLsDL27_d9i68#-9TfZ28+@%Jskx>QG!<}cDJ^9P*zxoPQ1vhW>eDY&0FTG-DjbXat z95a(~ucO+!yX6(`f8z#^eC69&d+;%o29`7EUEUH^f6T)l2gpbxTR*{>6nqt#BV7Y8 zGJY9ZkR|A$pPzft=51*Gg;>s^O1vZ7$RWnKqXHs5A|to1`d!_>`68eG&=dUHuROtT zeEd0{c;Z=}yK#+K-{Tx4HA?NqQ`H{abkr`$UyOI`Wb)ZaPIY6fj$Mw3b_X*$&E$dK zf{Ht0;1vzT_K00zs)m&l7r~4``+_%RS7(*XD$adyj#n}GLd-}uPn>3DeS^O3>3f*0 zOc}4NFkYQfHzPG-m^KX$-nYi33pI5O?K1E(f9JX=T@Nq5((&wzdrVdhC(n%d#h?0* zJo%G03{KkoIFSlVr z+5Cv1W;l!C`I5g&t0s3$l;h3E7p07YJUTTT?w!46V~JEg!4j5nq5lRNBC`$f1$}bC zIAmYmX5VA6C=0_p_I66#*2sTIKG9^_ucSYPL6F7<;=Q_qVj7F4 z$rmZFDZESnfx=>M!2rvNE-D~HGEMbMb%3BLN2gF6Y+ z^;Pb>|1`&rk6hTO1*zQM-JPE6H}<)6=YYj>DU~r)rgBPE+cBTdIh-B3U4PrUaDN1~ zRu_i{^xXof)Mt*35+ZV{*+uZ%tcfXBsve0Qz%y;O4>^XvL<>_qL3wfAIdvI z$zcjKlvoUTIU})+D41=JT6eC#x1A4*4Wv{oih{Rf)Jyq^%pf5tFB3I^pxorjOHa34 z(02>e_Av=~#KZ8D^%1d}@o3k+3+GqcJ7Vz;25UQSWLp=S?z22JpksA8)qnx{7W-7dYg>`&Rg#-@C~orA>YS0RR9=L_t(H{dU9X^hrclG4>(Y zd^4TAj?UhL$UbKFOH?<02y^Sxh|c|vsL^uAGmInsl?=ae=RHn%Lb+N+Mm;it#Vx}} zfAx^he5S{sjQs6sy$Y3q2QCS(dCipZbj*AyjL$zxbKl$0>KM%DNY#R|J{fsPikPcW znKLMpjWOY@kqE1svMiZs;HQz7xuX+pUs0`};RpZa&+*6q=zpa-b_uJ{+S<3{=Oa3r zB=9U}K8k`-?9L1Poxl8c{`WumWpukY{hIE)p(+vbNT=%HONyhHJwc(2%6%>|6%C9X z!6iiWS^Gs$DpU<2S)myzQqAeFe@1sc{(f2RZ&Ow9(hD7*`ncul4TIE%^>wS$rl%P} zT?>naBa;W-xWOY|`Bql0JPI;F=L`Df9FZ2hqcGX9N%j@%FU&^ZDXMXoJrY;=YCF)m zyVb*1sGLIU*PzWiKpsV;^7&IbL>AzW6u918PK3ZNw7t#Fb06Y~UwuEHeey*<@yvBT z{o+kN`}}pT-PvccToRL8MjqqN{7YRUQei6hzN)Ht3qZew-cIQI5g3bfw~>_#Oz-~+ zy3Svz<^_jn2mONS=2@EcGcL(%bXI5G#w8VS7}lP1Q#&0YM6_5@3)9t2*0)Y#Rj|E9 z%!KjAgzpY|S9W@I@qz9wYYul_Id+*6hSH5TC*r|`$u1DQD0%!Y1 zLqFg3_f7%7o}*I$O^$$|mu1g2LJ~IAH1dSFTJoC~;`$=mJ4s$>)}E_Z807^&^ctf2 z_CkbGz(y$J#|!Bl**YeJBR3r57>l-sMso&d(e_{*fxJAvl2aq&r@743>~A*yqzWW> zqJSRg2vKfJ-e1r;JT3!ZzHOUl|IhT093KR|hTKNU8p@ueO))L<{T4q&;@BlUO5=-7 z2V77*D>jlt@gSDMd}iPA*tx3%AWc|dT4$fq?9Sw`|8jQ+K=9y4qh&}KQJ`guB=@E# zxMR;!K1gy*2FgKPZpH9jm8@v7vyinpR5XsXkv+*)K`JamOiEE4&Ed#K6$m4*t~s28 zSs3&)ET?yaDO5dDKif@)M3o*+SC|Su-I`X4Hv%cfM z866J@ws>BWb-o@_n=!=r2+fs)O&BRxWr$!ovQ~3gbwF!5p9tej3?{>6z)6_XY|N57 zj3nh65OGNgy^$Vv>678_N~wUUYKz)qhj*_3p~IWceW$hur!=Klue{Wed>mlnb$z;= zA@wOvzv&yf_YGgge7@vxcL&>9jJmV=Vk)X;#ArHYePe^sc+6tHz-rC83n#gBd6V(j zuw1A++p92}TW(yRaeI58`D{sVEyf5{Wkfp{<~=*uXLo0p`Fuv*pia^2Ssc#jmPu=P&ZD+h4%-~k*amZzcGG3dUSpV-M@++-azaOF@mWC6Oz~|@rpAS z{%$0Bvw`hz)9wB$a_#@d+tAa)dvS!F3wGrglLx;7IdKK;aM!nqJ7*me&S^S65#fuoUMhXLV=+=ga6-DX%h5rY zAEPW5@q(tBgj<1Fv7>fp@-<)d$~% z)?4WE0NNeU4l#=2lkA0&#YLR0&4Khw^p(Oe1Mg4`>#hUl9_{PUJc1d$8L3`}$SQ7U z->Bm^hp62Jy94GpNR6qs+|2;eW7tJ?Mtk@iJJ&wPlfU^%o`3EdFFbvnXRdDZ{L2U2 z*qO7pKWDydSX~5Ty>VrXUdOCJ;K?LZ#4pWU-KX!tqnbNkRQXA^g3M=bttgNlE zwz2{$tgbd(zA)wdxe8I}`lK~jt4ITf3+1^N<~;ZO9w$ys*;rTp%Mbq$FTeMnAk7F? zHUZI?WEzit6+uh~#)_&z>lJiD|;^cY2C%%07 zdx-BNno*7q2S8Af1`sFhAdjpsN0#)Xr16Hi$t>5%vhsNd@+0+E!ap2ecp!*Gk0WWP zFM625^Q8F<)%Ser0toRO^I)Jyc6;yY0MJA$QGp^OScwe>g{a7;pBVvpzZn^4@Mh%# z%g+o<)nWNuR!S_N2zY3;#gS#kO%3)#*>tVY}_(LoEI1o8@XX8cY!+y+SFGLPoS>=Z|pyIn+fvR{7|xG zOo_ z+AG@2MxQg8eD}Qc`XBl^>;v9Vd&LuX}QVE)=2KKpzokxGCKQ3Tzcm> zv$A=PgZ*vV#Ue@sgQ2NwM$;+dl~tyzYuLVLK5yANw!!85PI2<|2FEB`!&+n@$IiYBrd-UWx)?j090u&~xImu7K@(y7myeoD+AJ1Ja##Dmfj6f0JedmdeZ&+qyQJM(A(RKKmhVe)^-#_gdH^gnYVUv=)Q->| ze_d-wJ8S8eOO~@9+b#I{U-&Tp@L&E1KKaxO$mjxH-(Wk>H|-%Z+GKLymtmdb9TxD_fJ?`5!yDab)~aJnz??<^3<~j^u6WEl?hLL@Pqu~5C47a zozKAPNu)O3Hzk6I#^@jwi!m-drB~|Jt&iVx<-zY>S>O8kzU}(JZ5*Fb@`!-k@K3wO zDOW)Htt2Oaj|T9DYf7$|JXl6Ol5srt`tpe21h&i8~~p{V81nm6M)D+hj93XQQ)b7D|;98^Wye`gxRQv6p;u4 ztD0aeA{`{NA2sO{#gUHKHkn`#547lmyw5nI0^5;y7E(UbnPQn7-onnLfHAT)8HW86 zZK(um8joMY`IRGNMtfia6b^uLfTbFhzf>sB$Y%lSj*AxBQ{G+*XGnzL0CPx|=(!2) z75YK`O!8-C)WWd$+)j@0WFQm96ULSqI)h@v{a#pi=RH`s=eL`QIu_m_<;IRK*ZoVNVmzKOU70djS;d%|!^0(`@tBL3PIK@1RcgQ6UsW!%{r2sS>(>w1-8rD` zdJv_m4Oo}S-S$0g+p@d6%Y1eS;u8J!ZAUvlq+Ko?#*L4F2)b;9FC5b z!yWe}wFiU#X!hCcw`6;7`TLwl`95uM1UmLVM7N*+KzvHy_o(gYyVixddqX%S%nK8h zt4%B zDN*jLAFnr39mLk-(4zekU2J0yucNbV=nfHMqvOWucj}B31IDP&UM}>#(9LgBHk8lV$1d{5uQ-mZOrdQMa|y<8qBC!lzF${l7jyW2;pz`+wf8xsojb3Bfb@dDRfDwS zpG^uuY02rv(}tfMB}DGHTL)xqjNM)G(f94}@9a3d?vlmy)k+RN{=BbcJp`5=;w9pr$gVwnB65LuoI?VHn7_k^S6s6mFk$>@jelfrA+uuUJeTI$P6s;+?YoIszO$i5M!t$P%eqwC|mh zskX>S(SvR7Jn;m#KKp5G-!dJeS8piKJq3661gV6Tv1MHMj7C5uw4Kn-4JXdky!MM9 z;NG{r9a%k#wmo*~&+$h^KQObvzmH1m^ulYJ<#r=U-g>5lj|xF?(Ka2{3f8WoavW{0 zK>Y?VZv@7O;E&PFFs4OlLARZ=P7hsVl6Jrd)d|K-5NgD%B4&h`F+y-;RxD>P@}2+d zU*rdWE9rgNICY$%Vh@oO5A!;>AbVjc2 z`KKgZF5mGL@gdYI)XjwH`UX`!1*t(MtgNjvnT%Om-=L~1dfT(HI_9AV*ExIE(6`XF z8l4FM)kv7P%5%@odFkaH?m554e0hhT{h=S^_D6mksYaOfb+D=`mFEj&#zLhSW3je2 z(zM6UU-@UJ&R+Ol)$V5RgI59rOwQfVi|NirM*a)(v3Ws?-oXao*4*a%1l zE5l+^%t-=GQvKLW0w~Lk5jByRWG1hlnsA0efF~oYWME};=amP|04`B{6xO@KUwq1E zlEcGbJetjSZro=^WKvqfZc%C{Qp{Z(2MHF*zGvU^J_rKQeM-mCU5*wML{rv}v>zQ0 zO3Lzm6qX#00GE&yLO1Q1vN(Xm;UYWqm>5oyP-fY^s5c%nj*KZ6hf;O0Li;L4L`#m0=mRL$ygw*TAru0Q>!+T9zkLwcVp z8o~Ay8gVvg5qHjCZO7#NmvQ9_ekU?I%Y1K-zPE9j1gJ+1)74d0*47y{4NIRm>GYXn zT)1?M>D0$63)CZ6E|hE67F@r+%VM?!T#`RHNu4kM@OvS=`SjXUe(Wsn9Zy2J2B)k-bn+#d^iZ73 za|c#e1XH^fXDw7CxN-@uT&|d|RVd2j8lkOfvJMQT4Qu3y4a0@MIeZFJ|W@K-7QxcY~9fB-e&hxALaIQPcUuJQQh$B zD=p7GW7*wxw%lkU7-Ohv!PLTXq0A3@PMj4U`?CAE=N(^wY~JsVy)0(X9|9eiw2|Zj zxiTJ8tfxGjx6~!$JjcO=t4%%A_H*sdV=r7AW(zn8)g~ZR<9m?mGQuV>Mrpk9)Fl3? zK5r8hB2%D2%m}qDV6p8Tn#npfUs6nZQNZZ&;yaE$PL$g@x|Tj07K~4Q&!=$&g5N+F7SqVOirg+@mxNJ zbxg)@^PPW9WwN?L-dBP4L!|FeRIu{F4;OVREu^vNJHV%=!rx zK`BeDza*>xQzC|Zr!~xdjxQoQg7Vk!TD@XGUti?9apK z+}9H4DOc{3l9C}S$5&Xup>5+7je-s%uCm>ZfLHf86$}P)q~{#gtk3LyEI%k491dyz z!dzwxwJ=Nv^O4~w4MZYN-Fi;XHNq1-o)XLFe#0OHb0a1m9SCbB!jp`d@ILaAy#1gJ z$Z%W|(K1{=Vb?Jq@6n?zcj-USVP1z!0npHP_#HyB@+loSG&~U{Jlu_*{rIGui!?5Z zcf|IC5}kHs+$?!RA>PI9670oY$DsUTBwT}J>c*h@w*A{L|M|lk&%MjG2L>a4dsL-l zVqx9-wPly+au+kb$USfWRyHrclf}US?R*Icl@A9tMi`IBtZZzsvbsj!TH3y6eRGWq z7f-NxeB{nUc0%QHKXI_%^UBM6+_~dJ_v?zv@0xaPi&|y5m~(J=z+!QTh*DP-eYfOr zZ;xf`vi_S8TJI+%(7O8>JlW;?NP;TReq!_z>BkvjpoHuRHpnzTxrvXKawO45MsH!6 zcv{WvDOL45{Qm#mXUZoD)YA2&867%B!DJ3CS0asTz#ZZ|UkXE)Kqn{c=d{S3ET zt}cte>HS{??dfbyt0SO>9_aRf11?-V&L8;lRleg7pWy84H=sHN%Qag20B!vyOmi7i zRT!?po&SMc{|VTB8tmM8uaI#1ppb!K49-6n6xK)xF|)r@n4A*tc!XlKN5%qm&HSY$ zAN-XAo_R)@jA1eX6?bH&vvBN~aQ}S`r%pp(LIk*oqQd_6nDdc03)EmGD6k( ziH#9dj~^%c^zRFgA&!#Dph zKl|@rMmEp+rX6g#{15V11uE&C1Hkt5J1_AQKls)Bwr_bYy1(OcI*5-5!8sD5rl$ky zm!#K}WS*!{QF;~n-eNGAYJwe4m~HR!;SavTlb^Z6Y}Rr9^hmz!t1ff;{s++I4*hHg zWCU7cbb*)!80#H)7U~*mgT4M7cb@pL9$tTi(Wr(>xbbSwi_dp#?+U#&j3z=|38Thh zDoeXm=6lN8F~j|DI>VJOcoWl0Z$zs#v^{|K0C$Gp-P)RXQQ#qE=yY6SalvJBDmnl( z{wrkiMO-d~l+e@X96{aR-Xf+3sZklDvVzJM$Og(L%1K}YI02kQWd*^}m9=2|UFy1L zGC9WcpZW{D)p2a!`CKOp%-R*|vyY>8nMp@Hzo}R`eLtpI$#e`)lfg+RLC;P} zm2(|VA|BETk2;$-2DOJ~vcl@-ahhfoYb#7uQPmC8wKZ1P*Qn|W+bd^IuW|pC6^?C* zyPngt#*n0TG={c^Pd~Nb#h3Rve`S-JIsfCw{teH)?}t%ZWV(vGS;fH~c!yd=j93w) zSglMwnIFG!={;M=@A>;8ywdlb5fKY1@FOWG-q5uEyO$?UCZ*f~j%Sru2`0QKg~6K3 z9~e`s0+LT`7vB5dARk zdB}e5bSNW!bDMzzR|PyVIw`az1wI0diDm*UK^ON#5$7WchfF_-)RAZ2`JXuelA)2$ zYw=FY*ODOigHH8aamm^b3Swrk$*_F+LZZBKp>sJ(i}E?*av2wxc|c5V*k+%hfv>)Y zSUhtqFwR0zO1O>ZZ?o~n?>REV7zjjeGNUZVA|>Gt z+ad_YqlS9Ig&e6<0G=DD9*N~*$=Z+jNpKf~3SVRS!OnC}#|2EKP>(yzk%T1H4eKf> zVt4!Gj)RB;|0J%%C(qyOX!QEWAXim`e9r$`0I-1N0+iBe))U`gGdCCiaZ)1AWDo;Q#UJ% z+0Gx^ef4vHs@uDH0%LnbM6H@5;i8g{M`3Y*Dy-iBHJpF^x1qAm>~IgPQf2)$&6vsR zl(mgb>UzX%HfJ)Ka?iPAoI1Tq-5A=|hhJC1a;e8@vcJJ-cj2|xw%D$t@7;NRcg8)@jAVi{i7MA;hyX~tD5)Ryk}%&P zDV?^N)7Ltp4eb;{K1kFkR8yZJT)SP&SW9$r>*(|{UAKksIoSS5svG~FYWF2Xmu@E==Qj%p#@uY!A{a?j zii4-pb@&OU^;3NRKX?M!xP-eYFeE>W3l}eFP@s~IN;>-9IRO6C zkA5v*``aGE?rpnB3~_5GMgU}}cVPOA@JXoqwHQl!*sG_GEtWVR$q7(VIGja*5V_TXcBn2um#FwW6YAxn zRH#lsCa4|*a}3pWM9x6-MOeE^-_L0p=Tz3kuX6s<@8HHAK}_wg6782TK1+T6O9}tGEgb1T z2Q0fvvUq=FJgL3BAF^>KIh+sM(@!*phu7+5@cDAFKk?&?xJj%roU%_x8PaxL!fOB| zgGuuUhH|`trZd~0unkx`GLrTyMY|H|CPuSm>?Yu|;I|nV66wOXJb)vghrI6yWB8q_ zhqGYnb=x7}GSq#u#>0z%@FWo37ms$81YB7nlaWUq05WJd2)eRNz7)z{@Z*s|)nu)N zcJf&m!X~k=9HC)c!{&v~4@uQ1$2k~0C zZ1$C8peLG7hH`3tfIr`dcmN}w?=qK;!K8O_Ed~q?$CnxDIb$gC3n|-vxfYA|b9i#a zRq?x6CB70@P2;{hRRs9Mze5L6*crLD77tr)^ao{FkaTylzhW;Q0f>zmF;#5^ zd*ANO7ys_z&F8+sb~8l8D%9nnbI*DGZxO(@=wcVM`XJ}t@hz;MdkeGu9lGTLBgQG) zDpXCwcx8o^l{Ka-D_~)<>^XUIlXDl3v$|H%_b%MA9=TnL-8&suukCZ^&OU0@UEL?p zb*+QOT9(Tthx_}q%LS%#Wo+LvJMg>yxiAiA;5FehpRe3iVnuY$tGl^X#9v4FV{O?Gw zp7BwH%o za|z0p}=b&S;!QZ-azHx{489^AF!s6W^3&ab<(+xn8FmaISF*f{`Ny3W$?zQq6d zsc+=VzU~TkZ#&Ad+{jByMk4HKy(D>@>t-U*_ceVFu)tI`wyO9&zvsX56F>7T&EyQ# z6z6O*iik+x8J7F6a?iOb@BMe*$OCV9gnsX)Z{44T$Ko6mJ%}oOFG!^{BUF{;E6=j` z^l#E_zl=esOvUY6mY1Jzxpm9ZTWH3(n@x;Bh0B^h2isaUj=}wpp624)9%bdq>!3N| z99GLY*h2@0SWmNtc)O7&*g`DkGB~~n_{x*ZLb?$_aMvWdnRZTq*7G+d93@Ed&)=Y+ zs~~Hrt{_znvVqoLh1GLZm8Gs>dEA=D~zg^pZ*s=%nQHtuaMfn zbd2`mqX9jhH8@hmx&^Mr)RUW=XV3qwQ)e%|M}>v<)__>&^YuJkgOeulX2+jG?f{!P z1yXt9?}5zFp`omq?9IwXWji?pB3f0mcfEEaeiJ9$^Xpoau*h9YMYjc?%b!SU zv=~^dA9jfY0r_DM1x@fMNoj~gZ-l|~`NGaau#XUIZny>_^nC{$#w^A`com>Yrl^H-?uRRDh>R~A zS7ESa25K>G-#(IdH;PX$^CkwN?pt%FgS&t!t<8vkrDzWZB<`8@q~8KQCBq=E}rDnS?3I}3Q{{Z+%1(GHx^vIw!`dj?sV9y zjv<|5gsxpO+dpJJKSb3f`4gb)7R(O!u${{hP>2+7tRGnsh4ageQB=p1m#vPQBlxHQIRm55@`~x`jB_qyRiPg_gB|3|)m?@>}ddcZkdEE|{v0hL@2JAw*GB^jcv(-_m{o?H(}W&G)bIU4QTb z-}JlBGdgt9nqm6ifEz!I-27G8*+nV^V^FDxx?OJcYQ7_w zV*l>y0Pvyys)87wAPz-G0;b~TXP12V*B89>k}_F^rgleVx=x^1&YXq^9~^W1c#RQ* znug}gIn3Gnk?9Gv?ZGY)=_3#C?UYU@RJFS)L!^SHasLB!J=!hl`iibMRMJyd3*3%% zPGOk?8A(S)2nL}q9a*ZEVT5zu8d*GQP-&6XWBkT1Kg&D5^1mR{d#J}Q{J+z18$clK zq!L%sQL&5;fcO9Bck_;~I*;z%A?QI-ev)``s zKmK0+-amhe(ed*%;&#@pRm3P@#L5_JR_OPxG8ymj#C!h$mmj^4e)pP(r9~t-0m35f z+@7EnkQ$niqm%7t*?;Ea9KQ4djZsF8VfRkY3(qdOdR>?;4U7b-9AB-CQW;CPv@8x3 zt8n5%#RG4=#Kkv1%=G+&NOR1ctzR5M@A7kKhMRzsi1Xr0m|Vpbc!b#oSXy0afGqu4uujw;rrd+7xm+Y4H3_U z9+HhWT8>eFiH#L-Mm=EoJirj>K8-q?qR>W$*9?}jkMe!Mf10!OCBTz5UGizq@tfOx zk%1rSTO>vRB*ew)Q6L53;9<$e89xO94S^mi(m5lFWE|Vgcd2qh56VShIOXFm9%l-k z?{Rp{Ey_Y)C@E+}<`$g_q3t6B4+K=gRDLqXA0K5qz&V_L%tceVkQvlZV;^>&FdUT* zGTavZCSpmoy`ng5H7B?z6s06q|4s)e3B;ZjUr;DAxFT&y8nzBw_li|M<|EFQp#veZ zgd=sc<&xS$ih2>>S$k!;n+#h?h66`wHXmP77(Cwcma;V@v7ZD_EI)Jz6kX-(ZMe%H zI=Kt|NWxb>ws1Z$A>`=T@{cOzTxDg3w>OR}B5MzD?w!An^?M#;vA;*V zaOW$HcUskT&17YT@#-qm)m7A1^sQxUYn3baonUpXqU*q_Gho!h{(jFZukNvZ=O7yU z^onX9L75#MGCMq=YZr)7DkG@1%x4F*%NfvR>t!H8{GtmAd_moElxBiaoC~eEf+DTu z6^PF@DuAV86R0St1nNWjT`mJ3W?eY4lA)Lzkwk+%t?BSBA4h~Q^6~@=WJds!1`zvJ zG$m(?t);{4MNd(Vxc04wdwICSa=xEkQyJ)e;QUn!KKr)|HxD~iy*vKU9-@mqbiNIX zU3ZSzE<8dTFtsyWeRPkAQW?dV-Wy=Jv)Y}(F88r^kIk)`|K*F1@qc{#WzK!cMXK?6 z1dCw{^bA^ELb-(1Ev()~X1|Qw{Kr(cpTsO%f4sTQ1&hNelJo^Pg9F7RlSdktEog|S za#1iwdSt9nSL{CD^5G9Ic>Wnh42*qJ@ve7Nu(>WgaHZzlIhR1p_C589d#KJohHRVy zt7x|bT@ua)mh0jT`KqO|>S8Q+w z_;qS6$OsvYz|`2A&og`GqjXoFMY@h^1iL%J3olw;z6N*p1+A5Ft<=WSR7zbzr!b$x zVjt?Ua`sZq!;fF&p2yzE=*)vqt)T58x;#X64&st^M!Ay7AG{+v@sFT~n1s`)Smrz^ z9Q6t7J##7|UJll7eX|N?3pJY{TS&c*>K=CaDrWpOh^+Cc_x?%V{I&lLtya)(fmMs` zTU1u4FZ`C|01&@EMZsF?$uTC!FA|S~n!rbryj21{C$66ObE01v{B~_7KAGndPylNf zO;(w%ZBSJsy1v5H4WsD_>swncV$KK#;odVV+;@4(=9IF7bA*IDe|=HI>N``P=%Phch+$aDp$TqIOrTp?7>7?SyyWm5#h2Bv+EV$_jy$3v zmpa7o{ax{pa2nWVZrta((f`l3eG73uqf_W^4Gia!vg{GO%dkW?4)?k)TS+EG-oz1* z@AmMhK9oI9FH2)5wKX)aoPst`=OmQNIvLIt5m%WyS9V$Seb*O6Bjm_=r(#?Qu0miA z0Rr-!tMuw<-_cl79ZX{YAXBcqqVYfbt5k?8-{}c=WRv!HLD$fl_TYY zkr8>W|DDDs1)n=&SQN`Sl}Ta8#QMd;^Y|%gQR2JYF_JqFa)b3KEoa38ZDcc)k0}`z zpU0?=&(iyH31>Jffi21ojr-zr7vn#B>H8YYVOWiW+XD*x`G4~Dcyx?8=7wuN%|mi( z;OW9+C0DY-|0%HnK~W0$AZGb@icC1qDyl}R%1Tw4!`&NSvHR*%-)rZ0-j1=Tm>#9h z5bgiE0l6&T9d@w~2x||0Gv^=w9l)5`?mpUEYOgc_j7Jlu>#I!HRv3*YEL)2)hD(=D zaQ^%%O(V1msB331%ooay>oaa#-(@ymV5+1fTH8}q(6=4?2M5e%2Vi@DMVqjg9kQ6u zP;D`i?KDL6r?$dId|Hobyn#+*R8>^?)jOVYMk{{a{me?n+A>BX89w9gy6xQ#f6Ut7 zM`0cn>quK!_^3GNN;u0`sxx>vGuAWU*^-xu?R$|Md6Gu(9ZYu=- zwTp*)U@Xb=?DM!tNIvG3HBn4sz#6B#&+lLt+t|aKu)G7yUC_BZFKrBBYGmZ%-c=3m z_^A@k+l#-)PX(|`=np_!n#%B%Z$HK#{v8kURln=CG+U?W%?5qDM&E5xRVUHvG-8e; z)S%Zedq0A_`s2vX3rN>tni{D`Za7KP0!>NtG!jTgH#yp3UI0H=fljQ?P(A`C75$Bl zkALWpC!Xl(S{RK4)3`gr`x&gPz?BQag-aEytCdR(IoV)(;WfyK`%$wB{Sxc~m%z`@ zgURK|5@Xge$B(i9+zY(tho9yr-nYZ6H{CViS1ykDwy)jfcmJL@(rm6H`+L9wwT(;0 z7tXEc^Gn8aqn?s28WK(7WldC2H948=a?a}J8P1(u;n~kF5E*5%`)*Pxe8N>^O5KDr z=NW609GrYnWQ#dVN|gbOYK2v|{aQC5rs4bE^J%OdQ8fa6OGk}nq3#aXE_Z?2CC&O7 ze)Bh<=Dk1jVZQ9$UxM9#7U~*Phl}71$r%_IrFY`B=%NJ~VUAs4_3`^*|3%v8pJ4yF zCuzn@9)9hJOZO|UyxQ~fE0*nBmboZhtuD&L2%|=*Ljd~~Nq6wth2m}@cq41A_Qm%yYhG^e?&pjR3~^5BS%flSEtP04nhbA2T2*`zfW zXUMmgAw_dQbN(4AKKmZvPdZd|pk}#^LQ}b3a5wu+aUc{C#{=s^v-d+tH4Hy{A88^k z&up9pc*DNJSThHJ7O&*U1Pqauk3RuAqy+aYO;v{UVwY8qfOj{+mJk~zeE_8wjCos0 z5C>*7bZ=x|JvN8Nf3a{g*qqTJ142)NHeXyp$%#g(Kn%gpR;=7jN(VzX;4IE;i7{uq zNBrJMfDX9pc0MvpJG% z&eBl;A8zTDCwHFF=gq1b`o6uebM3Q#X?E+yZ^gD#3`^W$-}(sjzCX7MzrZf`s5V~1 zg)jVnvwr3=4)=HH+I_bJQ5m$in7U%TvdYTZ8sn7}s>(2*cdV_gaOKhoPM>b*JLp?? zcF`)_y4~^Wt2^x6an6OxBih=O1%7cjXK#0xWw%5sXht>tV!{629$mNabg6z4wV1yk zDDvf#p?cuNNQjAP^$&CE(R;v5!CLyo3h2YC)q`NxamSty5&H~m z|2Vw*ACSXam|oo3Vyn4eRqYb1Pp;owhZO*U#>Z|;vA9#v?|NUReTfg!R=-~m@ zTIh{mA3+{?hgpt`Y}_uY#2Z0gK}=Br!Re%^&romMo@%nf!w+ro>}Ov^%(}nPNHV%6 zyGk?AYCyDQ)YM7N48ST>O!2>?4&}#`E9w4thNZ$tPrY`6SDtu^pZvv}nCU4hIxI?S ztB7w`)quKe_@dU?U-cI6`N>c7W$*q9tTfpgk%-5%sQoAECl;8yqgXORR_~>G!)1;= z@D{oko?!o(Phq-4E?=&=c)_rJv*U%AI<8%Z*$mVOb>sMLWt8Ayj!%R9 z4pAy%z)Vm%4Q2x)H9Gq!cJ@)|uY=wOj`Pw>yQDMfv1^y%-&6#HB%QbuM=R3P&36Hz z8BGEe6CxgRvPpJ}r_+Mhh8_Q~67c8llde>3c!flns`TB0{heF1?VQ#1q_sZ6uDbK{#|cw+Z0$IjpX zJ*UoG{t4~duJ3Jyh;?)4^^LGv;`r6C6`N$KU)!0Gbmfg(r>?r66HKHHiSjAY5@8wS zDs-eQZ=7qE@g|RQD~@gqA~fPgK$vUw>v&ivO(O+~xc4UWXyp0hG#o{YG9bwBOlgi^ zgY3xkm#D|P-yv0Csq=b6Ju|=wWE;Nw26Dcb+he)y6<4QsG{xu`2JMGs8^$lV$dAxe zHgS>$ROZ+7&n2u)0vi3e2V6Vy?5uzAdaH)bg@7{?=U7Y{Sc(7`YV)awG{cdxNZEPu zIwOZThq>{eLz_)}e0BG5@&wD>%NKQ2v$IPj3n~Yc+K&rK5|WGa(itvF#&;B^6#Jf( z>qtz2&NWS^i~37#6rP*Nb-lslaTdc-qS2a%9%c<45&l8A=1)RX<;u>Vmr8^b3;#&J zetr`i{(TS*#c%HZJG2w&p;WBWOr|*s5Qb%>TH+;CEDY+qXs!|Ck!j&^PBacnLq9zW z@FpH#j(ccax$ntfDh=#%_r9>p1EY>@<%UZ!4Zdv7%}OMubNysYCx_L~x8(TC+dH~i zW4jqk3C4bKOh{2TjV~R&3FDVEhT-pM_z%wcBQC?gNOQP<^P6_BJ@wc6!#nq5=ny(o z!xqjF_yLS4cCiOKV(XD_ZH@7G%yQY&_sYHZ z9OL4JO;*N+cJ9Ee8ko;5uU?&Tz52}#uJ38CacdgG~(4|>+ zE*amO4%)gKfo73OBw7#3w8mmVNCqW9BLB<p#!`e?qXksLIeE4~d+RcFX1mi9dCag5*Vap4@e!y>h zu;u1WSee4wic93y_HL=4IW1hdSaJHy2*lE3Sv!A`@wwN)%4yIVZ7nXzpGKN+?8VxLsW;bAe-)q@OV!jcKFf{kdwj`n|0(|akIwmmuX`)H z_gTak)H;JWa;sppO5&@M;U*~48e{@NMr(W@H{m;AEIjhyF@Ba89e?w8oEPXU7N&Qw z`5pMlWQtW6U6Rt)#yGG3zy|oyW0Bqf~llDl2V1-j^9Q6tS3^}}Dy)_rfI zfA!PsKmAGUom-qbWjJ&1ggd(}FFxP%>NVwHrYw7R8+9e)*P{j* zZacd9KJ*>UbPbW(qxdfTIlGcn{2c3GY(alWJDHhsMv(tOJr$QnM0*woyL5{ME1M^n zu55rnyEx$X^_F(I|dwt#Re@i19>dm(Yt~MClHNl?EPviFy3Q@k#Ic-z{LVI4P$Q1X&-jJlDq-clGMy6{;_`|#q z=PBSQ;I*_Ng0mpaUudHouN2P{K4rN3H9+F${bUrH6X0D+5doILi}HtL{~jswKlvm< z7#`$?!~eW?A*93P2H1y?M&i3m+p!^!;6XVV6plR!#2u#LR1`)}fFUScnSq$CqeKyR z?>QT6VR+^RBJoJk-I4l(iU|(|$I5oGhxPB$#Bi6pT->B*!6=A}&AriKJCYbs3UZJE zzJ~K85ze^V9EayPZ(O$7Jm))-fcNkc=SMscrLV=ee`F4PyIPLr2xi2$p?Q1x*KEfq zZzS)#=sKgT46o@=hMRzo0(oivlCa5ebfnDP;E{w^DR=#2awQRWW)VUBS%3A&HC1K% zc7E~Btrxy`e(R-gRbAFp(t7Q*B5jwKI5&dW7JIlub^P_*_a)!X_}C*H>}}Jxb7~KR z5y2S4Xu876n#=HStz|yzSY4ZNDwNs z?F)U^ad5ED;p~vUZ!uMfGUzzm-=%Mt7!$m_{){ZyE`GLdoe`XNgohYA1WJZDJ~w($;Uq{xbD&Q8;WJu?+n*uEU($vBvWVx0wu{s zjqj2IkfBP5I$Kf>h>q>F&_PT^yEvp@&ZEMW1{f4TKx*t_hwj>^;qV3+FpbBP6|4$s zeaLha=3e14z8!1PWeau>L^*xt7>_@6oNxT%3-Ye7JIDFQPQmyXR@dq5Npx`nIDu)7 zBjaNTQ(zC%eE@swr;(e#i0oa3ZjPGTIVh~glNgS#CY&c9vX;p8FEy{D{##Iv++@17 zwpydJo)Fe@8;>I2X7<3D+gdi4}4La$Ah zU@W5xuj;rZposQhDt7ml%UFjQP>k0#7s9K(%S8pjf@z`ki7o3X)y226 zdHxZ&^#Y6MpJaCZMON2Z9(i=c{SRAi-?m(PrDuEFa&QPLO5a0moy<0sFkW>yS+?-p zXAgP$Q=err`7Fmz)!cjkNzOcQne{6dsZQJvE9X!~sGa*Hf`>>y1DydaEu~n=ppLu4V>$fMo_MsKdp7c%t>l$r+fX2DghOLb) zKKYqBpZw?^Z-3WU^X4ykoS*(@|D4+&`7yMaBGWY=tP1`-ISpm= zQ1gL^Ec(c0S&poH10r87LpltKW7-ER+b@mmw44(+%Y<(T@grv_xehQ`Kw)tWx0E%n zIUIRvFkbOhl+72g6jgHqkH&xAph)C>!I&+f2!>d8rgl*1s3$5D1V@;_5Wb`&IDoH0>uXeX&3wK@>WT{&j&uI}8q=|%TUdG{R1NIyS*~6^ z;O6aJmTgN_38IE>*@9Y3Rk4^a*xlV_Ha|qfx-tTb*@4^jC+zz7XYM z6iycTmxf(&iNY;E4&bU~>n;1&c&C=_d%C`*?-oA1zxT>y#&d%Ld892!R-`TIHz+EZ zvq0^@fF$wE$d8Dk4tK^d$&vhElxh<6i6yoBXyfeVA`}*LmLd75B1s z?{TTdn;@&$enj7%q_>x_auzY0m}&|vk^V{8`vuI+pTz7u!{~4iq(?>2dgQL5>lGgs zOEDNp#%1|8NX59U($pjVFpl4yuEmA=&n&NgY>y9pXvy{KFsfj4L!#l|cCfahTsm*K z_nrxpX+_oaRI4jY?zsGavx?C<4_{ov7~`*bO8ip7Vu|#Hn;%J>c{HA4`$LSHfuQ!gfl+Y^3R75f z*|E$Bk3pozR4o|GAN{@$fi{@&h`v*LZP1w5E~gU@s9I4U`mUW)Z%t^{*R<>Ap6-V` z<)M0*4^8dHv8#(v2}l=3y8~zsK}N{dWhN&dU^2Tw`^r* z+e>a;ZP~u59L}L#f~f`Rgb)BT8XK5c)GF7mwOoDqRq9{4%4FpO96MQa`r;{$KX8%t zOZU^9xPoa;yE_S4g55#w0ou*bz6EVTtWPrP5iBW}fRk+_)SQLt6!fp62cLxYDx#f> zH0Tr^H>g(7ZS(4lB~ZI__F<0IfSE=IEmfW7M8evL)P$)7t3CaEpW3!m&5BP7sA+j; zGb)mTlpG87{5aBLkTpRk3Jg;tZ%F!v6RfU!uZ!6({jz1cevHv%72CJ$@9faG9kcl+ z8(Uk9CN;NqX8h`}x4h zY2N>HU%&_d)%Rn!pTTS$Cy7b}YQ?X?;5qAUKYQ@TQy=@$gY6qXc+ZvBeoxhmZgpK- z32H@*rX5yK$DV&``0kPDBD8JccgvmX;pl){OG#mtuoSW#=P;LPJw$Ehi0&S3D$PRg zafYF4U;&}sTnl8-QlNowT%jk-WRSs8mimA5DAT~J5{y}tRw|VB;mX=fzln(u^RdT9 zGW{WIOZ=uC>co-NfY&tE;ZcdaL@b}vFp0mXwUx%0@Zv|BSZvu|F_#+ApPXnJ4mIE= zwJ+K42vcy@grnx6UKBY(oz*Hn@o|&@Nxh1%vQYP6ZQt!2=8-lB--plAZs*YOFWZ!? zV&30i-XnNPkCR9YQcT*geMz#0vJVM^72>3Y^8jo>lfPRzoFe2H&*0Af&Ca0`!olMr zN*p3SDHcb2{WZ?{b%MYk}uvcnEnrcgI)pJHvH8S8-QQO4bui zG|BK0`X?Jx-j59EB{$xsteeA}!x?Z^Ebj0=$TBIZQnD{`A2rNV6qXVn2M0!Z+$3v5 zhYv!liNTiiRMJ|Gg=i3!+#-$F<0Ka&`ItiTu5#SNb)ImaGtX?2v)?kH5s7o>zK3g+ zLV_{BOOibcK&uF1jJ56J;{L7Y|H@+fmEWbdtufN#E>q6$5%lq+9vT5-JM4THv-K#K zzWfieapv_L-oD9lxu7yNl~*#W+Av<3u(rO*c)Wtzp2fUnYjcGQ7q&QYd;}KyPN_!5 zCHZ@G&b1r6?Cra|;49-Mqib7ge-{35|A5`y9hU79G43XTu3fO0?Ypf1L4k;2%|j~4 z`JpB!O2&_}rCSJuBkOeVC9W3*YkRuZh4=SeOSryDMBI*U?8_@YY0({_mca804}L70 zl$d0&`_TUAT}b0iZD&Utiavut&pr9>rIPVqhPxb^t=j}k8j0`27`k@mu3;2I?xZ0q z2#Q!sd-F+H+;YZ0J06Gdn=ESE&q)8q^wp6M@9B z4$(Z6H}P0RF|(4%prEignx#=#X|RXNs~?~9v5ziz<%ZG-tgpEut-^c>qZ%$<5FWTZ zVr{iXDnXl?m3tmwbkBKYvWd19ZRai@0+kDo7r=)*BSAL|bmVzcWs%XCzxqR;q3_mc z);F^AnnHdyGti78*lvMYJ;_U-d4=Eq$Nvle_J@8eR5yKIxC(3C`Su(og&yS#6t(U0QkI`>GhpFo{ zj(BD{$DIdVo#WKu(Pqd_2p0gOs2-xrIV@|W*`Rsg3uqpA8+z+`mal%6#q}3yION{* z4Hqu1u$*<=yt(A+E0){0m4id2>jY!mQGwtL7>~eAo#Ve#c=hF;m!7)@zj&R|vg_nw1JxM313;~%^tXF{EorT|sZ;vpoW5M`ZvbsXo_k8Trx4C|Og*QC1%JEHMx%950N>HmT7jXGp&55m(eEO*wPkdyLH+{hu z@|wrqz<>BB|Ag%i{aeh+CT23m_Wn{Jjh+whJyWZdsSa+w@JF8A-+uhmAn|Sh2GfNJd zAQwZf0ScLT#B>|#rNw$nc@82N@r-=FIY~6!6K_uTPO6(43Y3;~oJ1#O9gmBQjULrD zBI=|5aAZ8esFE~b$&jA-dI%0Fb=yS484!Wj7YNQrm$#pyv5PSV8qfe*YAYAd`9Rb0 zvovu5oK#&9cM4#z^BLclh$=P%3gF%EeD^X3{V3riVjjLM&drr?jyx}Plgz+N<0xAR z3XK*p9wnUEj%M&=1Q#OXuH8r2Yv%@$|0i#G5Pa0o>KU?a9c}!4b^)m-iLAV*bX=i!J z4Fmj15|$26A)euklUj1eumhey8&Yh(01FUvD{O$DK?4yd>8OGKCu8D6TuD|pf0l+g zgwv3BUaEv;%X!vtd-)3 zPS#t-1B=`qKvh*7?%t%G@8RYtBmnfgL8{Iuncbj$<-_qBI&f1_*BwUY^owmwWw`I+ zao%{}Dc4?6jQB>saA1kc;{&MDeU3< z(Cz<$?0yb8JapW|7(^hpNK(0*%D-Hc_ z%S)e`@$uhWa{Y$OO*S3}8iQr)T0MP2c;Nn;Q^#v(P*)ApQ|GAfy@Xjk?$B$)o$-O^ zR2knh?mRBJtQ1r$cSd)jSle*^jsKCGw@*;5u6kK!P_0NgyDj*u8I5+t)3T+2wkq{voGrY~h*L4>~d*P=}nV@~n-4?)#KAtCUW37GX=F()bJ|5scla{fPk%S#;|t8}fM(PoVzc@6f4vH)X^OMCbolIT zgS9o)sKcz*eEHY^EFbu#eRTa^Y~Rvb#r8_N*3L%(_%%?OmfCb6HGNls?(*@U|27_e z<2vomHdWJ5RjsGT5GL){OjoF1>ip%NqOJx@st$oj3ma4Uj+)13c5q=&Z{h5 z{xr**uh7lsRJCAC!{MQ_eS68R8y(xXEVH@N^-5JiRViY8($>Hyjf))74tE7(tJu~O z60J=(VdG5A=9w+lPj0e$dW)4~XIVLRmeJ~Is_A*8+H}b&`;&<50WZVeM`5`GDB8CO z9cV|lXzA82QEk4H{>F!S?5+QnXKyzsHGQYR5|I&d>aFPbBw{M- z5i9FkG|h?&^EVYuv%<>O8f(Y4s7%eltY>9B;*ke8xbIShSY@&FT4UuB@YXf7R(a)m z&+{+tv9exs{=$e~``P#Lfgk>RsNKb^tvZL73Sbennj{4(h($42v%PWd%J-hWaNj>c zsR09bne_RPc~MZ#UnV$ zW|%q$?dT`GEx;PQFNImL6EA*HTGrFzo5Vjw_-RA{$tbuBgsE((??p%6XYf3d6urAD zz47T_DkMXCU|a)$Lc)(QQ8}zRQH8MExOj`mykPJZUlyikezRcn z=$#Jz73^d%&r;5FKF%ntO2s!B0C&eYwJd%jVcaVp82L&_Hq@-z& z_|38I%EbBbf;%ydfbYTCsT>~>U-{ZEodUV@B+O4xZryN9Di_8DS@KTz*X;%vZ?t#^ zKmtHbW#|^ONA_>O@|Tu7SHDsFWkp4&?r^0^t|NDLG>jGj`VMUmFdMJq(ieXltM|Nt z+3qdc*^){sDru;UP&Fe)(<#%nHCCrnmh+Zg;mp}%+STqF`!a|DfmUwF7Qk z-(xmgqH3ucL)Ug-tvkc7Fxx+1|6rfi@9BfZHroWhE+s-HvW8 z@Xcr(R|!}CEYV6*Bs8vtM34FU(>T`9RtmY({PE}g6zePS6YXt zz4q4aG}d6&Di}{#-dghX`*(Tr6HB(Yo#DT_=H}5V%oZRPP978Pzg%E^+WMzb2kv#nYi#TjA*sZF6V4rCOO_uvpynb|DjY zP$q*N-)n`aP@9fQX6V`_zU%uw#+x6#moNXuGc0c}>2>4`E#pGGBN6CPI!g(X$ppEO z?>?ET0-aHfH@N@G7N7a-4GddAKhRK8KPoo85y4b}c(cVBc?5AyhAPF5pepWsx|7kW zEwZxCfBrWgO5_-lXht9anCvoQM%RlR|` zrg5n3CeqB}wc`2Wc+@fu&CR#_n`jfQ{cj7j=zIZcpqgT~9%6d(5vGe9bgzDn`L(BL z@7$oNTF#y^oV{m4-@)E)$L*Ufw{KZ?ca-H4dMijR)K$m{|{k|5_9;J7Y00NjA zrDEsCK6|qkQ&sM&RdGjQ#MEGd(GI~Q7Y+RAY!9*`Oj#*Yv|rNBb}^$VRWn6!$5B$U zRTK3i#})#g_ibg(J8~B<9~`YKk{o1Nu7RX_DP6Zxj6cajji2pSNrr zJI>0=gud(f$P>4@c4L*-+&|&?F=4)Ne5R_MEm8|yy0>CuV}lo7ob%MDXT1GuzMR** z;r0C3|M|B$c;=Te>uZj0YS8*M1UU$3g-B1On|rT(?(fWYw!iA^eXsem)3vQ9`?eP! zqN1vzDKCh|FY{F z;>p8dJgg@Vui%$+nEwEOKJlryY`!JspCmc&>ZE6drIt-rWUB*W%ic%jC?60}ogidC zEZfaUB4-@2fzpRDs4;k+M1JT`$dHoP$q|p~JyyR{_+ZgK%I z%r2Ur=M4)#SKy-}oy}vS9*Ks^QCiF$3vnP`Dal}tC`pT6W7{RJB8_JHiF+&&=+Cz^ zS+uFd+aA(*1M@8BOH<{<_%bF>Ha7C-6qxj1U9LLJwSA~FoA z6YD}lEv!BC&0KiL??7$E{;eC(TN-IFrlzS!j3;A8D^ph1)(~S@%sSS$RylWmlda8~ zu#amdhPG3#UteMpyx2efU67-!&i%O$8g|JN;+93CFBm>;0pIip%&IiIs!%m5b( z?gV8x7n`_nI=^3%K|1rC@xy>&O}rvE+*K3q-5R&05&W#2oFRr5`aPRhs1_WWv zXT014m7kf*9eXi+F`P-v#*y>rAwN$ZeDb$x%pM1^d6JVj!d)mdTGWl4Ju)@#VDSSL zF?7oX+PB^iPP-~e`U!M%?BNYx--q(b2(@F>T;=coh1c_k|MdR`axdf z&pG$rbI-Xsb>EJ3)7{Y62qJMrL{J255oF{y>i81}GyZgdQDFuQj3TB19TCL{0wx4S zL4rWjfu_^V`Q8)X^rXFat@)$Us{Ot_pWkyo_q@-uL)EI4*Q!-jAWfJ8%f=|;$v7TH z6Gi-=V`pr{g?U$sew9gsY)z3#!}7%yAN}>4eBvWLr^m5;dKOVJzzM}Y{r9ZvNZ~Y%0=bQf6d(hP{gWti) zCXU-W0o1S=A0k)*jXV%FTpUhO8c~)r;!WEUPejlKx>_RAg4?0J?=#rF_g%1j6@U9h z7Oy;ko^spkHzd%waf${${LR&_GW-_;}g?LWn*ZZd^Ozblu~e;w>|{2|?~d zfT=zv=g@MjSvKQI!H(>GTH5Oe`sE3}>u6`&NHdB14aB!?5S4U(T25qqio{t(pBgQj z9m2woYJRH@ERPTA)@!!*4wz22@xEhucu2qLWcR`acK7y~%^WYicC0sVEO^~x`#kdS zl!maUh-<=_`~Y|DISyXG#S5>@c=F?G?!J7HKl*=sJOAn*{0lz%@4q)xcWliOI#i8Q zA0(nd#nU+Y(_3Hs;)mb&j)VIi{N6jSJoL8_cUuP^vyo1-4JIZ{TpFuG46|#D{B5#4 z;7ZAphRJtI_#1tUiORT4w$Hws9yXV=|6V+`#2YSuOD~lqdYG8ZR?fVif^tJ(N(aTp zR?%MeGja=v(Ni{VNaH2?m+A|CQd>d%wfH?^{gE^oQkINmoJD+V)|UoHiHwfC&5H;VBh+Vg*=KX3EBN)>~IpgG{_s#gKHp`Vl45Blb z=s0fA!XYDJD8S{J;B35#C}wyq^BQp~>t#O)%u@Qxf@Kp86+8)y^t>sIsRFvQxH3Zw z(4O<0on5!rGNxSqc1Cb2M>eBxJU42wV*xTx+4V>n%i{!5>cft~_G6jP2rm-X-x;3B z_sca4vqoH<%fB`uF@`5gJefQtxlqHD-YW*Wb^y*)MHt*yV=?&50RbtvEbpc3b~e{# z8VE?(O3Njlk0t*iB4L`>sWc7!dimDl*Pi|E?(o&m2Ja9Vv^sz}MbI^0iSN+$0=NAj z_kHI7$o_rrU~zm%w^`FT!8I*SGhw#1#caOC*4CWad>&?U2Ibxd@8IgyE#@=F&@1gE z%(9)HdR}~S!L`?p*lgCJ8lZ_r#E0@>^#jZ0iqpj@L%+c_Len(#UB_~D$}seXkD{Xy zbx|Ov(J|&Zt2fH*UvaQ1r$D1aA!(ul!X{BY-6rhfPn=;L%c>?PWz>J>fy76KU#x>u z%e_QLqLkWbmAh{Z~wgp*+Y#Allc^X$OWS=VGtHSDdl%_o^KO%ISWw>YU zQ|doD8gxq-!afip!4X$_yg%hDfAaxf|Fr|l5C3`EgSRrd=kuWXjUeGzI;4yAnBx2i z3?D#l{9E+!C(*-K@TVJ89WrUqwnds0%z3~Wrl{eny#%8)GJfKCt#g=hET!^)-s0v{ zbP%pRal}VHc*={IN2hZd^)xP(!Q1upBLPY4wbP)iqwZX^84Dh{cL#AE zk+SZ+N+u+IkuaeHvz-~u)((Diix3FfHO0oMuHM(e*6QiCjZ0<*-0Xh-%K!dPdGVQJ zzk%fuNDGsF+|@hTz2~j$E^jg1dXCM_7g*hV4Zl2L zHW|2bPs`PNr+BZd*TUf~&&``1$48#^si*70sRF6&S`mEqXTouP6BpoW+lJk(hKqN> z&V%m)7Kk1~cNzo!fd8u>XzwPn^kN=si?fswY`;BVI+Im4%RZFEqno)~#n3nJaO%VQiQk9NGI=G16@Lu+% z;_syLtn6g}L4vfDSzy}&#YSbKq$g_qSO1Q|d4451nu(6_G=enVgg-M=9U8RvZ2!ft zNv0_$6*R$Sl#Y$JGT)@;jQ^4Rj>Mahw@UsgjX?seNq6LAfY@-1#L!h7ka3W{*ZQlP z04*1b-7;00BX>LdOv%q5?|GEbYTLGVicry3D+Y{#wT397{mdW|BF+-CAX3NA+g76I zRn~Y|yC6i_lVjbDSP3JOr75v)=3~FqfHgGmWF>Q!7~FLLQpi^NU-=3AlM;M!{)&%b!g(a~w# z2|ui3*Fo`d7QNf7Se%})S+B!d|E56{*2@L!RaomUO{9yJiQ*$va-K5CweBh@0xNlm z#une9^xo5V8~SdI4g-khY5?;4H9OcVNv7-?#Vpg&SZ0W_!Hb5{Tb)v@kS1V_kuOHe z;D*vx>NkBa`XrT2rsWbE`%p8Gl7L9NFOwkAPu_k>LcR5_D{mr!?*|k5GtP+-gDQHqrVN${3!0^6=b71 zX4L5v@0-x~5cf-N;yBaHcr{gA@3@}qo+dqE9F+Vw$#@(Ou0gh^$Yg>)9eCk=H~H`f z*1YlpOs3)g?J0C#=z7@n0iL@q3J*Wja`o;x)48YLbPP?)#n(U1E(DJV zaf83Y)#2j^PO)HT)3aI1hSQlbI_Nqcd+=`BiNK(7<3%N}SvOTTwQ&-ZhF%*Ql$I5` zcZHAr;uHLZ@A!}Wg>V0@`2GdDbpw;|jBTel!^O~Qworx5HEY>ef{*a{>nLFr|8+S$5TsraS}8Re;9h2`BfG#e}upA*FOT2EBGF~4rRXtvA9Y; zNvL>2CUmDA?ac90KlpXbcYFL|i82QnB3Wx@ldR)Leg|+~G9ZjxvJT9Z*ZEGwP3lVx z%;{n0fj%6C*$E;I>gKr1Z)AS?jm-NMy1a!ydWp@^Yitg0!D_+w%(H)A%L5O#^y{9} zlb*xFp2M4-!&}PHAuKk~MLIZvrt#21GjWJ(P$x{bg=Y5-U_jR|A^jqp#-RXxNR|+* zQlur#?%%w*rXOIMr8kbenGuTNB8^f|E#}mOiVu?hHk?$UI?_gahSd?;uW0AHxMmvm zxx?6`WS>kzGz4$t_LIL+@^r-kDL#o!@x;OLn z-|;v2(ZBZ(c<~qh5z@BE)>d)0%CdLxy~8!0Nz<>6ZoK=&kNnDy-TC07-*a&1{eN{( ze+#b-$RM$HJ&Y~s1#6oU4nm@?sD_~5$}w(*vy0mu;vX%@jP$Kf;}{2?ny@fnK5#_yHDkDXD=Qw7NLTFUTg!B^5L336iKY?BDKdmCUE zAJ|Ng7sFU#)50Fw*Q)Meu{yU(EzO-t!Fvw_DTthV|(m5dWA z1z}5r&y1%u9$_l9s(DCqTO$Nyc$4^L`lP<8g~!4l+cSkI^>{O$jDpSYj^pJ`q}nM8&dv?NGbVu6*x^Zk#2qZxks-)^=+G@>z{!Pijy9};gf5fh>?1Xa13jF zcTBVQMjm+2*RXrfJ6N9FqFdiafYvoM?UdRj;dtxR<@veFz^CWz zcQNmh>7A0hb*Y@z?+an(E`cwp!)V~6MK5YJIhA7^jbO`8t#Ob>4wIy7BZFNUG7gT0 z)?DKl`Za#&DM^b|t{I<`;JlU1l7gci{4?dkLBrj9E3QB3+4z=|rw3-wy~0$kartvw z+@qfx^i%)e;rV|CH*bfv`ZI?(#rKK~arVfSO+5?#)2~{8S4KT0DHQY9XZUkV-or#- zXNEKrHm_~?_=gVp#K#71--P)b_V>c0y@!p4Qh!mn>p*z)!It~)oidp>Y}PAOguMqI zW_r)VFx!Pe@SAm0)sT&9_|;CsY51~q(q-ba<`G)k`F;XIC7V2v##1QKD-{#KR>Q})r5=fmuD+)PyL(SC_$ z)(0yBT+3kM^OPuzvvv85^yEt>_RhRh#%-G>u4M;}Yp{D{=+QnR!cCB!tF-&~(J-*J zIYw89_@nC#$JgkNuj7V}{R8FTphfOi`d&F*z~KoT9>L;N*{nR;3F=|cu-`@NVKx;e z^F81d=w1VQ0)NK}i@1~m^|3l+f--P)w6O<|MmmH&4${&esZMo>a#OnulE}_nQa%-3waY+&S6ul>nn2DeOxSEYnLR7zC#D4+nmzhSTfr=U~BIp zPA05Z3%Y*8a=Bvn!alS47Ryb?2R?j*Yd7|I{i9plbC&}j_Xco^dT0>d^jOQzZp$a0 z+AyDQ^WH!4jePLGeg^;f2mTtHo4-c0eE@BP#^o1LZwmMZkJ7aLp#9dXPk!uA9Ub2O z;=3Ps-JhJ!w*T|c52E57h)0^B1=3O@ACaBywr1NX+1QPAMfJDfu|}1(+K@{5jg}nQ z=MkdMw0ZXaC%>BRjUdVbC)s|V>0umSoqa6J_gQa!{HwNs#io>QDs^IG!^(3_eoOL1 zJ_(rdedWwH*k!V#tnaL0PWGm1x3=Pt^jL7{^vrdt>iaQ_c^OH(-)4m{9(VOsjS|Qv zwPqgCGe+giXN0v8_~!4~S>d1vH3xplkt|7o8a4}Lg0;qL6poB2Q+^h+m1ov5sAA7i zNrwC^+D5^Db#ugZ)i?{JW8Ny8cG)}0TL{8k7+Wen&LwtZc#OeTJqvec|1m!(q@!B0 z2%7c^%;Uc6+3pD3ISOVR4u}8J8sXAk5CXHgMV93_37H+pV*5wQ z=NZl_sHkS8>i2Ty)O?q!P1|fHWc9lmcJlMai4p7c7+jwlyq`(JBz&17vBclBkoW8AN3N3zoe?q&(jx;g^x@x0#G1f>c zi45p^0Zh60mapU9cYZm;;5fd09Z^r~8dRX2Oqp+OhnfGa9l)_!_w4O$@z6sTxOiz2 z?6im3R#-py%F7)uym-v<@dCvoF*z{!0mb9}!0L3#^7NF=W&slFo<*VGbZpj3R0kTD z^47l0pc4f$8h&d)vixXTvSW!|^mR(Qg;^Aj9|ro(hN189+LM-2i|xNqDfgEHb&*QH zSHW>IoQ2KIJv$cT)M>5#tMk3Hj2HcuZ9;UCvW_c5KZ_3x967L$Eop*9Gv3FWvYnY} z$itP~nX1O)5C^POCmmI~k2ugo$T&OUJ7(hPjyG%$q4ORZ;kGt7ZSX(;e(rhTNo4XE z^smB&J8;vx@yD;Ct6QNj2aTqU;hLDx(+qds#7UF<6`QXJc@4M5_3rUFIS8SdkC$cI zz|IWaC^tX8=A$1v|2 z_PiIocc`pz+Yj>O2Y!|B|H0>Bb_E^!$U6f6(UI?nE=0Hfbfn_UO>?~IVq?4G0GC1_`cB-S=VXuJbYX# zutwLbh#`lxb7W_aX73>yRi^y{mbdUHuhJb|qdUHZu1=WCiuso3?z@GiognRm$!yB% zcE_*3?}X)PfX_98v~w7q27fyWUfLx(@z4--jSkV)uDN}*skkbSshN>C8>o0f^L98I zb(o#Z%$D5*qDlD{-JYt&2Kv8|^}1J@k-erN)M#iwP8Vcf~~r_EQBZSsX? z)YUB--zpid%35I@0)ug@U+Pb?j>&^8)jh@DC6Z>AC_-i)GY_Oq4s-mHMXac-3{R|Q z5;1cS5i@Dy&*a;T`WHB7)wbq~b$w9rNv)5S{bwDwOz}Ag3AyoJ1ld0c8$8$*M{#(m z-^RRe5nynsCRv~3h9sk=V!n!~SeOZPG=i>n3KArN>jyr7DK6D8YZ$XDL{%@8_VqVv`i0*sQh~ zJV&FK@nWB^IorZtWG*A3w69}UlZ>-++C-h?35lH4pH=X3hA-0dg^w&<3*AziYT%1c z6uFdwi?qgHGd6HIhie+`H>*!SdiBX~*&M#|1u%GVGN@`(gs&_X%utFTzQ?bRY4+aA zL!bS1>|T94i{qPgnm_~Pmq14>_EQ2X751j| z%UC5@n>HouD%o)Z12hMP&975S9DkcpqeSPMmO7wcq1Ct`#>tAOo>m^ZQy6-}USEyFyN2t}Z@B!@k1>7to6%td?VWIN z3E8>_z4%NDWUAYgpeGq7} z*+h9z(lP`LggASgpF*tcNxV^JDie+Drd3JPhqJc5I+O|i@I^lVx4)fl`o`=0mGAy} zWc%SDr;z|YcUblp$T|!`X$YH+D9y0O?cBjD&wPUa`H%fD-}irgC4PNOzZsCmg{1%z zUU)TWt%%iwDMKiq5a-G;3T7rE!|EuOfwf@zDS1XAIo3}gCCCStaK7%{KqLMh`* zL7Mk4cn_`8i1H`D{b%v(7I!d5bwgO1P~J(l#!1@1R2lpXzkY)M&wD?OKmBLl&T#lN zZsJhiMZNDc7Sh_^BKv0cH;GZ+ST9~QliG#aiFeDpMW5Lc;W+O2Y~DoBK!IprXeqzL zx$-{9+HeZJ5RRanKr=`7?x(r%AdPtDeFvLU{OL9P>8q@7zryL#S!2-O^?Yv~nUto2gn3oW-r z$Qz>t3>JwDd8Rd+guv2q4sg(SMP(b;lkus zzdq&oX2;gMVL+}JpF?3;xh|o+cSR4@Bf25_ZgqXfBJ{t&GMyRM7Ay=vnisYDvg2NHwq3X zL%&%}uRs0KKXG#V#&5oI-(!DjzPCn8=WW2Yk*gOajzHm6!7y&N}b&BwH= z#ws((e3FvXxll@Byvd(E2`JIZc-TnpXS8%6*DF@|4_&daK`g4ZA;DU9p_Wyd4?x|#Q#N#ts}UgDILn34!% zUJe=ib@`+cGpT9xnhnsie{Wzipk;a_S{t&&aTl3Ndyy0zNjL={AS?b;31s?N9HN5F z1YyZc*pH?c3iLIijmkdrF$T#7tO>!Eu+?Z&lah>dK|}hkRkxCfD_RZeENG_BJhhwy zKf?fE1jWLY`iYHOTqXr)hgIRU4#Lzhj(w(ljRwys&7cTUzXl(f?xh_ak;W?K#88Pj zgK;inOO*kokK)i*LMmtBF5sH}65dSUE$Mp2UUi@kwoQW%LkkO2@?#W3U&`1j#c35w z>|d*3jv{F1;xpmg-mj4`UP6!+H3cWBKh1%WQNm}DP=Yjr_u_09;8UWbV5sz;|4N~2 z#%=!X%C!iSOEZrmq%wa9GZLXihvX?2=cRG`C%0euL#MAk^^LkdzKoL|q|t=Igz%9b z5m9urLRHv%{406*Groes&p5gD8ma?L#COv+Z0+u{wX?%?z7xs`yIw9`*x|tkE^zTu zt2%_Ut!Fa<2QRFc= zJ_MEyn6=PM(1qibk8k+(UpwO2Cp_yl%(q}R&mv6c16W>RK7j}B5gvSS!sWXrOd6%z z^bGBUy?bBJ^zQqRt=#}u7kA1JK!A4{XF(l>P5UypC7qE~rA=szgXyG4wXlYSz)iG4 z`vE=t0N?%>zM4CBxA^A2_@7~Z1!)ECL&?6Al#DP2A~+byBMCJ04XPX5&V&5JfBYdn z@6)gFmH*>sLiYr!O*lCq25+HKPqWR>e4oWa44pjc9p0~*>~3-2Jv%({;adpX;a=?D zSmgL|hz{&*wZ$GM(6f9L9?;&T>Ur39Ywe1qml4!@yR z&@bNT3yGT&7F{~_9V`4NjEKFN-ib4}!JCiwx^Pm3PrTy5&5-E@nw={&@+q{vXR8BU zKFi|cKgsgsHQLDbDhh4f55OOj_Or=*83=Kg^MrOmViIP#97f}bHdtE9aRi=HVdn~u zX>8Xtkp0(eTZ}eWasX0&gm9eZ`j}0>X0p9UJJ||6>Pymi?AI3B5%s?mb)EEWzF^dY zjr!8N4XAc3jzTrS*6szGc1quOERSz9Y*us!9s3s#m`!-}8 zu;~I)1`qq&!Xx)hn9mwsy1wSwr%&0t=XLzfZ~n{t%)j`@Jo{h&A@mDmdrzE9bI}N#%OxZODOmMs0e|*t={K6RpRtr0GYDj3)nFDJZZJSdc$!_o;az*;Ug^ z;jt1#TOF3i6a9PHs{AM4;P92q`K^eb+Gee(F0Z7QOPE~s396_(2`hWijqrqDR zJZ^Nf&PD3G=l(JyiZ*)m^k_`^OAZ*%(`KW7Y$KJ@Npdb{`mJ85hF1(sV#1)z%D8KY zMuDISw1jg&tM1zSMW`fpp8NS^G`5UadbE6;VJhv^4u!pz40HZ5g6+(>&-rF)EIA?_ z13n&mdREH99J^12m~rLtmND5ZnicOzy`l(Br=#%LpsMtfA5e+qxrsf*4k|xaq{8Bx z!bqB&)_UBPGBbFr@Flj#G%oXu4e$lZjJBVw`I^ca3=!3L)S~(!5g^$J->(jt8Zg@dQ7)o;!={t z3G?k4yL-EA?d;;(mgS;jHl4~N58c7N_iiz1gsxX{t>|m|n91TOiVYxV^?>BLjNlL96PCTL&-N&0?*;#%Cvl=P1IrJSv z-v_u-5G92URiaCEMDv;*l3~p~X6LMMml}?&u4k2}MXhQ5R&g$@9x?zJXTYlI>=?%P z^G1Wl*oC0MSAjhc9gw7It^C!Lu(-%hL0X?$ai1dU2}g8gl$F88=XF@4o6{f#?G)nf z>3&c|Jc{F2pM|gd4K5}SBm_vlr>2h0Sf4QyIYUtaTxUq9jFPxf4UHQ-?~fxVf8SRD=f zlZCw_+24Wt?r}W)z?8jxL7dWc9e%dQ-UAQP-fzHiq;hH8S8S?CpmSzxq;s-;IGSO5tYO)aloY+Q= zE0bR$cppy+=r+uD_L*(%AqeZ`67R#Zfc=Y?*xK1*P~}5U9CQ8loVUJVn|tmQHVG~d z2m3IYHtg+h@zTqV>o=AhYs+tX@BhT}Z+jO%`$OML|Jr{;wy%mzcT`hIm6t@T!+XI= z@B8Ka`qLlz(?_?if6?6!JoZPncMg8R_bQ5t2w@k37^JFG)C-|%C@$e~E`HY>OH_Oj z5t0p2M2?CtsEyCsJl9z*6a=nL+9dx&iztbqOMX)!B{`vPBb6OW#Rlcw47;!PrwFeY z-ZB2{Xjs*_g8xxZG}LA!Y8tBtqQXg4?N!{K5+n)lCSg^^S}zq0FrA~Mtlu#X;>_P9 z1qsfPM^o@-Y+;hCDuH1dw273qLY|uMIK~FU;s~ODkw%iTJJtA1X<>R4om{F>I(p)x9q^YN?A4?gUbmbhBNW7k$7mF)9^fOYIu4T`% z4&Jf?uAwi+OGn>RiHM2zY*zam&;dI>3WLOP)y!-}D-X3WVZA0eeUWqCF`bRnkDZY& z0g>esi3%*J1WjyctvfZ&Y*1R@O{|rszcR|qQ={>X?r4IiB2eAGj>k7my`V?hWtNV=lk+WVB9Fm};I3Lc?L_x$k=RD#r zoZNc(>ld#+{l~RCy&I<*Eol>m9y`j)DsX@!%=#k}_TTu`-2Z7`j>wGD+qdz<5SDLx zrJYRJ-QQ*BV3+xP&SvdduQ%L%`2vqTe8Apb*x}y~Fq?;NUVN$Jsb_DoI9by+j;3ws zHUq=Z0UjNc&1%JJdCF$9M8wm!!GT^bmUNr2)<4N;;A$(UW+va1r6+2ne~TJPXh?+g z_`VNo`-gs%g-$vwk)k+H>DVX5lXu=V);jS;F?6oh6ICQ^Gu`E0R;eZ{pN(iVMg748T zmHJDJ0gdmF>Eq7mFw4-%CMUi~bj-)nX4;N+tj+;LSSm4SgEEJHgTMAK`I6uBMf{gL zCVbX=|2cl;XtpP`vPp*lp3%!?Q?-x)a46~rXlHDWgs=Kveu`iEsjo+;hxE%eZR=>n z*N$%zp(rzA+b4`c2~|j{YaY30N;#siC+{h6CV3kY0J~c=vwpb#R6dxo)v7MEs|%W) zyZGrJ{W!ny3)f)h3gS007>{eyr4N5~z%>I69+)#M7F@b-!q5EBdub-etWP@{H$h}o z0wZymZrN?pRLVT^FH&$G2^@5ZANf>T-lw!#xm&rP`n9t>Qs|wvf|C-&BH)@)f-&il zxL-wrEw8!vh(AU*H(*%cy$_qg8uvq*kRaD#fzX4RQ@S(HXu%2Ln905$S2iWyiWM~R zoO3mMfMm_6VP@HTv(H9WiE8ZCXsCu>#YYdoCV#zOp5XhC1ZXGoSlJ${-o*NrH5rO8 zndH2*pJz*x>M;5}(>U!<TYDF1Clh=h_68Vw&t`qV&fX4_w&CUL3vT@U zhQ}Y-;|;HCnN4B2gl-em z)@yOQmttb5L2w!qWuks)L{LPB^{rRm_TtI$j~v|l;J4p#<)Odhns(*;!AUt@1qf^Z z)oYgFPyrCX=gNSDiiEF>#A2hXeMKyy&!H)?awZ44mPTWH8h=ajDJ1#;(Y8Z5U_)Y2 zL-vD`3Qva8TvHi=o2mpekhQ;>`cIZ^G;vaRsvdgY^(gC>;$@}yvl?-@`{qvRKfi1G(i|RWYNzIqv;AOrDk$U<2Nn$4TGpEdLsN#Bx|ZBRnacs2 z1Sm!`HDLMKbZPWONeZV8s?;lLX9Ufta=%jUmg}X>fZDUAko99J!C;fLN}dU=63E3F z(4h~3p+p_iZjm?U0uYazw7hh*;iJ#Z`P7FTi%lN`qfnCHEnxZLe`ELFF9q2Hy-hgY z3y=Y%59gR`gB)C?+1iI&Poaz3p`<-D72=RaVB(NTI2V3%YsG8Np76r69k0CXSuBG4 zIc;IO2fc<8|89Uy+#r8z4p*)S58T&q`K~6+l>31JWq!vUY+bn@w|^%p)6nVWgiwB; zL^#qs(M=3Kk!Uo^27F=}GbfS^kECX^V`RCyG++&_IU zU+^_Q#A-RiZSOFk0k0!_nbu%?Edf;+&KkFKHy`|^Pw-uT@jvn>zU7Nx{SiEADF9jK z)$oh8bs-O!Hu>x0ejYb@=bI0Z*1^ydY7vHjFKvu|4o90QJ(Ed;Gsvy;7f>Qre_@-i-+*yXDen82J zF|bCu-@&Vo$M1HmS4;NxcA0N)vFUq0_|ZdNdTq{|-?YV* zI|Sbgn^hRl)=aqPievAf;o8k9FTQZX$!WtEzW4X?)H~nBfBn1vJN=FK<96xB*mXF3}5j^`mOcvly}JN9#0D>;+bih<3da9oB&GpUW&aG>sKV&h5l1uTTM1A zhMuX-vUK5Gw?<2~La7cYa%p+pwwoc#Jg&JC*FI?>iEKySSU2G$jXzi26`9B~RE@1x zyQu?lUWOVs_lyUA8R%K$`#6&mC zbmt_m&;5+`^cmfs0yP6?%}i4L8SC{kpK6r7;ZTOTRBcHDJuJ1+;EI=K%ckbp?4rt$p9qn;pjs0W?p+&Wi z+|l7&I6>-XKQ4Uc>xAW+?3WE1N>LA={&n`=^%^?4gs!h4ObBKEVdhSvlc<{wv^&Vv zx8bipgFm?*maNR@sGFc0WpRDQD=(e$?9&^rz1-8Ult~Ni1a`MmzajYVJLvnc0p^_- z;jYV$D|fdX?1!0OuLEv6XZ!MfOzymb%nt${yoX^GaO9*Wc&1Zr1JBO#Xx#56$$)Jq za#k`rnFWk78p%nGzQ?Ckh~dI zJo?B1O&g9DrA_mMX&r26!vT#9sDoipV*Pn&TP?SbjbW@v5yfeT%;)^ z&<>FhAUlagZb(?hrXBQ0S-0l_W_@ass2bJ}G))=YQyX(scqti`9mM)KY_IrvYlC}s1vEYp-cON3vuzhOuc zlSnQmB2I5zr{7t#y>~HG@^u?dZg1F}F4((xz|Q_IZPRf5<|#k-i%TB4e~;HaHf3u^ zSgl~_6`ZiYCCu(>xUjRwORsjk`22#a4?WJ;{2zatAOF68z>Q!0`{-r~^SwZ*RK*-}hw44N>1{qYzuf(F39+vgau3xvL zN_=T`aM2K6LS@W+A$bil^fFvx{TFCS2gr775UXfi%EXw zJ}kWBz$elNls2sqPKe2~(-qpJFkgjMH6C8=WQ{;5Z3$%~hQg}Ff6Mp@7tS;(Wx)S$ zSpu=I#9%w^HeJf1OVgoC8C@`KRSmk#+;vBFe|bQL$?WWZ=|C9s=y--V8OU%uQ9&q~ za--ml#AQ0#z~W5bTECy(wZ@AwW1wSttLf>S`}KRa{fOA4D53*yc~8%@V+~rNWgef5 z@Ku!=8$20?)au$OxV8hx{lwqZ^#ZgN^3qjij?$m0U!pUJ zXvHfkrcBDdZ~GCbHu1~&Njq^T_)?}fb#CM~(k%3u#%*@f77=MCI&|whj&3~nzpih- z^bKe?!?_N$35(z)>fU0#QWB40gI}F8x#P_|`kwbPyYp?FoE*_@ZZmNW&V`txX(w#$ zZnM1?)&L$Kui4w#;!Tg<#npS}I1z?HXmuRU!OaJ5;UvRs~oBeFy&+w6PeoFo}3Mj61zpfSsvWUPnTzgT7-%KQiN zG61rRmK~nDRFcTgNkLfdDn`|Ke5K7|;|y&L*jlcohbjjHt((o{wC@|iH0_nld?^%BfEE?>wp*Wf|_-eK$!6#HmGlr ztM7q+PXGK*bMxab^4wEBFTXl)c*`?%FmquS|E;Z1sVq(G(}$p61upEvwVR49)3Fv@0B?m5qr07{^#{&a`L;Dq%FK@BE zBOD+0&`by$8iJaW3PcnaH#?k8)681bL$PuxqsX8q%%~Vn8`Geo_5k%)qW-tsr zgKum3*0A)&dBG1;hV}D&`=9&GeCgLbN`Lbv1A8>AY1#pikPr<^2g;&$>lY>+mf)%U zNlA7k!JABj@j)fd>Yu0kGM>|{_BaKSc*|5iB^#Ff3Zv+XPA#+7NnuLl%bbKv{(wrZ z2oMomtkwYVsXkh7LU)+ySrP%oCoeob0iDxM+YC$QaXYTe_x4`YY03A>ygYi<1Sr{? zsQl!_cggM)SnlrroG&(|L8em|>E#oGe@$P1=%ZnbA%< z6=z_*IHX%I+1kIvY-x>}*ZAaInYoFD*I6@s;27hxxUi`wV{WAAL97jbBCP7sC>$sQkiNRq7NUB1Pv0 zubT&MJoAyib#nXWXJ38j&EGzmZ9hA7o1kq(%%Uwt@TfS$=hmb1hD*}*lq5EuW{&Z~ z^+Mrv-YdqxPP`(fzfzHt*dX+umM0|EF%xLUX~^~&Bgd&N731F|c}h7HHQy~O7k?`8 zY34~A;AcMx(lUe0C#2v#*>5}kjJDE-)kSG&X?!T<d^2C`u4%;~S$uP5+f} zWSp7biO`nUs{ogZL5%gtLUES1Vw9}OtePOPn)#Pe5N+|9lyQdJGHZD^_DY~h!WCm= zR6Lg9%Xq8DS2ElMluEb@f(k6A9aS}_8YEZ^{3OLu8|D&}6f~>7E@`Yaea`!x1>jwpmfy#2!CaKkT?9xaHMg_2syv=;HK<&3XkgkY|Q7LljD<+3#R$Q!)}tFcTc55;zU`82GCnGUFyrD0(gY z&3CeqGhisA*@2P}%=eQ%%tlb6sx6kVtoa1;%uOu-lHboPY5EqjIkLvT2yqyjYMANQ zxaQfwKC=FmX|sWW9eYAX8J`yYVqvvV8l#-rNUx-KLt?^C3CDyDitqb;j9BvHRa#`S zgLX^Q#ZAA|9s~aQ3}SH$y#|&YxE?#|*U;Pi?z~_JUKj-KF%X72`mw^FE$qXRv z#Smzl&bm&Y0omH8JAQ>f^k;vLfAWuhCrlRTFreB(RUvei$BIwUBRF)uX1ad|4_uw| z!RssBbP}o!G9MFo8t`%E>4AH9K&El${f4xEK(!_~@}{cb)gijZ?acY1fATRt`pd7; z?A{YBibzDH;^NwK038I+48MAoul+r5;ZOeQx8ZMJ4;umckmzvYg96BVy+y}2)6UH8 zS>A|xrj}dKy+{d0gByI{BX_{o)->a_*xLAhlEpm6qz5DKse*WP=y7dB zp4CS)&c)yggS#YaF6->bPw9TdQSx=e2F0F!b&ST70zx$aCgEyzF=g^bsb~>>wGeKa zQjumcP8Ac4|W;`#WLAzv!;ow<7nKhm_#A zd}@5646h^t$M13TfD#`i+LGT*?4T( z%o!&GYzZuMM7VLA2{~FnW0f38`@Nf6FaI&Le;6kNVYefbX-XP5V#^8QH~8+D$>mSuk0gP4#30WbjAL`4v#)^2L~4>IH2#8>D=K2j*kbPdFGgxUp->bfk_)S zaMB?hpQm2gtT!x|3)ZV8=nyIlT*GFyWVJY?@4Fo5gnyGlAL*xTP@v-!S4aF= zUep*wd9TsI%_^c+s2C8;wOo-#GLV8;w#x91=u+P1oEv6Lc2+8S7&=%ZL0;D$kA~EY zAOUHDBRbgycN-)uW$^03P0(KW&@=G(eZt{dOb^Rx&;gG{#QuiZfQCj8XD`UCv2Z~Djly?^v;G<%nm<4!vEE(Oow zq=+=16CGdaVD}Mz&*bo6+MJVxS%5*V?dfOjUw8SvwyBXkFo^p0D~X z5AnYD{T%IZ31!H-q%c@Vx02ajTE@Dqd#Vzu?wtDI5ta!E>4=SL(=j0ik`ZU_E)Fj2WB}8~e<+9!VO&+(yiC*UAV}6Ym3Qj#->~G!H;aXadVe9 zzj4lmJs1WU`Y`6{1TGv1Z=6rLxZm)^)5lD=TE6<5{%3ya?eFAQ{=s+Pk3NFiz7v`$ z;rK=o!7JiXr2$cOqW!RZ^J`E4+7BEbUi-c~?|J=q%(k~*?z@d6Yyeo20A~M(^dAxD z!M7+V(JC2R&rVB9;tQa$vOp3MUD+oiv4rXwo=-^xrEEA_`2=EgRPqbP0dggZv66sf zcFQD}O{$4)(3lqM_=x5Ed@np;L9iPhgs*01o%FnED3HVPu$*ZQrL?H1Es;@R|gMYpPdDQ$~X=+!*#LiaH~a$j2R zrzIoV&rMI7eF0M6S>R(yqt-+u%}fVJ(&fHvpY@ocKxLk*@qL!#EuPEA?#3V9k@1Ta zj1@jjyXK*M&EmD-Th25uIbk5x`?k;V`08hq@pL8lmqdqfhOxMYaO9LDGJxP371yvl zx$%y}=RWlPo9oYg2lNj{l!T4`w7`?*os*%{%@Xz7TzU5&;LTt5&B)djj&5AX56W~p zrERA)?S!3!JuY6pi-U`I&~FC37an=+3U7Jq-R$m87`lL`$(FG0JWoEoB$kNC%5VQE@K?yELq$p9}pdoF#0wLcEp|*M-&o%$|hQB zaCgSQX8hRxd`?>AAtGT+eTS-#8&xJkxeyCYcA=ROPR?%eOv62y@(WKzSt7jF4@&Pt zGT`P5ucG}aG`pZ3NTG2d4iO#)+M&yjvVHZldGIY;tWLw4{?!K7oiLvW_ucRK)OSsJ z&u`r4ZExS~F;-|ict=GK`*}F5$)@_#Pu#CqIMqK#RHzg66 z=`7hsqmpw*M3Ptuvjrx@GzoXmpc#5qx#rVp``pP1(&psFpO|tcxt64G(2sK$Se(Yy7KvLdA$c9NjCA8zyk$+m@+z&$z(9=dYW9P-9@zLVeam;MgBZ+$QRAm0554e_U;6hq zUVi4ci$h)8D5#T^^6#`~2wH%AbM6oq zgPToFX8f@uWJ}J?%yNf~sHv7uh>#=+}yGV7?uk)6Z%ch z$?*}(cd9ZC0#KkLmk0Fi^7TN;Qrw3?(a`OWqQpJcJp5Avj>EDQiDMJ%;~{K2LI9XT}YuCFeRSz%%;LaB80EHvx2XkI6!w ztXXcr;@9fp!n0?f($tiiL6~I+Ci!ZBtGY1*sBM$lziCNCaoEf5+}5VV?{11rw$b$_ zj#>}~oZI4k&o8;T6q-ipH(|COuXur@>l^g+MP#;(3?;>v=&2)Ii3qxW7TLSRBX4^P z*FO47?C%O&JHq9=9CzN?u(jf3a(PgaXs>o~Q|C3G9zT{wdbN6kHn$WexT zgKI(8$9VZ!{^Mb`$s`&QzB*t!7z|rqWrDs7IO>T_4lTU*o_3+ppohf8gKn?|$MLbkQPi zj+Yjk!_9=R`MS^Md;jtmLH{h;4~TOJKJ#Z_RpWAI9#)V6neTAd#TmC=*x+>%11b;F z5e{bY;TXK-5%)a2$ItxuSJ1d)Sf3!xJf3Ap#ZYSM#b{8}@o_KPG9sD3j>{Z8*Gni}_~7cHgtLyU%1c<#f5?S3kJn`i&hPdw9x)-LL{G z=^rO>@q**6JKH?+a(ZMG-fs zU%lz}^B@1glUq0b<>dz-{qtMf`_K7)kT~RkRF{%u#`aVnmuYEzk%FkPbcC%%^Urbp zei4M4f0XPC75N;2V(?yK&|;@;I9@pr23i>Fg2JD5>HJyvvTS4DH>?uB`s)3>NTT=? z@lI7tn|*}*+9w&mS*BpGLB3veV1Y3uwZ!;fR()FgSHMa3_MA_Ix2>;6K^rlV+WYZ> z?U3>P1ccfz=fiLYyy{uW$1>znN@GJRZGI-ouE$gqLAoqd!_16bIB%ri4QzIuMinla z%=6jtN$U5^N6!7OMoE={yWG#&ATf8!81zK5d{56lqi1keL@az)a)u>?Ti_}0ilM&^ zcteScgw$x))z>BWJTK_BW{{3A2lrLbjSa5v%CZdj6 zGeKO#WHM#GwZ+!{9<%wJ^=d=w8XkT0DtBGoLJ<13GMNd}xv)A_o_Y3^mtVO}-wolM z^~RxtXXwLmZt9iIYRT#1guYwhT)EyP$7USD(RRlIs309N2XAw=#4P* zt=i{fkw~*AS$M{o>vYASYW&?=1q#m=eW^wVBm!EgWYs9Av3^SU4c!-In;lGJKeGQqp@mI^)E_g3+>9o4<$LMTA~)V#03AX? zCpgno@MJ(~pxuM@QCw>*G|nS3w&UEwz4=>x@(_ccK>~FS^{E? zcn-j8S$~g%{$=0>2lu?5-Q8d2(gnwC4%_nq@jYD+^9$ST-gP&ViS=Pkopek zha}peJ>#EAJ@tmwFIJ?p8<6!V#{L?6kPTGf$IKVSpk|*S;L_Fip%5qYd;IPUP-pCp zfkTwW4TwxoH)q(a(8K@8d;jnkaNk{9eBmGbQTo*-WIDz9j@I?4R|bhEhD5#YX=nr* zS>m=I;3xmx3w->8FY@@??m`c55tf7u)OBPv|E6{KD2SV*$A`?e9slZ|eg(hsbI6@4MWJ*$?iZp8(jcuv zMHoB`s`Q;lhYew?Neg)GyM!A09vxN)!qqDmnYcC{Nf}qu;h^6Tsz_o`m+@7SzZzAB z4n2P8ajqrkXw!XC$0l$wrXz(t@#!-p66aX z=H`tFk3F)({r9%CqI5lB0&jq+gEu@p2JDl--F+E@vi&6PrYC1;6pA5L5X|9 z#AS1pipw}lKYZp#B2Q;qnuF6)f*;;X$?P)0S}{OYv0`*|>e?FA6v#r_r$IFCLm&jd zz)GtrvoE^J5YO0+lw_iMq8N>`Tr%ktJ3f=>GHulD8Q#&9L^ZHkA0&-0k2O{P6oLqu z)D=7#W{cCSG{E6 zl>B}Xe4~w$e_-{ih_w<_4;KLQIEqZ9hU(uXOBEGf?oVr6R6{74sWY?c={YHZaW*K1 zQfJEkE9WP*n=(N4m{R|R8R|BSvLv%vYTk|~nTF_?=77*<{;IVvrkkpN!y6UxqI0+tObW&A$36#%)BllI_FU~-LLC?W^xnH+kgu8|(cas!R9#6gzj6%w0n+#x@ zMX1nEp);fQOG3rKFCft|PxvVTl*MO)-8w7r`NUsl>^a~k%v4A$8OylJi2=z}i6~On zw5r}ea(M0eZ(Ck}_RHuu+cfdGTC}a?KFN6mQv4dfS<+s5JFolA-@xqP0Zwio;(br! z8k{uX8m6-uTRXdKZ*L>wST8&F4|aL*p#yez!fw?bnC%FSDA!->c=Czc93Gz1w9rnP z5HR@xC6q-Dea~XKWVKwNI^fzC?K{?sQ#R`*I>eHEDb&h5WA(d~OmD@P8jM`n+^<7@ zoH-mjQUbY}%IcVyY)lgd_HXGVz?O~rXpfHoYFbKA_@gXI(ZWNv)igHagqIT@DC1A~ zi2eJa597>1zgkW&JV?-oNjDm`7)O+Z)lrOh0KSy&hZ!uFd%db2);SCRZ!W!=~)=dYC*Pdqf z@Ed^%Fhu7sVnp(gvvL(Vg5ha)?tUHZwy^G@UkUq7!_{}Z9=E#-6NfZmE?H^ zqK7ITO1h=C$@yMl%7|1IsWwtAG%(an_oM8T9|nh%>p6Uh_!lQNzhwT=f`2LYnGxS= z)Iq6?Qvh)uN6!#X2=If#(SPH!zUs~V@?G0}!Por@Ub~^l_8u)gUgBwwfs(N;hq!Po zpPxWgC%%qL_c;1nFXEaO@jc=sj=n*B${dXtCE-27F;X{mrH4^IMP}pgR1a?H zorN~aqMY$G%|}aniKh*m<=>ho14#8UsET;$lV7#(#{g_Hp_xvQro(GETC(2^Xt&8h zWXQY?VEI-x$f{4L!FaCTwa>xMlp8C+1v{+*_zhvH(7Y_8M1xI-lE9OY`1XB=n>N(r zFve+A`DuOWnuI_qa(Nc{ ztPCR`6yMg4%%&uhp7Jb?ZZLEkwstSjG*gDYV{vpuzwQ_g_SxRuVm6y{vRL!}U*GWB zwH;pnx-Aa&!xF1}phFLL-_f$av%^cT3_SJp3H$pO`2FAdt^CxFzlV?f>+i-NzJ}Yo z18JP31c}C70#&tzK}DLu`_+9np84osUmo53(#!Wh{!P=#>?8fKA+96Qq<17Hp0g^A z_NEXj9!D!CkstR)u!;S^ZyLY5!0YO>ZMR%qbeEcn+(OsvbE@Gi<1-XqaJB8s6(EII zY!0XR@2PFgyojZF)-R@5M9gGe(jK`zsTw!KGySOMs=x z37s~xRME%?MPl@`ofo0W<@`3_wW!T-Nd;35JTokH`;|i#adswCoN$ownO=}H!mT-2 zj^m8a3RYNZT9(R!*p5r>$|uLq2<_wL9Ao&#AE}Xd#*ryJozQ9VFB#2cbHI9BX9E4v zZ%Y%~zU3cleFOdr9&$oS%lGhHS|28H-ICy>q0IhA$1WZXn0gV{AWd`U^7QccAHDpE zKir?(yjR2zIDAk`KGZx~*2#ap>iPs^n>*k3wcPuTFJ`k6j&I(=HI9j!fC$ZG!el;U zXLpa;Y#TrHh&b-Q{~~u^-DcVfegJ7;+CtYUPd&Hbg%@wrZ`MpEvG~A;l1n5UF}K-l zSS(NJHtTSNVAHT(Em@u(GjuELhCA_Gvw*F*e??YfmK0BVsbDG5` zqbJ!IO#yo{>@f*g`=!`YSZkaMT;+Rp4zDr9fgg+n6f0R7!g`~t#6Lk{hsp*YHg(E7 z7DstAPP3+y5G;Qte$Ga^%q%6tYxR{+PDyOX#WBVf^O#fns`02K18;FkwDfO`x=s9+ z4gbTK(s|b5v?Y!5tOj>+?5TV}!#Z4=DM%ZFZRd);kty$cw&A_MaRA>Tgc8*-Qz#t0 z^b!|k5&}Md65jO@c1_N%LQHCDKfvY%<_E85dw)uQ+@XUo3_^3^4y2thtWUsif~;#B zCJ^wmj6-lWYLzoD>S2`n?LVayV%J6szALx1xnaIb=!AkqfzmnM{!<3Jlk z`Y3b7I9cy2VJPqmAP&Dc#a*26i~sg_@MT~BGyLpNzeImJpnik;1&_V%ZvOL+|1PfF z@93^Sfs-jtd&)*vQAd*eNTc%&ZHl}n0~_T+ZBa62!T2NbPPaJ1Z`QQidq^`0`csX)GJORSY58u!B#BV=zJL^b z31hJ$Oj-L4UG&}paX^VO!6i6Dc zT8BnOJdMcm<||+D{PEF$yZrFu|J&Y$%YU~YHVaiPCO^Jai$~gUGU-gnfqf9R_*ywp zCLu0QWJsJ0%DAibc}3$aH)csd4vdqGCjKk$X8J)+$_6m>99mg_zOL-c&kNWpwKCCJ ze75wwO5u<4+YBx{P}KlQ3I8x@Bl+3l0~ExhLpiEMi56UB*h|YMCK>rhiH7mH@%Z!B z5@w(led+l&qS6R###R+5TE!i2pQBVMNHT-6f}cyF8NHwFv2h%%!XLwDDR}OuzIS$Z z{ru;x;xBKgfvb$EMv0IEvQfMB)y!6g zQmz?8oZ+#f9x+)K%+#M^_IH!4h{m(}x$QW9VFX)zU(16Ao*J&S*_}w?xAPEG^-=MM zlyT&r<%in0Wz?3GHqN_W;FR*+;%kKO^I#K;i`+!TAT__9^Eje`;~<`FAlaRUEyFIJ}o)h{#M4DhhypiS|pG z-1ROV{tdr}$%RKaJ-US-l(um=5t^o@olTf+Z?nC#hm(eWGq8WK!@c+KbMfK?KLkIa znS`NSzt;22^GDpebxh-+nS{*=ec$6XXkP7mmdhop)dHobX&V?ki<2YPt5b%)L#lFa zqr8#>bq=2hWT(XsL)_um92b|ro&BD5fE0A4Ynk<}#nrma{9L?gd2=lPY3A5|Wc)=r zM+b#}16Z1mEDW>#LxIQeT3FgB*fWevn_BlVQf#@(A}i-2PsyG*gZqS@;#`;vKa`i! zcdMl<1k?@@#wdq3LKR1zS%@$hkF1O<^(mmVaX0<+ZYT#w=6vLp4U0`f+rYXHuX}_6 zIJ|ZOn*~hw(DhO1E9qEkVtl!vn`<;XzmbDW+uS(1jf${Y_vrC4vcHYEaMparZ*pid z@ufI}hWdri#*T(%)bwE5N5ml6I#rQRBsoWwj<+SyiRQ);$OxD8Cp@P$J?)yxA{XZU ztQ#%gc^ZkEsj1*`^w*x`&PT8E;h+9`-u>HtkdMCqCbD}O)gI?OjZ^Y^esOqh5fz#i zUjNVq!j9fC(PGAx!O47MWwYoSN7!gpT19dAA#J`Ib+*Q2xtNnEqMI1{81Z%X;FAo_ z@kdK`FKzQvKlc0h*sngzul)CG+_-(4H@)dje$yA-2fCrZ`6RBLB7O+{g7Mh`4)QqC z_+tOXE^AHCGoblGn~We!dx~C0b9)JQWg@NcY$=2<*EIvLnbx@-O%*?*Wj#4)2;&^9 z;f#k0AMs4~cEWT%3A5hnQ3uNp0@+!1&6kH@rC_S!{Wbq&H2krmT}2YKvum-+P< zUI-O(K^um3{rw6i7cyzf-U0>LNk+WyPz`%VwMs(?rD`trY4mz{uIPA8SFG=um4(BJGW07J zM;nIClG*M>ns$r6-*9x;vs$lNZ`SPW?=qcCI9;##(1+LDyt&U~k8ZKQEA$;^2Y$G) z1E2P`IZr>+@YIt_F5K||U-PYhiU0m@K8yGN$lt&pU8C7MK=I_IO*u2H4PI28>xW^r z|MJH^@Lflj@BQM-_dWV&T-&_g_kDOUGpS`pD<6TcQU!~oz9JEAVk95qXA%QvX=~~z zvVF`ZH9uz6PUeLq6PkQwirP~`0^0g784h32l6@vaQ%sFu_M0NFnE8-)fvFd^F-xg7{XfOjO>bt*-F<9o!4Q-U1wjb5*m^7O4iDd)KEQVqY~mr#@8BP z`%$d3VrQqKvdtb+yl8|YUs7_$yJRaFjln9|l)Wp@2j&j2=d4hA!6GR(l$859n5^(| z=Gh`?1>QLRa$oD_A{_SpPsZTm>qRTn^vX>~9x94FWyB&M7&0bPR6CRw?}ZMbZ83cs zm=gVrZO*7RtTkGpXt}={W4c#4y$0U#$Fje5X3jn-h5i+OZ2!p_3(qDPT-w<`&ispu z<^K|be-|?W;uZ8T;q=xNrvpwzRU5PLk75a;L!|?{Izrk@Tz=Qr zapxO8pKi0^&TC-X%>H1YztJ?_uX2s(4gnpAYJu~OLhed{@ z>}hhQG!mf5x`KL!VF*XO#aW-CKhy*;g$wf1knA)D5~?{uMq~Tg$f|LQ%1_IdL{JHAo;UJP$sr=IXv!&CM>%+HV-)A`1XJv-$b@9!0JWPW^ytVM;Z6MNk*1<1HA^Yh6$s`eHb zDK<$FzFE^Lkw5Ypent|i*kH>Z)N)4VO&=Vm==cqT;9ZN{e4gz~7y0F%_*%Z? z_xv#b`6r%%ox2g~V>x}08c)NZGhBDb{SP1Tn?L7G=<0URseyye8)WDot(N+vv4-`t z0@9+|pspn>1xY$-pqw6(S(?Ni$!W}W5t;rz@TqqJ?i;7HTOZ}|cih3_@A!0J3f#ai zUZg*|8Ek{^X&VLU$-B?z;dnyDmvLZ5PHU)4NP#t&%u^-TVr_rr3#4(D_rgy1=2qs3 zQVF7ERw8`QDz`Z9Hb+^ifGVt>;dhPbtrTW{I@pDGx6&F46Y**tTmOs-E@YkZ!YLzIO-H`5ub0S}oYDJJ#zpyL-FL zwzfdvg_n=GeYoNA*X?o7-3=T{p_+~KVsyKwIVf9c|#SN<>cexqI+ z2@1=XN|?Yr#fwi^NWp(xmO`Oj9i#?2SX)g7ORy&uRr_#Rhank(GlU;G3WZ>~y3#0w z_`X!_7rmE88F?@9tYtByPb&D8tQ$rgTZ5Lsh*+%p7b^e6vS^7bLj$(@!N!U;n$qZP zN~2T;*gcKL)jFYH>n|2~EKb@?pZHG}@~ls5L|WIYkggt>fxsZ%;;|x0)UslLG+D;+ zr&9j8!8~C58N-s;zcwVJz7qdsMjwwSAtn+(Vj>x+qWcprB*R-0Ds`V_Ev;1JD@>M} zDZ-V0pBYmo`e=rk`nnBtQwRA^n9VA zRPd5{DI?B&3J&Fy-#6{&-*G(o6)9iJ8d?q-QklOw9xkvzT0W58t?@C=X(qm_HoD8t$377>&77onGJVg= zQ!#!~FB_+;aE~d`SB!iWZ4+kthj3~_EH$?}&4@tuh^=bKdN*T1iz&ba_)#BB-{&>&A%k-W^43Hhn93k{}_iSCs~S0F3B0mx=iEdYRP#VZ%i0OD#==KC_`&5 z9tBwBUSqpU;say)RqAS=y|f^))p3ElAxrWf7{v|*Od2iX)SnW!p)#KIdH4iWL} z-fL2JGq~KoPBUNg zV?Xr!`J;dQU+{f@|AVl55jP2mOO+P&Q*^nanJ)MT-}&XVdye7eBJQE0rUx}+Gr>zl zWFA@?Z*m}wJS0Yyq`MN%HPSJ)YgJd`=b%tPdyokXaV_~q(CgPhu7|h%24snI%FqX% z6d5wjR5K#UOEWSp4E&ff`N$8}j#fc}m3Ni!q(aP!#plB&XyK6*)QnyFkv%d=fCPMn zOCTj^L^O^=Ni&h^H59f)-IF#!ueQvvO{w|YGUxtljWb{XfIP+=u$O}9d~h|92ILter8EEDx7?Ag+^QzL657%28as(XdLCD96b zUI$Vt9iHZTqSI`h1_EaTRSyobbd*u=8b0u%~qY-Aif+oy`P zsim^24$iz=-cR}_|4x3zsC`?i59NLPNjllWoOZC*z2R< zxmNi0x~UeZHf*flKg+90L!5oC1TUk(=P^>jF7?I#Kl)C1Jny*?TsfdmN;U=m;kS(b z4=f>qbJ|R%x;VM@dv3k(vA@zEU%N{h4U6%CvVHtW1BfCz;MWVp?Q{31|30p~@pD5>kZ_nzXKd~6vUhQx`PMF*RY%)2yza3(xO`jj(50){?2bb0nRTL;W|3P+<5 zX28o)e%4flHCc8ByfkC=o#7HgOR&4mO4cPs#{?dUWqg|SjTYGAeaXC0vq9lE&11~^ zEb9Z0A9}p+<8J;|-<9NT4kU6Xb!EetpL5I_bw*lO8Vp_H8}fKEJXRm2*`EY>xkL3y zc*E-0h_jtqyu1lmwxkT={L!XN}e`(w}}wk}=46HfLUJZ#oOm>f)j zkhMQrf}7yL8+~ksnVb`njHGr_Nq8E!eb+c^nHMrSW58ai56#b2v(}c;(mn{LT{9O% zKEWWrEQZ13wFrNzuq%C&18GN3>m1^Nra@P?L4Jwv`RiZB5e_FogmVq zddS^ZF7g9^^DFtRFS>%>d@i;f^o*tofZ}E5p@}I;ufnx722osEZ!gwr6wu3$gzIuq z66urkF8~hFzCJtL1^uNuAgzWY5@mqKhv46ISn4@qAF6RZYH~ib(BJq*b|RnxJSVi` zvk1cws%2DD5+!Y3Cgi;@07=0+TDm3$I)(P(zB#rt!IsQqenvnYgHLOx6{jBOOa((_ z>ofb9@dn!{?F6p_vsuKk54K@(yb3nRB&#ZdWj~=obO5;x%z6Fm?_x4>cM>P6|ysWKC;t4~)p`Feltq(V-P=m+Jk!tlor*z}n#uMauH6bYBb|PdpfuvGhTp`DCyo7+nvG1fq8CJa){9#V{fe#K zi%e!act5aNb{zE`L$_vUZ=d<@7Ag%-K7Yim(+zKW{VsRk=@@!Ny@-0zp@*HR@Yww= zd)wPQ|H_(=eQe;(pYvHf`YCVXNB-9T$@LHadt_$^X(uJQnWalbL&n(SL{~Ro`I6@k zZ@=@>0}p@89e3aN1Afp!2W`cPk5Z^vm&ee*X0V9ESPft-T|q|nB_z^0y{XthIpI^v zYl+aYQJ3Er%BG3NC}6_c3X+krAnp5-hhQjOD!FQ&%=eRSF>M?3R?L}UMzPFM>C;G? z90w(yHnDDI{leg--X;7R_a7dueU^IsiN{C#H<o+QtNCS_$T zbHPu3_)O-}@Ok`QjE4QUtdljty=l)nmvsg-wICG(CugnLDXIHBlUzy0CaIj_=-0-m zl*^s@h@nTt;K?blxG~Ovntrn-mb%?a7A+2?dR)!@Wccf3MZ9D2WB91N6NEac;q3g5 z@tgWHze(%eM-D={FV+2VHA~4MSY(KbeN!u3z^&_3R1PZyY1y znNCA_t?xbk(BX%HVdz*aPT4G%D4yx8LH)q$^qBQ(iTWPIhvjiT&GcB_O_cy6#sX6U zKVYRfy%*7L9H^N7G413{E35Y;Z}^vaLd(6x_nOzxX?C`1Fhgp#=ue}3tP_;kCx-PJ zDj9}8miZHp5;O0V<8`QTRoN+{N-c8E>MZN5)t3`|BTZg{?yN5helymyJR18kR_3fLxM{(2zZr~fOtxl(nphcNST6HG##_R5 z(v4X+nNmlie~RN^h*@!A@)L{>t8BTN{_13J0zR2@V&An+vb=992jZJ$HYQ4fYGmm! z6Wqu^SYzFWoK3%m#V_&4{`ha?y5j*X`|M1yY`P$$6IFo}3!_8+9 znH0Sd!?fg_+9fn)oJw_sm0%nWB`i^Z>Nv!-JAQfwjby5MJ}r4T*ISbTkqt1x`zF#O zmGcjX8`4<^6aiQAW`YslnHq^toCU!+`gzB1Q*D|_lIR^~8NF}tzKOCQmS~9is|hbU z0OiQmYX6~FMjzJHyRac+WD)fWI)tMSeIGW`jJ)U7g#-iyd2<~SH$cqNo{nzJ@?^D9 z(8siMq!ngcq3^T`VtLYq(`MWxZWjX8;s^ZD(X_LgD~ceV;T7wLCUFVknffa%QoGoZ+OF_W z4ro%RiQgq(LA7IZdWf5Bn9lcbO&b$*zQB@RPxKu5Q?_~`u|}TBmGV7zF9AOe=r>DF zZ+FbL_n7bOGnq{A{f6V)x9Iwgo#B9;y?rLL3AayH{PG7nUia`Gk3KY!iGywsS_$B8 z&*9#?8}|0Lc>cvTPkii{3wIpwb>H%B{M5hvG~WL&{u(-5!|h)ppT}wuh=#H<=X$T} ztJk0U_3u5oee(;hKJ@sv%w}6p44rQfoFGFQWz+{EDyri1CbEJ@)s-bQi7%2abb*&k zg`FlfU+MCaP%@eYR*`2BHF~P303)asEay8BDs_LgTaYdXgl480 zttrWzRf$1iw$R|X>?0xdtkTN&V~Yh(=Y6C?fK7VjfHZ>;1t}_p5-4YTmB&!XG@98r zeIz`M16iYvGcL}+6#q?Zlam7Gh^OKg+xgMdhUu@cmw{I*C6XRc`+j;S!Bu3Z&?dnW z;jrUP_^ELs`MtWIL>H;p(C!|Vt;z$jW|^t9h!W76ak z%9u=Gxlo>dZq4&A9I{$%a87AlFkoH>20!5Yf%R&|YIRE2Z)jcEP_W;uSsWiS^c%!Q zedWuU?m5tlvY4u4q6Y`6VZ*yr?oar?GE!prek|}=W)sh+EN^H#9c8DPMx|Xr3QVz+ z0IHEH5u?J4F0-;R1}X8U4q>)`=uA?h%=N3$ZF#o#obi=)vn6?!6of687YMug$9+xC zA}c;+=#Y)2NZ!S|sNE!+StFGG4I*vAIz1oFV|uEnnz3CG!4Fz!lwmBoEb~rI6!{2a z4A3QPN||R}G#%sA^6a$@n?Y#P{!AJl9bmIK1?}=Cf=Z8c1fdv`{nl6^9UJHmnI7EB zbmkbkfUCYs>pG2o(lWlxH`(b(GdEK3obaE6eq+y7O42yuSCHs0Wdm2)xa5>&0vNR0 zlU^zlJ+_hAS+ek#2E(2OVJu1CW;zwG5^O$`#8(9<6+v`H*lB-_9=?yOk3GbdF3_&5R z?M--+YS~5#ilQdZ^m8kP9kxV0m;%w_dZof05~I&M*wDPEP37J$*m0 ze{jHbHl^zZKKzMW+`6@+Z+QKVT-Xb_rG5zfHf!L*wy^u?oI5X0dE(g>AO7_XpYz+l zgtxr=o&3x1`O7Sx{Bhj&J;-btWHPv15j^kEK@d04G_tz+>hF5)!>T z->1W{_JeN_G+E0)dJ*w1msF+TGAt#tr(Gl(DWyuhaHh4d0h4AAj*4H(E6GOXAMv}G z?<5Z=`x-jhqpLh;(h(LaL%F1zbOev}Uo@Gp+>T{|Y=3f|DZvwDGh-xoQ^SM#R>zyA z>P-`{CJ9z#B@HI%NF`N2XofS$sy!LW;x7*_Hx950m%NE5j@r}smCGqr@^a%wRm_Vn#kyi)MFSqy_WuYykZ+J<2frtBY4fT7S4)csoTl@ z8BOBi{e2|Q^G_8qBlfC;`*9|oRtc~oq2r;NEO%a`(;RCparpc%K8_iDu1 z;G?EV4(^lD%wv!Ulgq>k!B-6aMM%5+i-2)aM2BpE^ zGaKMkG~hS*%?Xo>Z{xAg`=6L!c%0)~*BJVarfCs8;u^MgciGz8Wp{U%rfFEL2M%_( zdEH|NT)G$>l)j6TrUEx^cs}vu5!bFCgL)>Du-~Bi9H#nKwEB(L^; zMl)xHJJfhN`I|ZQ2TECZ6$DFh=#oJn`XQG1_r!y!i^C~tNJjTseI(gjN4N}kR>6Pa zmDGODvy9IfHZ~%A6OxRfQbjA&&6nN{eynp?v_ake7|GEv3w8TpI6ga-VJxn8Y9gM? zVC|sdd#-`LCnHq^+>D!x1xqi)Ln&ef2jF1nx^P5bJe7mK1L@Jt23$)%!c&U8)1T1n z+{gC8gvG56anScMNq`v2<-wIfCvtgj#%ge%&Na6BE4{1XeuY2Vw$+vr?VvS6DF89@ zlr4MO3@^WLbg6+MJ8O18md2i3VqWMzp54xa&F>1(NL=}(K|uQ(FX4xmk#>S}A;=V` zNaGN%VWv6m50VmjWSw0EUWAyCOkhPBP6Cs7%*vnD7xrUj`jf7bIPfG(s$s3MdI4#G z7NsSr_=Gd@=`53&jncIFUmv(g6z4R{M*!XKM-x&ADVQkNE&7X&3SA}mJ8%QeJ7{Mx znV_XsMxQlyV_b~3_MRaqUVReH>6>%+I8~h-M z^E56TFN>zl^pgHHHoKYQCR5tkn)zJVtb;08o+$nCG40+#SjLkHDiy5*!5um*@lI)) zH}Hk;xu5^=-<~BIjF6le(DfngT{eM0+?duG+9ZuAf*&?`KMz$1#%IYqYgsEa2$HO* z+B-r2M&8cqFU1daQ#ruT_p^OUAebe_A~X#!Y}lOkwDT@(66hLyOyrk|-ZXH_VkSI1 z&jeTiZPFlK4>sDaG9Bei#j&IzcUv1dGc!90$Et|*iwyo;J@ERF5 zgBg>BN#(EAfDEW8RTyUN;Aj;pV-$+7Bv1U-3x^mMr#5WHl4?9f*;a_KfKvp>2Iv<4A~I4vcUFUEDwubu2(RNeY#&BY z3;7D{`MOcUb-ywmejSY4hO3KGUmD@VwilMN*8SS&EnnMnj4eJ2Olfop-)D$hwV#bn zqS+ZZBn>+LEdAB*ru)Gblq5i$@t2$~5Rpd3xpuL*{l&Lm{^l>1;-H?BKTn_ z4viFAjgVdRmTG>!to=^TL(-Rm$b_S%vgw4`RB-BPC^}{6G_2)KJ2-nEVeS#%p|s)b z>?p|y(4QjPdu;D)vAVSZgnl3dnN98B+U45$H>SkVDr!ToMDJ?m)6z3_GNO61zj;D% zq~Qur)qe%z+H?qs%fv5a+UF8aDFBz*%m_=qPxU=~P3;(t&P4VI9@q4s4zCVvT2$Jw zi@t9W=V+9$Ry?lzC;I{(m5_YFr)x>3H5ryN-;qHyHa*c`{G*abioYYNoz#9g#X`Nq zs}P+37NjNnSDC*BH2Ee1@&5qd5SFZX4^BgJKF|0oyj0a z0cmD5yDbb0PF^_SW6zxO%(EL_xxMCv*Ool@%7T|(S#s^>hSzRvI6B(Uo%AqBTt^ef zg^NcgPC#~Il|TxH2i6Pa=vvQWl8$jNQ^FY~T& zN5S_V7#7zUcGrkp;WIz&L1xX*uu6%8xUYzIN6;^kW-ID=#rvKnB?(jYRm8h`&#+lB znN7&EjG5g^g-QU)XX+NdD(q>izbbo}=pUai$!{x$Mh=rL)N(KVb)pQL1%Bw5Z0+IN zDe4vPQ$=2FdjbzeiI$M~GSefaKcfe;N>j=0r29UuMpAvbQ#dFOSa_t_R_o|8-->r>daYU?beZ7tUlzoijjuNa-0AW~yr3U8IR%G<^M6?>HUD)F|O z7py;FW6xw??e!6yc8sR~)S7kE+7Xm_Xd|2y1lY@&Vp2bAcpx!^oEflbdIWbawH8YR zGf12E5OZ(zJ?mWycNN$f!rB1ZVnS@tRM2VLvI&x`oHBSL`17-4!(h;xa3zV!D%6u_ z$~kkxVzC;QEq|@biiyh429A18a|sutKsSxYCO#z~a;t&{hF%-S4PFGrl^Y z9zQ3PvPMg%{CsuoZ2Ja*X1J1{%XBsYfA!bkRnGfcjr}bA=l)JSIT}xf*}ynX0OYZ` za>QSdwI&ZyMZ~$*`(bnW*0tyU{PMMDzCnlOl*V-s7b|D057{x4q!N1k>WJpx4ZPtC z{~%j;zMb1QU!z+O%-TsjuFo;w-eP-ikNJEH1s2PmJ1_3=x<~f8e0PHkaiXFPUER2; zJoW4eufBF1jw@;e=Y*jT=g;Fk%jGGjrziCN2G(F6feR9NdaSB5hO86iIP6<^i zq;hxfiz0STs-*#HO5*~fX7x@|$To;iMq(@jK3$8-z7pfH>5=+f`<$8}*E&z<@l9}+ zV*kEl=(|wOU?tKj_;N90c5vd;N#3P)AW~qGM(lmhxU!)Hup>HI2R9=qRA(f&DwtA1 z#L*35W6O36+yD(Beo={jmrwE>696vh0|kaSlbe?PG-!8Xrd$|p!pRK8;G#djj|azdKXCoRX4+9}Juo8j4t z0wAw&NDf-1&n;gn*%7u41c)7hQf>U-MVU#-p7d@BpfdkudD66(-C2e`V=JT{qZnRR z%Xga56Z%d}l$s9Cr)tnjnl}R*kT@eK8A;)KNnpi*KQ4g^ZIm^{3aFR3zhzisoTyln zBq6}+j|8tn>5*m*(=Gn>|NRlZ=LbH@`#y2P;O_64fHV)ZpkS0_y z)Kzh*AHz$U#;!1n37WXftLs<%{4Xr|`Jed^f9kLNI=}a~U*+4r={;P1-JR&s3EHi~ zG=60IqUw^yaD~U+jCMMsZyWaZTduu4;9QsyK78#qm$3A&jBVy2#KYz_&=-Jvc+=b8 z#Ov?bN~nNL#jB>i0U z-&v1rtY5U?N$eDkrAbUytI_{S_h%aw_4v@SIlWCY*`l5A;+iJd^n@;o-AL#)Y*u_~ zgZ1L2l}2)+GU>zE(0Xw~->uo*KVZIl0VhJYI_2i3r|UOx=LL3mcA2!wjay4@A9g%& z-!2b7&@!Kf;{rvLp%?nKa@PgNXTEEPk9@r4eZP2<2OoKuKlokW&AALbK3`S)OX z6ZQ@Q=2SH39tF`x@ZmJWrWuBQdG)1_yzhGsZ(jSd`yYABpKhnK5A~aklwlh|%t-J1?Xs%C zC=AVQoYS|I_v~M5R50U-y5#(1N0wjcwXXP!Ug^kj*M(!`|o zFoXyF&~tin%yPNFYfsyTKx)`*SezWvuUA2b2!x~C0&&xfuO|fmV=h%6GqdKLdrdR0 zSzzLOzRYx_ik~v$t08EM>z}O*otOJ5&Q9U_V(W5?nH-YzpTq|(D<+-e)24`BPHKoL z0Ud!rD)-L@C;{xw>aZ&Dp>|0_J@b>`!K{ClYF(jZojP`~v^)Xl47JE5sXDEe9JLgt zG8w6@^u4rK1U&R5q|Aa213~^YcdnYoUp^XNDItNzpxyRHG}>`i%7+BNq!pUpjMw^B zDugoZ0o7Dyo%R$+Yoz1)=Y9cnxW?fc#We!zkzs&oYjmlF6T^R6fG}KQd82$c`Y79r zlwgqDRGoBCYwXP+4RR`-YW#sn+^k#Ev+2Z*7+lzymvcXPrYVls+6PHvu`@6Q4~b72 zQNl5718GkXk)Rt3%xQ*=EE~zsHcRA(IfQ1 zE-27|OdH&EhHKkUWtC`>k{_z*;PL&EVYvw#MO+G|N=`^b-VFQ}o0jxX z@sTn*wRE1A6*v@`w7A(W!Zt(K@%=w=jUV`D|CI0g6OZ!;{`lu2?Hm@j;=2v1O<^~a zv0-p4M*PHcxB0h>ke@(XEwI0ysQST2M35%oz!lN)1N~;jbgL~&)qs!_g3%W%Hm!`a z_+%LUXzh_^Sx-x1OSq67qS#Nk;j;{+N?{4@kaW+$usX%}o3JEcG9&5kB+}VVq|NWL zeaW3i*kV;g5!*Dh{G*7e(zFiMo|D6yY}RYG_wJyXOzAcoj&9vz=sNmK13P;=G)+U- zdp`QqZC-h8i#NP}n=5w-Iz<1$39E(DOoX>QKIh_vmJdI1#I@Jpi@*MN@$%=qn;-xF z?`QFme~X`ObjK{b@I_^3(Zx*qT}j?-74{lX^>Z@&G?BX9VYi+A1o{av>i{4m6w zXPxF`rB6bjVYyJ8WJtE%rS<0o8LMokU8Yg-j8=S2iA(MP{wBK_cMTpT0P<#kX8k`PDuTGy>(KAtzV_^&TwZ_r8?|5U(n>GT zsK&a_MERPnKnMKl7`OW<4}9)7aL2>%=J>VOSS{AfW^*QS%l`S+jNJ}+qdUUn$T zeOE8=$iqAA?S?g9LtN{x3a?)CJpJ?uuUov>8g7szr;%S-& zhq639VRd?p_Zy?+qv48(r2;j>QIUVcQGcZ zm#jN;0Bc}KGHQcjiLxEaX|1j|%Gfqh5L`N{-iehckQhU(uDRPM?Fzd4G8R(*yiakp9GZFaQ znM4DAZpNZ1t1+v)>zmmX$Z~A;f5DCA$AT-(d@0#Do1}b_<;vzrC5M4^G#rs9n$zMg_P*?UBC0rX$gIU}%@Da5l1crB zn=jqwg%@t{!iy)|KIzyDAxS!IguR^!cV67#{;MSOQA7rWA*}hwBa;R{yO&`j{LydwAph(qUgk%B;7d8U`zm_; zLRiP^gL^GG(HF-n;k(Rs0oXm5Fqy!5qcp8>`-ajT9x}V@ayT}$QX~dK5uEg}`VemG zbAgBX+TZma{{Fvvf>ZTqE2w(>ps>D$Umqf~9W*UmQx7Jrn6YDzk7RBp&X++Oo5IfloZK-~+#W z$h{BT$2WZ2xA5~n`Gx%Q4}CBG*2lw10Zwydo7`W#4_WHA8T#(@t`|P?zVEqx>(zJP z|InNMf0OC-mCa@o>d-sepyNajr|wR?U_kGjnEoChl*SvW?`BOGQo>JS{7p6)8SO5*PClZ{eDM^SD zD(Yn_QxI{^r`S&86lCEv#W$wiad}~QSdtwvWt1bOLi$~lsoAF?b7)dnw(z8~*iq?Z zhBdfS>rW&!U=*QPVh>3UJ5@1qm_2_PZtvmX{~?U1sDP6)VanjPi}qw$*WI( zTYqx>({Y}#pfhck3_0K&Gw2jBmv~7!sV%wJaY{qOpN81`P ziZOK+MNqhmOlrD0a3_AAs#18 z&dW+zZ4gfrZ-S)flh(}ULtxgl`kI^-b!nV!9ru0a@-4KLye5;uu9-Z@WO{hdBcv0# z4)QZRDXa)RRmRW#s7>C00dcS#1;QDK0>B` zpA7iCe#c9pEqSa)167@X@Yl2KMCTiQxjp0GBnPg)J#YIW?KUiG06fQnskPGjuPX=o(L8)+5gZ-6JfpCK;tcP2l=c!RN;vH_D#6no3&olhlUwoJk+`r31PwsR6%#^0Ghz*Mh3O-XRz)*}#Um3#|34*M>t#s@CKF1Qw?>`@$h3GaR1W8D6!|AUYG z(U)=E^RC72p7r=Pkw3gJbYrxN3^viCq`y)y7z*=+o9l})9Gtzt@XD+G_J#mSW*3BD zn&~0a)9A(%P#)!ZpY_>%(rtglUw&*0dRMrL|6-t>VkhS)`Zsx=^&_+D^^kz^MahKd zXjJnlgOvi2GOpOidS*G#dfA%WuyHvk>aPHL(mSa>K)95(=lQkcn02I%W;(aaGa_z2 z+Qo#bUQmwKF};C5xyJ{dgI2V-fK7++8TGSZMMvKWsj!_7@~9&@sKK^1lf5n4x?;3( zgrb1?Y)rkVSj^|Fu5U6}9Wd;dRE?DfpE%(BrJ6f#UE$iR3K~FWcBllYOO;1js{ zk@HkGwgEb77`gep(8wD}7HW8*%X8s-kRARX8`=nS!?v`IJ4-qgK#cbS9unh5e#yrb zqtu}z&E`Tr_WUOeEJ@_(KxSizNJz6W1|8@=+YvYkE$MnEu#o0ox-6YmI>2TyXa}CK zvf70|PG2vx+omQIGfQ3=-R`2S7H@}TG*p*fEFoP#jgGh_N8HJAWzoG|_6J}F{ym@S zukNTc#b?fI z^hw4`$7`27Ji3HSKmIIHG9wCPN`)nbPj1Y!6axC4ZbKA4oDhj+=NrAx5%W8i%jet-^<5g`(=RsMa??EN7m$ z#P9vi!@T)_KgGTGUPNtyF@1``8b$v&#cIzLl$0W)h=a>*0Wh3-V#4Xiw)xXPe2gFe z8Myt94ZibBuI02rRUd;atbId%IDu(ySZ-!-Q$Xzj-4Pk|U6p%|`Uss$@+1$(;ePpc1~a7kL{qPI1Q^&d2Ed0ouWx6ss@gYrgQs{N=rW?BR8DT(K~}h&ES1F>)hTT!6{8 z$sRJLKQ%_ZT(wk-IfLP9rjPQ#bwHQLS0|_(HAZ}=OJs-{c~Mq`mCK<2mh?i*~Ron^hRq)VN#tRLXghO{ixeA*%F?~@gEdwl<68@38GI5muWMb z?9;RhRyU7P7ArJO#lh|#)A54Uqi#{8*B`+^*_$l*z&#ab&aZI$EklkU6{#xGrUlz5 z{ZhE?mL4Zh7My;j;_NeXhHGp5lkfXZ?*6Nn@wadO&$N3_W7gLajuXK|T_qW%EZVl7 z-0|##AAZ~J#p{3l+FNe>(O$3IZ<^M2=db?&0RR9=L_t(YFixaU7r=F2ElR8p0Jz{* zIKJ0rM;E(*TL^^2`4r#HYJ^1c23sf>hz*Wwk3dE#AF$d z5cx0JJB}yaH;Kavi{?^C8yIe{9TBb#~bLLR<47hO#Ge? zH?I66P6CS}nSta5tB5HSF=jsA{hWidkN-qF-F*S3RSYd|)!#Q7+m{>|truXGwOhZC zn_lr%AVc=fpFwvJgGvmb3HEz3YoukJLwuZKb{=f;0$wWE* zOvUME_ZUxR&S)|M7MiMd!qv7cW-}J^8Lh2i>VDf+%*F>)iz$NjCzGXW{xRYosPfFe~nY^+%tnMbww2_SM7HDj0v- zg|*O5LERRELhvcn`8?N%n@Ca<^o@pNP!fWoE(=DHBzorpF6#NNY>g@=*Vi#971=gD z7}FWM{F28I(w_Qsq^B!dsTr?nrZ;kW`?V_-F9Mx&>FO)Ezrm>tvPGmt#3058W3p80 zPD~;qrrTdW{>W<~5WzBE=gK0}TY-1Gq(m`T5x2{uP-qRs<~qhG_k8eae&VO^=k0%T z4m+QKIfATQN3ZYPUE|prwa~V)&$KctAO+GBiuH9wR%q&Dv{lQ4ckl46cR$AW|H4^* z_*-t`8^7uKtR6dtEOxO~O>2j!8n;!#=>a@q9;kNF6}=!F^(;TklzuH_VfBxXxzNh8NK5-u)F;PpZ117|~4?7;zzM6eL7K!u~3PgIe zJNMEaeQSQ6SC{)uYB*&g{Ei&Hu}>5|F9G$A{>I-4(PzH6L5>AD_*!!3R&U}@(Q zw5cdZYna~1ZH)j@DtaceJQS*~5OC-$!5?&oCf3X5ZnF6VF-lV{*uQj<(fSbvqjjvd zRErtycEx-$XZ`3ghO4WT#?ZEwk3YN5rL8Hq-@3sqH}+(;4~t6N5L@NshGFA51I}+1 zoIT%i`th05-&(hAg~eb5@%ud#U*jp0MXDBq!HPvFAj;g}cqf|YVm_qZckEw}I}LUR zxy_7QVb_db$nYELoGcmCj)pM{f(#N5XVL*0{Ht8X5`scx&!yG(LyJKf%s>n_#s!ry zMzr%zK!E0L`A(yX$YBe%i>499;j?s&!@Ns|Jrfm%kU1CxyEKVMNxv}_G8$Cjo%DWA zJjvfhmYxfreVcS0HOc!vM4;5ZEWwe?h;*;3yyBn;Z4_+7e$Z!`;EVwhzL>`-(I+ubyt>ZwLP+X?unn@ee&+NHq)&aV!U_h4t=JxU(vy$VvH-| zRLzjV72NpRALO~O{Z^`Z%ihHch=tK;mBHEu>&K6*QFopTsr#Yflvb)~2pz4U@wr$>fY45$K~T;~?B}Y((J##FuHzAC zmK+kziQwu_G&MoMM#UQpo*4Pa<@PelJ;7rDz!mcgh0DYUqk&NRbbS+k3+SyK0~z{v zd{#^VKr@&_^?7wi{n5_R)&{ZSkG@p*CD1A}YQiwa{q;`U?aOzy{{C@L0}29*{yEov;5 z1}imI7pT@QyCPPm4tTMiCwy=*@Ftqt4tyN&nK>|drb7omlE$0Q&? zR#xEX4P1Km9AEQw@8spL`7_@3zn;aK4cNE|R*#_4$2Q`RP*bcAdRQ%d@xTIW(|30Q zrJ}Y$8&_XMN`dtguy!N++avzfk9~}rKl%4~=l}c|c5oCOtz%hWi`HRCvxS%JH{eml zqS}DzarISw&_%o-a2kVS`ER^;_?Msu!bt~WL3{uw&chb<*)^$M&oAn?g#apLq@OlZ z%;rrz`tX?V{NCTE?VZB(d(P>T`pXPdmK~r1HI!?OR^0}X8l3)r!ZOvl5 zM>RWe>mx<6^oDGLk|`5!+nGbKq^Xq}@^NP4;m~h3djc;8z;c7F ztK~7vL9^ut(=4`%b&+f`hc-Kc;S-H5 zeGbLjI&emM=kyJ%Alao1p74En%$@#1!M^ZVc+LxC|JjHT_xA@O>>PPFGE;~YWjQ_A z{@hDXeB>|Y=O6tJwTseOLMkDlJnrj?!1^eDwZP72tlaP#Ui=k5!SNeDmA$j)sm2Qi z{Sl*;4MuAltZuHey0J-rFkn2c=@0t6I+nP2O?!2A|u%@6tTA zZJp!adSfrF`l#QJof|5-qZ5tz@HIt;ld{O1msM4N+12(QFd=`c5PW6ukJ zcPwE`Q%$L6do+tNYU`u}qOoMt=a?zwrBrZQJ@7F@DH~6ecL6>>KI5NDAWHfYjq9Kc zW3zrPI{avkN9`Jc-2h3#VZwPfEy65`fq+C850XUZ3sV2lB28n<^%31JmcFPfsA!vn zoTbM!o{cT3{UCQ@NIwug)B$KwZGBKm5hJV)ghKE^0HHwW^@MWeC{RGVaQpu=$KS22 z`E4wLkm~npHVsYfR{l&@2Q&uzmWJA)U!X;H!HI|riTHOiBVQtp0z+x{dw#t`1JCmb zld*jXx-P2StpCtNm=AGsWzUA^L{V{t@l=D%v_Jz?h|EC7h>n3NFhgX4DI3fH%u0#$ z1);`OTyF^J-46aND3DF6&OZ09F%;)#=YB+NR|h%6Fu&y9vs(E2CM{@<=^w?coaF6q z{xfcT@jLjv-@8b;a*Y15W0d`#OS7l-vdPeDNo#wwwxscY-L-;NOB!3yT0^5Htu?g% zWPwmbS+qu&Q;dXS^9uGa_4(3od>7yJjc=!36qFmA7+HX6Q5CE$P#bD4WIqZ}U>gA~ zxarDOV4mU4X7k8)wPui;@z=?A@v=UR*?l)yj6V$le6iHnevad=t_~p!>&Jne)8D+7 z-~NNg`MY<#3psL)D>Cb|NaC`fKekp@PGT{vtPdEh2(9`$?k${q^jX)x8Myai5W!0{ z6_6hESKYRa*@Fl>SbLmr{Fc|Vv06gCM^Q8wDqrmL0K5MbA*htt(`Uf>tz%AyLOc>t zTblWpwwZhTDd089xSSa~^4))r$3tqkubpQlKCk35r>lz(Z_n%4+JQBe#Yw=KfDubO zA5$G{qs`m}2K<;}NIodA0Kab`w!fq&y7qLyP83j%jK*bXRkJbUor_en1Jt&d!ctXJ zb}wFJ=h8*y(;02k(C-(B5uSKvpLf4+mq$L{QV6oT0{s$b1zW-95Ux9Ec+O2j7IWpv zk5_!=7kw6A{KLP<%Jr|L-P=ZMza0Q|K#IRGYzJT2isr?eK;MNk*PiKza27QIN3jO8}S=(4QD{=T2?`?&)Z;Os_nme8pQ zK>ZZ*);O9v8 z5Cj-Q#ZBq--=RzPe&{FtnnQSyPJ3aTbly++$p3~Bn>4PxtvKJ(N`41d;?8uBkyjDK z7>U19h`1$k7sD-k*rvI0_t}TvwEyvszST~)UyRXkka?Cz>n4jtJQy{!=xiU#rjwehuiWHiFFD4QSNbAdKBZX- zICtLik$d)e=#gzElR07pQ@E6Kwa!VetD1v@116KO>hBnMF`F>n+oGC}ajCa}KZDw# z(u;k+dKtD4SZ%QC+SagxJ_zp2afx)gEd4TcbzVrudXz=W^C4VI(|Ad_sN%-n#^KV@c0XWprwmwDi(0~~yU?~;G= z)$z3hvqatqY29vrf7s)1eXOLw40@Q=5#{~9X(0!$Wh9T6)2Qyf6Dmc6jdmW z9>omTfYxs{2qsx_Sh{d(LZ1YD)6wVnm9%_IK}Rn|2I@|3=TIk}FIP??h2cBCvt}2=coN1TTfh|w{a5jsr=UFLHyAzw9>w$r^oE9wBSoy_UG(70lXEzK0U51=l>YtXs3L{Cu7V8u6wT9! zeUi4BaNP?(m+$`O*MglOREY804~#))=diO2VERPIm=LH|9|Q<;$>Ui-X{r2K_o0Yz znCl(WR1=4~?;4xwevqZFT^>knF3aO3R_RDU?M{oRcRGsLrS-QJ)xkFPY|p8oqR7^6 zE~hko4_N>_>c_wiUf<+H4w+`^tIeCDhy?;?<4d&l%-6N38Sn3L>D+lH;{)o2%jg>n z3%E#XV#=5{4_npzpH8HrC+UD}?9Y-e+@dz*CRboVxB-zU8NXj=Ns> zL+HX{4|Wlwj>m(jafXkPM0jOU79lgV5R8Zz5g$R8 zZ1q26q8eYQHrdPGZjJVSw(1|=&DtVgMVCZF_cgPXecKL}tPfA)Wq%>Pmk}>=Q1Sty zbDlpN?eFFL60GIePjucT1=d~v-S5ekH|ZHk@O13{%+_-Kr!mLpBj4sYPI^KD@bMWa zJ9BV(vc-#DKqPFX+nq_B29Q74F|s{zT$7qU=kIi2l4w^X)tS-+mu$DJjd1_)MDDyB zhwWGB!o8r7v%o>H>moe<`m({D2L_UC%lEWMw>{~++!3Ub-;dC0=b{|KVY=3}>l0$7 zgAd}^1*df55tNycoESbQo1YY#jXMqDG6c#T%Ca}vx$yb>&pz_TcD8?~6mBD>Dn;5K6@bmCCWtO(SZi6kI$T*r5GLaV8|y=!f9El-xw^yvO#{7B5d-6i^2AdW z&zw16KCeJ6#&03Bty>9g+m_jM#(XxRY33N?DACpn7SkzBJx6F=A;0XnK8YKz!u~10 zvSIzcUH`oktxcR9CEXIo64KPedzYJEfro>EAi2ECjT{Yq1^IWG`4Q!w(zXlQdf_TM z`FbcAYO(bqjv?a3zo*tA zB8Z)|(4}tGMFedX#4&uJscXujYEavk+ z(8cS?U^uB{4sn=W%gWbh(PTQYGY2KfTL+WDrG5*tv4-?qvC(>3ap~y^=g!S|>U7Pc z&y0EO^n}xACOmy+&bf;V77OL*rs4IUf07^hzL&CobPYY2LM)+@_$cbd2t#+fL?D;r zH*xhoOi;o}t|Ws%b3C@;i_T?6r<+fL(!j>`JoU&$p8GlP+dzMva%F>he1Q`u`keWA zLyN2ZH{Me&Jop%=uDcaAL(myup;aggq;MxII5}THGer+R29)&+w_y7D{}rVDK)+deerIo;b1?d$+sSM*jl zFukFd<5`WLOp!%d62}*nd3c0Qb$IP`nGCA}Xj>MuG4*1>V0DvnumS@0V#>~in$hZl zmCbef{T{ut2O>Ou_JFOO1$W-I&h0lBtc+kjckPzIk&$r6EhW#KH#~cOf$0hV=l9NWV}=J1?9H<8+|MtO!~2OXK(VIu3mJoAB8gV+TI* zRd^%tk)E*+5n@Eq?ZpxoDKv;{$S6qB8?>tSy6tBl`JUPNC%-{$J(R*UZrriv4@NSXEGUbT+iy9^ zt+x(!FaX;stqT3V>+9LGEe}05VS9Iq5gX4ucgOR%LPT{{GntH;&u2I%-x=xEbWAm$ zp|;6T>1J>eyrKHJf>o?ftIpF5lXC<~8he_k#%H2U)S+?U6SA6QSz39-s5dk-T6Z1F zjMw5H@pTPckfN;@v~`8rI^CB%{c>5hg`Z5B2E$8o`I*~W!I4cuc4<0!*po60im&6e zXMDPx9vOg$D9@apfIV;INtz4E7)&rEm{Lq55FzyuaITT9)4=1SS)0*$Cmn{EaGZ=d z1Z?fj#*TPM8X*D}11f>fGX0nU7ni1Qn@lqM^*vj2VqI8URqR431gt29QATS$ij`Zy zPTUrNjpyeZZM?3x~zYsSvVxLSR$6^P%HaW%5t8z`9NK7&C{p5qoE6 zy!3T{#OX(-^p0Qac8gf!N`hrmG}N^Z_)3y8fEe(Wkyf)NG;oCwj=fV{rhxd=dzAvw ziemi)^Zi{u^-KSlzxy4_^FRGIbZ>`vJRq&BGZV(D;*en*P8}cOJtrU(K zJi+aSf`wq~R_?9`Dm1Oj#_{*XR(Qd|-={pS%Yv>)2@>PaVLNE=oWc zfFQjdQay_3BZwSfO_IGz!R5R8$Hd$F+p*JY$7bUZ*;_e4_*xp)`7v4G4<42&X zpcTQk%K8Xyx~5<>9P-TBiihr0)ZF0!(Yicu#A6>;Yy zqM^V=S=ws0zwyld_x#wwwb%cHYp=WI$4#&JXx%ggBCT^}odYkT-tWP zvN*OC=1F`c!5M<&-2#A#r_%GM66nIcV*^d!2M zg~jqJFI@*%xa?|1YEB{pM8`V&93wK~qo$cq$r&;INatf_L#951v7b3Eowg#nlf=z4 zA(nJ|Hu?)y!XYs zPe1s>?ZJh+D4b=b!TAq3&-fKDD72}dg_WB>M{fVLH(>h5*g1Qas;cP~1^xbzm9RbLD~|B|J2yG9DcBZiYY>AD2TIkzgOAia@#F!EMMY64wsqk9e2oj_|Z8^t(zdk7FL6a8Ecw`6 zH`3|1yQfm(7{$xze8ofJJ%8GOb8hpIMu*prCcYUfrbiGoUJqkZuM>PBEe*3UsHxC@ zY&R46sjZN~lda4g8m}zT%EKc`{sa}KL7C>d(6`;x3twG7qepzq2ZG{h4IaHdD~0N!|BlO@fGEoYr|SWm{Y6>)$ReW{*w3bt0-OUKG7S80 z$9WFD1xE69Byt4DchVg8RYI_Fb==bczm-KBiqQt`-0lR z(GxD7RrVfvgw0R>RP3Y#EfMKKF(B3y(4fY9pfhChK4kNHge&;0ul#mi`|I!K&pvQ3 zz1})XL)*GQv(C@b?yqBx-r{iKS8N^L9qrq?!IbJUg}fXVahU*%@eXQh`lB_+gKcu; z5*ak&E1q92;u2g$2$^*`???Mw@$^X<0hhH|J?{nBQqVZpS!rCkO&%K%T!zGApG7^R zzq(1$^T7=-&x7gJ)v-ZlcCETFuRA_ZCL&`&N)%HHYFp~*9=2XESUX19U!^FNYCdLX z(O}z#)%8`hRLZ^qG4jN-6Sfa(UVO(2H(zfk3uqd5>c_AT*Pb#Adwrh0AY3>J@eG(Pj`1;aP7^v{`mTlV{d61 z+p1LqVhJ)$AOQxX3ek@X1V(7oiwjVpzxf;cRQUThpO$S)%?`gA*ZMFY(i*E@9~CQ z$GHte5#N9AEq8>7#QXV}({FG>GX~2lHRkV&_rSX2PWQS$nKa1XCI7xOrbF%d6+!W< zBN-fI_XC{qdWQyd+Um5C(Q&!`|F^%PpXJYoo>}TQP8i`3T$h74AusVzz-eN)%ft8o zWjvpFoF?n@a=+#>eVW7f&1J5A!fL7oVhX?S-)*8Yy}lJOx9psG;!RtReDMEirq20S zhqTPvm-xqlqzEm#7-I%kaP4cphv$6eKV!ZyY@K+9u@yW zE`Pf7Q;Dg6ab9-$G&oR_Jrn0(CQIBNe^>RXS&UiC_GxOD>Y4b!_vy7!$I(e!=%aHh zWc?H5dsmjEd9QQ>0=Y~|@+dgOBL1{&UBX*#kp=v9a3~R;G*y%Gl8ApzK1oDXci#Iq zRJ~Uo(+@Klkkd8DlBg5l&~sT=>4A=wC@7Y;o*%+n{+Qa9yoY!ea8UFS{{qb{7+knY z&0#A`&GWCWJ^#9Khok#euDBT~uRxnEXe(lY&K#o=fkDp;A`R1>Eo`NPEt95KcwHY& zzFh4^rzd1Xgn6Nz0S9_Hd(npNq#Cv;Ik6))OuXQDLRj5ZDWEKovgcMYdwuuU6rOH= zJbAWG25>MgtuIDrL#n!pj}vNi1OiT+!`#5ei0PwyyymMv%w%s!@94D@>uZ=%AL)ga zPf{(kXwUmTY>P;XS-F)z`P1`Ucw!qFttI3INfVs_P2-7%rFS9XD!Y1KHHoI-xn=8< z9M>(bxKbjj?y`0K`?8upgw!ZGnsZXik?$coN?`kN$_LBlbM zl(^Mp1L6u4%IGB1ogrWJ^?yk--op$_Ts;hv8RY@bC8%=h#0o{a0KNLdLu&MFNl&z zhhB+PPeOAa=!~L&ieLDtZ)bI74cpel0G}xkQFQz??cN#Jo+%=KN7*Urw&k@hYatZX zb^6azO%Isu@A~mNK1xQH*QdeS2*J8&O=}`mWb5TQ9(dsJ)i`f59ZlysjpR@1+9@y{ z*uo2$giBkoIM`+}-Sa2z_$;ZAX|ZgBM*Y%}@EMCH{)qi%BM}5+3ZxKhGiSPck;P;i z(VDUV+g9xF?67-jm#SV+RW)iYy}ocTtNH5>@ACe8YUUM;hQ2lw&@*twNyE+8_qg?j zRR+D1M;|_5_0%nV+fV%`p8Eyg2lF|4a2}{}g)ei+LDULZp^&zo?q2`Y10Vh6(;t82 zmqa*OmW5ld7mtOokKY(X3TM}ZU(&s>aAnLVux+#b?Lux>)8#F?Hdo?Vvio%I=Qc#N ziSqZO?UUJS*)^8i^1r!H7;%@~XX$!sH*f$;<4EuaUDL6*G8!dZxo5og$n3`@U&Z$* z;4=UcFA^u^(qszyY80HpbSG{gVji1WZZf4wIB>g$N)Y)@RaPWj1iamS{`Q?p3BoT??0}@EyEiP)_e?yahqtK#B6sPNB)|hqyaJyT%H)_ zkr0TGy)SVfhsQ111n!P~`C2~4d?IUhJr`~rn4&NU#ooLyji-335izzXd%f9Y{~zx> z^Y9Ng2N&-^tRm8=QYI}FC=;mTRy}BH)G8}CeKyyB%Ihi1HTEuSsn%9{ML~ZsVr6}W zjiZ|khC`~V;b2^G%~eNv-t*QtvMJPasH|J*84RJS;qH6qJo@oHX&bAhUp2L@JANp( zn*HNy_ zD==7v!c(F3XQ_jC`a^ItjZGWHE*5AtL+d$WEk+EY?wB;IrCW7Y!EGDz$GfT5n&GgD zz&D{LNV&?Je&eImlZwIS5t_E5Rew*d@87i>cA~mM+Qy5{*420G4{64hGv~)#dD9i> zY!7#4d}QVfj~(3TArm0#BfZRT2LIB)R9qGa>T1D@wG`{8c;vCi`JsRPF@EajUW+Mq zU1js8bbKSNr)LRm&5_L!W#9OunI#Do@SF22N~oMK7_^zQc4W?P{JWQP^RB zQV!KAMa^)gHPj2_*sYjn9%gN`VPjLccmYa*vQW-EzTml!KT7|O7h?CVAG$!$i$KbB z6DQC1-j5!;1MCVned-tTD?fY>U;D3r8G0KiEuz+)HlTCt-V>-PFzeSiVQB;2ll>BE zn{zfosKV|VmHb}OkkJvi)&sNrB=4}>SO7fXBZ{zYOap5SY{)8H68(w%u8)p-(EQ0ykbURJ>+Cwf zwk#(5)QgJY`Vo4ARjh58PR3Z$u{PUh4}>jW(f$g7Ws3_My5Le! zmH8h1h-mfJmn3{gehKb0`Kqo6%YI5=!3b^;D@l4(rGN(w1iL8-utBttbeBMDE^o%jJ+X@%#o&L$8sBX)Kx zA*X{vSz?f&a63)E9IdUd>lL^fx@rj$b0bYs5R%kiW za~VcYyBx0NG3J#$BRqb>hW^~&^jv690zXIMNvB;m-;BR37*kp?oZLD8@qc}A_VKUQ zX1<1@MzwUyYk3D@=*DGiN{dzt%w^#|s(s`n>c-C%NGUr!eMo2WqbmgFal?vV7#;eJ);_&?|*rAy~iCZ>_6HY@3$F zV$N(fMQP~u4BFI85B6Bhr_NA`jOwxmM1p`6Y->J9S=f@aW^XzpwWgo_&OYP(6r$ES-RWV>140Eh1+AlC`D^RwywJ^PKz?o;ac=Yip zk32Kyv1cmIY*!piTdZ|y_AA4J6B|9Ab5ozYZX9v*b!%L8%_{3BS18wyI{8~qFpCM= z_OUXe)jnwHPkK=b{1Jkno!(^w;J6W2lNgq2_ z)$E(4ZRULL=ib2D@eO1?Lv-u{aWr6H<&Gg=bJufu!?(YXU-;Sg^L;<@e#G2>6r)JU z*qvBV(;-oWLfrTm4A|aYaQ@sLSKqdVt($~e1d$r8r!ZQlcl0W%*<+l#y5PdamU*qL zl}fvSCqM8Yx8HsTQVv}4z@TNM$!O)_Dtc&h7M=bbX64HfYF__6-^(BU%}034AH5&x ztvPuk3hFA->)sRCwxZa)9x*+aP3N6b@0Ak5v561-z>T48E2ewfjMk6P>#z9jeL}v( z5#9-Wmy<2D+YJCOsWM1Te%7q*tnL%#p%dlVVv>^ash^3Fhl2(Udc~Dk&}PnTcR_z` zlm2KORiSO$2y>p<)z!MzIeZac`FKO$;c6a$H7*$gXqy?+-HQI|CM)a5P*tk=l%2Yw z*{oSxUq`K_Kj<^;7hKq#^X~Usp7)$J?zpXFWmTBWpu1nvf~=iDjEypj)+;#M78qmIh%OFxUjF3AKK%9*H{SdM zS6p+`TiVt(ZQD462JxnN8LDaYY4UhHDHyjUE1yJ4&_|v|p`@R>Ijvb+5l(MQIR41E z>yWJ!bV0CG{W*t(hEabFW(r*Wq7#!~>Y-tsRAj7YyOARSXTGI37m@Hgu`doxT@yb_FKmu%%M zv=tp&qVovJh))BP?Ae6ypyV_c3jVzWuB84uW0wpEM8JqaB5CB3J6)gmHukBoQ7Z zfA26n9XjXi7W&rC<J&>QQ$3!kb+8w?h#&s{{*`N0W8#vt0(Xse8F z_zbT5l-D8URUBO0L0e0|H>5vUVRdtjmGxCdE2~sZ%fVjFHCG<*4JFRf2&X$ zWi)W+_Pq~PJn-laOXNn|WoUjjaUVS@V-zk5;E69WVaL+p<-HVxMFyyi1L|e}b-XXO0 z%pD_VT`U~nI99TVd z5*a-Ys=JZu96o=QC2*6D55Sp%c4wP|OEU_i*j5-0ONz1tH656jbyvV|H+44bJr1iV z9(Sss4O&+)GRW~ErZg-L<~;JjUEcAoUH;^~2YmFw3A4T09fL+6qy#Bk_KW9RkrtyB z$S$G_=s~$6Tz&0;m*26*>t215PkYt19KZGy!T_cVm`vT7>7KWhkgl$Ae z^8icGCz9*r09d4qV&9R?Z+$<7Yc&C73>8x@U=hsu2U&L z1T=yi2*E9HixK8c3VINWIELB*UYDuCs>=kE(jetYzWt3KOp1P=@BWeZBdfQ%Lm52k^BLpQin;`gHmcIrhI=2_;+p4ey7}RQM{fVK zPp5B2l*ey|b06o#3B!?f%g(mTrW+05v5!r-;n4>f-u5!u@t&Kv@!07wFY&TO!3a9} zTV!w>lrKYyWBk&u{Tz>d&X@DS`<}(D9zh$gXN>|iOrF8oImN~enEtxko~Pq>99=4<;T`5PCJa*^X@XOJ&RhG!T~$}2t>s;egsPALJoO`Y^} zf+Rc_rd+69mk!KH`dADYEY)O(ww^OsJBlfLPIhH_Dz%#^lG_!zzRvk1iqE9I;~Rwm zOUq)sL)%oWZl0tpdNj?P{hgX>wqWDx8plN4C`n)&xM=R&*s>(d#G`bYA@$wk;GS_Q(zpXQcj0_U5=Ta)+ zNIZ>ltahYpTDH&hSCCb~_Ho%Q(Npj;%&}0{PC2{?7+y*CS7;j%&rhz+d?C8ysB3z@ zV_OBA3m+&DiM;GEn`bb3%v`3uG}cUKWO}WP4o2=JLI!At+Gv1DXTZLfOo??#5?<@3 zJTFZLO@=<4@8WTb$Ox*zseK4BkZcrIk6~R(?IVX}ij~Ge4K!r|S?NwxYU5 z>XL&W1mxxJ<@CsfX=gMNUR!q3a}ZOIBC?Of7nAcJK4&t%6T{6M+Pss{V~2(wF=fk3*aPL>H5op9XCh)u&#Ja-I~Sh%p7FUSzKv#jf>LVSCd=S9XpFpMbQW5%iz#O9 zdanKCFJtqDPi3;d&wOv2z8D7m9;3B2RyQ_SU0M#uEZJcleKR z6TzK{Yi&cjSh&E3T1S#_(nAzDUfG3N?*A;;8trDb1lcM{&IR6HMoVZmpR5#5qO!g(xq&7$_M$k{9<+~ zAsI!f=W{gFpa?ciHg;G1ugyA27OsSd1H`kEZ9VagIK$f7kPW7M#`9dkzorFKx|1@> zK8&va2Oyj1;t8n7q^jM)yc8~n5b5$H~IO{_(Ug{ z{nIWMJo#YF;~(ATcYgOA!;J@d&8HmaD?a-wzUXz&WpLtJbaH@B_n>sEv%!H0&Wn<* zG+B%34Y~T75g)r}jI}FnyM;QKge)C(c`^`qvB0Vz6rd$fKRXB3NJr>(+37I1YW8P& z@!+rk2(l~I{V`CQ8Xexue}2;+^Y|k>^p4&LZAI(Od+pNovasYc&?4@XSd6%Uhz%JJ zo(BX)#20QwXthW>G}FzOonVA1BeZHTwxU=&&eKml#83bH2YBPZeGO7Rn_4l}6^Yaa zQ^Jv>E1Y?{LU3o;r!A+;SX!2WUKOgax4(eG&^7{v;PS5Gp<$@$VaJAc{siCjEwAKP z|KQ_1^1uPb>N*xBPc4qA#N?{OXT(_7zST3-}6haFnbfMYRAyO?lr zsb+QK82!;I*0xN?`!wx>m9=%&H#cb8g8raKe^7Gn;*`C;n&;fS#%(thY;M482375N z=GZYp2TyDuU*WNIR*P+rC>;iGsWMqUo~N^B#UIw{*a^%E8>mbawGcXGLu z+eiUS(oeoX-C3;88q95)D3M~5fg#gfS?U_xA!1!9JB{Q&%d-+<5gF+GdLLzJMA<~h zY>Puf7Y9pRP{<*Pf+L46X*Ep^_$XnpO>zm->3m5zbXQYg%AQ>;4sO2iluNS4(N*33v5&B z+Vj4M+yC*8vVP4=*t>LzdR8;)^%$+Juy$mfqbHBCapVYXtBl7D*Iv27r~kuKJm=;f zg+Sx78(AGWJbdhdnm_xSi<~*T&#><((Kao%X5 zj5j;Ms%)~kEg3>#+{$h>AG4V5(Nt3eSKT>qZRA$*Gb+d`0&E_p_?YiMe2y|dgQw%+ z2Nsj=_z2Nt2&=n!urxfI-w*ie=!xKv2M2ITermj*=n*Tq2dqlMX4uP?WLu_8ecwr` zCV3)y_cDfF-Y0?-LeA9dRYIzm{Io{+426p?~UXZNvf=93)WZW}pocVxE}SKYtGZN+IDiVZ_?&5%bPZTQM>c#xYv{a$|TKV0IGhk(H` z%FSc+)>kO|C53S-Bu0W;u3c%RuDG4Hg=kv{wh&VcC&GyoE0~QpdFTH*;H$sm zBV6S>=rT%^QHr) z8mtyrH9((-pW1iMvY11TV$$J(yO;5Qe(76XmC{!8iX1{O+kZ^7KvLeQu7WudAq@G z@p?$b;oE{xA){;fkN@on9>4o(%=!SevnVG7>oNff;p(f_-BvQ&V|gp-vQ3h39OM&- zT6XuR0JK`Tx)qvbnklF?sPI^TK57Str8?N5S&V%)Ot!cecrWN}0{v3t=Y+)#s5Hv}0c<5tq$> z&1n|qr2iZG&U^t^w63L^>@wd!kG2a;;WILW-cw0+9)teO+2hc-(luYKQ~{0tlOLOl z6IV=jFEZJ?2(*+vXzCez+gog1xWIfiW3i~1&nu)b%vDCi?BOqJPeBXsIY1{t5pr!3WaHG zyLid@hwu4=(~o`ZJ4Iw<3ga0g*|F{zRcGUhNtv!O>oo>`!#3AoQ)hIKLFqiSpY--2 zyDZmPo$EPC(mj>#eOn)H()G8m;^V5Ag_ zgbdeBrqwcLiT5=1pT8T0LKv^VAB@+ir{jC1_m`M5!ksaxbYM*>n$m$Wz1K0|J8*T| z%lpXT?vk{7KaA%vgM|D3Z8_ZT@~`Io=kPC&MN)e?{`my$9{$bd`QHOihpv}_C5)|$ zzstY>_ugL`$0r&~g5mG0-k;q!pP;&bE;PmXX(ysZse+jOOV51i*5e;}YrS{=3n{rCpQt~|-gXocy) zoMC^+KX~aCeDcfI*jN>s+F^8c9m*0teWvAIf3wF&@4HCbH1vB0^;Ltlb;m2&#xkGI z*x%n_z8GT)7t@%H_c_?PNL@{EXUD2DhOmCI!5ag%b*uii@y3%^^O?cy_$4@i?l;=; z`FveAB*e#-gSgSi2LAco zMcw_SfD`GCKj8Wh{~&{jYV((l9iQP{YF zgWXkr{HO2cnwPzex4z{OWaAX{hp25l-6flMVXhglGhX$=qagkmxL|K&#!?3^4QUe+ zaTQbC&44GK-Y3+|a>2TU&&X_1+-Q<<`J9RKKRK>l5{biwDylWozlQ(*KR?F7`CW?D z5w1!e9$|1SX6xfa&7ex7@Jl$5LeSuG_BbQlkTv%RoWc9*33xZ|LXbfQ z+5)u`zUVWqM@oayCO&tWfh0Y$G(M$d@1S*sUd3j?!f-SLxGaDQIeIhw^`nf|O0K!C zpx+a!2HF;^z&(F{KP(QA-oVLP368F&6?!936d*n59YGf#g2g*9rT`jF-1eFL-#>Z_ zpLEwX=zNdDxOxj}7pPW1gE1D7Lz^N zW)b-tKi_kD1-^6bB^?v!m97W9C_&vW>7_*axisHlTZ)Tlbdv@9lj>~Ei?ZKjlk01dP8 zK3f;gGd?(=u4}5QqO~n5!s&|>-t)dOk3Mec_h5BJ==WS7{Sr1-gzK&}+lWR>uZGq5G%JIE3AODXZzyCwOS}$f-m%W}s zEaRVS+hF&GQvrNdoDqq3Qr8yFbW(nr){^a$@Fr2@ej?vOB%=*EeJ^9zbGV(QhN3)O z_6=j(ktdSgh&D!w6Zo13+57%o@$IAqneG@N@B0&dj_8TkO$vwwrB7zTXm&3H2qA_t zG(Dr8w1o(Y3VGPmofCzTq+ZVtL+pVPJYz9s<@oeF}{dI-`b zxT2o%aBGt3`8)pXrCeu(d!1EikuE&hv(YSAqFGXAc!uiIEr&T5mI-G8A4{w2nh+M% z{Id731V@tYSvJHn(v~LO;Wn3E=o0ht?$w8v~(aqG>ec=fA~ zan03+x`L*GvIi?`u)7a`_n|p|^MQ+8+B%@$Q$#Io+tP-;`3iMY>%nBq!FZomYl>b$ zQ&;ToZZn(uRe!*(h-62odF#JzoA{g3$<-Sk;aPu8lku8wGs&kzP`I5L5)A#g`bKo7 zV#QkDmMrrV5RSCbwqh~cXEE8QsTXcW#iP8Gv`Ut*iu={4VCZ+8e~ofB7*4?uiiSyS zn<%@YJkqqP(vc^@5zbh=Gj%efIZdq0vG#(~>-EbTzj5Mc0Ryiildxn-g+z(#6=WFG zCo&Mj=rvAt0_6kMa`*!LF>N#8f`p#{Rls-K)-;P5NX9i8judr)E*q+F6Zb8<)PLtR zsZXI5t!&Amm=b+orsJaBks)Rwkzqu*&}uAzeVU#}+$X%TUbf1?FeB`o$1sCF;VEcOsNKSUg(Vq0jN0<|^0)g!$5ZBKIgp>6DNowjZL`)&(| zAROH&aVg0Xu;J&obUTVRES{F(cEN?M1!1cL;))!KsCTe@@j+447SJ59d1QbwJ^xOi zMQ*b#bsOy^CDfIusupc(+=K`x;N+HZi!Sz&(Ghw_uc1}t#Fc$c9D}A(77Hi_hNm8} zoO$8&FNZ=q=4hKQwYYL4Cd8NBN+{s&+41uvml z9MHD4F9*^hwnB74QCf3Y5uYKfO}^HxMKh0@ISneSad z+ZiUD78v@K5Xek$1bM9*KBsJhsINQlYV6+&Q;boxnKRxx$LwI6vQUb`QZFX#UOdm< z&NlP;g88gszNjcm!~U%1Z|^?f{dd0HHu$zsi13 z-7Zv-kPYCrxQ2qrejb~`@hrg(&Ky|6Vp%|b3T#TIv(gdsDY)1D=^7$kyMxX|?)qPc z+td6*$CpTLMpr1H3^M)??*vX=(z&6CxQFF%=1uG+@e{c%K*tsc&xU6LF3V11q4OAd zbqLkvuER*WW@3Ur2*;f9^TCEqb&>{<3di_?bP71+dju1*BD|riIBu`(LX;#HchjtW z&svh6&5LOTc=JAzkjdVSlRb=ElTh*3VkEPRmJY@`&n=BDj>%sSM2^A_A}lFYN-{kx z>6tjz)O%#`sM932A4VwYW>o4S;-;Z(|8Uo}=#HZs#qzX>=o=HW3Zg<9vmGZ^S$07YQkCi&j(2kvqBNGrpF!tL|dFvnAEMqTd@bSQ#-K z4H&MDSY2O3q+mW?u)aFv&KF<7l~)+rR;g9{g`E-o6jo;beR?Jb&Y8pAiplus$>x_pOIML*Yg`qC5 zTn9fa&QFa`rqG9zv7m6C6$@w=$?bB745(sTwQ&%(EwsQT(47sdO7E9^up2C{- z5&METp5VB~=QGig*G0*r$Uz3=@+tjz{A4Q@!5E3-&u|;z^#QI3LuxL`&HzLJS4s5A z9r|pfS#L>pC85*7mt<|DY5dNZ^z|+yTuVUuxfk_grm&J6>k0}*sTWgNTHzwL;l~_~ zw3H>9hXR$}&=(POF-B{DWCn^cN>K>bPPy}%A)of*1=Xy@(nqX81y*mk4s+slsBWXX ze}!pWk+gs!T^diMtAO-JTzcjbvnliohue*f9!gEo-@w&E2{&3`loM4XZyrrW)iqT!KWv09vdRPa0FFy*c}>!eAc9x zHP?QL$D}u4YsbmO)xiLrFS-@|!8w+`-442=Qq7&4G#gVEBr(g|YK!zw@z-zrD5pPu zK>yfDY|~KN5-WwD)0yp%(>QkQ^_RFAWK~@Wndvqd;YF{!oi}{eEqul+PI2;tWifBK z_rvFT$9vB4`+xdzCKvZ$3p?8Zaoc&sG=3N%;A7ANv^7W{*#8}5eHAS}4{Iw{PriuX_}xF? zWk2>W`GKE(I|tPiGuU)N5NRoBQRzW3!m10>=;RDKJ_G#?WbF#f`bjW-x7R<4?qmbC z^@4gaqd#2rJnZFkG-NgEhYnsdnVHLaSkfnl_&U=sQQrn#rcvMf8<`Cq=A%a1q-?ij zAB0S+AgZJ=U~A_4TNHy;dZTqjgb)w*hDZc7oU#%Y7M6rafFQvSzRA8n^yD&eWV8uJvCu#f51!b8gkVMp|wKOfGNZu z4XgBrhPAaJPoJ&1`@R`3|BP30=SyG2fBUJQWdHtmAfu}>{W8L&ZoO1R)hMbI(%N?M zqO*_Q_qOSD@-tUmd&`?lVP@7^UuV&z%~3{T6-HMt$z+%a0epk2on*Yq)rdn?i!q_r zOA7yoVx^G=AuyyV@FV_uqQA=&3%n*|pQGL7A&-Wbra2sVES9DU{1Q}02(~ACE-ol( zniF|&E4Qfv{lmbLzmCfUBG_Vd;EDQN0z?wOo7_GO_DpCf@niN`vrc_A?9Pg_WSIbx zR+R&igR<+UUxcQ^^L_ z{OYD>j6`xj*33YQfg#CZ^W)86y<7@Sj^iXngL5Zwf(8I|3D?9v6VEKutrHc@@E-Xu zwC$sqDFAyIz8wE4FC?HhjV(Gzw5OQ?PnhP&GEAj z|FTx&=V4S7NLlvC9IA%SY6#);C~0gTH+5ln;LF5{pGeStzP4ZQE$u zw2Ez&)~an7`X6#byq<&z8l6I17{?e8`=#btrNLcjdDaJWJVAbV#nEt&wE^I_B_O+ ze3Bj3UAahu3ZIr}7TXJyN`ca73`M|6@+7q!;R%6?eD3CoGv6;7KL=0(z9GYRB(4AM zjM=JMxXS+#2kE}YhToRb#CC!V*0u%QUSDkO3z1jobPKe>Rk^Q$0&7czif?^QpFyu; zF*h!GTU*Li7~T0DAe%6IH!{9I5!)jxlj0qIb@qnk?2`uw&{}0MfQ^klwrw$k6`XOE zXy^29;IlAj%~tX)v=d~*($sxk^Oeu=>u=tImE)KdS1`=_Be2xZpFAM!^ilSUTfvOi zJNGrFfyZqCi9;Nh351}jRe`pq=vmCl4gAvoJk9i(8d+KOav%h218-Vr8&=j=D0}Xh zQuVx==3kHv0X8y5$;qHd(PKWDv2|&R6od3YY%gi7ppU~!D1?lWh$T|Sjh7R?y>MQ( zm>N;|)!%&@SVg2nFw#%+7JwYwqCPfBCJv_nlwPcYN2a z-1(A47M7$Fn4cxBD(vb;iQo8yDV0hx}jJ7pi-6&Q| ztSzy&z*<*BS5%R9fsumU?HRVNqx{PZT0Co{VMPi{dQh#~Tkk8K#~@*Da4SIT3RrI5 zK>v!{v1&MWvd0xCg?bK+FR(tF!iRqU-Do>T`fCn%6sYu23fwl80;Gi2fR-TZNN*Fy z{|DN4A<{xSL&}r(<-Qfw%Feqt`hTih@xaAg;$rucbC5aiERnOQ731o1D2@uYeU4|j{m5(WV z?~oH4My!bu4l|T=+7Bp*6EZn%OYlm1FhgzJ{1_d|*ec1v%$@y=0mbc;N$KTjfPvX! zdqH@5W{F014qu>efK$2?De`YVjdCYG`;D-E0_Q)#n(ifLlnf>@{%?ep*jLs{PS_0X z-Eno`jc<1OB+apmP+9*8{|Sybj{GkIS@9B<@Lu0$3z8V)D*>$ z@y>-Gx%9+G|7@}I?CX(c#Z``%QX)g7p*Y-ukrt{kW_XGlKkrAm<d7ELutt2eYDZP-o-YOzgCUCmuO zVi1RM3guRp=Wodj4oS#xGzbPrQtkm`T`?An4Zk{|XaTDdqF9pWv_Maftgpg}0OM&-5BA4E8k(D9!`E7R3xAc95ko8TW z92Q8~!}Lax-$L*zGf{)(>&|J$(5j&Al;T)HU5)spFF(zD-?L3`^B6_x10pIuoxg{r z^gQP0&>@Q?$kG}I~RGMqEe9m0Lk8pRX^wr)9p@c@dx&j86Pf(0H8{1dh! zKpK+AQItC#o?MQpFS=H)l+1R=eE6XWT5e*k3jlQNkeoL=bH!aSrtzu!iZ&LSr}=>& z{X9PO&Trt8UNnW>4`45R488O;cIN{2(lgkzAH|-34`uNfKl!s?!5{wW7t>=KT8k-# zqG+8SGHs-7_ouro6t37-VX(%d_wVwd4}2UMtYL6R)!}u<)u&bwX*~Wr;lzZmWgNQJ z5p~CIK67SDJ!@%Dnzo>69q%-4Nz)Y6jXTD%EccQA8h`P@r)ZlBOW}+9<@7u}j*Pn< zoZ7IyT44G;MB9wpLr~R5GNBV_7ZlgMl$BFgFc=nGdwq|!b+Dq$E9eb{rypo}^d0Yj ze$S^*yE%#$Zfj3rLWNC4N+{N0bS-A>7{&bEnC8!+5UeV#ExGISzK{33_jmZ=Z+Zor zgE_X|Ms4K>p@?xbEebGY4^#G$qJ(A_d+A=<-P4HptwoY)03%pi(PmjsaTa*nDlQ=9 zQ_RmYSMx0JZ>}dg8YSt4Al?tFGeU4PywJ(6i}LTV?uyGs9e5>s){WT|2DLSd@hSwK@w*}HU!?F$#F z=5yM%rD+>_Jz+Ah`QUwfy!RsuF77EsDDB`E#n#q^%~j#XD@ty^Wrb=E4?a-w)!+Sk zzT}O+MY(!R?7;<5ZQUsy!D0#~2wI@F)B>6BUHq&k@B7FfPY(9KxYz58V*NT_X0LeL zKiD#{K9;{0>IJy(KEow$p$&F;zNi*-d4}waTax{r6FLhWM4xF%c4-P-1YQ(!8!OpY zT{%n_ruaD$GlMsRlP$O$w*At$h;vACKhL+F&#&mG`!-Eyc)IjAeD3^SZf51;{LqGh zZiA9XpC#D_38oCZC4-QF=#U1J!IhftG!}z^my( zfYZwL;m2j^Qy2E6j4pRyBNL^5E*C93+-_prWy36kxAR;ON0<9$>F@IO<-U`NAQ^Av zqwGZCI-}2ct0T}8-9m5$(j@Cd>$3h2!yj)fBL>R+WFp<{v0Ght&uEWHi;4=#;8zDv5PsYH-8>?z5YM2e&vf~ z=h-t-&l*O<6-J{q`okfkwG~!Y*HGLl|7|xP;~##?2B%IKnuXG;vmaK6?(c{0sd&%( zFEN|V==VTvi)|XWLT@eFx?sR;Hf4WrhsAv23gy%_(}R5$(|xq92-Tw9%D!7szy`;E zLEBVrWea!oQ&>sw&grf*5oJI|rI;0RRP%~#gl>t14MZU}Vw%L(%WF@iP~i^&d) z$*!vaY(fZ6QNKSl!6W_zgA7&)@*=>OR`R1$kZpYm)=cg<1tTZC6~>oLdWi;!_?J`m zQx{n=VNUY^Nm`kYB21kdEMC~fRqlXDvenVhUK&+wKanr28YFyZXfHhGAIKx!?sK*> zayfa6Mj0S!01+1vhXiGK87U?(pB`Xs9RNPWE2^H4J)b(11X?#B7MjZOZ&9L)1DITN z_iTgFio5$~r{FJHILs9!T(2x3ZlqO6^;tljy8AnWM#U9kIpw`bo5Lvl$M1ez(J z23c9<{1dy(#(sQ8IdZgzRmGG;r07NF3aUM)n|nz?-Rin+YRqbht%tn)E1%}R56>w# zPEs1Bph8fr7BtrF>$f5GzYFA{`I^OdAPUehSHp^_lM9;hj(gkqpo5{c0@_lFVipsw zziFL~o3B9^Qx}+tV%gK&;I?D*dR%*INZT|%#E=7-$@5%SN#eKQ$cunj%ek`$u5o-o z!SDA@uV_Sels$RBs=khdYd?2nRsHdDsuZJRyzj3c=E)~#Xn#oCx)TY=`54^ zLdd={*u`nS|KI#$e&UB-iEjO0bnD}2y#R5=#4sh4CG>l!X|b11W6!>gFZ{aa^VVPd zLbTpP)SVI&QudQx41WTLD|8tw zUj=S~#svVdT-sT%m^N4~Xj`Fe#QkjzZBx*;pv}T%xLNq+w>*qx-50?0eQ4_KauB$o z2N-LvKDh$rz*X}Lb!DPp_dx($Ay7NHfDDc^yyk__AF+P4&sA3&+FEH^n9YU$ig3@L zUt;Hje}b$G+{p!2P)c`{nhh(6Jt$X^-U%>A!K_gXdzk9|==>e19$<9^+bZj)KA9i? zmH)G$tcTS;CXgPI>S9=REeb>$@~=9yXOQ=)>9&t~@H-ep8=gM+bcP?lE`1 z{6&1%FZ~wB@A_ie{VjC9K%~XcBB27LOAR;JwiH9#Hq$Gge&8d&v$J*fM|%C?iW{rT z1&DGYI>lijEu9>YtebAOY$9xM>eHp%)$Keh`SU^lciYNI(rqHx0qL#88WQ3L9le)l zpC`7;dj1aW+xMJ=RzzZ1QP zM9LAKklKx=r09p^USluJiTd9Xtc-Or;&*?rP8pJ;WO?3oS^EWsH1?f!E3Ivj%Q?|uHV&s^@^ z%l}>uSNWJOhl6hW9O|os=Zt2FHU3|~)af^iLK-i){EB}by)^M};hlezeE*_n#1wZO zY@PX)t;av|KNpvt{v@dUxkKvCloHo=8h~$4Yjn1QS-C-O{@fpzTVMNKGMg82u)R&M zFs!VuFkD%sHyW_Iy2^00LOr*v4f=f2i%)Rp9esMGs}OEV=ojwDn7uLl#d{}w^!_ab zb@jrmbN0jjX0 zP9!L8P5p&GojvXu3>~@UjYjd!M0q69F7XJ{4sN>oEGdT+6ztyX^qX(6J!I*o`54z_ zb9nRbVIC?3<1NYa(0-m8t#Mod9`|T4@I0k5Ls7Ff@&boxAE)O0lt3d;-r>#|!(u+8 zZ7Om@y<@g%>z)7Z3a^95t?;>u>8-2A-PSNU4|V~CVvMV_ZKc4r6F%*hA+LQ!%XF{7 z^n|i#8T2h{&wn{)^Rq!OVbA?0QdMAjt}jW@2ZFoWAnI02SJu(Vf@dC|Q5a|~^ha>) z#1O?&^oCBBgw*7W8zO6nIMIV!VKl=MId+84{^nw!-1nsHIdeHQf$9i180Q6%YK z4Zem*P^zKNkO`z6_<~I6nh_F9IoW2;V*e8LbQclp0s%ocl1 zf=qQ=6Jaqu;9%z*O*M8~EyYqTrd&FEj@|7YR9vx6RZC%%-N}rP+9;;ONRjjL2U`BN^72d z_}(8r`}AYK(d!Ma@JqR-Yp;m67g7*lxmdQtx$!lavg_pUE}giQ|I+=5_GI)===c>m zFU3Jc-y*>rnWEDloqoGMN9te5+ekbd+Yak~OZ|2I68C*Mo83KYI`D^IlPiSoPac_0 zuVq*ZoVbk6?8%5tKhfw!Gg8wM0q-`K8;eQSX7f4Rjr}U!d)+B3X>!M57&?eg)^Qqx z2E=x+1!bJSD@$;6&_W1ygh4Dl7cH-ZK@HOmO#(dGcn<$u zrk&7FXY9+26<`;ZVar$cI}XF436SF=h8}h~UEcsHXe-P0 z*KG2#muzy)m2Tf>+bX4TXTz4IaR0*%fBx6ooISTszXyU#@o(Eu!MMfNHS_tDz5Q)w zvpvunwKcQJKJ&>wwy9huqMu^UadsI4O;gb{HLVTjOS`dk)8_+@L#kxpt8_oE6a(Fr zW(^As{;T@ABLsz+8^noA9F2_;Y+JFI?y{KrRDTH$s9W)0mOyznPT^7|rTsPq^<#8dsy2MAh;tN)Q_X5%F1#_>Khw39IXpjU(Yuz@@)-`bzZ445_3V zG_BOAH>eW6yH>M=D;bP<2P%#s!_1O^Bp}L0xD^`<^9B5er=lPrteS@)Rnu0~^D!|! zTQgj>*6kCwZ9L*qZP&q&xbMFeN>^f8$7i9M2#6F?Q<_GQlB!Zh#hiclH6>cNESi#D z0V_qt%5{Cp+x`>K!|wedvUk6;%0e74Hvyx#Q=mmni5xr5_M_+6zK9=}u)b~>t@ThW z#c)JGcsl+qw3Fng)sjX_l#1fY6@K=o&+^{C+@{>T0;8@c=0z^f!>A@qvgX`gE~M;C(?U#2sgA3V6vKN3o4{M_77(KLneq6FZ{l_$;WU zf8EO{M*~*Z4L95*l!a0?Fk681gvo*MzPG#wdvF#r9Jm^Tri5Y$W)&FV3ULZj6dutA zrH7QOnBF$B_(R0L7bs9YLfagp)#vfNPyYt~!*BftANk0y^UnYF-F(|ueHwS(d;-x+ z(C&L43a6ix=;ER~qR_1r5F=NjsBN%yMF@U49`xcn=!#4~z>+@CbYKV+bZT2=Ixg4w z$vjUsLd3tO@Eoe5Rux1wq-J!InU}K*l5Xlsv)H+JP%Z83fW`hL+G>g^+#*q$p-DGI zF6uO+X##0>ExVL#9`~gv1luf_Y@KI%um#c}#?mwkwzn>D@%#lAb60Rut;L8kUo<@W zoo(AMgj1Ws3-26JS1k|Rf52w^vaBbdj7rmyNSS%x;?*igHI#iH>&1IM4bJU4B0> zMW&A>gU2&PgiW*dveN~+zUb0~mQaWyFk?bwKz1C<<B!$JZ%9B<)KwS(Gy0s}u|W6%hY=Rw_y@ z%Kqm5_PHOw_{fKTrP?}uJ<>D?Mq_oZ!@utJ7M<^5R&L^!&wnE~z4}|2&l_grUHV1A za4@7l8ZlfOv3_KOwY3eJN?9EYc+vAu@}d{6usRaz$|LN*T=#vgI=K*Xo|Pj{)Nd)Q{~oDzS=vQx-; zs{c}IFBzYB-U&v3m}2T>R7};6^PR|Z2`-4M*qH^A9?6wb2$InqZ-^jxm^(5;k}KIc zZ6!maqH$M1POGTUmW3VNzH=k53wutF)Mp-qb2v=6>uNyhv=hE+Fb=a@{!5nOnPiWm zNMUH3mc?XD9^6Twrc`WgyVd>OeeX2d7HumiJY6OiV7B8~PARCRG!~Vw{!yl9c8yP#*XFfWU?BbIX6Zb_!9uM!-G-s_zKp90F!7uN>V(( zb;q0d(5giTed_buoIYDo42Kv|cN|=%pOO6aB^@G)h(##S>KtGEy6d>=+BMp}vtUMu zloUoN3MhQhQzOO&0mNM|OShGT@(9gj2U)fJ#5cbHt@l97wC2>EgB<$F>`M{cX#o2R z9({NZE!X_1nu0bhy|o_e>pd5^LFv?3(97_Ow}e$)(tu)U=M`qqr+>6h|AbPmE2eCi z9ZY%bfnEOlZ=dBA|L9(R;3pr2!6}M?L1qrI6&tG%MgEPymyy})!k@HD7i&2L_gVGl1rB>OV0@&^6uZ4>;d&bFdD*rA&2 z0ByeB_=9_dVP&nL)4TlGsqZ3=od3!}D(&a@DC79=?Cd@aRdt?-$?1Eua0} zwBsFgw!jpMh&!$`p2A?&psk^lcK^cJS3L2+-EXg|*(aA}(K>sVNKccm;2Y`K)4^tn z*|pKO&jJJ@qeS-B3i(iLzQHx zq{$VCAOYwEV|rX7h&fVJ@eXGWXJW+{;1r@0))Q{HTtrjoUn zV>xDclL*&wY%*eoC}@PwCcARg<_#p>o@s|S(<0w5vpdWwQM~1i@Es~Uxj7F zbmt9|Rgl5rj)3wLAdNIBtM#k>-eK~qrnYH(HQ==3 zuW?)^DzwPY{x~H!-|`5)cyepJN2Hy0`7)cYftpDq_%=P=Y+F;$C$#m#t=#x1vs1F3 zt4)Z^YPXNTBVpBB#BXiY$e&@=FRbE6UJnBnda(R{eZc(0+;L_+EU1`)@h%_vh8)ExkjfK7;8#{cqoG~p&UlcPK*eF+Y`3GjJ(=6geP8!f1VFw8EG z5XL8{q9)+GE6d5>wU+txfVQm&N6aNlG2_X`Iftqito5hp1>@Q}$3ze*3_7_02gkZ=E|CCyGtS%N7WdeSm{@#kTVeKo2R^wKZG_!10<9t$B5ubE5= z`bALfV>VB*```ndeG>XTsA^?x9j>@?m8Nd!ZEUza&)n_}{{;E1PKGIp^jc)C;Ol<$ zaoUAaZ1mBlBFH`s+W>+R5b>u*ETLLG^x{@xz04N}y*h$R;M?R7#o$Vu+1_FFTZ#;B zZ?~$UonPc%{EJWFxi49x-Fk>#u}(beJ(u0V@lr*ta`JfJ)38OvdK?r%t@w9>O(AJF zj}HifI)0Fnr=QtJwe(f2qubG$KB-0Z2ZkiCB+cvYyus^hZEGloJo5N9)kHD9(r3gQ zkD=gDCK;UT5%u^sVqI|8RD8=<-GXiQu(g*%ewET>`aD7%%pCz2MCbtxcK1QP;`O)k z9Y1q7vzbMD#_5cRH;w&wkL&Xk@s5Hi3~g(8n%RzC08&!xk~-avlONPzuhfnFL-Y+WT%0EwMe}K({mKpe>$V-d73Bg z=a$=*gK^7+Ew|EJmC9f!Jo3?+;w`_=^S}BHs0^`_DaFWFQP%>ra$9+e($DR}>xlx9 z9*Du{MeO2_vG!)9|5C)Pfoy`#LFQmb^f#Z+*L?TC<)P--IXi0pZ^h8uk8Ts`; z;xp7(LTP3POxudl=1I!lDrzm$>6rT2md%q#*x1}~wwVh3UZ1*ccE8{V~0bRnHfti$NJh zR7F(^in6W7d$&Gy|3`oK%3GfE&o+-7|FgQP4PsK-T~taC1EvUK3RE*aEG`g$wJF#T z=V z{1XWoncn`jc~(kh6GXPxI6vGYuHP)Lo-%RXWqvZp>#&d9oiGuhNVmE0H2@W#xm=%t z*e0{?!pDHFfPf$=y8S2Nks&f3g=Ml{@^NJEFW(C`N<_(F2RRtmU4tibVfq%ITXrs& z;myY+UT{flt&@EazbANt^Bfo@AU=LS^iFm!W9-m>-e(?3J=|V?KaEZGa=anwdmb?A zINDuY<^hI0BA0NL;bw`yqGO&<>Wue0{b%?-lwu^yk=qbK^y&X5q%yhXZ@1!a;@eV| zR>YXSt#hy2d-mZs+4;_Oh;2Qhoy8~tNbB46Z>z=54=C1dSY>r>4I>4MdBfVU$8C2W9S^~ zpu?ZcA?whW$Q$l&9;`D_@WrQmCX;O&s`=PeD)#5frU-tLF`YSY5}!B+G8uCz0B5_w zhd|ek7oZ(h4QFN_Hbyf3On=g~%gs;8kiDb}rDK4LcM3cXy&&_WiSs2Xk;}lP-4Dqq z%aq~eWPYG;Ca)x{4tp4*%@v(fO?V7L@2CO^3gZyIyAUW+6lmKro9xpzbK)wQ%f4*GqSI|SxPahJ01zKkP}8HS4>-0V{Mrwnq_4YRYl?y6wUy`J zM0v}90t`&viJt!>r0>#r)4u=IwPfQ{W1zQ+mhjj|FVb3}@box!rJ=vtr>^G|!!=x5 zu#$8{#@o2_m{kgd1?9;jJn*iD|NZ9+%<6F`8wd_tD$taG(u{?d7E)uRMQx92GUd51KE;oI|0iR2@17na)en%JGsS@f_={ zGxw~Rcs$$t9@<73B8Bm1%y)l+VVdTqAD6mp1u-pJwQOFo!V6z`4b5Z^C@91gTtp1& zH`N5ixh$?lm7=s*9a1kQ^iG}P3txSl-~T_m&|gQTdmL(#A05CVg2KXvNRI~|-}QVM zj)_z-mJ>%yoKxEK4pK%hRi7jofYg8qS}k2xMtOpt`?-&L*hiRR;H%pAp%i-SN^7BQ zT|mecv-CEp4?4x{%s{8$Lx`m?ZsoIWOGIXT??1T_X}1w;k)rT)*A9H4k&xf#zSrpN zG%`3r@3z;mGQNPGJ(^ zhD&@8XxNfi;^aXe>8;Rf5772KDAypx9jFXJhc5G^KA`N4`0_8glb`>E_pq=QBgTcC zET~;LJ3za0$k_wo#FXSHMLx|&o$sm*tQQ4}1Re&!&xHlOL} z&{tkN#&f1mgA11f{4sBV=%t987jc3|p7d>MLp9#P^cVD3HZVnrwMslXILBMWPmYM7 z5Hl8vAA@q%pvWxak2$*N*JysfPoqhfHW8SZ#RAMt~U1?ULZ6A2Nb75-;~BL2PF>RN}uF z5Quh@*CvPTt;6Ftc~rdfsN|hVRLbe6JC6b=L7c^3A1Xiev~O?87A9GA@iCG(7jMWD zqc9H0!_=$Ng8_&QyPxD*8R?*cXavtC#(~YP2eCWFN2R9i#cr$_nkd2 z%kMiOaXEOC^R#qr`Exw0G<^^J7+~t|RZ7o`TZ5$Nm9}o`>(4!T-_P$n{*nJ~=eyTo zs3lrB5Gzc@Rb`793(X8W-)Hrv&*AxB{?lw;`%)&``?T|hK~d80^;utE=ftVwY;JCX z6`ESO;o75o^2?5L{dFbULhbAD^h@aXmB*fJ`SZWo*Ly(cr+FB3*ZT@ zZJ14VFXR0C!DszQIQFk?eT+`Q)}RYef83u@WO@$vo&oEM&lzbkQX|G4byk>$|MLS^ zbMi`y?#$^AT83&_yX#7NFM2C#PNDUO(Pw_l?THS@{$+ed7N`{wmp^X{WPP3a!;f(0 zAxp1x;EqPhb=R-bR125>KOFf0#*&7MbJ4{j+g6aWrWmgA1ON3rw(X%(Vy(rdUG*6S z6T4 zKl)+@HVwovvsdwxPS zuP~(|+LHf>$8%^V+Wbk-(K#nR&g&#M#TcYm;qHgVzS?^?2$Rz#A8%}1EzmmH+8v&M z+cA2B0nNl^su*0AaF-+PSCJ_|i}*JLfCRt2OM6taA-1jf+SgqL_NZCN-+ zJ-O>}Dg~;AuW}Dp9`A!zUhXV!0m$%4{?%syV4&M;QlxN7Rm$} ztPD(9+@6mcTluI6=`rNjW%9X)Yk`yU_ZhwC&8DlE5Y~;>f09 zGyt`gOZUb*!r7@Eomw*Z#Q!DlU}cQV%K zj3L+=L8m2t(x6r&?yRPFv~8H~Z!z27#@dFmCp6WZ?TcINZ0%y(7K5c()KrxV)=cM? zhaNxR10SBSH&zA%z(A|+^bBp`=&EqzRV62n_j&yB1y|m5E#Lo3zrwNSe}UUl)CS%T z(BXmrsva5jv5SvA{EO$$JpE70eox&oH(|9zka&b^w-{jVYs5vkunjs7Oha)B-bYChG2+ffDJp#7h^K;dd!|d9l;SDIN{kUSF{0x^~!KE0(jZvXHmI0 zv<%tFc+B9<0US*DaR?rcMUH$<_?9Cb^q)O)pCrRO-&fLaN8-4`MGe2><|4q+kCY!B zkCNlBe{bGjK-3V9!GQX3k>CrmJzhEDzz@F;De0K+62>6$yJU=?_kVmlxo`(f z4lkHYVBVDa@7T#AQmQG6(caGGzqNDz(Qmbj{Rb&%fDWbfOq6(2A*@b|D0VeNs?*&0 z@o(Ygmwg(CyL+tm_b7{!vNDXO6E?TE7_UvK%96#ZV{>i71NUxn>p6q%lzQdJ*A&92 zf_bgH_dN@qe*S=}#HajsSam7=>i7NIuH)cfpTolgR9j!vym9Bswk|+m#6@34T=AdI zwsdVvXInoYo6zi8uqQLah45D)PZ3T0u5rqG$cl5PIg3XFD^0oEs-d=_S&S zFVViV39}omhP+?#fH;0k5$>=m5uAT_V{&Zc{W<)}Uhw0Sh=}MchwFiav-ZNELlLFn z%1TtdFoThVHO77BxOE7-fN zEO#8q8F70nMS#*fgFF24KRC@R-yqsNw=0aGP^eyUKjx$UGZgordJ(XaIp}x*1edak{`^h)M)elpdsUKsRWVLz~o*C+53bb7@ zJ$ahxy0AQGp~{$XNSdLINdMWJD3oL7hdb=72& zwX_KCWE)-W@y0i7FrHeL%^WrTqJ(+wwPe{u(U=zju}C@P`AbW*6{M{E({4rY_M1kC zG^B_12o4jz13tnkucj;y+qrWNjPc27VPgDz^=Ku1&qC1-)*vT(4t$B)8+_|md=!+| z(7MK$2`1DJkTgFcNlGE&=h}jG{37*v*e{S1uV($D{xhWleqfE4=bcKbPXvIhy$am8qaKh>U>JjWKLHH6_S4m~-wu%(+=dS)uJU zv^zxQbspW<=-NF;KeRwW+%^^Gps!0Ewp@_U6y_LzCDUC|*CZ(((c{}z!DrotBPZk4 z_%UV~NSw%IZDe1=7P$a-pC>iZ6E5l8-y=!axij*Hcv|3?&;H>y_Dre=PEhg5n6z-mtIv_&GzWJmdW}_%F%?TZrHhY4Q$8hQ>Q7a zl1@7ovxah9QB{T)E-%>KZ+X>2o7{4H(%9lCxR8JP%|n`8@Up(-jR8`qwC?8mX)_}uOH{(Q4qbx1s?1t)2IMx_;! zof1x=5wDw!&lK=m12A4uD)?-sd`^;$m~4z}=6m*4@3%-p4!V#j8nUm^WbZ_3h z6&TQe92`LvBPBhsvIz@};SCWTG)cxhNiF0sW=bl@Ley8%M@^3@2hM$fAqt4W7_(PS zLVZCJeocEef*=~E{O6x#2xHddkyZaZjmEc`lS9wxjr$7+^djj!J{$R^FOV7b-y3yb z&=1EIdyeCg{_nlt(pV*b?>YYocIB9An8DbN^c_}G)AKHp8={f@V@e!p3Z^J&+Vo!|2gi#%2w7wccGw}5rf)}W;v&=eUU`?k`21P1C=KJrO^&Q1skdZ;EXoii%UNrTBdba0i zT_kf1gL@mQTjO{lJNlAv5{CG~au%3fMQ2wLyTlk(V~h{}2{3UEM|Ym@|Ki*DtiQER zd;UD8>M$tP%if52>3;xoC+H!1?Z;sEJy1@;mJv@q<&ASV;*p3}kTa*5efUY9`=DiQ z0$mH^v2xoT8?SMtz9o7{5i2Ak^@r3ia_E1r2`hxfjFhu?bt zKJR*Thf5cBsjb0G){#*mBF+%EjIb-%JTu}y|L9+X!xzx5a+w%}%ovlv^f=UD5L&Q{ z6>P0>=H!U;J2k>I>W!hw9@6HKmnqQNa`o~ax7}Xi9Ks^giAS?=VmHyQ$cR>K!ms*0 z`{FXGUbp~~KyAOUaG4yMpc-n}qwogWcBiqZZFu0`b;LFjD6a8Pn5-o6k*o@~H-$1{`Q+Z-lW9bwbe5AVtab-2k7MgKu>a0qXPp_Zc$MJ;e_=V8fr<+P zjMfcLJ<@UTlmCM^eAR21yyy*d^A$x0jJH6&Oi>GF400NZdw`Rq6E{FP0WyZ_5NZAj zS^Xl|378kyyY?)LRp*0+UBpo=M496#49!}s?U14*?%mIVgAvPNPdtzXb+aIJ(r2;u zOF!zLWMwX*f_BN2MF^|~XG!8+#P;IWtEg`@#euv4PNsnn`v|`uw|MIB5!~WQx0+#_ z71eYLQ%$@%Xj2!`YcR>N0pkbW9BAdFk3A^uYR0^28E&)s)Ux$ngzCKc2!A92>KeeJ=DBtuizk>gI z&mH{U&wam>%hQoh&v#PT8%2exs#Hd)OF9?8q&O(t63ljAeHKN!a`4Lr6j zE)^4>?(ft8y@WNG!h%-&yH~z=@51BX*3EbCp_B$hM74Ch>X*(Lq*sfe%R_8+g1bKH zYq;eVpU&Ri0kbRD7@3lBRZ)(e<3HV;QdK2Q-7%R|Jb3>WcidVsu448ig@tM)ELX~V z-@D||r*;u6B6sO$l)rxw#0^9mpg&NPD)vlvyYr3vU zqB^jo7kY_4!|Jc6iAoV_G$ zvxr}2MG%SHk)-F>JUApIqb9OLYD;E6Bx&fzr;@>t(dZBQ&UR?K^7Y~ZJ-C35Xp1gyxJv(xJ37!+ z2v&?~)ffX*Vy!{!b9~Pio#Pw7af|wyOQ0P^p;|utCgjEc8Z~!-&S39n;Now%BfD(b zM{^I6er%ymsI0+g#0UQLa@a9|waS@u!p6xdUA<(wd9$kuZY{^zr186Ybcls&jsNhQ zk7Fn?rJ}7xeQ~_}$-eFjbEw&g0*X>#S9?74@PwcH{!imouRp71v=HnP+C%6ZZLi;6 za_g&3^3h*-3t!VMv9kpq_|pYH`3ukT%fIy;?OqGjNs&pZU1Kr2!+-h7H*xEW_OO?h zsEmEkE#OIe{0q1uh3X0iTH7MVaK|lEo`3v?!zD@oCEOgbqT95qfUl>|RJf|>8sQ3Uzg@dxac~{m)=bv7>1@mH&UNa# z;pFKvjHeSoY3l|Ns7y)S3XeXyVE3To#rI4&aZ+eJ{sNDk*i>Hi@-a_7+3>#iEcv2; z@EP3uz}@`pw|^aW{}9>Qa6&KYZ3JrzHHcINJI_7+y=v|FmOCE&@wQ#Hh;eLzcspCc zxGkLSyNyAhWPv&7Uwj=C)YTV^TSJ2E&1|h?i)9#%!4~mFXUXUVQZ{3T^f+CT`U!MH z5E+upoJ0 zjXD{sJ(Iz;(<^)u`WZ}2Y<1wkCz+B5IV3%nKby~i$D`>z+gI)>PBOfbqiT5nF~O9e zWTTGHaGc|@*Ip7%Zq7pr;vj?KBaA=wC-M0lM)!NTFB}s>qNNB)f;Fx56NP0AqJ;M> z+oet5O>!rw%@g3>ggW#4M)n?E8J+78>)Oz!v?UiPLhr`))e zD;KY0J6Ic!D2s|}T(NQD1e3`+t*vQm%dKZOxcja(PMvTbLD#yoo5gSSyKt%FU61T@ z?fQ(#*iaPsRDTzh$De6lH!BYJc3G_!7^7&{v0N^&ZG)gV_HoWXR_W@Ru4`kxfIR9N zXZVP)O!B0k4j+FdD%gx7^VI-)?F1|)Wo}H^<9|roEZp8+3019wkk4m7OFIm*B7-sZ z=Ve1$*_OVMsTnP2G#zAuWMd9#sWIh0A8yYG&+r!HLF_LN1o}RP6}B^Ylbw@fiqm^B zCLiT%4BSY&Fu^A3}CUfGtc@kO4`qX%0`O(1%0m%h0F~^ZC@I1jAon zQ;4>$S?-xbSmGAz&+zY^*)} zyP4g0yq`-?DAP5eX_d)3+;Nwy`dp5un6*v6T%(?@lfLT9RX{DKQnYFKqra@dtozzw zg0I>~F1T|;D)J$?F=z*3u=5){^bq{{Z+;3z)nNCZb!q3KuA-EG&g~7}MLYHTBgVY+ zlTPx}pY+lEz#}i`Cw}2c{^S3?!rs+|jK-q><~u)*H+{|t^x6f)6n@WX(ojiEqRh#B%0Ay5Wuiz?N=Ic{=-NczK`8j%kEX?H)~;*EQKa=U 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

    sb~cLqGI^lp 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∓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%0Dqy~ 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ð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

    }(riBCK% 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 ^( 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

    XlS1KDek)Bls-+(H>xg@>H04dY5b70;mxGX`+ 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�%2_1RDDQ@8zRf?UB$LSe|EDh=~(v^&_W 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

      #FgtaFctj0<8sF3#u0E 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%0DK_TFGCYuf+;mD&I#? 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

      ~8pR}Yi;vxb^uh^KdRW5tv zr4hdpDy)mLe;YnPYKeZjGGR<*cF`9xel&F?0V4K5>2dsM$sf=ykBz)ioQ)Q8aZ`Kl zf(Ja-KD%2_YUJ7|nulJuQ-72l!KW`TH`?}534mol224LjV}~NL1Wpk`>?n|DuugKj z_{B`zsFnv~vFtjokO%b+fxlGo4{N94(d{aw$48Z%#@e%43Jc&`{LB@|Giv^Zb`>)} zlkGZ}j^Lxy@Z~*iqYRX~OSiFUsm{AdKGEoBdGK;sQ+%C~rtd!}tL8hq_to46>>y|Gvd7(st3s(P?r zt!;8i24X-jMO>A(it8wUWaR^SFl?180QIHtJQTR*fMw9Ch>X$==M>4Fk<6@`ZrEoH zD{#>Va_^`POf?Ar-8w*E>WDcdnq2%m|CQ^H=D!A}89M42+<|IL?7VhCIhDf!cYCBY z;Ms4Q;>?$H*xp+p_l&L%ic?o{=t?pmrShr3juPhkjP(`98(%TQA9&t*+?pR?uYM{} zm|MuM_8k(KG!a@8VMKi~IN@IQQV?L_YQeed6E@R5I6rxirGQWI5N`9iLq$I}OW@>cpe8^^i+8C{e8mpbK9_63P)&&!B*{##c+88r5L96doB`kRm1M((BY5W!|X^~!G zXCi<*;NXC8<7&nO_W*zS`_AF@&-xPV z0$5um%oiO#^6%%^`w)P2s)eI(FROAhp=zHipLj^Z(PS^j^VPXp3Mo<;ZO&J}R9pyiWb?c}8J0$`_8 zuAIS&lLlVbLUkftJ>DV`CeIwY-o}jaa2#6me5CGZxkH|}*I{GH!`f}@-&W&|D?S>@ zBg!1bgkgm!tfT4-;0A3NDKWy-F&vL8q-8iBm%nn2l|OWw#4+0)9Eev7`wrwSWSH6a z_*qO__(#z&lmN)FoG|EU1)p)mwbN5mz9lZCBMm8L)|CL_Foy{Yfv1+a!6U8=(4cM3^jGx|kFA}%ZY>%oL60cpwrahZ{u66k=ix837qUo*uUzWy%E zI^gDf2XQ*p`Y$=2v3o~VF0Jm#O{xMe5K>*yL$V!JWl7bZQ3j@1#o5UNIGN4>++*JF zfH>pq^bC5;@Q>g8HvIEnybM|ePT$vob1s8+t~(l>xsarlw=+Jes#c`pU>&z=_efu~ zV9@wslCh!cNJej!=Xh6&je;Jfz>aSKSeT{l-9Os z;BvxjxjYL79u5f9rpW53oD*(c?}0h+-LG56UwGY%aBi}KYyA!uSV2cCSb%VCaRpEA zJcix8U1(!~WCq)v52JLm>6GB&{krL6!H)vHMc^5t?Nx3)V`JKZQ^LDHlJU0p%#kp` zbOL0!W&31_s#JMNRA&B9oak`vG2mlAx4_~t0Bd#af*<_5{#316F39j={Q~{;xd-Vl zO(wXy=raMt+*dV{fxbW0KXdtxqVS^%NE0KbbWYEmztC(73^~;Wo8forZNgB8-G&|v zTbl0QQ;^rNO;_DDBhEmpwR8o%r0*C{B6V&_eoK1Wo>w+)JAfM<{0odBezCd@yrVs6 zFYRXRC>$wQ6}srSvz>l5N3bfb+(Vm=W?$aLwqyJVi9^reF?_4-^A<*JW&=->bBAsL zU<6;xEjGd*hmZFYgOwm&^U3uC9}71;^k0|?2{`iF8U0FtEAd>bS1>pO9~4PaeuQUa zJi=k+j`94^c1Fs@gnCo11$Z2!;NFkbA2hNA-f`L+CAN)-jw(NZ>jx0V9n-~eB@bl| zxt=aRmem>1u?)`@!lt%a0mMLf*g#uX3I^j#LwQLf z0k-`E35u5TO+iHo`8`e_2)@RC*TI9(JEBjDgX4kHMZ@<4S{+^FVR-nh@{B1fS(^c`wmdaI zUHRBR%&$*ZIJ+D8DXK!xc>cK7+d0rEQ;*et>w?U`pI2=EW zy&@(3m&ozj$wOJp0B5A!VRLc;XVU$cVFJbu`h0+uw1Nxi41VJapTXb#XCK1HAMbJc zu7uT7z+%owke&IZ&C=C;U-RdKNb@exaszXv7c!Gt`?#YZcs z{nGhC>08!b`OS`>7Qni_lv1B%32d{JU)ysX*VA9&7rW?qBClM;CiXw}8ztOP>tw)U zSA+s-*RSv*muQJ+B^Z5EbP zv`GmE3&zchJzn&1hrj&&&&SK}x*Iom2Ya~((JB(HVuyEearX{oNI(+thjK|;HgZBW;s?K=5_kW8pGBPKcVCU4m^bb$pll~r%cQS*R znYn%qw0!1|!l(Rl=K4&TuJVqb`l|>8ewlz{qRsQrClVa*WlK%N^BB&EBl61R%RA@p z+6`UE!xQ~Qjd3IvUrn_^Qt|M(4p$V64yrg*DbK||g|d=#Gq{7W zkPW7P)h6q-LGt#InmT5+w7)AR&UOa^%;t^3@FLd8q)F(E{?=CI6^CaGHlHKq-Re9K z&%CnHqxRah#a?(Yb1!nzULf|~7Y{a>Lj6F2Dn<+mN|&$j$klh_9^=4Z?XOf+zY=`w zh)ZkV5ApSwx6MRZH(-ukKlJO7YZP9HquS>#N*NG&$aUOuN5KFfoAbusJp=F$O8|s& zqc2DHC@!i0wE3X{+u`lVwMuGc3^1j!#xe`#41aejw=a8AE(97zS)b zfrmdRRQ^%e4GxO`5;>L6^eG@8V~yY`vuBl?Wf4hQT@o z(F98@_w4F>9Hk8F?-6I1 zYP&=?$l%-VJ$Y_}c@IEVPQ(F@DXJgvv+73VgVN{T+nE*!?fB*WrURu7vck$MYL>Wa z0-(!b;a%A6_pq}#0H<67 zJ3ogIXDW=fqAPWE16vrQ&zWL^Ks%p_&@xL5?inkzfwPnQu#rw6agU6B5Cf;v28gHl z$#?x8{zHF}r-%Dnz|YD)6Nl(C>7kW6fO9@mPq^2z zjRb0vl9@pn*rX0C>m5G$sUE-b_64@K2pj83XZ>Sp+U&j@u&}z?VbV?T;a{5L=KC_x z5qLsCZP{l);Q{9Z#NpApOnt)A;AS;GV0oVJ@H2lNA7E=3fTk}QtZ#TZJp*`c7%&R-4iW$Y z`>?WYI5B8{30}v6eVohULvh~Y5SIx->W-g~>5FLe1K^-k6+BJ&t7;wkkoPbriSi@ zb0BDNSa?teh{?f{K|2`_)B!s~81S)bmJK8`SmYS2GtZvyDmUX#=)buM1FhtDqlYfNM4RZ`=kT*HXYxT_j+nhK=3!3j93RB_RNb(06 zJ(~aK))V|^fHVV;3L$#ZQw1#wT!8RySrdET8#>(g2d3EBUZCtR7aB`{?Yg=YzAFiV z*{lQlguPn}eC>;7_^y{<@FRF|5v?Yf2K%|pp2_S- z7PVA=2{BL&Jl7zal@7r#MBiELuLakd^kR0a03Bay8|ovx{}5f(5t`BG@-)teSs7iL z>f03Ax>30#28BMe^`Z}PHgF)E_QZ0sW#Fm=(wtXau7_x*guPwH)u$GC(F;5LS3mGv zyz<<=xU{&5Ie?XJ9SJjR=UqIx_XS+ryM#<^->3HG)C~Te4|eYX zDqjsSlB(}!OnS!2)d_ZU!drhc_((DvIeePNGL$fu!wO{07By!EeFuU1*SOP$PXLj_M)l89=ncWPFr>v^Og~N)Xe))m+8iB!lNafvV|+}{h$FOo#sgVq@4(R8JMHWc)ohM z>U(mTRvLAvR^Q{+BHUoXfS%f}mBnc|#kT=bb$*@_7YK>r^G*)r^}_{ZQmR2MoJ!jS z9WI7-hQ=izDh*mD;BU(o)%n(U%71b=z#K)0JH2j>!1esn!7Xfwv_J65#kg)D4alsE z@rRWLg|GBED-O8Chl$iym{cd@jc^h>Cfg~bJ(FVy{@i`|JdRhL)Rgu5N(hyNzdEZ= zfMnto{{{h-x3`C3FfJM@jYsG1zes_GKPrbnD~EDHH-(>CjUHgAZFSBBzRz$c-~PUcs5kLpYsIp~D&Nie4aVK~O^}h1bFT1tc=i}cGLSXFWBP9^QKTOQ`-{2)!!0G(K(y$PjZ1xbh<#xj zxOx!bnJj_#YRkskid) zL}>g(WmeV_zb>d^Z*!FddtaOIt5wA2dVXnr*GFRz)eKe&r9R1^ze{m4<`V#PxO!=U zNn-rjKXMO#;2WNY1-7xZ*v2GnU^T5{0m7B}6+E%?820!8gj5c(<6KXu_XEgs(52a9 zvt%OY7zLIqJ6)H&VJ3lBZF3K-5@BWuXIP%$e%z9WOy9(^vhcZO*Vl5}| zngP4w61b;yXf{|A8BRwfa4MaQMI8@AbHQHMRhqSe$rBb!G)WH+b1?hd z*krN2>PLf5cKq?iQtfR6vmr!vLRd54sd6U5hryQ^iX4qXK=3DbIA$F20pU58yl=}K zCjl_HgwI4HhZ(wdz0zZ-z5{$)qK+a)%a1`GxsJn}JGquE=e}(?1~3@MVc&%w$-cucFj?+?G5_Jk~1f)6)na8xS}GI&&D0FGtq zKjwsEqhZ-?YCI?nsR_2q$=?o|f$^g~ZD09FN-I?!dj1(bL;iRlP2_JJZtdTII~m;O zw0_+)=Gu?VJ6({nZa|^>O9i$L{K!La{h`_*O@uhSJudNiRu|H0xGUQkyNFu+MwK(@RqdQ=7xw=yQr177%DYgjp#vAf>`lwEsnmC;HZ?sLzzO0il7jz#GjK3R8IO>5)SO zJ^p@BAx|wX8G~zs39`(BzQf>GK)|=GddcolZ2{zDZhQVCP_-vx9X>QH{P5d`q`jC( zMN5*RMHX|gr_U|dZf!s!00}!g88@El@yf58;m`kx7vM|R*KxVOhKvbT(mE!zh8^C= zlRJ;&+Wr-w1NxjwTvCCT*=+Nf?0BVVfZ8rMiW0^NPCq3P*K;{14-8NSHYOc-lJM@| z$#~cAERg1e*$R*;o6Lo2{&#JAIwMS15|2I)I0h&&oqB+N z=JW;nb0A#mnY)s+W9AIvTr@`x`O`#GUH+dLb@_|$lcev`#3kHHJ=s9UT3%J+?C@Y^PD^;v`G82Mw@QRNFimyb)e zejOh!h0`Vg8hMU+rNi)AhDT(~65uURBjR{19tCf#{8*V*2@ey(aTy`y{dGHam%?lm zu|6#D?<4`B|5(pE4j=ENoOCW*KF*;74+h8enHuB)WHd}RWgZrHOVKMp3N<`GoDp#Y z4K)aUz~tIvN3b7A3s`38Y_c~vHX|YJN6xkhfJnFS(TuRsXmwkBrELkc{Vew&-%rKF zn|umzT`Aykm4DhGyET?%Gz<1bOA-JiJc@kvEyz2#I^iPtn9b3{apu2)slSyjyC*XJ z)IQ`@v*CdalV!`tDt=*Z$M8`{C-97iA|=4|L{~Q` zO=Tqlxs?G7AeH0)(xgLwu$#X8;^*@JbZ~`Vg+$d{F%k5$;6)k|&{V302J znI)~CJrv4W_f@rT8<&Zzl3ry(*&QI>gsdNU+`vA|8`-~IaDmJ^* z_@zfaiogFaK8Z)3>~Z1#4&4f4u_%Y0k+Yeii(pnmUFfKq+A{Pq=(> zfxFKFfARaDi#I&~UhMM@ZuVQ4rVXspCJtzh%llVwY4>p)+!kA87u1vpdPl8q0ZQH5gGyY zVBG>^eLZ3C7UAP>o@4i80L_wGSxyCpUrt_ipzP~mOeSl*eeT)mM>kI6@8>!1XGUU1 zUzYmUeZQf$;?tlZsBmPn zN2@Vu5f>W56?^RU!~C-c5XdyV#pOiz4AaSArVWP22Q59rx<_4Yj~FjQ74&!sPwrvu z9+?0b8($s*Zv_7GJqAHRMu3`A@|pvc=3ps2Md2Tb+z1{mj$`jVT89=mCLC$=xJCY%np;#ZmGKL^t$2tBxL31AD(DkrHD%Axyi3gPn{MvyAWf<_)~`SsU2N3+(p$`W}U>z)^}jpf@FoPKUm-Q zgXZ#Qc&|x6-{0Bs!TSRid||wVhZX%fgK4mITRuz2j;tzY4MhDtTwUc?{H;4w2xS1D z2wOKZco+D?uRVc3{o03d?{p0p7gw-A!fHARV2WG)O+2;td2G+O%3lA>AWkY*X}|`x z?9oyD)fc6fC-r?5oLVWCq;@5?2Ub$TWF_JEK9%w7Z_mi{gvku(yNnD=U@{nWA|J>y zXe$}Vm5mNhev0wvuPl(S0$8QsK3I|nqF-4^Dafpxp^x45-1Nh-> zS~dJgIW>dmL))qUaHB{*00TU)nx*xPjSmA9#Mul22L;wc;Nb7&y_<=u*00S32K(dQ zE%SHokCk(PJgt8AJAi4PQ=p->OwDSFY9ReApV?kk5qtc?;F%G=TEG>K%$zAO^7D6$ zQ8{{EHVUU@)u=lU0y21O${C@gWx%EuA!;dwyL znCm-rt@XZTSX^RkM2yfMvPQ9r$SL%%hHo*MQrm3}hUlbA5ZKH=YNFdGtI*ozIsWCGsl_mYWpK;==2oJwu75yw@e$bcVY=H@q z;84F3Fac)M4m4-%?)3PYFH87?-*gtIXN;TkeJsE_7)dpVmK6c5jd3Cg{M6t@`|Gf; zN?O6T5wX(88JN;K&P^V|Svrr77(H$v_j_2uCQf!I@$RdS;~)Oi@8Y*Va)1+eby(YA zO+d)k0!YA`p@R*sMZiW8`?8fFqt)3?-~UTTi0WF#eS?Hi8)bQ3`ry~F9f``+(ljQ5 zt&XRPw5-r?P=p2S`>Z1420gCAGGAaTp#+z>SDRa>0?$WlLvkPzP+Nkbw%52qX|PQ~ zmtflpi~nKy{GP0+seL{J*xd)VFEd{7aKiuV2VRJmU$_T1@^x(Yd+5>{CTSh}`2bHH zJc+A&Pa$KD461wm5$MyVa~aWQ7N2A@`YL1hO!TkNY;x(dPe3v#X1h&-^T~Bf@N`w^y!wuooPv2AaJ+ z4(}UW0-nNyV4&h(d1tfr_9ra6wvMU|jN#FAUjP;-dr;9{8gg-fF8EVZ%Ryn!Rl9~O zTwG0V+2Jf)&;i!IV!ov@{2nWB2FG}=a1knoFp-A*isrSx$sBn-NQw-(wd|SLYmZ~= zAIyhx(?5pSpza~%eCcI%2J&0-{ttaXK6jjvUyFa(knFSX&LuR?cG6G|Nk_ZoSm-lIyUwgG+aiCFI_q zb1285ozbAM!Cf7rYv0$20Ni_a@SJh;gR6m~aSgW1+;x^#crHfB(}t#vCNM?ab03=Y z^jO>#+ZQ7neS26k9ON^?uVOT%0fF1_$+eFPU)$BPPJ0FdjD{ILcw>}VYxkbW;4$ns z0Wt9*GZQWS19`_45rMxXa`g9ZiN46+iCGg<5bgHz8aw#U=wl*>uN=4)hbG}1g@$ix zO=_c&ujGE3EXsgeJ`Kpq@AA1o1xi#uE!IuIx31s?mp+^SdfvfzpraKoi2y(jrT3fj zS>!>;+Zoem1JC=8Rjl7l*xOqmb1swlj&~^)wND)*b&Qo6Au(b5YL9y^0DtJUt9bF< zr*LDjk6rGOQ9iquQ3mUh0C23SY$*~d%aVg&EFq$T<*?0wD-VYW9affar1LmGc{Wbq zBslNmU~vnC1Du|mLPsuc&&Ob0gw*oL_q&jn#M6PO33?J<-Eb_0b z7}WGy=4Eh@rih|3`p(Rdf31n)k)TOciGBZpmJjxT*$xaQ2`u9hdx1p`aJ1jH^+o!- z+GlO10N~1>Xy3d&l|IfUQw!P{ooDcaulY)>;s96s>tLFqOKSjixY6Ih#qGzi+ixM&6aIC; zDk#?hC9}~da#Y+LFJ+ML`Dnr>WMf|KK?UBFf%RF!6ITdtetVBEJjvKx@6b~&%k>R} z{fBbuJ`;oI!1_92cPrszKi^~iag>Apm~}hQ;3DO0Mn>wUxP0c>^kb*)N=oJ=IhF(d_v*-W8HalQ#ajHazy+?=y7rHRF%wxnBWb@=?7NeH6GZtE34m z*WqI_!u?epv9-bS@lrfRw{@;l*F>DKQ@L6 zbz0o1`bf4uf`*0SE=TxB%>%J3a^q2PY#!hh+APh7@aT}IcOX1*NrX3plg_%|cI!Qp&IG&=y- z+}}=p^Pfj2Fb;z|rhr=4CmH~tF+_tp8pMdxvG%F`>&muE{exb(K*)mB`a+l7i`RAo z9N~*MR30DSVcknQtW5JasAu4l0kXkiOn9gvTJo8|G9Ye%f%Pywk6&0;fM1OT~v9<-(MbwMB{d&Bi5!7b%=e2aLQeo%rr8^7$8 z%kpS11KHoLc7?=_SOdX%>U)I!z#*a0;H5fRe+xg_0ltb@-s{ri(vVGFI^vu5+JU>! zruWW9hM7{b3IwWC%g#O$TYV=7NdU;~za;=*xXZr%@|-3U;=OI2UHmlvmHAElFo@2e zd^4{rjRu8xu9?958MF>O@R}L!ddUQP`wR5-c6~b&v==T_T z!T7eX@9>Hjp9T_eb1?@a*Hgw*RnTuz6an%Z(m2KgFy-Y z{B|U&Iu#vGK|=Mka5?IeFA6RRkorABR<$g%pdu;JERlN|u*=|G+Ni-h+0t=)4>$OC zvtEs#W2XAmN;hD4xRM7*CI{95dbKTLOU2T-_8_c;_bomFpzLvYIh)JY58KB zn-J%SyqxSfwkLSyfIzKN+ssV3d4sWYjqx>KJH`L|`(A>tK64gV`m5N>yO^YPbZHg) zJjWMyAIG)*i+1=!7JpxKMS7?3EG%Vry5r?h4$L>*Q+p|NGm!O3B_tEpD1jz~4}6UA zws$R%GGR8WWs`?teTk_gw`3*4#ya8BClVg{g}yHN?*PuWk6dl8agOSKf9@IG20n1% zx!r%Yev04C3$esy!2>gpdz3@{`hqj(LVR5iQJG=>w#d8cMm;ydS!k18hP#wuDhpQR zqs+}QnWEVjSf#hJ;-P~%hI&v#4I5SSJeyGb1RR=%N?b~+!Rqco3 z$I2(|-NG|=c7XKe3c-gxS7uWqOAfF7l6Et1r1oUE(w9|#5Z*YHjr;-6 zommZhHonB3;u{L($vq>hKj;Tz&S0e6Vb>UlVUHfx8GF`V%gP)VzZRz8ba(<_47()= zwt%aO!nuXxAxBX`mRB-`Joe=~;xm!}Fb0j)UBbTb9Hk_rPIbQ2q z5vL$u)vMO~nS&;Bl@xDwW$JG?<4+{GG29mcY9gQjN?kFTUB~DT2v0rAe|+aD{!tL! zRokeC-7}Mpm|%n<0SgB2GfsV7!n40+1>9vEEHa2>H9)DDx?&TF8QqjITLES>Lh6Ct zEyfG(C%o}n*74AZP289tU_Z~nsnE@JJuv~nzEgveS6@{5n7)hmN*a)9zyn(qP;7VQ z6BwK`R&W*(F2!(^b#gtb}1js1jQdq^waiyw3*<7q#duns^41K={%YC!rG zHlK|qDX+9qeBNHRTBB)jjQ_B~vd6*e6W}$YG%jr@PL63&4(>IZHMXFmv1-1KOInP= z^AtCUfv{>fnm^->4^tZUgr2~ro{|v4NLj_pDTep+2=Hjx{#nO~IaaHT$e{blu*#Rh}=$7R%QUbhW)Nm3-x z5oVVBlG9=7G1EfsAfd1y5pMr-wO|Z{nIj*QLW)@cV6E5ZquZ;D442s)F0*nmP~@Y; zw=$D2gI^!ez&VvRwJ3(n#fD+FOANgG)SnG%E9V?YKd58C$IL@|^?hR@sV!S0s#=CT z&eCQ)rdL-ySiH>Y48}At#OaOv3@4e1box*Qq6vx?D77%X19e^mu1zoNfJ+S{NZySv z%S$@jXiv+Q0oPu|S7&YIUi%X({yxxv|E>I0X zbB(q#0O(S&6qldi*W7qK|07=D1xU1D=B_ly7N4ZbEUwIB0`Fu@o<(^0+h$n3m$1LT zP|u!3_O&hQ3cqJl#>y&T0>a*Q#@Z_IhL=t8^5>tyc0b3h#R6G2)3Yq#Z&=`EQy;R6 zK=et#0$vgN5zxYA?yZ?9{ z-RXog=ZcN%>#5^KJU$}grn9(vwE;#bRUE}Cw0^*89GKY_HfaKYor!RSi=N8>TpMi? z0AVGc5A`i6sO<9eiJcRbsW{0oCo#AeS;6f&79Y~Ut9Hw;?igHJrP_5RfV9EjN?5m^ zk0co?|C#)g*cegSdk*83Y(2?6aOqM8_rM>0!%6&wZ+|}So1DTI78h~QFR;>`z=YPY z)$ihoz0c#u!BudVfh?7GFl*vWp^taAFKtI_fUSviBAR3dDjzdKTYk_d`p2fI%HJqz z=TIEqXtW3q*d;#Ih7CHCmbV)*r#I z24CX}H*hsEhvu($gI*PVU9y!f{v!WF<+OwsIR1550-$*{j*q(xt>vr6kAl_mY;@As z>nF9fMvy+NfuqWgy_Z1bc8I)_E1K5Z6Rgz1A@z=;liD9k_oFBR}zRd<=e!Qx1`?B9fG^>s{ve7FT{M#>V&@D`l$-X28dMgV)J~y0)=W8 zhk3rW_-VW5j9OeZXs(@+>vQ8V`|9D;_e!P?-n^YBh6Q2{4IRC?!|rTcS+nHHRtfk- zNY30(7O)QA3j&chJ~85xS*5tig2K{zcD$1E zzBjn#{NZoJr*xx+9>GBkufg}Nx9!Pi@C;tle}oQl@cgOSl6;WlK&puiGTpH)14Jo- zx{mVpP5$bqKGXj%i*3A=iDVuv>4ACDI0I#RssQ8t3|a#oe9aW+zan98zemowBpxz= z&H|%EKuV0+1emP=(-ojU01mbp-|&?QZ}WFZaS5OjjG zn7EXfNaP~6uGBUAEa-87BYji*gvz1^;pUBuolA^A@QoAv(4TlVUUBLiF6SNG>~}$F z4XbGbJ$JaW|0JH;c^n6r1BvPu7gYkIR+AaVL(XQy!tAS*5B^B}U2zyH@v7^Y0b;`X zYKQGP;hpc#_`vVut86&5n&xtF|?i>;w{MSPO*ER`HeH{4QFK6Uy1kCC(wO%<) zqF0qxu1d;aP`82)oPL1*(uwoYo@i)tiCv@iA%mxSr_fv(r$A)@WImLAec4aq2B5lRT<~{z8GYU!T9H^M z@*`^6l0k`IvW}KMRWOBXrcC+|8{gPOV{Q8hCAi$5*)!k&q#bX!?B3(=@D(%#j%T5( z;$28c;^_O@itDHTjE5i-i6K<}1~=Y|MYFc$XONwkQSCx(I60j#*wv0Y{9U(iY-*H` zvLVCV2+%aHa`r1X+X2xBT+wm$8G8hoYXVlg?4ZM_sognE$7)mcgx3>W?E7 zVo+&d1ddhoxF8PzoXV8xjBkZ-fDnJ#{2B`Ve$o^}*pIj*y&e$m8f33)aE6&pHpB0GWe}Nrvid2DHaE z!XwWBnEc6@7VuccTd%kUrVRj$eu6IbSJZq0U|g4%w;BH$Z^`t8io7)uP!H)!b%tB^ zs@Jas$d-WAO$duQJ?GLRi@&#Zk>6yQ3?>FAQYDhpl8BUmIe?sT=IaR0dgT<0lrf)k z!K23hvbrMGuLMk{jOmmynGw27*u9x?;R5ho-@1mEoZrNigE{u{qJG*C$Tb(?$b=36 zg_~^r_xvTF9SgQe_$Z%GAk||D+NeIDJi#WN!-eUyu})I}+gR{65+|I&DJ-ytpZoZ4 z;h+BOyH{kR4cawP8NUtS>k|2?{faaGPh+k{dAl z9UvCOczfX2AS^Sa%2tP&s8Umnn`bQjr92$<(&+00#6dSj?77B=$jy^F8L?U z+|N$oXU;xEe|2q>KHo30o2Vom{1-j3WI*mqr;@}#n6-8TKW)~VI-G5S z-VY90tdV*U>t}v8xzYfyfQl+xU(o(5P|fjse>*y6Z*XoqP&)t>9g3IWPl}(nw-I23 zsfj{1KRx!|Yzl1Us?+Oee}b7Dv_EQxn#@PAnf}3ueGUl>c}Bi()_0PS7BrYW=1RL^ z=O!tnkMj`w0j(OJv~jl&BwAZ&tpyV|B5F7s{A(T1Ha*gps!n>o|9P#3JTwZCFf4z;Bu-kvD5Q+J7hpHRNC` zM3qNF61B1sIXXCU20-=ZN;^?a4xlCtAJXr03=Wk@NSRU^9T>WVFj~ujJ>@@Jp-U7ATmJ2NU44)U;<2LjM)_En6ST9_9?&q zWfOecOHN~+JKQ|jM^AmFyDqC|`i|BSymr~viysNYM zDtA#HHvSNmQ$8}I%fQ;K!$AVx^*fCB{cexcmjgSwp6Q`HW0XVlM2o5Xmoj1P1mV_h z!pDAjj{Oe-w3bvy^lKNz`N64U+3#Nt{MgyJ8-MrA{q#Sk#0PzL?#O*k(a-(^GW$<@ zn4hqRQJ<+yZRTA2gXw~LBJEmkU_H<&<$$kW`BIfB4Bl0N?75#ox8>p1@8Z&X=yNhq z?uB)+u|cwb9`OmNL6u4{BS*KMW*_+zfCOCaxziXoXg2B%p3UmoUUC0k&C`%3ZI8@H z3M}~k)z}+Am!e09JBFWsp&iiKN9TaN0K`5@f=+C{xKK7?TKA*8)Idu5HcUAkp25aZ zXvO&F_@!7ozzjm~XeEiSD9+UM=yjI-cgi?9}(Li%O)>NvBrA_BF!mya9k15u`@x9qLF8Ty9WGj#BZ~e z%JvA~F;?T}aNwYNM{5hA3FC+02bVAqJSE75{r0|#06k9qb-v zXGGp$=&V$E!9gbKoIMKwJFKutDeEje*goS`_rQk(`zS&*^^rlc+}E}$FLfZV{iVtx zd>Nw5%Co>jZC|z^khP=oN#5C-6bd}^gnny=E$=s)LLxwT;bfryC4f4z-w9opz}+O# z)=j+j;-?pXcX10Zs;HMQafcAIN;rdx>=N?c0<=MR_Uk7&|B{5=-5!g2ig{AjGr9y& zS3VWkCB|d|bQ6FVgzcM*7e5bp(<@KlfsRrbL^R)U@)>4ZY(8lA+s$-P+P(@2>?w1><)SV^lmLuc_HzVK1}*iU@~AOC#D zsdI#tO+sE&X>vh|ayiYPt0u_-iaOIL+9`6BfK2%>Zluyy`;O({;&S9*^PQtH8&YtK z_O>pC_I(4Tj8FKLttgFMRe?~&OP&iYkQh2#W=DN6*{s|^Y+s`wwwW=%v|s9TR+xpQ zBHw626eq5Aq~BI9X&+)D+`7&>6g*zVMB!n8UZ^t85umK0#QQX^T!!)uZg~znt8k8LJ>{Y)tUE zD~z}N<{XcH9#~%`zuJ*wL>P#a*{4mdr1r?T`DfVW-c73qIQ-1lR16N$AX^&kT2eVznSh@BA7gJWVsK~n9 zi|JJ$#D0^Y9@_DCj>NnfAmOQx6`W3q{m^^y`OW*Nm!wVm?FN438#z81PBET0J+9z{ zCjy>Z9Lbeu8w&{kTm0JR&Y$|NX5st^!9h6d{K%M19=qrmWe&T>+G$}9)ZmMFQDmn* z7aW|t#q|w=ECD{I@7n5;(ez=&KNHO7<{l%cP;=w#aZ_+P9RoPaKrDGa2IqF^ZVzl| zZHs&>`subaXt%jvCh2y$ecK_%E?<5K(rL5CF3};VVQBCowZP6;kU2T2tcIiEYm1K^ z_|zo3e7O-C6hAVcKDZu|EJ=V;vo$c}2oCZcu|zs9UWTIwpuCX(WG2`gZG_`O8N#^S zy>OI&P1}k?rI#E%JVFCS+68GDbU1QCa>OS&xGC@Pu)%)hl_fgl?+^#UzlAyEmt%YY zVoUG~ONOgsB5ZYiich=LPG7s^4**@tue6ZpsG&IaUe11?IuQ3~0;Ghlo6>x7fagB( znf%}FK9&D4vos_-eN{*l`JTZ08GOJv_X@&uU$cTfGxiR8Fv}_VC2>InP*;-!(~=bE zCP0@6`!^Wt1ibFmGknvF&S8<~xOK1(PHuQCgV07qjlfM_5WQ$hs!ZG<79w8XK&rT- z4%|9yrt>&Y4`P*8!L*B>cfh&FxpWeHVEk|I_z3>RFFuB?ec<$69nzH1_qo|ZZO+W8 zpaq{!KcX+NP8knG(&yF%N9-KCZV=(spG{&-?6#d>PykR+U$g5bDbgp=kVae@3>qKa ztoRtYSZqk;1v3}v6FHZm0~hH*+E!>AHrV%m3#hi82>ZLh^(T5fcpvbCfBas&?nU<^ zqsPsD7oaI-X&r0U!6P%*)d1vX`rT>{ zmk9CvB;~arXL>BChQEz`oEF4)8poKQWtJzkZ?ea+g=6o_Yu6#rCJd@P+0}!4=kBfD z)`|?_`^1Ou2LYd!C-6LtcxZyaSM|+~JdZr7n2q4ij!u2fR<}*Mc(XA`@Hlo1aT&Qh z4W6TtXp{Dl@|%ZEmw3l~n4#e}*Kw7v2n)6?Po>CAL%SklJB3 zeF@1T%RU>eKK5+!iw0GT^e6j1@enW-dF5DX;GImLa34(G=zim7m z+$A_3T6a{qBlW1c8G~DbCUfeC;Vajj3hPdl?$87PMr3o0c8;rbW3(@m0b}SF+xk9T z;L8X2gJ91stws#ITvD|f2$$)i$O$bgI9gQKw9Nxu$KWX6TzQ96{VnO%5~l+-Nti%Y zU!(Z7hBMRqaX#IJE>E!FTXi+S3}@0=e0uLG{F7h!5dQsJZX#_GPF{cp+zHlo zi2ar!k73nP5|&B8&d@U@*y~J{xABE_#!l>)%zi2dB=B>czp-yJOGwT@ls=(9l!HYT zL=Lf?QAeRDk@?0jC^v=n);n@Z`9thl^uf2MH7sl9dJ4YCx1!m44u4!rf<2l(Wp85=7JG~pl?f1Uv4+Fz?q z<{mh4qQk8#z=wZffrC#1w3;B9F-}UL2`9-fVlX8_o^RfRe{=4E^j{M5&A#W98JRQb zDvd!BK=i=B&!YQmea7*U;b+h>d_U%NgRYQ+6@{R)&At+QVOf1`l3f{Z-({(qXtyRP zq^Q7g__Fic9$(kCPbB#MVED#zT1LTIZwuQJo4#QQ0OQvfe1EmG(JdX?@_-LUx8-gc z{)w$`?UoTleyc9PRZ@gL|9v z9Wm)KHj+w#U4-`2fKrZuko+x=Yb@en#3HTgmDUd{KSX=rzv+;&&*bHL&eJOMOxCZf z?}nYMWs(A~E!aNT*s1OW;kF$?tc5#bZb$0bixziZU>Uv6i!E(qtlsTX|8(l{$nP=O z{#w?~QFsjB+mp8aWgXAQWj2TtIiT8Kj%B4>LvdK$(Aa2#)syKd9_VT`h5*WPYc;yH zm=1!SfsX!jNN_70_d^G@EssLr*e;{9C0N?N(Aq2+XUBxVYe%Te-iD05lxyUoTPkXS zu`?EAFMgoE{;)XTco?7upt8P zF=)oP_tgpaf87)Z2R-Ho zJBx$DYx!)Y0Ww*u0NC+P+1sL9PTjA1MLyG|Fzdc%4eF%Lj0DCy&fr}45H@%dpgr`w z1xAl`TEhw2#M_?yB!28)eHtJ9*c_+s>9BU9LeCkpSe-mV-kyrSje3THi_UykKDb0P zLugaIth2dV9vUzQyUJCg#a>9S5fvm0WCMPpznTy;eda13syNv))+!Gl3^p|Do>c9s zrE%5)r)wWvSJOE=qp;0M35&dq8aN6fECAfRo-yBIy!IPc@q^#}0=(qJ8C>kIVJGi` z(kdpjj*JOz%&+3o&ZF4HK2is8E(8DM2B~7hg$I6nh)!%vUpCXEt3tAV-c0DT}x2RgmNArr5Qhd_M!B5PMqWaJ@>rGJraPN`_e}Fq@SauE`cZmMw1!mDqoib zQF%G}$`%OiPt6j1O}=<}TM(k}N*8SO4CMesr=iMw;h)%Im5HAIZ-EAb>sb)CLLmB1 zqeng0*r2f?CA@DHNq+k{S!C|%kn%yKq=U9l#3w%3wZ|0%aIxN(ej>UvQ$2(l;psQmf97|qVYge-pzRXsx3^ZrGaFGp^$^6Xml+k5C*`l zB)Psa0zv~|S8HHUM&OtF4d0eoA~*PC|ERHSTCC~YJ^|oy*Rnb&V(nWp=+)UlU)Gfo zx<_dgN9B@oic6)B8Tt)y)OQr>o5%3UKgF4b{8O2_`sCrs0pEW1TN%znnUVXG3<(=d zyQW%g_1>-F2`TOlmjKJdtd3p#go|V<@sfa$HzFvKW~GWaF$M^L&86M?{DLO z{kNBKc^f!?e}~yLW6litnO1_@Q%zb>Kz9(_nQk|FX37vKmdAq`QhOBxU_1205Kw-R z28ckDcnx@10zt0q?ehp|&d{${1fFZYWJs~vER+NQxBkqR)kFv?&ILa`jh_g+JB({j zW<30YgunRx&&BKSe+W18b=>N=k~{p&~*1}N1pKya0l*hvYv z*^(fF9M>)(w%Hjcs{HaZwnADK88X*1CK=Q-RzNtpF~!B3z_0(-93TBmkF{AslGO!z zHUPPP69dQG1FN%yuAAVaZ(iWaZ)E@p=zzLEzz%FvU6I==DQ23UqW9eO?DQ8_*7$c8 z^Gw2mT)K}9{N=NLLZAF6sBy_V!o6d!mu~5Q7-6;!o?`-_qKVO~mgA}@G6>7{x$0DC z(-d3kVI+ybp1%5ESpp!^q;d%SlsIKZlRP83_8EZ3|VTYiYLeDed7rAGasPWspRDas~?zhL+B~AkG z963gUGqzekeBN^W3a%w~52!vVp3Rn4t%$+%q5YShV*M?^XmN2gw)pz%a1|PEp%^cB z^wl079sJE86E{-7{yj_%hrK@pudxI`4G0DuX#Bd}Mq7Btt$(LXI85kwQtr6;EUR;z z@-6JKddpxP7q8YB+{wFuqcc`x?*_BrZ2~}yCk;C?09{rzXtTx851!dS8s``TI;-B! zc!6DzX$`>7x(BH4#t-7-si>ul9-uPXv23Q*J5;UT(kqUi99&Ny8H`})<1tO3#PTMfz@Nwp!`bme^hD{ag@xa7?%d%+Ql11mO=^hUqvW}V zAV2$Bf~Us|zCm7>G{fL~9Ti;2!T05b=NhN@S$~^3kfcF-;F~2xDo@DE(ZQk!LtT_C z{r6u8kgqW$XuXt}kf^K*ATWp$5mV|YC!*QqFXX>)?UDSKd5*i$(E{KOq#LiIkd)^D z?`EXaz_VY|;lh`7*xBtdU(}gTP(5soRfd!RngG+fB>t@E8P2f$h-o!UNcOBb{ z1$GYh+*c+NY}r4X46Cfj*bSL>(4-5QCW%fGfK-8Nh))DLFi`YX8cD?9e1H{f;==UV zI7z1gUZBsrSoHgt(G2Ii(|BTj13&(AAH>hT{T8@moW8FE5u>jM!?pHT^Ei!H@Wqtl z>~zgtGGrF=+buylDJHg(P2Y7ORdr9w%W4#}Y2@I${_N{hY1?Mz9sVjCXHsCe6a!{3 zKqxc8>T4o@InpBaQR_njQGqtCQu)oi^dMV@N8t?<(c{jfQWiP}E?cwU;8hU1Q zw26*3FsC^#?>~hrdr#s3i?V`*>(&w$nX+q7cr6JSZuoCoSweZimTO(-WHV$dK$(?J zJ+LuL=sLm&KFN67dls1Q0jo0tryT5+9`24ugX0ZhP~S^d5-hD%Ty}-of5acU8pm&G zb#(@~I2u%D&d9fA2jx8-EuP1C-}d;U${pv5;}nBDwiy zGE)#(hRhiAZ-7XYrR_-Y!W`=?K{#|` z*NzUd-5^~%rVLUYfTiWBG2#^d=%sMA{c2pDk@W*c!_zt88W2(lFj1YJp%-!+ZUC%6 zlPkxOZuR9$k_rxFz|Wr@;Fr642UGAX4+B}=B9e#eRyIhRPR#89+see*fx@q`1b`o~ z7C`MGf?6IPA5#7V`h<*RPEs63iRszlO9o#&M@x_6PtZ+r@+4br;vJd1_xLEjQr|OF za1cFk9$Et`GTycWei=+LD12!y9O9#GROd*raHZ;vUmZXMO91$AL$^PW+nOTy6?rE@ zUFE=zXVAalT!8u-iI|8|mzXEhL|ZrbWfwo$|LFV{zZB&}0H(5CUgZ@!gvevTpapR1 zYk=pzG9gb1yZbVO2-Sa0+*Ev~6UKA}=%~YdpRl*Lz}LKJf;YZm6L+t4xVC?QMb4m3 zWNul1I9^&p#$=jcvw6OsiNYnM8uuhyzDU-Bw5Ryi)c`32C%b!aw!0gvyaCSpVC;i= zfwi=bQ)vV5zwreA=YRVV{ObF*v2p@9bD=}u%ctC|zg6*hO!XhG0j6oJ>7Lme}~4Zc8Ey6Za@nR*?dI^e7{rmk$ASTNzr#Ra+yeD@nR@q^#`Wq4?|fv55nY~?L< zSiwpnwG&o)#Qc70s%qDhx|I4;nU}yo&L(H^Yrt1ku!7ox?tbeF-4vIM`q-D z1^}u*(!Zq>3uH(F0HAQ%zb^T9?~D0W1u5+F$-k->GOOM0hu2H-2%2AIDFb%$4EeFV2gY?iATjgL5L~*5}WDi zW6>)&^IsX`#YE)WaqS8n4iA>{&PIgzZjiLGi<=+5-B!G!pQ8WH!iF*mk|Pg2-b{{X z{(Weu!ExmB>OmuAZ|B+VU5$W7@0OKX{`|P_kHYGXE*j&Ey9Udmmz6tid$(DBS-qo} zybP}+$UU;$?IsM4b1h2(9IGxIop%h%CNS8EWgnOJ@)oZ&Nl=lrPr)IojV z@rY6I1E)deE5aOYTi!SL5n)h^T_x2yS7eOF612y;>vr(iBGwM$!L zP_H~AYftv!YZ8E{&dA%quImbB(Wcn!6GlovHwC7v1X>WbZ!k`uVto56SMiMxpTf@k z09%U%kh0nlF%LHUcec&_ZgnlnnxLzqf_<_cyRPZIh?F0iY@B>7%-7=SqYqDIL@U`m(c zM?th$R*mdPd8K+kV8_tD$e_Pnt>l{?cnV1nN*iVu$p$VCgd|Xh;?Xu*8y{m9+vX&6 z0jR6Rs>!P}{uzYr?Tnop8Q=VMQ~a4f^g_IN^KQ)fCT=Wtupq*uo1w!DTZ=7R+It+g z_HQ9iWY)O@;1a8F2GkAO6c4Uz55kNr)f4+IF$?EAETLidAe7Ja^^CP?0!@JreuDAN z-^$p!1+1PCR0?H#QO$IpHJ!vB$0VGcc_O{pGr*I1By`1jD|n&YY(w z@k{5PmHyKDCLYNPTPwg^KKI8=jJ|Gb=&Ovf%{J=Zad!I2m3C2GFK0o9omK}N8=uV1 z&I)S|O8~UaPzVyg?fWGc%i;&}@+>HMtCyhA_u@dFl!0OJ~L^Ylx@Pp_}N@4&kA{L5RZmu-b{`GZTQ|^O@w4f=-Y8S8TQP3 zed7?7*t-G#)y}qf`PkmcP7|jN3b()5w>y+0VT9+7?0_G+K2;x@@9=b3b&K^|T|J~u zldO5V*BFh#pAaoqh9j;}%Us-Yo<76Zz%MQn=qMAKhl76OY}%*;cJ+o04w*U(U5eQbgA)G$(>?8 za7I-znc9-n#kZtEl^;lozAG(D2I5lQf@m{*K_|#g6(0=vW1MF}h5J7ISQb=g z)@maG|Go?&+DKpdQG^?^*`CiN?X#n?!gKHe4tyO9{>jth z0-+|2uJ7G*b-s=^+q3WKcbWXU5<+MkCXb8{r`5oPS3*!F^PS;}Xj0~@5m2KprLjjxsns0V!8IRWK(fC(~z($$Ok2d+Mvf27~VvoN7DYAvUosX$mx zlVjpk6_EGKK;qoj6YhIihXpa_2W8;X2^|g(20#-=nlNS)LYD~nfUvjSEG<`Nam(ug4Mle(0pQO~$Zq7u;Bub{D@-`CKEW4m z_V~4T_4xRw7;9@?`LrMBFc=VEX2MzRQcA$)sScMu1AO8wJ?2jUw9?htUrAVS`RpIK zfR1DmC46D+F8UwO-cLW#b=>EyJ*m>f$}?F3Am;#7@G2~SMg@BTj_^*-1#oLvB8;FL ztoq_-j$0qfD#XS~22i%8z!zXWaL^~%Ld}6vdN|s4({A`mfQzv;0pKbc<-=7z&Jw!z z)KeQQ;mZL3Rwnk`&z|cbxruE;6yo44V-q#Bc^s&@M+;w;%Q)N9mRH0$?DMr*Rn{9T9hU`R=$>k8cAn<#6?LhXJFpo3{L6&$+n?0y!QIL*XC6 z)Z1mwSU9o_&SCGD@!_!c2G55!>{K?u0d>Fx7^&haLmE&7H_%JTH2bm-D3?m26bZqER$kq4s zt1gfS%Ss=}wXFjeR=Mlgy(T97Qg83s{ETrh_$m*3FXaneZc7CsJPw|-)_3=|8lWIr zNDU!wm4{CZ*?_drQ{X153=w|UF94vz^n8%}RFed{C4c}*gp`oF1Wps;{T=?QCqAA3 z=H6BQRuIjQ(1XxH&#!kP=SpHCa1ZbfWBMH6p>LUD{a(WU&O-H!s^d|eB1Y;MT?cd% zLN@_ABy8X6u|5I5^R+8@#h0AM&SH+OgSsS}Nof|?SO`^ zVo;o3vm{i>cvCv32t_-Rih~Vj!xN4DGb62>sU1QNzmm!&|0LbH@+cAZ7r?DcJ?^`k z@V(#p0KVhJ58_lxxSqE#&lw35BwEFSf$NJ)xV-xX?DK*0v3!HNY zzXa|=7FRw?KW_)8x&E4D#>UD7M1+ZZq6V9pZQBJ? zNB|U~;JmpxS74d<5fMP{GTrx}9Sq?W6M1c_)SEQTZ(>4jv#y8Tg>6@d7 zpz;{7y~Rt)N!;LH>WVII7@&M`ZF~OLe}ewDL}B>ed($DmhxF4(*{5?U zyk@LQO}XQ=XK~muD;xtam&Nz!4a!pcUn`cRMf^?37+dhgEMZ;RqhXPK1z52+N`u(@JC*A z2Ip52t{xoV02!2G!o-&Li>OM1MYjq#`y>asY5i7bL#Kj+DI`aK)#n}^&v0gP7tT!X z#R^YBG{+*(0Vb@c4VEe!?>qg!y1 z;n&`NfZzWtV`D9WCPnl7z}>S?R(vp_?70Wy^yv<_E_V3HFU@iAIR>qF;LfEWa)810 zYzO8HrZRJXWp)Pt@XY=64`(a1pL^LPU1?`Wu1f%bW%j@7lq3Rxk|0n$H5=mT@N|_n zgxA)t@jVCy(q8~c094{wwcF~3Kw!A?M3Yd8jB}(F2nQX2BgW%|!87gE>^u<1Dk>Op zFWg37^5>8QfShTAs>`0p2EQ>9ynP??n?hl#Hgl|vAi@C*>jQ(CZ;Y4sHp5dK>hk!z z;UzNU0gMpWihhb3gv5+PQJ{)VYn~5V_I1tf$FPum>Rq3iZV!Qq%*FPMAweU^gnq;rkcCChr>R=aHwhoM0lbtoI0AAz@JWf1$p)E*hw7PE$PrHz_+H=p#0dEt0D~lg;4ftrcd9tm@{Rn3f2x6wR?pwS zP!+hyfb4hm&_1{=iIIZ4=gENXrVYVEX7t(Vn8=VkKLs@^lXf&#HkE?}Q%ChMe4>BlibL=&{kQVe&T08hTr<_U96u?*f=F>!or%;cJPa)=c-;V@ub~=Eilyp5c-UL=d|P|xmOhW zkJ<;{-^FH`U9RU2ihg^WMk;HOfd<9lw93+PThXE8UuJX}*j$-_CkgNR-35OA{R{9Ou(q18Kn7Ax5(!!& zU-kwS;J$39S>H@}-Z(V?Q3AEaQkiiMMrNt{23CfI~d+vzv$rJbCFQ2?XzrvYO zL_w_jB}R*(D>G!)wVS?lPdPa;Mpn}8H5e+^) zbJ=tMo}An?gov@eY9Eb14OF+17F4 zj6@s*JiMhDl=m^ERhDe|;R9%8isR04kUz8x(U7Tw9trPW2Jb^)=5Rkuh&=Lp4BnyT zTD)<*YZ+e0sps*LA4iSnt?bBB@ng2@FXzSvaN6fOGlXXGUB$Z{^!stX4^#(uJMC`U z2rFGv<9OJNxbm{XGUscCNd`f-^v~5L*EYchrekd&((7@zuK}<+t1x>ehSc#!2d;qD zQyEY();7ScxG>`B{GNWmownWZR?1Q-zh|ZA(Tg*G$$G zUOWxm$yI_vSmK2|-F2_OpQZPmH5_>i{H1*Ab=@0v`Zdw|acdmlEFes#CcC#44^I?BIZVJ8wh&CnEBD zMO0^;z-(lzok;U0mEVNMZ%Ntuw~W7Xl~P|oXJ9>@#@WdOI6-HSG9%Fr7Q6>wg0pEI z2_1gnQ=i8F_oqLHk9_(7r!P#fezFX%b3H^pHGbXewDl)PiVJ3qp>YW@RO6jJ5Be)M z!CRyGZZ$*rm6mH>PeVG|2 zPITD6Mfm+U_t^e011qI3Rk6U*b}CqqbQWet&y-g2wlfc;|6*;EKauB5&P4#iFC7TW zJ#=s?X91XOD}VI2B|`wxgb9E;%WV#mwGCsp!K|xLRKeKA6xNn0n#f4_7&O!5ZsduZv&xhdzkyThFLE;P@Q^7Hc@foyL!7>%0&4^5KS# z;YC``VQc#0VK}>MI5gW6Oik3D`396^XSX4AxGh6k-SNxE6D|D#4jT}^1;z8A*`+m< zzrP%w-d=0+Yb<6JALhY0lL_gP3SY`tKP4x)R=<3|(xz!xZYfQ^-pKpIp7Y4>W!JK? z*Iywl2py5uRI_kPKNJ zw6-VzJA8tF^xn?nEVv=Q3y!44o19*f+Y+&aABwO0-R_eg$DgXhVXddgQry28e_DC3 z9|B3?c&~`Kw?5+D(ie7#x0RwZ!iLXw0_?xHbXBh|kJ&;)Y3p2nKmn4S-c0kvaL_kNt-d4uu40z)=&+v*b zUB>|@+&b8=aFSDdTNB`)g{$_(u$`kyuE^9sbGoU$z*cYgK^>zUSeSCc2Hl0TlY6mA zn*a{L*hQcBF~tn0(^)JS_-F6>J^Zgf^C+%d&p3Dg1S@Nd1pxFJsR<-4sU`#ja#S_- z+431f7M+0VngIv{C8fGv*)9LKh}iYNy2RbV6BI%crg1ptcgP0PRUfrKCqgE|jq4fP zR~XNGeuqEvhwjIBJp2$C2e{Gipa&t*1e3ImjD)N6E4aM(IQIKJaECJR%erhqAX`k& zl8~-8!=29|m_|Rxn(Wf|9JQ*zu6!T{_dv&l6RRB#IN=??+vC^YGY8EH>uW%+OZDrA z4b){8{A93Fq1VGCH#QTV`WW!3H}}Zb0Gd(x{GaHItY{~dI{{!ysV>^c{n`ckSEtV7 zuTDB#>ld83o=FIHewby(Taq25=Fpc_xw_x_PG4AE8|jf2H2pO`_(7@}&w-Z4u(J8> zWu?8_SmN*v-Xy}Z43!QdLmc3*$^++t26)N9o=571M~;_G7m7TG&?7{*@0xZR+EwSJ ze~YOYq0PC%dOvJ8BI@vy{sx!a7^THEP~Q*e7dX*)`C3*cP`M=b9^=)>bKMo=+Y|fM z(&h1Sp^=xNe=oRsTcU6XUJZx!0mxYm+Avz4V!$V|s-yHSyACVf%HVe216V#rI!61? zF2h&Zk=N`vFX9ofDQzK=)(91EYO&XMikVfov| z>zT%7d7JT#hq>(c00$TOnQL@qy#1wUFj%Y03$6wX<_E;!xxuXGrB#547Ql1aLCV)5yat#mpDu7M% z13YT=z~d3y^8AjvQt%x3;YwDR*sOK+a6;cfBwHNXaqs*y68jlDfo|2H*p9-Mg8`M_ zb!$NVY?{pAmd~ikS3E$Jm=Xb#Ddn42=&PUlO#iq0Tl_6NNz$_uvCicaJpY7onZP?e zCiejkzh;Wfhk)(<9zARiyzK2S2N@Q<5&Y5wm?Q$v3H@%5FMDCa8(+1GXKzk%{h-G_ z7*rDq841Kdg3MhPeEb?Jw|GI(m4QuCxfs*KRvJiMgPw!X<)Ai3mnS$exf|yucVP|d z$axpcJ#uEOrWKs-PT|S<4g4?v@ptfVe&sT@cNym%=rEa<6#-mv)vl7XTSA7Jx^f6E z*aLJ%ad;8i3MN3UU~>Gaw%ppVZrr2~)Ye-+kZoKAwtucwJ_TPZh zm?>zVvHh`CCb5v;S~Qr)@bopf$8ts+H}?S#b6o)yF^wqAa=+A$&|b|Rp7R06;uGWdD`jg&j&3b-$M&m+GN zgLk{-+xCxB?{=LK|6=62)I+> zKcnRxy|>vfj)li@;T^GXVibPcA;#KSme4W1YbsI$UktL>-KGb-^Mfp~ktX%tLab0u zmWwsByuMxcw4u#85{DnTeaoq9y=@7lgV3K=1@n0)vne7~Lf0`8=Jw^hp21+ZXc> zG2;vgY5db-}1nK;>Vx~Fq;rkCLC-r zHr5&6_VR>Rec1+jOmS;IM^Cw|AYcNqBmit^+|Kx`m{qAw{@VA12rfwlODu+t1+iV$ zDFH$TamIvaINjZkv*})>JVoYR5Y0h6$7))~$#e?8zke0~B zP3Mdk!-DYC5%Pqvy~nt9IpgkggztUhN&Jbg`cj-u30HUv2h1R>U_xtHfN`t8iK_>X zW9#4+`jqQxlmztJo5C!r*jA5@+3jd6;qk9prQ+vEt89+XwGQ=+83-FIQ*8AaZ~4t0 z@BY97T~AnDCFGPta?;M}D6JUF5||ks5jIauaPtYm$9{ev`=0}7J=Jq&xEyLom0YLp z#XOO&pIR*aCLw#R8&5aug|VN$NDYlN+%n94t#MwPF`fIPZ5f-RPfT*4zH$t z#m7AiNkaFoi3FQY+zC|BW8d=_PD;DWg$rz`$98hLrToBOuhA!h%M;f=k2x|7pK;WNNv$yoZx zdPh88{?KV|Bf}$w6v5PvDoR6u9vt!ik1O=Z+pJpuez7oblQPFu=A%eDO34qab0@SO zrgUSv#PALUW~@kW8(uU6wx%I9C@_P=UUA_AP+yMhUQ62YF$rE-0Jbna(xTzs=m}oV zfiA_*(Jt-!0AhT(zVl)g7hUSFPM@u)M=C}Wqwq=S_k9_Wjvz;PIwdHNL2RmchJ$Ka z)WjuKnR9&Hl#TZ`j$j>hDZYwx^j-jyKy1H*l?&Q-l0ECH(N1Q*Udx|IpW^|^&{ysecnm7?)m0+yOaKyIX%c{H5&~f6 z)OD08b=}R&{p+qg(*KRTLtlYJ353kx4$W?nkPHF=3jjMA(`N(EfBgh&_XFFzWjB2} zo!mk@l^ZdrD|#~NfUYCp0NB}Lyy#)z+rN1Y51%`W8;f1+F6QXEa>yHJ;X|_it(;V0 zJJB*^&tw9D^#g78o{-$&5OCiIEZV8tFr-rTu^Cvw2F^?#z-c;z4gg~p%m)AnYjheX z={(-Q^EiI;XWoamzV`;^3&yFtJ9JYB$B{5O7Xg0wIJ~hXG_>FyByvR7QkxHKegHwgWWjT%ZL%&)s0l6n^ ztP-Zv2|o9}jK_X$0p2IjGyznxH=n|ab3s275s;Z^hV2vg(Z4!%A^n{MexmO=F@rfX z>*xIXszdHzzYrg)4m8e3p49<~#t1ynBbO+U8GkbW?Jn)N9P2oX22)x^Laedj<@$?X ziqC)z+~Bq!M5(KO4`zxPfiG6uZx1mbp)PD&h4u@1-?GBhLB&~C0EPF`-vlq^S+oZh zl2rQ;8l$Ej!&g;cR>sdJ13z+pUFhQrYh5e2qPXAecd@$hMkzrX0$VKm5lpK*J} z+rC5QJe>r22}#eAgmmWdwhx z5hM6FBU!<@!B>f`4D@VC043Jd30(pvld{@*?*>2%;9FkV;oH9c6gDS>s|Wj7 zu<%~yP%GVafM0aT831L4l@^<#TL2g}*CBPp)|q|@+(e~a`-BsNbD@3}r*LL^KTfA} zNSv_9TgaG$7&z0N!A3fX_ul#f{>i_6FMj>KH-SXhyepwgxtx&C`cV;EnlJcrw2eCR z)dVUe`3kWM?(7jMEAVtB0YK~y*y1dE;MwtmkwMxI)Gm9&ND|CC^`la6caL%N8e?-E zc;l-#@h89K`FQ?p12^&x_WA`tQ%ut;h$h(LZCpLLh--V7Fvr3r64cU`KQ*z$^?$Or zmW4^x2HN0KP!$6fj5p-7hfV|ZZ(sXe%D{TpVSS~;BbR!-<=qGP;72o7Cq;LugW*#9 zWva4E$?P}F*IYVaVK1<{;N3HC)qS|aqIV*D|6BQ93Kl&r1h+AdPaL?e zWICngsi|bP-r5(QSBbHoHI4lv*jE=**d?9Aw-eq%w?{a-!{KsTMtTDecxX3G^K3Cu zn+q{+IeIv7A1&{Ou_l?^;cSY!kczi!JDhz{?VZ?7iwh%hfkff6_pOd5BY@OSd$h^Z z;o$f-{Hg<|F{TGzJZb=~Fge~0R07W5HFUIX`oxJ(I z%14MfZo6_QANVvvbD(R<`@^nQMhz;XaF-?kTKlo2y-}FQsMEebDgki2S4;Pyh#e-F zqBDmh=VSb_uai8}#NFvNM!)Y9!MGk#@3`$8N9m7*w}gK!Y;D(#0KO;*06&CdTy-XkoiQBLXKgDu5AP@l;b0f4 zOVN4IUPE7SHkN0mu&jQ(_s%dbm6r+_44xJL>IKy)dPhaVPrzo5lk2UeuSm ze~ZwRcT02i9fbsiI&C+g_Fo)ONL3enf(C>-fE2#ia#Q1xEt8cx3QzH=JWyG)mQRU{ zr!f6cl}m<)tvQ#(0TB_X>o|j`yZ$8q;cJiaf0K9dBI+oE%jW{+V}ZnuPo)O{MBoJj zTN%^m0x$T36Rh2nu)UMf_gn`2F4z&gx~}Lz>dHWBWtx!p2-k1+xaTh5yI()U*FAUw zH+x`fzK^gqf`R0OIT(P6@YrvmhVtUq`?oP$1y0>lVCHQ4KpBd!@LP1k2i5i! zj&e(cvQOOiKc&?Sn)wUoHn{2^yWo*a|4|$04)IfiE-NIeB6h_fVt=1;<#NX68t|rX zJ%j(`)i1=u(+%9hEo}2HGIy9_9f@YxVsAaY4%7IkekVbUdh?tK{--<6TK0jzgL26cd917&YUh#8zw)cMxNUHIwK_octp zb^KV)RgoE-%Xt%AX8TEJ|KXPY%gO-b7Z5TbaQekoE}XQkx>@z2@}c~tP{%LvER z#z1WT$H!wD7kMA<<>t!ytE?!g{Z`=)>GK$lB`!SYS$S!{^_iKm+J9ZlrO!-n>LYb9 z%Mt)et=KoGx-p4hzeZ>HmB&p2LVN(T;aZ=EB5<Zym1)P6&&*1szwO)(FI_}wVufxVjhr#kIB;3P>KSLNny_$DCQszi})OJfhe|lGo z(`^+VLs~k~(?RICwQr~F@eznZZQIj-Mly1@i_e&HJZ*ux;N7<~c0J>~YjKfwWFYPw z$WfixvXE8L8%Fu8us)_GupD<8L4?}Gz@RxixRGq*GY-GV8L}8J==)aoe(y~ z%)@GH6kqwi08m{b+@L@PLx)mIo7}s0ldDFqz7C8VUXbaV@|TP+MC4WvaH51XnV>(| zr59cNZ2sE^SMWLzO_ehi82AZ8A!lguO!_6vI*uH*xT#%bV074WfvVv zT}3YeT?fq83Qh-G!0tTbYrnk1o4)xJ9#~z$wfR2w7xOaXD#~0td^K4r53vcV)(&?k zK9CneBbwM*PzI0MuWhEeEcxw`c!m?{Zk(GugiSgL&;b^F3ydBqcR10lV~tku^N)T4 zKk+YrA0PeX9P4KjHqQ|H%s>r9lhRFDMJ{yuQ+N{_B*yzUj7_|M+-LVV@gN!;LFY~>w*2pz4W!wU9uk8Ay9T-kdZ zyLrFzH#yl=4si4kj3&V3(s#6PsgJg@T0c0Hg0s%|YhtxT(3CSar&Fx0tl-0s&GGNw zvW>@{%s9Q4>ensYV6E~`EQxkaDt#}5ktV>#iG&-EC4Ar~H?%CBPB@Y>5;VyAF8CRL)Tn z2F{M}Bz*J%a}bpI1>w1zX{fSu!AHB~d*CR1TP1`z^t)S4oH{-aE;c<5=MA8&c49ZBJvJ~OYu8{1CBrd<^f$w=p>4!Gf8}cFISO`!M*}%7D|_5B z$GXM@bh`~6x1BLPKdjtw-VKy}tll9B42y5>Oo@)Vmf?(%=eG-Y?0Tm0U)HY7pi2-E z9oGoW<_mRjq2C!D34#?Knf%oFNr35EVn#f8&mo|LDQzE+*}DN<3dc##Cy)eCBg7Ch zNL(!KO2%37tB%L}_rNQ%a&pgX2X1lXkH=eiS6{lNw-H{u@-tbAe6m=o4` zizCm3Z+=Du6zdJ~a|OtpzABsY$ao8)h!0#9g|8h7q6MHP0npSD{!1IWX;_~{-2|C# z0<2%Zkg}<4iBDaJ9+cLvUF1J?{n7l_^8wBy(E{M|odGq`F5F<$!}?H`8}BeC&jz0J ztqCWdld!#&k$Yhq7yS%dLl~(m(7G8gTO|+@Zr;e)SOZ@7^)tNYtImP2z>WQV%yZWA zGJ~ePVAc*T`iU$t=oyLk&Y z`)y?IFzePZNi)pBxW2fCOS_L_yWc_<10&_8{nN@e#&rZkv z|D^4)FapABQzG9PR2RG&F~SM}WdpO#@HYVfhv$M1tLzLm`)Vp2^&IZ24~8eZ)AWr7 zEz(SAa6Nw`(5dqDjYHpCqJv@?X}1}$2IxwX^A2Il0K}*&jSSc!iVBtumB1qmEJ!aBjglVg9dWf@bL@Q! z@2EO=g2(N`@i-iY&oVwOg9986mkt~79@h9+jV~sXMv*@P&Qaw@m{Fb|k^s0J+Ky`P z$ofrC{&cq-Jl%Rn!D}zIhhE2GigcM$srXuVd5+EPBHr^Sb#FYnv z4>?Ad0@rtuz5yK~-`Y5Nh6;Xg^6`q$>Z5O3{!%Qi@5v=1G_gXVeF<*-UVmE-+(cQh zG9E9$1s|b(1Eb6E>q{NvldS*%*v@nio`{}ll0fRPwjo~@phQHejO`{9@ctgX^r=Vk zKi#{WzY-}eL_DQtcAXwX`nfAA1IL35^uW276CQfi1oNJ;x0?Z~%bj)5ElaSe=>Mdw z44BRslUYK4kg#*3$Mc?*@a?bO#7pklz>WPqZ1;13a{b&O03>kzR|0H;Y<+;~H*AS+ zVNcnpO_D(M{X%VP4G^8)>L}N zfgAlk{*T}Ief+bZxrD3N8K>_~SU+7(ZSNVCPfZ}_?M&rcIF(#>oP_@ELrGh@uYo6X zI9*#$|ED4o-$zm+pd%a{5UyP5k$T|UU%83z`-9KIS8krbF7M%HK0u!tGdhVCT1QWe z>-j1!?>&aC#VuqoGLjoenvTmskI3xopDa11TGZqr{Zj_zV#|y{&3Y=A2+CDgDFYoR ztW7$kX@?Jd>Hu$k=RU4oW}Mm}WO9gRa(<@TT^8n7dF8UAWp$l!?J>e5znZal44}0M zr~^Q`q|=D&CkC9ICU2Arxh9N#_I^epc#ctBq9B|*h#MiO>@KX6N zVbiip>n%-av=zq7jlsPgJZ=|`3o{OFr^SCz&a2=^Xg6$^%rG2vJyT4$lWW+u;=B03 z8>8jrM&I8?LgYBt)8Sc=<%ptE?2k_yrsu? zM9w)iMCq*#I1G^Q2IMNV{x5VaGW-lL?|7~LfbR|7+>{5S?&+^E$>>!&#iAz9Q#T-V z?FD(%M$Hf#zb%OZvq+vN?q=yg);w-VIuw4#rQpFqQTSs6YKOZFbZd`r@>IziI>{WF z@zl|)d~A3V6k%vd1OI(-!IuDP>OgRA+fWn=JRh(O_(DN#>Hyo6OX>G~tpDimAV{ak z6!pa?wqk#cODb7{-TR+1202b^7( zk*2_ON|;i@!49zKd%WVMQ+(UkY~tj~1UC=%FlPo**2DS=Ikkr}A$fkOzDwscS$O@n z)jDwhI(?*?Il0TR_fO#X3%<4Lml#j-Ptl z$MApu@?~7P0-U-lVeK@b&$&q=imX`^Y+ltl7zCrG?PD@C)$X_V10V+UOcL%&-$o)V z7KCe;Gdcp^@QoYzzCZXpeC5eA*yml`%v;z;Q z&b+BDHrdz`e#74{+xLD$2EfvXMSk-A2MxGI-o(h9keINZI;^Zt@yO)`-u|2W_{b-E zOxF@7oylMLCi~?XKwX?422LPgb%l`Ughzfe-Mt73baILNMLpF`NSixAT`tWuc|5&(h9x+=<9#X$nV z!BtcoqAeZJZecSFh!T7Z#U(}DhZv!PZ}xU_&0XQAiFz%9!|NBcEV4(NO_M* z?WRgU9AAAYc^34Bh9r7&4jTfrWFJy=ISd-MF~-h2g?~o~9H$zV;}d0kdoai9kuB-P zk;pCua)(GQYvVBDM?2b*l7}fDFs{Vy^W)&<>mQc~cfzwc+e5K4-wvFyI&OB!%FqZG z$Kj3HDy}%UdetTXTHY>`Q(P7sv&_EYAj|53NHH>Fu13%?#^Uf19{AYR8PIk){@CT0 zzDMHRBO2BzK9-F>w)S-9&*E~*tz`DZ<#`%?Y@atU zq&@dFfDq;BeH+?3xsu~QyL%@Cc={c_2|no(1aCOF{$u=cp_TLp@&}4pc}-5Z{zP&w zy!Xg!T^DgVcn}#Y-fRf~0+6VjU=E~72ks_BTQ~R{pZaY6@x>Ot97x23z6=d(D>{u* z(O@b|yNQ6k9>~D?ZzbISO%v=dG7b(h2tZ;(vm97hEo8^w#C0_QVcG#SCv4x!xNws2 z+E=dNs~%oKmpW|E_bc7fIclfnBK4GvZeyU+7gdp}zk-kU)56zaiw6k+QW>!%Ku}f$ z5cim19VaIja4Ox6DLV9dAB%nu9ral6RKRayFNI_`#!M1Voq3DCFBX4ne=BRu<($SZ(Pf) z%z)WS!jqq5JpLPu{&4_nWp53oqR-JLc)3;1FsIbrRa(IxA3g$~O~9n~B2f8|D=VQ~2^f4X&${WGh?weN)>Lgnu8 zaX5JWRH$yS=gqn`MKM-sA}!S~g>UxUCqAU64KABY0r~gr;5E%xA{74teUbP2%q6k3 zSr(gA{blwAJdQ#-E#aq^mDQ0+AeO!<71*gM986gEll##G0K1v;rmn|EV0${o$dfvn z%!2vG0Us#T0D>;IWrhtkA+c5+MiKRSNJ>Rt@7=H5<((V#{o1^sn(^U*c~(Xpr|2s|$1VV3!h}LqqoZyY z(11aCBEbSIA>`hvcqrBf*|RWUuRLfI08(CYqe?j`+rx?GzMMoRl6+vfZ=7-%M^~#_ zAR1pyH&9$NQFsscJ{}6@@i(0GiQkUl-;+nD5fs5Walcw*NVEL5_N7nB)(gi2*N(2( z5&T8x6qL~JadZ8rDv{`t9+v2m04YK1bQ6@b0Ve1d`#5v?asI2@7x9CZ#mif_$Kzh=3l*I~mjG0MC70huOV^ot+E2chVB0=mSQO@L`iSnLq? z_j^3&e!^>By^1ft`vea10^9w8u6TfgAn2+V4Zchdi&&igRQ>Wg)r90uo|0K`#tWj8 ztU4f~$QhW@2F`RBut{ey$rBLmV}WfDXROg0PSZ&|vDn4`^^T9>U;omRcgVR5eD;0a?M_hiMCQR@unZz$6;XKJGcfOg8#fp$GvKw~uz^4IZ7;!B zY@Wt8-@vW@1~L++-3BH!!#?J?nXlu@-X-kx*URd5St^vt)K8jYOQ->s0AS;Cu(7p! z)XgWhKRWB6$sC72*q+rNmG>PJHl`EwNcg?a%<*gQT;S>z#`+q8W)(ql43sSq%4Z`& zmfvrlNZ7v#eC8b)TfbL}Op@s$p{%HI_89~wNu8D5D|vbf?>YBC`k}QAe7Ilql>6Fr zPvwgdm0`>kAGQIOMg#Jm-F;z{>c7zeU5z32{d;H4^sl$*(zaJEZ4U@rON4NiLb}vn z5gL&{eNrc`H#uWLWpZtwUUYRpi0B4!q|q4f~ybGRyg z-aN-wcIta%qxlL$9wzVR`AEXX^QZkCViXq6*t>ur%)eN|rQ8cY32_CUq9$lL6g(e% z{zz=Kt)wuf49<=aevBjsdZRmpW5Gg*kL1mWk+L_|zo zLM8%kUZroo_Bj8|`3-zs&GOVKZ%&Gc{HKQ_mSTCYd@11WS0~*44HF#9GZqKAd^SzW z`>WEJsC-v_G67a*ghYh-&9dMB>t8~6?Khsn>6I1S=nt^JSfER}q9EGXK60Mb3P8Gm8EXR09|4n+k6NaZ{3w1LyzJvfn0V@4e^?_rU*fm{*+=O-I@YH@&n z`RgCYKmYkBaP1nfd3VCvxuTEdgYP8?z_}zVwdoYpFY?qUN~P0h*k`Y(Y;V}zW8A!+ zu{s4_{Rh_Z{jYlwUV8Ez_OOkci(AM$+p;J z+Yiey8_n`8*s-yJ9o2+vJvYShJPb-um%}q4pU2D$P!Ft6J4~m9&tA@W+dCHc*ryrm zD}>3cZWoZxW=i{1y`%7#OIwUG0G~_{ zBuaes#J%YspShoYlsND8JyOoh$S9xnbBFo)-+Y3) zlCdom1p7wFcxejNAZL#}mrZ63ISP3s0WjD`0DBo84F{}xFYP&3rP&N_`O)Cw_07NI zNUy^x(%L>BxPzDg@OhS2m&4${)@H{{8dh0~my{j2==S*tnIVP?dJPkcnle)zoybvd z6Zs*rO*_WGA>)-+zeW=?_=$ZmJ?sz#OqHRrzHu1!*oRP8R6eEmH-gs z211rryqy^VIxr|p@Bu>Kj?YKRw}KigJY>oeB$wd!ba}X}%wf;Ra5?G_!vUPzEq}!O zWAT5aTzo&Inu%=UP75EtJ;Ar-`=X`3Bi{O42YS$g-e?YH^+WIx+wt&QoCdSR4dNCf zh`XYP9?)q!Ml-7&cq0xnv}3pqdWnkBX6p61 z(-k`tq3|StA`3$X2vd1Z`do1KziayerYG1b1vR9Q=X1nA(&z4*gpa{;Gv3K`Qrk!< zTLP%&1SXXG1!aF{Mxs z`aBMt;L3aXNMUns5*sjE9ZNVki|NsBvfpYy!i=?_{U?296=3hZ_2Y)~@kPLc9b8L0 zxU!W-ePp~U7Akb`iihyKjgCCduAa46owRk8p*v?w(5o-V-WyxF_VP>mz3hiB-`gp%K2*p@^$N_B2`@3_3SCS=iEe9)%y4$$Qq2?JJIhxk#skx?JVq z-LC1A$6sbED*vq~S-W02T++oSHI%<8;vcsTINnLbK+>99@gvVg*OObeF53bKb>y$B z15zU7G@-P89WTH9nfx~vTlDovG({PgO)R~`dJu9!vM$UgLf-8`GvMx*b-4FyCzw;l z!G8I0c^I^!$fDB|{eU!KOeer}3am^M@;)%%&Uo&Fz_+|?6<>1iI(8O}oqhpIeQ6H_ zJ)jVh+au$P>N?l=GLy=h2pS~GLx*sxNC5e)Vhu)FJ3MN=! z3kST5#Eg^OCeC#0cw})C|LU!u!oPj<6Ad6Iz4$mM*wDld^cf}9Be%izDt zoRE++uyrHj*0qdtX9;h3#d&YU~)D-E|Je% z`@Zl`d{}XEO~T%cyqi;k_jxSv+}q+~OhA4~J}D2ZO>*$tAcNKUJ4>&EU`K~*-#fVa zd@xzY1Xf=}X4e&ub`?b_Ct9gEHTY?p3}PZ?W-%W{o5<^L{q6WxU6aKz?4essAHRyw z@=Y893`ia+B1`gxN0pwo@8}r_;{RM(vns~-*w01(#OL|Ap_#dNGGNDI1zHmTVLE3C ze|#u0f?|A!=ADld<((Ap?K!tR4#!uH&t3Nn__Q+8hioixbN|+NoWD}P)5P{o*BZ)M z%DHyiGD~sw??<}fom|V>p|Jv_y~k|IvU<(6oDS2=7LHfT0jwp6ADRGY0UvcOn>pv$ z!|qrL17;m#06XY#d^9~F2ygH`O3_A|yX|sED)X{;hwyfE+rSb)%iteM&oSgWYT%B- zG1PNLR-UU}bW6b548|C5Lx+%`RWJO&1-`Y`NH_M_**NctgTW2U>YXkUd_il|a47%A zL8qT2$e=AC+hl9a6wI!C|;9zR9$HNKb3{THP0b=})I9R)_)fWs~ z+PvVM&1=1cw(Xyld!GPM1jw4<5ncqZp28^H>XQK>RDBdZY7+ot`kKnwX6Powi#c7m z{Q3Onx1Zqu9GuRAz+Ar5)HxhWfGnHiQ37OM0KA(qeTeX^S9aKZ4qA6K04LnM$=JTac-BJ+-}9Qg z@tt4ueB9Tq;by*xt$rH}!n9k(geExP9yj|NxV-xWwidV0Q?9-xl`|Yv*k;9qWx6L_ zk}81nYjM!#S!{_{&o8I!5Dzy{#$c=;?s=vNr!1yrsWys{0SYu zGTB);?(-2`msc==jm?DJ8-&mPMvv_ea!KS&N>-O8AzKeZY0|Id_<}k>n{49UXC6#{ zZSxG?naeDH2SVly=9X(HewC?SZ_?7 z2DFjM$1zI_$MzBX>BtyijGg}SaRVATjg~tM&anAWoQ{RhlIO#&cRYCQbtoMm@DZFl ziXWvA9i0FWV8>z6afvxDyd&WsBLNWVneSMN&vE&IW0X72btlTa9M0j`AD7N$I6YlG z@pO&Rcx2~ljEp{QXI;fmEHP|E2!rw9;NafLY+Ce4YD@t0x7Cd{PQ>xs^|ZlzMjf!2 zLsd9F2~gblFsRh}hD6vy=J?PC`t6p0AP<5Pq^ION+Ql)2n1kJ+aU|53owWo@Y}dbc zz>OaiZ8bUL#jOAxbG@v|D!2iq;inR6%hzYYkqu-t^pt)-oSZSH)jbb{7DQV%d>;dx za8RMci>tgegdz{jg;imzK)Gjm2f%+8Fa*Gapa*vNqRGner=#B}YQ_FiE z0k#rG)|C4}zfS@by&+ISN(q@dq^)as?bS#4zhB(qui~-^zoIYmNh}g%8zk3R==~nZ zjFT@-c<#$5SWL@m08V8nL!K})UJ`&Vm6ZV9td84q!v0pq<|^>2Z(PNzUb2FYI@~~Do&W;OhWZoUIf6WYd{SGgqJ) z%pCz&*6+ekoVhRk!|9A~_PNaZgNbt;h|02m8|0VY#8lqZcJv$oIGu#8R+DFNWyIjN zhoP|_2{<*?Ed$=Zp@GSkq9b2k9HJkPyY6M(!6$%7>y%;zZg} z*BG48eiYL)ng9qix0Ai8{aP_Tv}d)cvHjA4KF5K;8`mHFKtx^qh%xo2$g4p&+oA&~u0(soA5PTO zk-agxr6aWO@UeH1F)R*FoM%Ny_domgrMmLaKuHV|eIOaF%)uC1!k`XDOK4OW;a4^azxN?pb6uhauX3P$0+%QMPNyN{{lN=>y4q{hXX70|+3dM8ISQ=04r` z0STL6^PTK;!6`Vq@)8`9 zZ7J{x86xwaR3C&vP9)yfpi6{)4qUsM(PiN4zG5BU^P2nds^>flYhY~U zJ?!N@WF)N620H4nk9}O7U&5u`FJLe4f+>SJ0l6!mZv?v}m<*QLo_qUIf9E1WLJ~v)A z0ZNi60jp~XTbF^){@Mb2p9Cw(a-iw0M6|0q&%tLRyz#n05B{(X0^ny zrTB$tt8XpHC(-<%dTfy669-Vake*9qafH$5EO7L<5TGOQVEB1gAD5)pHk*Sgq3@lN z_`pEW@qXUy1bHyVZ$IER8ra>7P8hCHJ#856af59eRF_5Sd;Wja{dv%B+i@R;{d%AC z4fozR0eE--2#^41St2D06h#OeMT#q5aTME8k}AdJO5)i{Y>A>MQXD{nqez()2@vy}hkNfgo!$9kt?vGH@3qf4-*@jL zl?}Z6owL_kJ+JOw5{Lj|v%I?#Ug8a<9pCn5I#g z*U9LHZAZ^OT&a#kKib>AjDah>CI9fgG}!(n?#30$k0Y0DfXeF)+2!6x8x z)F+-acwbzg$G{c@#ytz82^6a41GShGDD{O>BPpmfbmgD0w-YF2qvg(H&9H|=8aeI z54`fL^S?G<;Nz_kW6?Iy8MskA|1E-#eD?{a=Vx49%$T)J1i;9jZDI}( zw8@EStJt2j^6f?d-QfB{0iE%wPfYkj-}3@KaCQ%G++5=F=8|kjec;i)hC!xPqT&b_ zM?Sm}CxV)6aaPl5Ug@(7o%mP%CJ|saV=MRZo|BjGzLO8)T+T7;6?XaU|%;MsD!h z{0Nu386q2OUlC@JnC5!C(2|8~nw%u-Ww6{jDoG@~&g* zB5MA-gFn5ufr{YQe`<%X{=f{p1K_~~Y}B|32FPVMS0Qs_Ng*4&{NN?|cV75_{MqfP zetEu8yC+eh&{^qc#OKDJHj{Na{dM?UE22=ec z3;LV3T&Iczp5$*U#9PL18YGB_|&XYZxS3ZBi4= zcXQrZWS#YBehmqZbl6OXOGb@@N*dgzBF0fPWxGX?$TD(2E5WWT@LQ%-cIgq@yhDX2 zNz+s0z*1uRLUO75!Nv@0b@PkC=!bp6s4bN*DGZxrnp2n?z&H633mNyCEQWO4{aH)H z4&hm&=MbH>msb2bsCO*9ReDI7YxM4IzXyM-v@!tzEDdrE$P7?q~a57H6M=Hs~L$L=@YpcG5S62GX0EhwG3LXRO!mrez83d%A z1XD^a+}`tmxF=iEm})SC80W9Z%TTDIPY49f;@hA(=#U;*zdah+>TqZ~Y=Xe4jfy_49jb}J{K|1F?WOPfW zgyhxbA#nNmT?CS9XNDKN^?Jl~!e(?Qp=h#Ik<7Dw7XL4f3ru~-OaHY1Ok2U_rTn(n zzOef<55F@1LF{Dez-JYWAIB?>S+pGqzz*$_z~_Ol`JM?M_+1mOXT|ld*PQ{Ok+PWl z`p*t-PaCb9Nw7T;O!I_y-q_*Z1I6$E&Qtt7-||76PdmJM{RlU@gI@^OEw=vPLr6Uw zN)w;$AmTMSvPmGIO8cC40yqm@)7=K!dGb)2KrqjW)9C?TI{hG?-@J%ZY@vFM>-iy6 zZ*Vf5;aPcrQ=H;6kG_Jx_+S1a{?otw7Ul`~Z~o!;;~)OskK*gkUcf_rh{KDs zDNg!||3iI*SFT^dE04d5D}4vp^p(IJe1}BahTbV+AA>f~4jaR&;FGgT>lCnr_#=vOmq9Ki^ZtPzbYVh1K)h|9DeG#4^ID! z2hYi0QdOOI+OB_W7yZ$|-(=Dt_?-#;zc~LdG(*(sNZaIT0)UsFISOhLH$@*1EVkmJ zn@$t^c7_*DS`$x|28J3FLY-D`$4LkA&4Ilo9KA=sFHkO1>;KT&v2$z8rql;9@mLWAA1nZRHrJf)mADDcM-|T*gPb}mWPwz>(EcYF6tTPRImq!zrJ1ol! z-%slq^K}@HFMzGU8?|4M$*_h`|C;rd;3T7r`b2%&=GKv|y6aP`wfW2#uFhgLK-U|Ud@gQ*aScu{M)Vo5fPPXBeP7n z_s$#hpM2%l^-tcsfsbL5odQ#LsO`5Q(rFL#F%6Mk&%gz6{tdw2^#@LH{(-6eWZ<>7 zJ>s;o1y#tTF4JiOHYfc^z!um{6K<{q58v3~Yd<3RZ~VOv@XcTIJT7-vc(l91taCf8 z06@{~m;G5dlqtVH^BS_%Tj%R|X;&i%)_ndwJ&&f+T z*K^Fc#I?Q+l^aX|9_T$h(EIqQ%U7@i@Xhz$g9~{BkLC-^Dge&0m1nS>&hQA2@apwf z@XDjF;9|b$I&Cv7HsDWNrONe#8bQYBFvkpBOa4dn6Q*^i8wk zd^_R6=>~6K13&zeH~68S+TrFBxc|(AolOz=Ko~Y2Xe24hFBMpy7uu z;O!q%U`bnS;(BuUl|D^& zX7r&3Z>I~%PPhX~=YKU%(R+b&Gu+>-y3VTWA8O*`wHpk5?+)DZw zes5R#7{EIgCf8eJSqH{2Yxt{f*5rDqyxPMdIJZJFLiW@jAy=?A059L4HXX1x#L?FFKoMT!zJsEQtmj$-6JlN(yO=sN=J|~Qp zK*%!Kfa>SK5g!)mN+H+D=+2+d8uDr=4={~hr0vywj=D&M2mSq(_moFT%#CvPU3BY2qs7CQ5H-tWg;Z=UZrmU#`G+w?q zaV&={0}aM(;tD{T0knFEv+)Z{^|k$sV15y9XeD=Q@5V;Dqusg4j%x&YLZ;oAFJreIEbfTVK&XqE|S@Bs;Zb zZ=+0^XBC}0l39SqGvpk2|94IJ+TU}E-9~YFvFqoX)z73mUHx*+Y18PMCdIS`HYb9u zY;bc0TwLDZli#?-_kH_4eC&m1aIw3@P#(Fo9;BCj=fW36j>={ zFOCb4P-SJx+;#-u9-iO4gcr6i;=bGmWX83=jd{KRX2FS^LIt?OJD8>&HaNu=_W+#Z z?fDWfUws*`UVH`DdW~t*d(*6#Y&Qj@tVH*OSpc2{-~o(ZqN(tSEbCUGrnc(tlZu+p z{QFO{2{8Aq9=ZeW$%JRlfQR!2Kle*F_-jA0!^^J%&pg{MiBM>|kPlfE4qoVss^I)o zu-Q)d;?DuU{#S1>e;L5J09!%3@{o9C00gKXFObvs$j`m!!}8CcJ<$JLZ<-lGq4V5= zqpkM)Uze{W`8eJEsDhFXyiiF$R^8jtyQWE>gh7{mI=Y0ee;*iUzvkY;;ZwQAZYp=1 z*3yoNB3fzyOlR~N--=!{Oy1g_CnDCXbLb3@E! z%5N+2fTk#omgclp?=TX{vx{r>j%8pC#;E>LEAVwTaSxu`sCS?6 z*66ss`P}Yd9!C5eYdoWNcahD);U0ni7(9DBE0(jb$#43=Li=}v6}F;8%wm8{U#bK2 zPE7>*1c5c{UlvYSN;$`3cHovjmx1V7|4K8P2G?#9HZQ%*mAqcip{c(u&XSv~Bm!fl z!Dh*o>ISY%Ya4{o8Dpz&fxO%i5Hcxx9nfWhO6`Tp6m+x!X+nkZDC5cE3wV+XD=&O( z!AYyD@-`UnQCRyI5C1Yqge4LYZ|el+h@N(LIA49I2D4Oc&pQI>FXOZZ0Tbxq-vF}nOA;GsakW=}A^cBw zL~dVX|IvS`*e=zkU<{igwhpn9A!S;Q4Vfz6*E6+f5hpYK9cG@mH zJe?+NC&5kyZ|vT|E0?e0^~bN_8aI$FJjSw_8?UpCsMDo$HBJfaXCD$v(k}jE+nqIl zbCPcfdmAuK{hm7objDT%_s_PtQsAfm>lr`#GdK9kmlV&OPnfpA?7y@T^m#m>c*8zR zXT^3Sxc|%sZ+#W`um7tXT>K*1PiAf=Z`|(b_kA?lC#lV4*l!QYbb@!D`NR@%v=aohlHB_OU)+d7SEXZ|&x+eZY=>vrWctmfp&Fp6EOH8x zYpN(z-_HNTtcT=7@X|gD|3HvvHoi*;vusqWO$cR2IcH{AoWMmV2 zBIy!JX3|4w9Rq2^GNn4LP1H*R^TL*>?FI~IRb`9rhn3(~zrN@vh1S)2EDqu~nI@$X zwOiCpWu+O4MAI`WFX|b#SVROcftAaE2B((4TRUCy zN$^zRXXh6Ztb9!b0Cgb9LAI3(w=>yE#?SH0%IZ@m12`{PP7v7V2!D32J8k!Oc}lSf z4SmqB9#}iu)nVIuT^vRBYjpDjOYH3rIO!+{(ZRCFU-GIsug;q)ss+U0x8RXtlwCQ# z`UxN%)ku7cmwSJake?!sP4ImR2B_*?30Ad#mn{e$=^v(RVc5n4ul6^7lTOH9OkdN4 zek7pL+$IBLnkGylDw~a5?`HYv>tCJ!`Lf^K4GdG~agz%)n*_?w?NBZ8!LZ zU!CzIKXHR!|Kg1M_a>ZdTZ=i31iJhn9>vlP;uHF1dWw7ZHV|y^*&o~Ct3SNM{0@Ng zO|x5t2M=vZ_p3`xe`u#fCQ+SFU%*ei_aoDvzW1#Bz@Pi{{hP?VyR@l`TL8<;Z=AILf#9?81PC!zBe z_jJ6V!z-gAo&ZTU=4@!hg8*fU3ZI5}&!26jUKp&#AU(uawvrnN>KlyD}ilyA^tO+cDfKKZ0bJSgW@Jcb|O35KwK4dEvK^?W(-n zI{|RlhhZKAp9Rk|kF|VNsiO&ief1B)8hLcXR3Od(BNvia$nbsif;13k z@>s5HGyYEUm!ya8?E{^pvfLJ-iv`TA4b*msZI}57LAGm~6iL0W*Gu|B5fRn1ffNt$ zGcR1%`dm4`EYuT45>I7}nRzBzhOHK!OdiHpA6VOOsZVAThA-~`fQX2{n;;_C2%ysj za(N-&{pzpp{<+6r)$j8y4NVRk?E%ZB&xxo=I~MTH44eWlevjZ|-?hQb1U!1DZH*WI z*+4{c-p_A~2sRtVB*3%*^BM^KAV1 z0Nw@&p;GoGt)mL{3ATq&R~YC_{!2gAFF!m-pd)+YjO4 z?h(HF=nHss{Sdn8`qp;I-bMiF6E#W`0RFRI{ZAy_Z3{bhth~|~7R7d_2v{_*_L}yK zdMaHIJK%gX;q2aoUwaw&!5_WB-~3xM?r)|2yy2$r6d-wq8@A0Obl#ZoZ@0kt`Gi;g zw&2%(aEF`Eq5Z6%G{$|daSl}G|%ri40XQ8{MP!ZY4>HJqhu=;#t6UHryY(6dDvqi zZ9$gi&mOB-R#azgEBN^SFiCoFI(XrtlA*|VCUx0Vd6X=m=&I1YP!0xq9K$ghp4LG6 zX+I-#c(?JUTPOVWYV1z zbQ}#Ax1)*q+t>CseP%N-44sd?F%RgLE+|VR3wfnnqX@~N z2!XXK1W2fXCH3~uf>V4Sz!{y*&#NH8V#=fFudVdPD5VF6!ed%7Ht;(K=RL3ffL zkUh(ax2-G0G(sVW0heiOY>l?AcfC#_J#LfeBHsCFuW4(#YV3HZbPJ&9w{-U!zM?0= zd%o1Du*vk33~c3pB==U{IrO6eiiJlX;P*a61F6`4AMKp%SJ=jJ~#Khocd?X+usN;im;GL}HO>B-#a*PTKiD>fenzV7!=c<(oC@c8i#msf2r zVd``S{Y?lPKeC{ZNwL`ir)PrAw86~7 zySKrs4+TH`nH&6#pV~oh1ozJ-$TYX@{(W2iM81lDHZP3TMBjYPz59YkuL(Z)V>`U{ zGiVb@+fCQUOj6c%d$=Y*eai(VK(Fq-5C7SFKD_yt&hP2Z%scH@NVdBqb&f$}8}PT4 zS-^mW^lCMXKcPm{4^f`Q3oPj|FqDA$yK;f2x0ejVh_PPJJ4Tqhe7uA?Li7!|yIvec zsPT6(uov3YuUrpF*o=1&`FdNbLtpBIP{|M$d5E{E6^T#(?zXhF2g?-}FqU8!w5*js zt!KpZZSYoojM|OfAL6glwbs7ASQ~O4gqOC;mpto`FpgE$!7cm-!xD_qEZlwsd*P4p z*)tOGU5#%%n|Hjj2LK7e@v~{^4DLSsh2Gopy=1p1flm#dLroRJIq7~~E>^YrcNc3( zLI_yOe}&w)F74jwrh?>vB`TVI*U1xQIItY12O(cY^V}w_C^-#-8CTxwZ4(K6CXc}JU?03?-9b!5LkY}D zI}+fN=!DE_qE)3H*!^~Tr$>5u4$KTc4R{m%rsts1BqYS2Nsi^leAR(?k~ir!@msz- zPvVkwxYBjt^5J-r^a$ruAaPs=;kShFC#@&G)GKm*u&hj$y`Q9C2Z+BS6EJOpwyD{? zYz4a63NA14buWK*{?m_M)qhZDJSUS}1K2jE+pX!a{lx$+$V%JReWAc5aQ|BbAN#&7 zPTvDOdU%7~uGz|Db-Ms2G#dJ31E!5&+9bs_^(7#nsJ>um6bP@A-}seDjCz zL3M+-udi^^M;|`C&B4-fj>PtnYc^{2Uy(A`h=<6iTukQq3i zCfq;Y;O#5m)4z0sAO49Q-gpCea6Un{w&I@$%Pw72-$7xQd%1^D;Ot&I67cIkv%||j zqL|+VJ-%`5tlKC|LYXdE9OqTvCdpMVu%SSyn zr=tQ!pBqX7@4m(9BBt{JiLxt$l7z~4${mnM$?RG^D$vqU2%eK2uClzR{wCIUmXG#; z&Bqtn{tpdUSBh`_tih}1a9h0OeOBS$=KUI7Jod1Do9Y|@Saq|Y=Sc){Y~5R3j#o2r zEQLLg5~BMa|17{f;Un~~2avH9nnJ-Sd+MnJx z6^q;W$8?39+bU%CXUroHY;^#q=MS)qYT?&}V7M%z-0Pd%$=Jfah!@gNriZf@mX5}_ zP@;gpr(|Zz36!rA3k>73|1RLu5r$0Cf{x)+=<>@F1)veQ<7tyt)W*Jx=3fW^>|DJ} z8-W1RW`i9>_KufRcLdTboYnv~52hcyb18PbUZj7Y}FL+$etg*9(5%cih8odEY(k zbcaXR*WgJXPYg9=Ab=;(nhY~2H*IFWPqKnpp{D-G6NZ`$zR7ojK<5n}KDxrqZtfej zI)T#U(EJbWs^R`k;PSXejKV(Pv+s#gS4+#ybz(ch+FT@1jwcz4`@Uz{wW4cYnfbpPTTvfAAVtp98QJ$d>xE&B|!s zpAFb-; zUj}dmSOeHS0zT-5Sz^y?tbHIUnx)sE0Xq+lt&Q2I8w0JlBUXF8SXXSQ#`(k`1w>u0 z`ZvBhtpjmkfWyt+zl+nBs`G?JY0q?~J0&`-#&>0GOk1MIVr}vpj4%EQ(VoDL2DXL2 zT%V|Sdl=QU2Gp|)-3vZzh@@Bkz2K*V0!7u!1)@9|vP55TyAAh>yf~+&zL{aN*#S%~ zb-b?m>!POL!MN{@s{$DFv{ru~+(YHJdWycv$3so& z%V>e{NMNISBLm!5Z><9y!oM&sZZw!B`^|cSJ_`2x>K^nASvrf^xRs`ro?#u4d;!j& z-d^~Eys~%1bJtE$oytD@avZ$kRc6rZfG}*ACIQHx)8GV}0-d)POHwnTsiozb#Xd&- ziQnq2$@tSMf|LZidSK?WdytXij#$m>0D&SU?HYUz2fn>h8tnJ~oOZ9zgXliHDa1z3 z@iJ>A|FN9|j3?ERJP`HOO3i$v_Nji<OYDdUc^T1H1(#7 zX6f$~LDvmLFBH=Ufe(Mb;Dz5NxO@ccuG-*U(#m85IBBPC>asrpHe2B2M6f*pbQWB_ zt(Z27-}wy_e(&!&!^fUI!{eRe>gL+}`b@N>fySV(nZ4L0g6-8538cvpWsq69Cuq4t@oFug&_mV{%*002mdwLFz$piMSIvS{(+Zd1^5>DT0dfWw;>7koug`yTodjpZAL#9F;2jO1S66`N+Xg#Kcov))*+#fRJKV z9sFnh84-N-GS>r$)D>8UUj~K9I^?myvTEQgj||F_m`J8>-Y$o*9j?!?S;s8@h~S#r z$Z|(are(=aQfYRZxo)Rjur8;RJFUr)>#xvKY4pMsm``m2fMtDLb)b;7hs@vbXRkbu zX+!;ob#&AOz|dDtemcnZ&2F6x3^nE+UHT5|gPI>?&u zJ7g3^3RJK{pU^od8YC7~HkYcq{bkJZmHJq2A~fu_IU&q+|kSLfeT0duguy*Ww0qd8vAQ2{nEv3eB}j!=(zji{m;I9XWP}gu*iRPvY5Yct zS2{wm?5(`xM#$K-Gu8BEx-&T4b|!%zB~UH0B!zUvxp|R%5t$=+CE5B~;1t*h%k0$b z!Oopeb{4o=$ep%kM1*T2^)qrg~%kc2+8K-A6KJ|?oeAl<$ z!w1hdcziwMVz=x4pZuAM`ynNJYDY7Ae|5=Aw;yrF{CB`*rg)}BAI;C&ofWp5Krlgd zgNKhVaXsH4_Wr2HM}rpqD<+C~V#0m2w4DV&8|1>W1%*Sm$9JapceAvu{+k`}%-IH~ zCxT!7>IOgfBbWHuU*6&TWWw1!!HgN9-^RU<2Nk|T?+JUyq1rCnJ3pClax&pdKd1P@ z5ACpf6~MUwn>?A8CeD;RXuAqv#*9g}_~QNd%b$DxCHZsHM&F!w=}>z3^{#JKO+W8v ze%{n}CpvYmvQZ!B2)k0XVIfYPYxk#bdm~ zZ+6S{sPkp9injOzK6%1D!QqkJJLbNtB3!k`t?gkH#A1;d41t92G~CVP!sfj++DoT7 z=xlHO?g5jN$1~}2%lb8X*K_68=8r})tyZuyAtWmY92U28M)=G;!mKcV*I$Cc^_5A5V)aJx3RHn=HZi3JS+ ze(Bptc*tc&x8b(BwTlhlEo5#*>8Jf-KZ*4tpJ;IfSx_eWl2^`K{Il&WSqdhoZs*f8 zzy&{fr$ObF<8YnyaYfQzQ@%UF=`%l)+Ep4DwoN1%ERCj>z}~R^F@qtwayz%zcqjC0 z6v}7Kt?oqaMEpoV4_lK6WZKGZo^krdm*@ZKTVK$BY`(z9Wh>VJCT$~&$yxAD#gz4P z*AErA54`lff)D&2!ERPuT{PRY`|pfiTY#ruE`W$)+5oZZ35r|H`*ou z7Tb8)Pm>M$B$H~s!$kx>mvK#!vm?4%-{x z-u(@9+O@iZOo)awny=L~aDV{2onpHI?md|B`sXM7+7Iq<{kOE;?!Q61G%)$JVT4iu zJDGLDjNR#bG5{O?fPp|FC{vQ+`#Q8r0D!w zf0nT3g3|p=-Zcg`Hm~pbhqukVd3()b0JW$S9yQc>?v%leZoi-x%zM%|aBhfK$92{*uIdODA$ahNoX68JA9jB1RBQPfuDcqyj2ICL0Bd-Q z1s>&O26nP4=M@XLpftP)4{#5vRJVlQv9t6U><-^bJ*XoM$jpH&TcOWR=iDUghN_a# zoc!|62g}SK@z3oz5%+;8;aUv7t%nM*SYcy2rjo!2Jh4xkbV)t|*P>TQj_Kh3q{NTC zw0dzndC6EtPjA;&@`DkU%W{ID1mEsCnIHG28iV%Wfpo8Ak6y1BGYKh805E=pUcH9N z-s&?PdKY>&9TWbfq>Rto2+Nr|04QN4-u<2R2=m`U>75|)DqYCFeCaf>H<86VTNNHn z0;CB6lb!J7f%nAE(K^hoF)OLKET+t zNrBT7;B-4-cRk_ZJ2!agJ%Uet(}Yic(d)bKSf$9v| zDbA)1PR}-Y_0fdC@sl_B@t?oO&12x%2W?EPHpwVXR`de8X zg3tbl;`N`Lq1OUAwF_Ei-U$YQP&@M-o=J1euQ&EG zEcS|wFA>x6gI3%v7*YUczi$&1?#YtdmLi)`Ib{T%1TgI6)d(?9k~n1{l7dH~8J2P* z7Ky(wu%Z`~wkYv~`jn=6l!qh`=I}Z`=c{aicli?xP70j(@%UoVK?kD9nBcih)la%h zf@ohPC(^et!@}Pc68& z=GCAhVB7^S26DU2ILYeW66b9mDL|hV`~}}n6{yq>6y<8=K3G{F0BTthTwRf@_%SSA zrFUPw?8Me_jmn>zF-UeS@p>$0ror0tbL<2_RO<;J&BPtU->Oq6$^5GRQRKX!E5kcx z0$@m+C$2dON$n)t>X5GV)y{PHce<=sK@8uE(8LE_jibfgzbx0 z^%HF+7qPSBdBP;NklH1TKJg*k9d)S(A^H$HsB&PLE@YKH7dz~9h-D{5{0+avE&swY z=XT=!rj#c2Z6+lAy_Gech|8e3sjwwjg2sG@(s;t9eU7cCHfaOm$9F~;th9pzp(B@B zZ)f!c(sl(1`mXbb4<8_Vxv%-2bDND|GflX@m~i>{1~0x3_>SMX z!KZ%530^qa;_d4lE^g*#r|ew%oM+v^Z`;@SdB8?%*M)YO#Gtp~ z;hWQARW-klNd<}#reKRb6e##II8l>1*;o2*Jt4Pqt*7un0mt6hBnQ_adXj&FI6c9? z3C8NH%gVlkMV3gS-6oWOq})mKk%Cr#RJX(HvBc;Z=FuAMWKkOJ>m+t9XAd--I4Crx zd|mVR#f6AOpHB?g45%X87YII(a!rTA6Fo+M3ie^Yu9H$Fpq1SN7SC8dBrl%;NPdk4 zlo9zyvIBRoi7>WL+7aiIKfS6ZHq+vcm4n}tt+EYpTjt|QCjt%~e_qI+^8_jkamk`= zh<6SC%KKVgA6{f!Tg0~Z*+N$6xaHVufv3oIWOjFX*7$#Vek8b;|aP`hb1ID0Lw)K z3$gseJSk{P8_|&lo-5wM2Zkd|_Cj(B<7k)Q!kHKT(}Y>CBc-l`Fo%P1I9f!Jd|IKU z{z?FG8@Qb=9l{SC{f4lEs(eQ1@_g*;56#Fq%f%=eNXmZ#KuR41Rq&oX1&bpjw- zF`r91WB|+g>o5Hbed058$>ShlAs2@tRNnYjdkOQwMz`sO`7mZYnfG_}QYhxeu6LZ&i56C<3aBXN z9kAIz&+kom=SvfQ^{-sx(JukIogkYDkU4Bmdqd~P$nA#L%TJ$^zxkezO#j>a&&j{9 zH}lnQr<+-^^9>ktOA>YN6GLiAqqu6SOg${HBQEb^pok!l^zN7NmF;=TLCWHS!|Ljz#p`CpXf-2pF&5u(MDBh%@29s$H`2NoSG1&z? zVQ$sr;nWguy*}Gxm&4+my!mX>U)~BXiLNrgLW4)jB^I(YanS@zDi1li$4i|XX(!wI zP6X0H8m;v|X<~8-f~qFIG9OkTB%?;a-V`{&t2<017PoLCh+JH#UI&y#Q~gfIK>ucB zrO)P~+7%YO_69C7;S!ri{9uKt?%wK_{)HtUQrg^AZ57Vm zipL-s)jPKB(X^Q19_rXn5$77*kpQ2R|3mfb82k{w3uEc|*ddyR699L3_I8TF`&!Nq z<&sCk%WgHV5Z8($|0xA>k8hbMgDWMl2*F`6Qp%O=x)7dbeT7nnl7!oUg;I*dP4t@* zEV(}wq3}Hgj<3?}tH24Jm;0rR65Qn#YpPtSW~V1D%!M3vN$(UxPA!7StGOh9iIpQ8 z*rN06Br!k0!Uh&Q91OQad0dVd_97DQ-kXpe)QN_CX1&<9L~=NkM@~oMC>2M337n&& z9PO1PdHQgy)Mb8@nUPGRCw$#L(xg%1pJ*ibJd@&jP_)SqlD~Kzf=f2%lN@YgV))eI zJE;wpc%Am2ieQ>VWU~>KN$~h>{rIb&pZ}T5*Y%I8;8}>wK)?E4n1Vpr25)_4;Rcv5 zW}JQ$_}KSPcED`U{_KtY-h@Kun=aoO{bIj10pP0WvSih?$%3q?8t3Df09mLxDvzb) zpi7y^KOzc^u(-z;w9Cy6^yrg|C7*e5E(w1F300LXKJDI9Xnp&2c!&)X=) zmqa&xX9NUax=ige@2aq#lynL7dDW~7hUK}98qBPVAVa*5RWnx&-(Pp%nhd;+A0a75 zMV?!@-2S*Pt2!!RSboa!Eabm1jY^4-@7Lv6a*EY@TUu~Pn&@g0I&m9Z#4MDWV9 zR=X~OE*$lMzL7y5qUN?YX)fBA@5gkOTApM3(#ejVL;R0vw8#@Hs60Sqyd2nDy&M!1 zT^4`sXZ<`{=YR}PT$jAC6HBp%nX^DBAOc8##7Ep%3;2&jRhzPaK#tLK49PMLM^1tv zImV6mJ-9jjc}3b+f+*`+-aXJ(xszAtph%;k#a#$p4?M9ID~Q2=9e|q%jBgf|osVv@ z*W^6HXXO#LeU((z7nMwZYdSZ1lB$wC`FoP3Cmu8r#BvT1h75fmg)~9pbvi$zi65q; zOB*(MlT3{+-ZOjP{!nJxg8#^=Tt2>SwClmz$HY@?-?zGv_?YZyM*;+~la*b{Pj;?;>%xD+&iCeath!1 z5GJQ2({7h!LeRn+n<#9`Y*Tw8t z=ecfr@9KC#cF_2?L6DLotw#>Lh1!M(p>qFN=6%(Df%#P1!kx};d+l%>zGc1RcS(4A z(u&K2(7HR1BMTf8BfeL<-Aj30gXezN$}L89+gB<#+C5J77{u~18S?nXcI6DusFUv@ z^%B6y@s-^JL-qnS7)Gb_5X8DHNqi~ZxyZ~?l7*AHB#eZfl%o)j)-T-tIDT;Z5g;tk ztUj)i!PqE!$-{8?Sy-E_6x7$0i|whtz`JJMqxQ$}b(gW?8m_gng0Gx`S!-m5x3s0) zrp%=5g?Y#4SmvJgb4ck}E5D-v)|#XaOTlkneJ$U|@N>=I{0V^NRv7eTZ=XPq>AWfU zmUhX6Wxz)*D{`V#Dd36)j)>0g_?7AfxYfr3{>aXF5XlWHY@>*tZ)2l8auvBKhFJHp9>CeK7dvI|-i zeg>Fn=i->?V1l{tRw9slQ-N3Mjpjiw%e~qdZHuSG$55+dmn2mC7z0L`$iSos+9t?c zcFUv)vixpzxGl19I(LGCbXort~?Syat~sg& z*y>?hah}Yo>=H%OonoagnICDF4YVTwO=yoUAK`j;69CvRY8gZtS0X-W@d2&bKo{F) z1|FPjasTWDZ(J%q{qxuO8$Wf8uY5&u|9ryc1Z{^zZ_CMgm~Y+(X5uwms=(>F;QYSG zYri(*mw#Z^%U=TIM1ZYy1}KnfpZCi~7UMTnJ$VlQ^?SZ%^RGX6Uj74_@cQm%o}dt& zb*BowFxW&-aqTK&VLRj?9v&CA=sl7)T z8uW+mk)Gt@X&{=``PmKu3VeCh-@iw|b2(VtV}2L)DH&kT&jWO~n8b`E-iHHaPBaqk z@CiP#%JQh7*ojejjiF9gGr;nmE04dYIMQDbDs>%cu4ytF#v>{xMQ7YHkYTa2M3>nk z+fj%(@RDS$-xv=mTnH9}|5BV@FUA90iD-c4w*HygCmmKk$;K9sq(A;LCUN<7)md#f zreW;bwL!&7)hG#;em zU3m5y89iDG>m}dEK8N(cPHRo62|j09COI z)EmtSm!Y&oB6PQqRiQQ60K$fP#^Xtv5Aek#R%C+sP4r~bRfx`46|iC$ zz=ywc!i%5S;A*G1zO-EwZPnX<8MEtsnmo1dv~`=@0GqAgbUR_f1{W8KhmUUX(T@mz z-|s%bC;sl|a5nAm_rU{QO9^q=f@#Nc> zuII?Tk4sao-?A^!9|Vd?1^2caJUHFp&Fd3<`e!fk*MH&?ufD2ya8Iy3k!S-=w#9+N zcZ3vkRJ2_Oo9%?>o*lZzdhf~qD{Qo&ibp&{mg&c_8$R6?WTRYao;Wl^pS%GLhhS9@URaCE3NRA zK|1SLUGLfHYN^jSU^oW#7OBUGM#n@)Mpjmyl^r+@=97BJZW+{)NBdHpW4vRThS$sW zeRZ1yvKE*=(Lv52B0!+!K3Mrz<3ID0==8*3G?73w<_?m-qu2}6ZTwPwn-t)v>=!Vj z#58MJXiJMIn%}cnnT`0qjEymIYV~b0Q2bl62a0IS-U4Txi0TE+H`1;YM0*ymNG{_i z@hRp9G^-}FoMbS%H)-vuxJPvCYkR29ZJ!a{>-x^`6P%tzRyfDfdq{rAPHwEpmyba2 z#j{dgdTE|)I7s|~@?)Ph!(FXE*k)20xeZ;lel?U4jh&F*`E*!k(KaP+x1-OT1>@r~ zqX)q1tkpgv7`unRuNQMl@(CNH_75qvBP6uA)?y0@D>awR5XX*JvWf@t|u_2D?oP4x79f@}(KJ8=g-b#2M&JcVCxF zdMtdUjwOgOgZYTEvMwm^ya$fqBl@bCy}Nx_gUpvtJ1m)0M09g< zA~(P^z4`L|2VVW${4eY-@F@|QAlLzN5`8@P5%>8Jh)kHTchJX*v#$p}`h6Qb`_Tzk zmx`Nf#bin897k=W%ck!%w-=C2`z#w^dop3O*YhDI2CNBxeoyln|+YJi$J990GM~qx0-{p_-1~`2S4_=PXhF8 ze^SBuc7wCi4c@w*@R?t@!H<0U3a@>2#xwUPY){(7fHU=xsl%226AK#Pa^LEB6zy(- zXP(_+o+te6AHKnt|N0L4Hh_Bqne65PCp>4^fOWbVBEYPoq7Tnrz+ZmhL(`wV_pJP7 z-KnZ#3t+|!?JNDN3emZ3|F;PdDDuER?U-Ikq-6K?wJ#ap40j zz!*zXbRYWY{HDN-Ec3#5a__}FIM>k56!(c35H01uuw615q4z1CYQ|{<)w>T;7&ACB z{?6kGyBC1x-5c1_Kdmjv%wA_ZDfL#K+V3lj+I~UDAq2O;$K`8aN9990WlZ3c$YTWm z*hzo|y+q%L{z}h2Ik`C=63QW5d@oSfgJAH&$9M9S4j-nY(0fQ95g0Nxhh%jdS>Cn*r3r|YA5F%M4vx$Ne@wAmyltErUxClCYPrxKg&k{-$A3dTB5uG7!<5A25|1Pza(2-8 zr+x=X-=~5rGnL=*L_x)`sa~d67@nAI1x2lt4TXV6Tb=~4p5!sF^VI^Ec%8*$NuAx` zS6;NFAz`-3jRdI3MQZ<48t5ZW0?>B|Fin^yk!iER?)nNZy!wUtAA9F3`cGh%_hXVi ze$frgK0V(HqU?M%W`SPrfSuyrCj=k=o(<04E4X|#W1ibYK**=}Jm2yzaja(Q?-lJ> zz^Pz6O%Mn!9sv(8Zt#&03BKoBxA^35eSrJ2#iOeoE^lt2Li@xmDeeP;sXHChRhzsJ zSBgmcIlM;~kJ}LdikmLz-d^Xhhgr2B0cZ);Gz-o)8=RhP@b=XPKlwMW@HaklgIB*Y zsGXx zgh_yT^8i2n>`VApo_Wvo9|L-&+OHs0Xy1n4#`XQoKNOf}o+Rm{X`oR>$T0nFdTDhd z2<4Iy!W#r`#ho60`*3~LkVFWN#*&R*C9$bg$IGWBQ z#+rNEKP5V>?xG&iH!MGZhue6nw6D?#=m_v#o@3#S9Kfi}G2`VmeuwZDjm?p@+6!mF z?G{sycQB$Sm;kt~aV#djD33YXKGGENz~K&P#2)AJw4NiyIIu@cP~**_4D8T#h${__ z5RTj5a6l*oDYx&DJI!LFz(OO)R#ln*G#TJ4q?OK&%FYoRU^1FC89(Kn0?E!TI9WmB zxu{cfjs6Cepc$+cTjn!zI z$T2fZM+_2woo1l`FAe^}b|uS0GYi1aclTofxCgxS-4njCSM?J)Mrg3tqY||0Uod#9`hTC zgFI2e`B3E-YoD#b>HvRWYgE1}C(acJC$G?R%iBxiAbTO1?N*cMm(Aq!nY~$$J z3m@xpj@Xz7s_)jbKR7LA7IgLtar#Z=KJlOQEpBprHXq=?lrbeoKK0~>6HW^ZLNo~_ zEEe!7prqg@=&}ubSvAsiu#7%2;Oek!MSCP9i6P%;k|Dk~d})HASMWi-Ak8#O-9al3 zCQYC;yml5l^WzI}p72OJ^K3~6XB)X|(114Er}N1x{Sw>eL2^j9|C{W*N!&LP^b$Ua z>dAhJu0Tm=4D2I0gUR39(0UZj@M(eRe$HVMePX0&DbLB6^^zEmH^K0(6T@VaA!c8G zzFyVKjac)$Zr{B;ZRMvyy!P*Y{@m#|ebrqBwvykiJ2C`<-(mZub`p4@zS7?Y`VxbG z;rC`o?Y{cWMs%KW^3JRH0G2>$zi+?s75!5;5Ag|1qVxml8#<5FjkxgwHRb@lR>6hp z_9Kvw{oW1U^Yy^hPH}nNmYZEy&^FX`zR~XlfcMvF>ilhh%?YsGv>ycA-3T5(+Ts20 zRs8O6+~PaF={`PidV;sFZt(E>3OdbwH^BtV((gDV_b~y}WaneraRxpD;9Xv|4e}9m z+2D7pf_vKurze8ft~U7eFYNH6pSi*7FZVP48(?SpGNTk4kfmL6IV!QqDhWv5mqKF-kr}F6OnQC)ebayR+y~`fIyuvypLeSB ztQ&OpprST7^FdnwY(MqqKkeu68?`Z5Zv%hxwRx}{!K1Fs`ggV7(D<;0571WiSV5J5 z+kJz@OmmIq*Hm4~-oN3WlPc)5_!oDz-S;>Dl?S5E8)+3ppX(lHd z>m$q0L?OlAxYOn12kvkAC`7qCGX*7d8HZ^vb9{x%%X4sMkmXR@b3mhV?+3u%3!IZZ zlI+_bvU!p_nv3#9iqXyphF$q~J0Kf(>1p_+qsJmoH~}EF%=scl=sAw6yU{T!AB|ZO z&6L=tKE8%$Ag^j_qvx)CFYpt*h3xm#9~K;1fnF8r%KJlv9D;MKl5dN94gYFgcjjaK zPeUHJd5(qeNe~dh_6T?`*KQ97@f?_F!G5#4^;30sz-*WF(39Z=zv*XOxUz8S)L)H) zKrv3vGt$bb2Z(^59ccVfN0yxp(?GGx1HY9g8A;IT&SPN!jKGD2vhJ~jFA;cr;K3j* zD0ybX3BW)GsqM;<2d0yvv$$Xx`9Sve4=;Buki#b`>fkrEAGITVLHE)N*}&T;1xP+j zGuN+jsOy`s$uY7XkojHE%8Y~?MJlWw<`U;{ThJ4|MNP6{?mF5PPZf3Ou%LDou+g~1CUf_DZ$tu^z(hT&i?}{x1_s=GrY&UrI(Tq?3%^5%XnH^qx z8F+AC+AkqY8vLNoV|KojYz{#GS-Y%%6@~18(-XnT{Vg874Sep$Z}9q0%)r|K&ZmaM zY=F!w_ZxS3GgLPK^y~%s`R6}4{cGnB@c#zpN4r@kZT!u~FVJ^%7y~v5VuOF!7XBs^ z8wj)P{GJVxBPjSP$(RGiFv(S(NH94Oyt;ingt>sJ^xnxG(KLD%?_)r=cLG53`=l+G z*FJm{P-p_c&+~&OUP@cD1Fh`|e;t?dnR?zeP??Lf@kM?kehdfME6dx>$K!9kOQCyG z$|OlOl{a=q$22mIoHlT0awxgIW|p~q0$)@pq*wn{ z;{l7Tqm=3?hC2nli~z`@?z_M1me3EnY)mfl^CT1vG;@5rGI_EF=a>upMwbXOeQVFL z$JY-%x0SXy0G!xJ zyg0b~8D|#l%2sznlmqt? z)}owcWPC`2rv+ZhR|1|}8m37AvoYa8D#IauLGnfXBh;?S8c3D98OQ3B zPY94a>YzKpq5hx>O!iCe$de${X_j(x8DxFbr%syi$`=Ohd=g=C{cq5xhiqWxkh3a_y95`qS#W6~xX3ko@-9N0bMh(uJJPnlc}5H z_acD*G=!K<1%DGw4m4WT-$O8MCYeP97mxItU;D!R&tATcKLX$xY~%*of7C&BQd^Jp zM6|zAKrpod&TqMo58OY)^?ZYe*EiT%zuB}!aM`pDFv)~THoyctyu8Hq z?xx{^c>X@m3e1X)3Lczpu-O7%czeR9f93|C`GpuGH7i_k@AG;d5J*1_6n{=@w z34Qh62DlU2M8gE!zc=Cfa>D0+YKK>Te1^V;_OpJIxW4M~9z++?ev|kNU{Y0V?%|8i zd~o{ro_XK&Z*L}ies{BLsg*+Ws(u^L+gX2J?RRrj#8_P6ZH&$S3f><;gCDi;T~g%W zH5!&jf|kYmMxXUC?}hB*hZ6@NzoUt_B+V+|QBIP;$Gb)Q!R`9#tJ5{$6N<>xrQb(k za?3G_=~SmFbP}B{VmY^6)b}m-?YqH@mEoY*_)Z*@-;T5Xp#a^hk&giIchK9$*Wes? z4bX|F%x|mSY{w}ZncXq($*#!N=llb3N0uj4q7q;FskG}O<7<82LngZxtL9-L;Ah)x zZ`_Wp8xo8qJd&T8VX3!9ZVprZ7|Y6FwnXYDdiKGpbRUCrppgZv70eI@v168f)zhsg4-Gv`x1T*3HPoBe5~*eDfy5*o>m7t zgm;90-@6KLk$Y==-Am761jenF9cax6kFl$L-w*52Q|2L_HTySzv5>n3Amn5S$azOS z_f^{`#|^4$gL4XGi;EX4Ej^goAcqIJ%8e|bNDFY56D}6OrTld{#bq}&@Hozi3JMHE zrZdv^dfr0lTjr@PgIEk~fwV=g-fo}aHM;y{CJpv1DX7Vw4~(Wru7?vQR5!zmy8H0? zdk*ANk*z6P;7XGs96q8VLWuy%gin(;>Xv=aX{>#rH#3~;^LrKuC$4;7!t#R3t{=8j zU@-~cJz8vqxltJJ1DD@BFz_1D_ecDZa4UWR>`09BAfa#PhA#$mo%W*#lR!j8fN8Ul z9Ym&wZ_I!2wa@E6b@LG4iD|kA!4*_b)%T04a#Gsa4n@p>UMS=oc<;9hzUJE}nNESL z3x)35S$`9On#?3Tm~>s4PVHy_1labU5ZrDAHy6OeH)h;B2Y%N#PWbLmp5i0Voa1s9 zJi5BVEHkj3Asb*4LA#7VFl{D0ytu@T?)*LsQNcVbwzJ^D*#-*W*Iriq*iYTyXa3fV zt4F~7`{Ebx&Aoryd3X02!9WZI%s;834MJKUo)tL1C)jL(&;K0or5~Cxe-XeLfK415 zFguE$9wawyEB-yJo6hjogO{fN=$ZG*zkYHiKf7zc;Wt4s!+yq3rP1%dY1r>K(B8-G zr}*3-i+{Gkbz?t_Y*wXjWxKVvHy=p$Zbp<^hu=#-%h-uvcv(Ocn`SUb8bpc1QEp=0 zu?FZw8U-??<4px#cv5kFx9{XD)ym;MG5UX&U&B#(CVyPNcV`{^(atreKX_(*u2)*L z;gx@emwr{C25v?8E8|}+ZkMg?$U7?itL<(D z^pLPpJppcOQ)|R!za|HTc3Ygsz!@49Ir%4re;eG#>ftusBvTuxZZ_@nMg)@xZgzr4 zZ_hYA0eg3qr}(>G++Y&H!`(G*I2vI^gr3x&uy51os{YUj0?YulThX_0Vig^O8uc@l!O!jW&sp4HV{0z_oDp3b03)g+}VBkOY?5FA7xOr{rTGHXgdJ9 zaoQkhh7bO`O1g__HtOS1|EsR)7zf%w)^>9u8;0d8?6iuz@gAW~#(AefgT>|HI5oqp zK)o#dSZ!u)lZchcmHZQegu?jX2>_N`|K{c9)zd)O<7PlegM5-R^OJWD6`qt~l@)L? zoLL`Sw>qM9*8|~A;!ZNn=b0B1IuK%~CJtGiTy6L)y?+xqOe^c;Z_I|IDk|bWXB!J=E_) zGszg}(CSqSG7pAG>V%Zvg-ZCn-rJq(Re9&yO|2?B}xpbOsaFMoyN`T|l_B64=bX!*G z?ek?zHh8IW(9+(LzNlMP@<|mbzq5%BlKa|ahIuE-fF{lShpc)#;Vu4MrsCv!;<&JP zQs}}Cl8$L2Bhj7d8)ul&sil@LY)?Z@30|fLp#IojPVExFJ}DA|V%uWgCWb^NQIScp z*~onHP`~!IFXErPdL93R8S*S_6b9YEZrN@FOdt0{t)$`Bs~Nb2Y`+fp+V7t5-ru&t z<;{%i8$j%*7NI`D#e+P|Hff}x&pvq|o8WIVO~6iY`A!?je)NNaZ~I*v{EpwU!GqHY zk8ft&Xxn|DTg5vU*MI`|&$c)}o$%H}#n1gJ@ME98#^*k-*j%@*{*XS&HmM)8XoIG> zRMZSI9cO_35`)P^p|fJU6+H9I1`l5ae))%P@b*swxCUe!&NFZIC+{8d-E}EX0-d+d z;M322VEVK7Uy%PNL@(yqyOnSEx7AcA!0*H^KGWWB?3Vv7|9U3eVWoFn9`4=fpRP~# z_pOol{AG@!Nc9&nTp0(+Xr+D)x(>INXP2|6@7`Mp7u8?l4M@5`T#hj;@|30*^GnHr z_tBbK&{2wSB+OPV`^~0v@K$^aqucTPYz{XNghJ*5O5k? zK1$O00l@bSEYISTxv;zo9qougmlX2}ENHPelHdziPu3UF>9#%-Uc=7Thl1Ul-J$_{;`60ax=5*Vi*P=Ucq;&V;}DONyWPnQMIMHN`1_^HTwKjVs>CV#@JU zci`997eb`{B%roF{OofZ>>f|}+>h<>l^@$-eh0vITHf8M>h|x+hj#f2=Kilt_wdWl zzBK*$XJ3?mcM^Slo-JLGIR^FWtNT81RcXgG`aAda{dhoF8vK@Yvp*Yj*4zB^NP_PG zh+P7WHTw_>jY+yz(R`=HyLA4%kN&kcusC3G$;y(y4zXr21O96U{=)EK#9w@{ft++b z8@*uw)H8|Kbg3e;-{Mf0CSD8(@ymnH#o2k25%B}kp(yz#0DcFA`4^|PcWLvdD7Hbm z0)XK-p4!<9pSVc&Vn+U}S#KA~@yt{)3?QDN3{?Q6R(29uVCQfr~WV;oA=y_>p z9)lM0vZI1IKEzKl4R)Mq6);jBF`~_@uh<;7O}S2pr%Wj1e5c+uaOm;c2Xb*4yfb;U zX8Vx^RlhmUZxsG2r`zIVI&*g#kF}q4jD1w$KG3qK{7JVbjM^ok+ydU6Xc)}6Jjrt` z?Fad1$8ZPk#x0%}94g&+lR7A110_qio81iI51wP~m2%2;I1)7%x31E6gYT=cjKu2p z@2=xSh36eX4+lIa$`az-I_b)2r0BEeSS;~P$)YF2#R3KcwDc(Y&mS_Pfzy+KDgz~? z`rLqSXGdw~tPbe%T!#SrL<`Z#xl&BT7yunGQi&}Ae@L6qyPCbg2Zp>V??Jz|>41BP zAbBC_k+qmuVMCMB-sChD+0c9Bs>J7t2TFQ3K`-&KJPNCbnS=6v58j}VtBwq%R&Dgf z>OPg5Z1ZeN=+$h&-t*4`nx3af^JNmC?Xs86W}0_5`jIzZ)_?l#FVFwr{1_j^X1W1j z`=Te3LECV_R?uuluoK{-T@?7-w+cS|9UGj!09;+{u+uh{7r-y2vjJM3_yTn5I|r;m z|7^T(CV|X?-DBYLdd4$n!0-IV3E%p=1RsAt@a1=aAO0D^XMS$RJ8uE^P5?bozXVXz znfQ>83zkHz{_6(KS+)h$X1^l+2!RT|_%n*n|IiNl3V?pWUt6N@{i);fX*d!NTd#+`e{erWd&m52~ZC zrZT`{9tEH>;474k$4*Qpg+|}%KM+KQBkl%MMnrn!Nt2O_;_r=4q0cNQl9+008=6?! zh7U-KE&0m1j(1ip!<)cz4V!>i9tF%C#>5ItRIT1ZjultvBw}8_i$+5>egsUFrBk8A z!UmV{4ucv_xPEli#m@_J-AZ%&Ncu2Ws0-2VmBRwxo_b7@m&txvGmK;DIt=Vcq=XxH z#(zBJ`{Z<2%<*Mq2LP7+E!1eH_Ad zj1eAXKu_3{M$Px}dS`S88b%IBow-a19OIY{*-3qlwX40I#2eL1%LtAI7kk&EWDS@q zkrbtYWu=!ze+Qq zh7x}n@A%ns?tfU@?g7xu8`Dv6+pYooPpqA-{M+EU>(2FS_XKFWfPb@*)2mDUw%5Km z{}Yd2(ciB(@*Fm}p^?}IzLC5U;g=_BHzE;W2k6BNc@B8-I|X0&$qCo!_XD)0cT9by z+IhA;^`gKu$Kb!~XCr;Tj2(4=^gH_|=(XVba>n`jjE{ev;0s>`zWlo2x$_OCZQCn< zjfPuhKxc_Tv$8zlGS@DvCa3VXa~}xYyFcONRPgGrC_ejxH@N&9fGr@Kso_xd3i^BJoka=Up;>YpT-Q`?bN$=qm>S#%u1L0Y5z-jAThzA$mK8x zRXnl5vO4rWd?>|MtD~vPA|QGXuWmnFKx%KU$IBD`jAFDh>!FK|C$LLn%7T8aZ^6GE zpZpgBZhS|PF;fx@FVEy_j-}*snVt|q#tk5kUFf`@0x`*^nT{s&-jHOtxS+O>x{yUm z0u=Qg09#=<8_lKV8MtSEugHrbK-=kZ07ky!sN^Le-C@ad0=Ht@0cWA@*bO0?^+1Mb za;-i+_b}4A*_=m<>UoM2 z0Eg(f%^-WPoQ`OFNbigC0c{8Q8NeMP9U0e%h(qnygg+wU7~@!lC*vB6Z9psSpY%DX ztOI!0kjT;M%m;0JaG-5oD1Mh+0rJ4@!)E)hH=&-xr&e{EaT(23DY4=xmCygn1% z%RTO(d@n)61G4z*+}O6T^@M?cXExc9tqe;}OsrzsveySUoKP4r-)=v8j3kze*%|Uy zdMo4G>6uiYz$g)$XTe)MP=bdf`?4^+%mAbWVuIoAB?j(N_+fg6@agL`#SxOU>dknC zjvN#@G`V*<4secE((4>sqeX)HDjz0@gptpp!nb@c=J3SehkU$GRIsMMr1w~Dj>H`i zy$Y{&$H3^`fDlpp9-OE%5M7QtnNh#=%ueSN@@ewq{=@Y<$ zA-$T)b_11-+<)}8e*bG<(Est(oBAC(;{hhQZi3Mba}$=TF<*d?VZ?<=OI^pzugSWn_`0QW1#>2nat?aDJeU>z_kyNez zvTgJSwovHiK7RJO56S=P!F%wZO@fP?8Pawss7BIn1Nv@p3Yx@dwzixAQ25XOb;lC} zv~VbiPP9Q>vUWA!F0QX+wS+hMbwrrc%Mj;+7O&9QJ+=~(0E07Hl9S=3o1PG$0D1)i(jbbo-+yUJ_d1c3KF zgdK-3y9+U00Jk-kHRAW-Tk#KvAK{QPJ_oY~`_PL2A)2Io8Qspg?|E7`P2O^H>|mpP z2LG--)_Z6m%7K#UI%HQ?=U{!ZZvpIAwpL-+1Y=~s4NkTl>zLLm4R8p6JNlCJv19Sz zO0@dSy9d8O=QK*{B?)mBeOy#_PynSo*|RWQjldh^IJ^Wl36fzi`AVNjMphp0M!}RglZ{c<%mvr>Q%4sWmwu|<{e|3T71LAuc&`gi>T*}={60sRa&r35+wGQFP z**ekh#FqMmH}wU|V&Xi1>F%s2Im0DTfbnAdPb zc7|32I5`1Mw}OXnE3S9FgIYf|vzgm}bARXmAx?&ibbA#*`@r}7e8Tzp2_C&E`0S5d z;*HPDz?A@YnV?OQ+5~_ieB2B}VEZ1n094NL#ryA<|MRmiPXFe1t1r(xwO-Na^Fu$XI6>zyM`s#qr z5z;ZTvYn~a-3Rz-2*0))wYl@f2v2nafCKqqIu60U&GWQj@$D2uF5YBzJ zxn?(hIgG^2@)}%*wV=h4`%w_E;As8H-oaCV6o?HLn^GE^2>gO50K;Dq@TT-)bO%7J zSoXlp`J7c3rZ?yr`HPhJP=h=W4Vf5?3)$`STtcslfrM7Pdv(X4Xu=f!m zf|D%0B11)6>F<-R`e+7b;K3(=kAL@s^Y?FXaWUiON)s>ISO2F?yJ&CP7)*_$0UgzZ zCi`h4m^Q%4M)3G;#m$W%e)WO+fB#SCJ}x(s{fj{RWSFYr^uFNq{)ESG0$=*68Lxd> zp>F|luU(6vJgTuR<20b^a!_cy;7aJv5k#9uD^NCz5*MMg$)NwAqM2y8x#TgHI1%5nX zL4^!oE$YQCobhTj`3mJSnovzR^R9{#dNcgBq=DTHb&nX(mSYAQT;z#-+lfaLEJSCZ z>ha!+)z`GUT+ALcXfj%uZ*PF2-^>eO{?97L?zx)R$AB_q<7yx|Hh<^W^QBxO=6}il zT{+$QSk41IBs@ldlzQai!?KK45)ARTkY_3hyIgzf1b|oNa9aZRaG+LMP4v(^qRVlV zSYBIie_yyR*Chj@`Kx8g(-WCqGt&fYn>Ttl+8s6K|wN_t-U-pbEZSmrm2>{E7 zT-Ri)qlulB@vP@uYtJfkWJI;jJ^{LuUxT}+?UT}ZD|iRm?G+k`$2yQa65d@p#UZ%n zEIjz%0Z#3}BmGr77(Ge`+vs^Rjt|LiU-^hmmsKB`9MT(yl_YbLw+|qN>h}+6Amu?B z@U8hm@QaYS-0@mKC=Pw0M{-O;k-oJzpz4fxBGU&hzSUkM2>Rf?7(zM+-YYF8I7k6b zKM9zFH4o0&@TNZSb(k~|c5Zt@V&}zEpq1QS`dNK$@2iGV+5(CHG-&2C|GlhT($iKlfd1&W7Qy*vkEd)m#sQrO>(hlG13Jvxh za@VITmGx?dOgl%6R)UqjlWs*IzRN;vq}nbCly*OWUSH#5Z+=<-_&Z#!A( zHgrB|w7KC0UGy_#5P{wRcxMJqfcJe8_~>_Uv3W-D=;4g(8||z9>N^11Bmf{A1=KGu z3^UP&Z|e6QoNNS--%;FLOFuGTbWum|+y7@a3st`;e^%h+9Ju#j!sFK`eC{W2@YYW& z^i2Tw1=vimrTSz{=v`noZbeo5et=mgIl;sGFUo)U>`T+1JG(DGu)ERSJnIBi)fuY& zegp&UmlbwJ+t2#tt>)c%XngnK>|E@JOhys$NIHz@PXU(gG!0B>bP_ud$~tL>=|_wB ze7f5{$3;oI%oa5FAhkI6ujI?p457)A^^^zDQ52M?`*R#e8IYIUj%jg!V7`dla=lE> zeT5Q#1lOt3wrfu8f*;43WxDjmGy$Lny}>8#CmCjamw|jQTjnycbI|BtOaPdCI37EH zMb};UN!FbSvsYOBbpRnxK;w=8H+UkZ;RPg4LNiP&;{BlCR z$&zJ3?lXm_0x$VQ6xRf9N5pl)ed4(nMUEI? zc%wG^@Ev;A@V#5lUZD*h^UJ`pgOA`nZC+SDYcqq#w!anL19n0LjRkWoo;BE|e2tEM z^54h1ubK?nro71tq~Ox1kVMW#ft=t z&fF{ODFHwvb`rtSY&;K$GgBk`Nga-UvJM~rw6w|vz8~>R>L)AP?`sIN( zm~O`c+KT(8_lMnP16)4TZ+Yzt`j1?`ia!dG_W~k1K>^(sW<+MrG2$FKt`&F$$g{wQ zJ|*~?-?IT8On7{;!_Cc%%}KMaxz@(5VbmDzYO;n2QMleBe`B1UD<_;Ay(jX

      GN z2dBSy?>YGopn5&e*l1hrSDjlH?<@X_^h*V5cF;ek)qW*5iW}6K?8hsQzk|PXUocb} zGWS7G@2tM%oSmPK;Ftb^lg{u6LX1eR>u|{#GOr5uVgb3^#V|aWoV|^mZDr8iLl#@H z`W<=<))KsB46ZBt5zA>MPBUw6tB95L1ij#7kM5?*mq$_qvn#EHD#0mot~kexvOEbCahRmJC&yYu^<}6f0^}gPL(d{~9+LwO0gZPe^oY3V^CKG8 z>MgZ;x97IU;O(R9 zN$7SMx9E6JBq!tcw)f7d6MOT`ilPGN$mwtOC}u&vhWrHVB*#5*We6AoQ0oj+e}mS+x2JW zWP<-pBG1MU7!-?jemx_Q1qt`(c~m9$f8wAp_S#2vH3FK<2iSC@9pF z{KOG}oRA8`Kz%fH&9oL>);2ad7V<|70%<3M?>jIeN`K)M|7d5t7=F6zKsw82dqy9B zhKPvDW{X)SnI68O-}A@Z&IN(aJz4Er=C>Qc1{1CxDy}ahVP_r3ZXI!1%yYwW z@BRii7ZX1B6E}GECuZOc0QV-yMu16S_Y*Xwl6NJu(%Dx0WrE^*^FV*>*_Y(sc<|oo zKb1)@=ULm7ips1rR8{+hgc^f>+WPN|uCKy!J ze_GGZ{<{GhFyP;hrS}8gln1D#T+5f`R%h}SN-=`k zrhz@Zvo`jAvGtqkISCpQd}$H}7PoD8RnV2>>kTvQiwPl(jj+b@Ayb-%2`w`G3heC#)=`q`koPj0)kehK^L(TF@@6)HM ze+DOuPmDL)TmqE=F*cTg%iMN1^g0{^5pq5z?_Y#Ae>v!{cX%rNHE31!xp3c6guN|u zTv=O<-wREA0ydgGI*u z^jN;9i`Plkt8zI6|H$XiMIiOLE55iL-S{3u;%!VLgsV=%bBwwrvD70tYkJ?;DHiXK zke|1qx;6;(d3aAGYMThkyl{}{5^G4ajJnRNPat#}VDO<{&H;#%7RD#^(t|YRkPG2X z%d)mYk6gJ5kH1^+B^s0ert&o5p}{v~DOavLlDWmb;Y5n$fSL!|!LNYj4%YtCpY(TA zmrrahFLI(;Bh%r6CqYZ}eT6s_YC9yXKI=N{B=Dxd#taqu{56D0^z!^Jlf`&d?RI%Z z{G28C6K0f>8-gx9K~mlkzzOGozqCcaz_eu8_1u$?NZ5q_G)*@<3jEPqyKzaShvgbP zv;BJg$?7Wrl^FCl9%3S(Z3*ZTWz#e%rW4s=#xrlfuK&=RU&24NdrN5oR4z-@|exG ze%(0ri&wi1#+Gk0G+p8)>Uhh3Y@;vb8f{{LOz^F?x3~Vf<`UHeeoYuP|%D~UyYLRcgON#@p$&=}i(?z2ec0|a@icfC&_B(Si3qooTje0Y~>HwL#O zN0`l%#U%bu`{4DOqs$WoT_BpwNIESnZ`-*t@DW54(?e*zEY~NyS&`>4W2!L?yp!eb z5BEb7+cGaG-`C1-OO3ay3DbeG&>=jPo@42|O+6iazU{L{=U$|1m7W$6hu&9uj;(*F z{cTFQnq?DfLVS`gvPQ*fr@t#6*}v*;&lB-N69CKU)-k@3Quo;d0H5)^wR1a$o zv|-dSEt$#ok~5L))Z@w@*7Ybb#RozB98;lDDHbXgI|ih}9|$3x>l6>UnQw{ukzf#* zzNVOV4b*C~c++08*HW)P~CI;Gf^61Wv{%(BteUrv+h zOOm{*0k{o{S&S}VI?f~0T(m29|b=CeG^{#<}GfvJ3PK@XWyp{$z9PB=RN^|S+JcpxO%w5&7}gf z`hcr-iq7Y(*lY#o4+J_3zVZu-FaG$9o6iF{nSgC`T4{%k{fb6&qG@}Gw9N_=b_&_z zZ{K^5{9DhwU;f?g8D7`9;e&{)k_U|TlZ4Rm1c3W&9-x`C?S)n+x}FfN{2|91duP^R zahzj_x5-X656F96|M@_pYb_x7!#ir~>b3DizI(W%p(HXCtd!pcS($>`wtlTVIL`r; z@g(^hXXU*iPBDS(Ld+MJSRMWYH1LHtsuLYch5~=O{~^80aH`LVT#tB}V;5Q46;eqk z&CQiiPV6x=F2Fy+jRVV(4V}}!wFZ+Kpf|OS+Sj#&CDi5xIjyrTLLyR_( zPo;$UT<&;??>vbxBFX4*+#|VDta;Lby5USe-#jKQ*FOU0=vm6_xbi3Ga{RDcyGmh&l;j*3}w{*kTBK=KSp@tj!E#!3ejFzz2TY=-!-Ewc#mq+|Bl;? zHT5)%a^KCABV7B)I%E&GnP@oHR`^*@y~cGoxHpm_=yUGn^jlqxq|jIYB6n~^5tQhn zCZ<8N4tbEAf@Mb@K_fH2SQU^=bDHHAEDgu_bo~V0)V|kQP7+95vcq)^O~nsN%$VlR zN18w&nS>qXpr76q8T&2!Sk?~#h0MTul*EodT6plS@Vsgvfx`xNb&`S>K;jZZrV*6H z8ZGAkBvN}Q0Gp8Ta<*@4-w2BPETqVVZXRblp*nfBKFcZ8OTwhad|4(E4aQ{dtBHQ2 zo#^mhQiF^Ty`&E&Hgy47`C0-AKFo)u-5#cAsw>WKhau|na8?+f&_s%$t%^@#lUD+$ zOah&@ve{kZ_q_QP{b%2KS^waCfip~#0+{;_gAMwscXuIn`lq(#~c!3>3{s>p<|oWFp7|JnD+pE)_h=M~W1+z#J}U43AR z?%-8B?LGNdjdxCfy{CZfmZhP0_SKbOm$AJ{{hXqZT77oBed3IF9DqNHBe4m9(MoJQ zAylDvZs(dOuzj9k^*BRSka-<--i4}Gw`x3(^<3V2qau6y5R=`}gG1ip^>_=vH%~NV zImMv7>`=<&1bn82j>Dzx-UP)5_OvCQU1a&0d0&BN{&=EeH~~P+CJWQ@nVetb4zX)c zy>j>W{k_+<04j(9Zkj9zBxWbPqmJq1)AzEFo5><3nW<@fNd3)d4?6h%2QMEy=_rNi zv-E3#Wj2CQKCGze@Jj!(AM2vz_D_X%s9t>*d>p7V!gnkU$2`ZL;Wxbd=-&t9t~9Ud z>S!H$KRg0S1$v0+yOtl_jxzau4D&242AxYvue!~-cz%Yl=3RL9-GDi)-~WzuxF1hK zbL%H>dtbl#ay{4R;b=g>NY?e%?PKM$ihd7HE_cUC0!#Fj_hG*VM^YzCmo#}2pY^~2 z+b%)lNq~;d8w&wUTgr7w|LEep3O9W>_`W1gM;pw+Na!faB6@j()%j<6_$r`;d|=Hd z;*-T#l-GtioGj}is3*M;j}FiD!!n@`#W~_aUM^qt$s8e^Nv@2ePcX=2XGF1>Ab@6C z{LX+rnc|{L6EJb-gR9NxD;=M8*IsLu7p#2~fRe%`?Jy9xw`8weZuIp6?$aqTGJCEA zYaxCpNsNo<^4ZoT>kf}ht(O~t=yt<>$R$9^o}EQ-9)GhE)*YJdBtUmE0Ro%7@n zUoa>vlinAtzF(whwkH8dCJ01j+F;&HGF?8#cfR@M`JaCLD!w1ra$hHD!}K6!OV z|H|oo{W($SywkWJkbI~QPP`C+O1kjRR)$^Cob)H!qA&PkZcoa0g2%om2CEb(Obp(z z+qlh%I4N-?z*kmh4mgI7gHFgn=#^3fyCkxElEi1*iZ5Muv?lBR5l~&q%LkC=-;7@4 z-DO|tLBN-Q-`+*e==iBVA%;(iI>7M7>w~ot09ZeS)0F5Sj6aD1t0MHq18SGQ500a( zt}@3h^~OKQml3s{*5EDsFSUMve1`%1Hgc$_XZ z6t}F32hBLD5%v(1s{D*53sU})>QT(hrZcwVXq@1A3|&dO!;R&m1GV;{34pX%*6B!O z4O<<4jvX`9e(GY9EJq?Q)va`na__1;u7B)vnvd97O@C+* z!Eg{6l_e4=PZ6G!cUpyML7uXJ6l4i+*aM-HmavyMY}f zgG@$<(O?bgGab$!mUtIWX`kNjf$vRez_@5j@RKQws_OcH~S+|xQzz$U{@2@Lo>C5VPkaw2G+A-7+d07##gQ6OI$ zNGwSF7ZU*S9pdvO(`KVLA|j99k?(xtOZtyry`kT$JNW=6+;psy3QfOh_d-(f^gef^ zz=h)Ew*p`D-4ovb4IA8u;`&0N*V^vr+X*HWTwToAT`6P-Y&O8@XiYezqLd3FX3m%87jzvXY8 zpvy+8?9IP)UT7c2f{s<*%I8EH`|wVKubhhv;d9au^ut zyZ7x(RfS{t>%cwy!rJZ@*4x@3k}q{#(7d#i_)6mPT+nJ3ff=l0kFl;`b$Sm@08qzS zi2RNZo7=H<7XE}^4pf$p-$oo?)GOa_%hzo$Ox#yM!tlcGU5{3lji$k?*nitLzT)OW*IR_ovOvUVLQ+XV}R{ zgMX|41d|Y}om)7NXI<1bqa7P5QApWLhgShrm|k0q9Dfr7+ejpO>KZMCE5>S&Vc>*{ z2iUUsOBsL#_$;QStuSvn2g+x4S*W~)9q>WCgX7NyzcCzgFF}`hikJP}w3LYu?Y^x~ zGCbo!3NftlL~B>5UCcL{0Dz+X&N_@A;=|e#z8FMzyO@FWb8$pKl>y5%R&5G@27eh* zdOfmIY4*pi)&|DD6Tt$Jac1L5p*G35H1SvQ8xJMr@;Y(CgxtgKZ zjozzA?Zm;^Rxn*p`0_8#_{vYum_G;LL?CAyV4C~Q{)i(ZeJjM`w7tqK&1Fmwef{J) z{C}Q%arN&mx!yGSKI-GBJmfZD#k z;4huu4#(xXxCF8K-f96vh&lBl@an(DuTTg| ze_NMb+*4)kG~of(@8sgg`6t~iT9mw*-@8^u6A**0x`zL@W&7amYgk{WF~OdJaj~g4@T{7|I_^Ed$PqmWQ7iA)lzA++wfc+ql;PfHtNL1)JeH1Q zpJVvAjS<#%cj~NnXm{7=kev6~;caK|dZPtAq4z<^(&?0N-^wYesCr7<+k2!RZ9(S` zZmxBt>4^i;ka9lSi6A+j@>|!1R(LqDP<{6mb%3XtB!6EGCZcywAO`3D9Y?fn7vkAU zD+kd+9~h3%Ph(p}O|*JFCz{?FiXN<4PM(`UUFM>IOw_kX4hathSuSfI@`Q|%jDhy+ z0ER5|N9suWFXuT)zFGf8HIm^Ksq9zv(fXG-CQu03s{Pagy{N{FVEV10eYc z)8BB}M2jCgpo<2@?i6Sj35p1&%_KJ}kjHQ6?|kD6`p@hh;`i%Pen4!9X;+^d?@>idEQT})Lo|7M%Hkjv~c4}4U8JOqpeCOr?+u)F< z6BMfx0D!b@1CV}hSnoQD1q@chT_q@$9qW zF&hv6s;+9ja1b$|rg&uhECx0vhKjFzH(xDcGA{8&b6s>k-MW9$9mI+z9J^&c8*8hNCYtQ98_o!5E z?G_?WLMe)aZR5|YxM@O0BX)AmkbJvEdW}f}|B%te_tZagA4sv;CbGQmvwSJ|8c_O^ z6Qp)jMksGEn_XNEnV}`}(Z$Gg)V@@yN*!i2)=3H;`2vy$uxNkRM^?nv$yoC5c~tLF z2POb2ykp)S^Td&mthXnHlgjAxlS+G^oh&PkePFJ13j87cEN0`P=xrBe)F ztnf56!b`&q;Lq(=>g_P5VVV5Jw8#~ts=q*9n% zMy7*04Af!vB>t#QML{#|E}*2&*|HQvqr47C!rdvs?`2x-k-u<6QuxaL>OqYX!7O(e zb;hcmH90K6(qPhqI|Y8z3Tr9OYquciI-8R6_LmYntIz(f z)eU${`a>R$f2BMl8oakxWE&#mGH%N@m&=yt`njFy$J)DHCuCaa=r+ytxgAk^X|-5# zaNQKcF4>Yz7kSc|olu0l$aBDhzZ-b} zHwxZ)1$gZzHO}~NC-g>*h$;90RzRu0)y3Xzv31BD6cbc$Hs|=!2QN;4=D~a9|GU}Z za<`iS#iWoKbDMaXZJU4pPc`~(Bd@p9XWzqiq8`&d*4N-3 zUay~Qn&SH+s#hgwl4P7@4c;Fbj(MCQ0WWl11Th3Bv5>R}-O+S8UP5>b+-Qu!FFO$2VuwpV zu>bwv3C~F1YxVZkSsT|c%)C~-t#C&5_X&RV9HX>D_(n$lw4O@$aA1PtmA8gtpUkR$ zj=^;sS+2@;<-NCif@IT9#^-=PE4RUv z4=>1@}hC3UlO^AH!0DTS#-HOf3Z5#-l^AP0Q|F#AR9_Hf_(da z60r~+KB=LJ_G0=;mi#V#9+WSVsq$SUe`tRO*%lA*(YD~{ZraO@*ERh|)ui7hBa@qL z@o&2l7WUm&&O_wl{V8M@J;hfhU7tembV)xA;F%YgZpfyR{Is8qr^Y@hWO7yQzXlMy z9YBAD@b`Y-cLWHg4d&}>-M;e*{@BBp^`D!s!*6&t?ip&7q!pi5}ADB;tj<^GEk%^wi{kF<|cIR|n@zzx#9v{UtIMFs&f> z-%7J2eF~Lpf>~ok5?2YI8BL$EFni!wSol$DpU;4!2-W<@5@(_p)wT)#vRQ`Zp(;x> z59Wmn$lnEEUimLKD=gV!ii-`Vh8#kx!!JDXVoLP)m=IaU&zu7UA5222v-lRVpsH;w z@Y3!O+&$$0(gei;biMva56e0Xa75S8=IC8*Csg?uI@e(To$w6IaJAl{@)3+;qv13n zu{kW5V~i`kvqW#jItKl6FWv>d6=(jmp2|;3_6Gzi338u2ll)f(kPAca&%RD_=o!gt z*x6R(dJNtC+*+Rp+THb8mDLKubdr1I-E7d)ZW=J9 zE$~2^)MIGsWaX8Vt__yvtFKaqia5jHLr zZSav2ny%9-o6tysM}ub{K!}|SH~E=g3|X>#Ks3dR_Swh4odTcG5ea=0&!D<)2SA^w z5P#=tu-9aF+=q-m=>za~45yj>G%2RdG+$lfV{g5JfBf;w`rpM4@5h9;_U=0Zv?)m; zu!Vd@{9K;efeVwnnj>^s*mQy`(CP(~vtiww$=|y7g8X0azgPa^$r(PUs2)BK4AE>=<{~}(2;*bX1fJsPux!F%W_peI6-}w`gzhh0bC!K_I4_-Z9 zhMh7^t)H=cB(-NdGP9Qg!tM@m5g9`F!CBscn;9bc(S%u|BLp1`fhVmRaiWp4aM)h< z!lk_2-dtcLl5m;%yRk#>GMvo6^Hs{F_p{vhnBL_(U`4)1Jcho0KDwN9Loi=sdTLl& zqgF})yDc19E2DhwnCFmO*YxpjKgs;};9s>DdcUUk1+u#md6#yh=U7;4c!$C`W;*I< zyyJ_wGXCy82hM06?(O9Gw2bmtrxNF(280|zMDyW?&%E4~pIh7EEgP)ze@ArU|FkE; z^<*e2wLp|F!CN+5A{|WtFg?8Efc>#*`EKymP+EOz#FGH&Tsi}_>cv|nJk`@vK=whP ztzhAbWe2FY3mSej+*i8r&x^ho^>bXc-r6DgkH)_s-sx$1`a@G6xyOZ;3W zA@c=IBY0D}2cghgC-qn-O@xCmT;=b!5ihEKvQC%p{7wyoeikdCmS9O>NHPJ_)#wO& ziSxJljK2ni1&!|Qz1#M?%DJFm`v^5S*U z;wGZ;C$x*$Aut-;P@MOqo+g0S69GOW9xU1*GX|GohcSkuUaTl^f);X(#24>o%e`Yb z0pMZ~=RbvTO@HDGySZA2@Gvajx?bhA_xs8g{wBwE(*}u=`4(=^@!h-1;3x#yj=^Mi zzIaGy<{7lm?^O-2BI8X6WFYM2$NW9t3#0yasY_0mxjd|Jj5;ln4DFpB`?U>>?O^yM zo$&j?Q4f+=ng}Ash3h&Y(Fd)p=3Gh7j8rn7q~J!|;fznZJwL)g=nQ-bpwFadCDxl@}%@?L{qTy`m}`*3ba)IOxgFuI2P7UfZq%7Byf-E$an(y4rk9S-XR&@rc-jFx=(k<=;#=m*eAcHqdgTy zZJxpe0FZeYRZ6QKJ(0I0)dn_;fjI|l;wxS5XRo_g@DSSDI9(;!Ih?fGKy(^x`_754 zXoAt;X1xBFcv|cvVFpS)mqVItVB&iMAfUm$WIb4-K$)tRG9R$epfJG)o&PKJdJCsz znK6dCBLR`}>j;jXAC>`t@$K}wlne9S>oZ9_nNwG+l+fl`d|ly*+YCCMq-Mz;{Jq4g znk5Xzq3_B`^_ib#ueAx21$=`mBy`h9XU1`MM58`au*E7$lCo02FlZeS%Y=UrJazD} z?Vupqy9K0jL>*B3GJ)36wR(ou|4xAayMYSii2F)cxV?Zl;UGc7MQr zx^Jc_BGtuh=4!N=U*X@X2dzAZDh3IfWNn+XcBg{n<8)^SAr7F=snA4|wOhz=?JSuG zf`I4k9jg>xq6ARP*43$s@`t61OXgS09A1IxY*SH$6)E)w#JJOli526OrQ3F6(6HS!5E^{{z*J=46>%2|?BqmvU zSr+TP?C?|T4x;PbpOuw#>1Bro%=WC&Q$>^e*;p>gM3yGCT7REhj-3D?@>XeDdyc7B z>1BNTE(~15VfHs_;=34c`y5j4vBo>9x2AN)wFZC4JOG|K87cBMo$Z)sbd=&waQff7 z8tt)g_e}tx)V25fI@PLv%1q*I?dDj!BZM8@n6JC&Lc|g;ms^7S({wna7_R%b_tUC=91G%l8uU|c8U=BaMqy9#) zS$;8bQYSJ<);4K3#aTWX$iyDcD-Ax$CkDqw_JuZv&FvO)5|p2av@OFV>_x_r`IKI+ zRDUs%M7a4#L-M6v;fv(Pj(r;*&G5kWOGonYs=XG|tJw_g-Y|YzX43UQcOGsL&6 zdoJ?P1M=d@A-+Z1?7(n0HHBb@6LwZd7+%JomTg^bl3$TLf*Q3IbJs`akNpSxib4|* zpC@{6I|BL+eg!rnz_gW}0Gq2v`upF0P5*~iZ{QE>4)*u%@0;~hmwDip_lx;#5{D;tnHx4-O z)-4y!S;vy;WBwSH)b_}IgJl=_6&;V@c*pQ;65W8BJZl?=xU>hODe>+PX_)yNfbjYn zk(`f>xwZx&kRx|Y00kD7cZ#7@Z#Wo$Bw2Xuwt=jKyd4G+wmK12%9lqp9NB8jcc+Tl zF21E>cU*~VDB&l%6dFI{NHGN<7fi4KWPe`m422ge(gJ{gQaX`-WNy#euOfRI&oRe- z*XZJBjUKlrGJFcNi*^;R2Z$8}N7He{*d%xNm?#|9=e&sVAED17trGrX-(3vV4)^x? zVIMQ#=kn(H^YWMOJum;($(j5hcC*fksl!rOe$RtNGbUfDYXjXV z>wh)-4bzD_AS&qX#hd1pcukCy{%Re}JgU-r29Pe9V^auw_`{cc_y`iI9hq+=_0sJ--0DDj`@`yEo z>)`XK{FwKLa2{%R8@fiu_oR4_p$i>%bts40?c--r|2Jp?;4mG>IVvd?*Npd|u^w6P zHo9E1m9@IJ!97T){E6ftcj$C;eE+zpOOY@6FONFyg9RVY^Mr>R6aWXg&~iXfk^n(C z>>&+>7vn>UuzEeUeV|2XlJG?$$rAu|pzIR^l0WB+q0sLD12M1EiEsn@tbv0DM!gEH zo-i#ab(tpTH+Zt3qC_9FVgp|rw7I-ke=OHD1FVbR7H*A|t3&hA>H@F*BVI~i1~%gQ zh^E22(UkbYa+MgX0r z=?03k>kEAQ!`Jj5x_U$ZKArJ`3bqQlfnwAB)070IfI_sF>*gFUpFcnSXXnq!UpP6# z52@--Rr`+u%4~!8Hc$}tRsQbqyzh|@)!E*6f7<)+!lsekflVT`&tYe-b0t6Fb`Tj@ z_)w&Qjdu+)S*7-A%R8-N##ZnWkYo)E$PKj0I z2F^>tC%Jz3`Hlk$-ks27mgS!a=;c{dg?9xcDWS`)!Y#Q158zW%l4PE6AUIvWZa+m< z2yOlE@^O_P8ZWeT7Slwvx3N zbmi^qt_i25EW8Z5P-{av9E28T&CP&i$TS`Kun)S+B)~1v-5K68%I0?V>}x+NKL+o< z@>|n!hY5gvbR3?1iuT34$ME*hFlx`8YacHXNhM%gIM=p&9GZ1FMD%UjJ*jeUyM1L< z$V=aT99_2@Scja^gWm!A4om(ZO3>}hfEdc`U zmj+I_n$G1{&YzM0+r4MyKiQt*=jVA=1vVY??8LOeSz}j2?#%{xbv53*zY~iyf_cvJ zTCVJe{o0mxwR$e^?9kkj6o{MV&A;=?CvCxZKMab4RF`h7H->yOJUf1ph5f{*!Pl-+ zN%)IBDSY>2+5^Vly)V~+ch&_5KlTf$k7W0dcVA&0Bwx}AXT3XzUZVE^Ow4BrU$G3}45ez4skc>CH7x_*@3aZGtEz2Q4^ z`6|3J>wD~&YLyPj{`9GhjgY&umD#agQH{?4Yyw~po%wv*NLj|jzS)GKk~4sz5Z3S= z^Hkvt@eexBttS8mu#cu|Z2;-PLAmO|j$RGnX*?d#26P^SoUoB_9Y79^KVhfnH{QVRw$ zQUH^s0FeN4+ceR^?I~dMJ5j`~_X}FPCa8_kocyH2_RKBl6}X^HpX^zEpjwTH25E`K z!mG)|^qtBQ4VAYdtCeyGQEbKSkdUO6X-R*Q{HmOWbel}4fYJh6@s9@2pp;JFi9PbR z(uBw03&L;p_d;;?2V|gb7RTxeF1brkqrV)U3v`9AdK+-Ep!CCs4mwLab zjM!kmC&oS*CCR4J#E3xJFO!JtXJE6F0GOus8vr*~`hlxQ`2Nd>`Uh^V@muv89|Uj$ z!OgUl&!3#(7f&C^e|~Z%KeXB6D>~1ZRX5Go2Mkbix8>n6`sS52hD)Nkph@vA6c+thePY6)-$?cR# zw9XU+rO8n?86%JEDa%D1x67@{3!s5#M%T6DG^1Usb_gjv?}N*M2h@qwUk&)r#i(c9q`%{iJA1W;FlAR z4xf`X>4{)j)u)B!K*b3rqmo>Y7|yixY-#rPwn|^y6Fo-n5?s7X6DU|r0)%qY%ibUO zs0!fHCwW?VngB4ci59lI+Akw{kP#$EXC{uS6p5mt?HTf zFtxH`PGw+<$Tahy#C8riR%T(-0Nxj$lQS2&=HjIS8miNS9CV1sZG9J8-vd~cUswHjy6UNmYcR0bR9S4YpOp8x05A7tg ziPFxf%srqCK2gL{2`zG1)ZHV~W1q1F-Mvl97j8*k^)|KnAzBZXTi*hrZ{K1i{#bTK zbgb!Xm?I4^%fC1x94cja`T{ul#k_H z*Mb-)4<(7>zA02KQN%%+r_OEVROo!84=5t6*HwHD&ORjKc*)6A!k3BVAkABKtqI>C z&8#dy@^4hB!M4=S_@V?pwHMextl{f46dG;yh{tyT5`9jl!J6QR0-r8yVZ>J(K_RWI zr5m^VKY`!ulx{``)7y?Jm|qF}<(L4%9@*qFJd&x)J2CG+kqD~QHkb(gmg zk6LJm)nxeAI-z!9GFs%Ok(ko^x{8-3))G8UC(}?6fMDvMbAn0Jhi2z)2LU;4X@?PM z{ILA;BZMzHYPW0Shn<6Ap#BG7h5+*o1W?=S@p!YvBcP4=Re@boXIt-A%xNGQqu8!x zLnY43V&&KPGXSPP`gH)-cmDl#8MZfBs@sG3q{C`1Q`#GJo80C1JgAQT6dfUJ9@Kx7 z>NDQ#4}6CN`<6nN;mG+7pR3M}D)|rX^67j8{qPf0i3?>vSnZ9p(08VI{=&)jz~`}% z7~Jr8UEds6Tt4x_I5islz>H=*hC5F%#gnB-b?FFRly%uk$SZ6x`*D-0!_ZgC^RG)higx57IMyxl&Xb+C0WwH(M%&YGfW|L$;hIf zPy-`RsJfS^9r-HCtk0lG4p&*!AE{)uKJ|%;YXR>Nu$9N;vX>63d%K7943xOEAO0bl z_F_G9tXpvBsW8$XBS$}-tjDvmLZeTWSP6LM&W!7+vqkSRzOe8)a5;2g*0p<4R} z|9jitRmgX2S{*vaD0WUq;kcub9ILORJu!-~UK2TKnz?B1Fodn4I#$Y1*7fr#L|K_e~tFKFM z6L$vm6tD6lIeugxuSwokfd>fzB=ey?nOTh)(Igo~M$efa)m`hOnnb!l$Z3nqc}5v* z=f*V=UiBr!YfeZc-R7&aQoLhfMSb2Wk?sWmZ5!=|n)$7XUi|eP3|yXU!^jBv#5kxb zvKMGj5Pio|&TjX$PYVw-9Fx;t%zC*yo1e9QD$K`<0otSoSo}Se?z=i{Qj2l%9S8zo zhE^L_KxT#QcYq`=TECc63kdlKaVTlmj)O9xFv4(bJ}~tOJi}b-AnGg=L>sgdZQjoJ z98pcOfttrC^4m1p$o6RM5(J)IOLma^4SP+JkU&&7~Z*q zlIl0T8*zP@J@vrh^6qeH@{egxJ12Vcg`d^X?2_+%Kt{RI;7Pl@N=+#*?RyLsyS1>o z{ByvpvRxcAAplIT4jBpmgoW(#lLs{eXXCI-kTUx!xZSsLJTrL|Dw1ntfoiI@@L&tK zM@##>Yp~%a85aQI8xp!TkC}2ft1snmE716R#GoC(VRQd@#uWSSB-R)Hom z3h^d)w$GA05q}_hSa9She+=A+?xiG_XsGXK zhXaXiwXHa>y(jLB7h1+MJ9PW1qk|AzNjQ1BfRA|e;hhoNg%WW!cETjjGOJ%I#4-q5 z?mUXbPiB>Yic2BcOP6vOlh>@anO@GWy0A%7SRK@+FKKW@5=-@Cq9N+X7E;ion9Tw23BR{-=NNn^06|Z@3I3ORU`l^yItH|}%+sVd z_5Ud6FPRS~6>O6sTUX;CuPQoChvq;#0&mN)t!l)}HM# z#N2g8BlW90JWoSGi3WLcniA|gOo-Ir|D?}8IPaE$1E6H_Day1)%s~-GRi4s}+aC0b zhwFGd9(ddm&uIJ-b#ze=X!cici%mlVOBCq#>9ktf%VSG4><76DQHttmS`+E*Xja`4 zBx@!NM#FHZyvnAGb5fxNaK@MF3H8egTjPV@4lJ<(*krU!sD$K@Cz>ds7OqE3i=y5* z>;nYKDpSI0TI390_<}l##E0?*PEr>;KOEgE`> zLHb%G%BGVh#-s;Jit`}ZitSRm9E2TuiI`@~89voQHLlwxalRZd{q=fe@**+7R)ik}+n4z-avUA7 z@zDmxrtRp5h(F*d1y*t8+b5Dc%0*g5^k(?>T^H4fVV7I>pPK431pe&ZhVe3u+}}E< zOkaYleB`JO5a4o*zTDnN{2;qZK82(qXp>~bzI#4vZ@dV}s`fzw={#uogfI(DmGZqQ zA<(qTsOpz}`+$bUuQnJ6)+zDpwDn0?+a;J|dPb-L&{?l}NY!T@v=8PRhGJbj+9z3$ z9GvpeFLn)yG^Q~TxBm&1k@C{}ChJ~4I{;@7!Y|}4cb(#C3x-2sP2fE z+Me>P_SbIR?{vkd_MvWR(*fxyZTy`KWV{k3l2nW~N(AB)C9Vg&Wg0{;%1S1nBbY^3 z(vl@hphP4Oe1w1zUbi8k7{c#Y=pQ9FmFG0Ltjx<2cKc38I+%zx8Io+cD!+pi+BkzH zJ|g2?u<0_@;x9+?;l5C{ySQW!L}OwMJVNl--cO3G(=miXPy9rnCWaFJ0lz6zOoB+9 zriRf|Gk!IGatY0mNI+IVq1t8uVApMUhsb@I{b@Bc%jm6skvZ4ZIsrw#g&T24964iP zneUiV5dvu)U zr>#FTeL37@K8H^Txb6s8PQLJQtV*ZEF+Jo zEu)%ZG+Lc~@SehW@>n_EM&5$F-naM3=X#&cBP*X1-lvRn4SzCFV zgKL9KPR0=OuM3*hB zZ!i1@)5iU`R~qHz(Labs&3@Wfqf5*is4nxj@Kv(lFSDwJpEa#!|H%H+c8D;MHc2cV zI0nQngjn7UNNIy#%`#sSyZR)Pp!l-PaTrwm%aaJhVIt{qX;J~_(BOYW_lO?;J9_r_ z=q3DPpJU+ySnPy2gzq-6pXeE`s6U-M0d7UcQvq^&D8CVMR^a$M0PLxq=SeI6Mj2Ge zvlicL-CK2{6+BPFcwz+#;913C#ZI`~!QcqldU5}|Pd>w7*kjB=vIdF6;Prl|N`;=2 z=vYVlo{^kyYpZwB!alnkEmv^fWf@J}Ku!=T>0Jw`jFeY*7CU+@@#%Ebt#7t<(dX-} z9x0-gP=aYWhP1>!B@+w0!FOFHa>b3_p_JR;y7R&`*~N5P+PfWdPQ|omF)p@?ro=$I zJ|+^d0KCPIzXRwO@`=mLG|_f(Coe3?t<~&<{Z#3IP2Ghr|C)D)xm%XlVZi>?#Y6}Ke}*TL z+q0P157$Z1=znYj5!1Z1$0*kmtFi-6XY93zrpjwTAJZj>ok1C9w!4KHB7dk8uIzgk zi4QvipS6pfK%uWeJ1H;_u83eYb^lO?YMg420n2T<$8u)$4K5Gx;RbXrg>e8rE1 zGki(x{>U zTF6@A^0j2gbTbMH=^{cP)#u8NhU5?v8B+7U%rAY;{D$GxoJ;`PVPFP8a!zrT^r9J` z4?Ixxmnf8_i}h?0rR9o`GQ>4G?d>gH%!4&?dHOre?J^bcM3>XgtWSF%|2cd!WcT0H zo`BRYz*1=E*hw0SzItve#Yl3vI$+&ZD9=PH%>|vYXDW%Fmt#80=r-C?tAu*yS`Mh-p zq3*P!Y;lih094?yZ5`F#5K6Bu|st#>szEWHl zHR`-mC1B~@!ucjxnx<3N4T}9Rx)h2nrcY|%mVIWaLwJm?eNp(sB3^0!-oNmMmc2hu zx9Cd>o6uO$U4n@8SL3;2O;)n+SxRSIF7?H2o}s`8bq-ZISYr=yw;jJ(-gvuKM?D9} zI93n)dA5mI1&)Gu=sA|xgLEAzug~5c05yae0)9WLGpxAhxr_LY1bwg``{=toYi*C? z={Q3ih3(ZqxVPT=bEvKb`D5C=oBE6fvLxt8LY~xiZcXbkZSQbSh{L<6#$YeUVX7bN z7d0Oq4Ur?0CDjE7AxINFSkj-qJFLNF zeoF8xPb~6V{QM2kri%Wvj}#W>u#=oXMdLZi!LrImh%frM{Mv_f(N#idHsADWN#0C( zZyF}CUJ>2XlhU%xCP4mm0-)`D2bG&`vn*MMts^J>Ajz9fo9l9AGXvs(#p$bwHbd0} zg?CznAMpDLST03gL~e&yglR}-7G99As+c5qSst+Y`#CfgyM=_`AioJBvVSvG@RJ)ez%ub|F~+W26)(~GQNc==PtKwHW%5DPbAEXcU&5Mt_GZC zJ@<3wv)Axi*Ar`}wWE)T%bg@SvFdLZh8+q{@6D%=)*34X^l|qn_&b?_}&N9cE8VUesM}Fsiqr&o$bQ zHadfAZI0B>v2w5V?PsYD#NPdYMnye{*cN7wRR`?fp4HChl?T!Ph-V+4b?m@{i!y%e zgDnc!HfU2yca=h&M0+2Mki%H4ypuxR4tyZl8v9mJ>d$=R_HxU-gxCt*Y3nMZ*PM(* zk^^9BF!^T!Eom{^jbgij+G7BRRjskPro=T#+3YU{57q(r3C2g9sL+h>ig zngz9EA9S%5=_qz_SijNCXSWGI1W{M&$bMtHxTB_Dktq5w{@pnQpDs6o)JRZQl}C6OWx`&;7_u#F&##i0jkgG7`g+VK$z$z$d$@o~0(bnG=#h zykS}J1dF6E)P_4yfiJEgOM1zm$q)NhXrk56yNk6qTQv!`_hCQc^44zO3-(F>KEUIV zp0Y+s=z#l$_yv(phx@@0PW0bsZ-a{HvdbvIHXTQmBfVTba-E7lYWJ^cTFa zeVG)(9s<_FADJwyFEKN0kDA4q`!Mx6wkr+35+mv!E;HGMCy4nWmRZP9vps<2$viN< zlI&DdrzBpqlB!^EE#)MuhL?|mg&ib+TA4ElTpt$0 zxE&Vl7{X%fJR5dxtD%c@50BYR@}uEzQ+xI^rK6-+!9*$XQR(A{5)iRQcHGSLaPW~a z4(6A*T9}3iqs9L13`6YcF+Ws~2Uq+HUo(KcZU))t9p^!6!_V%wvoQNZ(irl8M7<|{ zT#hBitcLIvT8`1fzV~Z&55i4EtVmkwm$iPhGV|fG*-LH_COdU|f1ur=daL;AdtMFO z)An{<^vU5IGOF9k>yUBmEhkTVP*%k(_Wg>1f2j5%SOnkNZb-$zFRyjHH9Otc=?-=9 zyOgiew}N{Wk0+Nph9i`~7>tTUIDs4x#|dJL{2XW1O;bIsmUCbdZE>QNCIN(L zqx%H*JT9{ihgW7jPt@|A1?^;7VneKxfQP5hC5w@fB@|NY0IX?M_)2@qCKWO9fj;aq zKAC`6J`6dKEEi|wnT+1f#{mpd?0dHZ#eip$Yc(>G<06T6I!IDwhQ_X+ugf;6pA^1B zs0BxnOFa{udLGGy?X)Icb|bahO)4cK>d#2_deOs*&xEGQQXABc`7JUhe_kD7(o;(K zbRbX^80;X5ycne$1f#GQL?<<@6HwlSUs{Gq-Dh!!f1N=s{HW2_X^4S%Ae5*W_Mzd2 z>U|G6&ID{>IjX;odMR#7t_Nzb!Fs996epe?bJeLv!$k}L$B>M{VENCw6}~f=(C2cZ ztTgQPTNfw4nY#w!V{3&@rxu62|a6(Rko*imq;Fjq(vR#4a8q=!ML(qyrrpb z(7t=+sHTju_Uj;!f8w;lamo~nZj_H2W!qqj5pLA$4qdb?+uDbSZ`23Kl^O}7$r;04 zC(JoVB2>AR4QLDV!UjX_7U&0q>9K9BQC;Y>IIu4_KVqD-j<0H;!DhIl@zg?hdvPI+ zEk|-GYbL93Z-e*F&&oJ>jTT_QPlvO*c)K!&%I&NFlI0x$haA+=&yh^8HoqgB)qeb> z&$@>I@bnC5i-10l(iS9yw`@Q>`YDf}9 z)<1#qM2O|czuiqd7C4p%NL5sE@+F;$&l-i~&q)Z>(~1qGWJ|dHQu&;GvpoHtf`W>Z zFVka9C`*%)1d)I#VOxD%hE|bfBdH!dW9NQU&X_BgExWsGsw9E!9S;VV{mEsw=o3os zD-Tq{?-a1hADNTPFS0%f-tvZeWVvaUiQfg_yh@>^;BrH>3&Q}>!ug_2r%q#_=ePV* z{bg^J)W_868S$pXpJ1ttfamS4E&aLx%Zg9N+czaSvVARY9zgUJr&c>ZWQiJL5Hd{e zJ4+v9y!Q#F;tsOUWPXYq_dV8;$?likwevq?IoK-w(I4Vp5)P8Hcjp-V2L*#8ScjhM zh=y**H6mG#PM2UWoa8@>!h)BjuiXE_2+2Pmng;PYI-4$D#(ior_@7gCa#5|*4ezYM zYWH4{U<2yP7P~9^&UMmx|I(1*Dec07>5b)XFQ`vty0c$BXjUtRmnMi00U721PvKeZ z6vJM7BuF;;<+C^*_=HcjgQxL4ZFuQ9a{T(_dLHk#*r)MZ{R%+pd;`e-b*%%`FS=f? z9nRw2K73^c#8y_^5j^39#8d5vdy%aly*R3Q|Eq&{qk2|%%>m1xe3W1E0AVjZw_uBd zz%6${t;1ZvS<&vo;AH$7#a{n^?7i8R>?+PKD&<)3|H!FxVI+NOXzXz0tpAKn)m$02 zK|MkOjMMh6J7r~OZ7ff5T*eA!{{v{=Di^maj&0P`d`>Y1G?o-oQ?sJCDEuo?r4KUqL6M0pWJ9un}Mg15d+dcDW+47RbTs zhbW!DGVsG|AWCyEO9}0r?@{%a{QLvb-^m7pNI2ZJ@D^!EL77fiUhL?X zA25G_FO;wGFOlX!hsw)d)d0XLR3G$_wXgDxGQvG6xE0u&`R)ny#ev7h-?^u3G^2e` zgYI?}Fujj0k-iHpgI<{I)gPcSk3MDfDNXd@Spso2HQH4k_X6YEf1o2(Ul9EaE56)5 zYQlYvxSot;t4Gw4o?jg>=;4G_Vhe z7VZ83oGozXGE1+1xIpY0cfn>I`Z(zKv&~X>nfz} z&;p7;N=4|K0Lv<~KMeIbC>zIQQ@K6oWQ&SR;m0xR(hu5)lSCAC7uaQQZ`~hgxBi2q zO9h4Xt$A39Wt&tNN`8AZTJ2(O+)DCh>mr5-d@A_dfP=%I<6?R|Xlu_??9iI!A?{Uj zJv;LTY3XDa|GN?X9=i*9vQPCCCNrIF{%7Xb|5si_WNbGx>o1`nQsSv zvN}$sGl8%tT>0)&ECEaAGqiq)EQvUL?T%?6A$`5*ZU@ zN)M@#>+rp?KR09K0L#Pp&@!Zj>v*%R1%2XJ;;JqBGP@eG6BIc7aeH#Cal1Y=W7QNm z>=Z|n@eOil_$h6G7Q4NSvv4w!lH5A`a2%l>jt1SBgLcP}_AGB~uyS|R(=Eo-2H(<^ zQW+Mv^<(4y6_TQ}v5?Zy+18)XxO#5Ck}_`bL-*v+(bct|)hlCG^Y9M+*oWI^6FTnV znc@aGKQk-M2D~!nIfOqf*=fQ3|Epys^Id1V3vb`Jwtic(O`IH&9WrpMGv-y)ExbMS zuEr;_|70hKBnK;0>BAu87Ag$v#-+s+WGT%xkVD{Svy$xfJs@NU$gXzX7L0b_i3$Wv z49RC%Q5Tno0E|v3j>dI|+mVN{mf#QhL@_BHzkbhlQAp%nw>>iuT6P}<0RXOFqy-Zh zZy5L$*PG38oQqC78nUQ<_lHTXAM ziY)nWk-(qhhX!2-lK3z1FGRkb-W3s6jEvtlJT3McD3G}I*H*RdpiIOG?SUVcjkvs_ zFBq)??J)>9V^$Fx(!8CDTkOjznf{uvd)QIuVpf3u044fYLjqMAYiI0#>fGz~< zf`4$N(lJ0q3XMG?RW2Xc*_2iTkd|e_s~3w^OT)}*k}lbhQ#g+g=Wjj(O#PYY-|Z^( zN%?!Pl)RO&bujbqRlSRdo{DnUI_R?!Y+#A+Oe#+)>1^|)boEwk-_-5DDnI>O176U{ zoiMztr;+{)r#(L}cj)5Hzi$#~C~Ut6jm!6F{_34#V|@W)*M z28K5#fXly**1M*TbU-hY&8d$7}wbL zZ5emO11!AnCu4J<$v%Pv0cuDrxr&b+FaUzr3~1mHs6Q0tlLWraS+3^BV0t5Z)CX}1 zxr`X(0l!^F9!ydmgV}=+Tq#5WoBW0#JZ2G-kCgfjPZ?xV`5;w}E4<4xh>2Uw0@`v~_d?@g#d-}sr7ig{zm$W zi^nQ;d?sf+*?jo|LZWzAI)8!xcB)yy4KSF?zfY3*tFY$+4`|)h&9Zm`<08_dYon;i=uM;2l+1@H%hUHDVp?&Q6T{hz4vQBFVm-!k@ABY5mSn-Yy+2;T{ji z4I|g}=@aSe|HJaBU3{x#`S`%SsK+{xcl{zld?fz?Uy^R8)d$hdrd=ZP&j%9FVz;=q zi1o&RZgtslrfgCNajn04Wq=^L4>1woF^)LekG-~#UB&slPL8+=N^ zCi%(&z5|T(6+Kz~CU?r2HRcWt@3cj3g%?jC&EJ!?N~F54gnoRpLJuy&B32QU)ROYNhKH?5NQd2EL`Iq(%GAk8R&`lM*<3reSi$L`1i zj>cHJC?7z0+jO0NTqLkp41V>xW)Q3>P^*;2jmh93%}deO`}g%67X@QvcPhslNi4zd zOQhb!on5Ws5LAmw$Il6{cF>=qe!xM3Z9Bcg(+NIxGjptwx7g>Q4+1{~bvhqWWX9yL z`v5W0z{|zukk0@=K)}DNh(w@&#b^1|iJ9G~jTlJWDn6A>Ja^^79}UZVKqg(lKcpDL zFqBxHp1a5?uv$LwT2Jm1CJ$7Hx41( z>iiP!#7m91d1Mt5KeN(?yc}T$A4gGUSD#FKS}>N*vP#sNS*2Yl*>;L8Wx@do7c`xO zKssUkY<`2h@rmvnuwm~ohsZ+^L=2 zsVC{WYuA69wSl*=XRossi_%nwJ#SQ+H>=Mx zsH%m0FcM>qAczFTM5MHib|L1o1O7Z14#9`k1G{T&FhAFCZnM`9O@{D+!~mPUiXBje z35Y#YQD{4q1qN?OACdvFmB2+m$kRz(La(OptzcKZIvE=M=Cz6i>q(qE9ilKkh9)B@~OkmD8$@%TszTzq>)F! zpZLX{PXRsjzkpE?x64C9y_r4ZYH7t6^*rcH{X6ht;|J2$+e2QR4bO$lhg*{YH~Ma+ z1-P-ymJJr-&HgFxlFGbY^w}|>L`k1UB0LWAK$y_)MJS95SjsIOM`q6v|Byk**UiU? z+pNkl!$=)mKNe#&Yk!fXdzFyM0Qz6)UX4uzYm4~NKN>#fECW6Zr7!}Z7%=I5ZcXkZZQe8RU&7;`^_)xp{7?F*&DmG4=c5IX)d*jTnZ z0FFxW+V2+iMV|xe>3j>m!5MgLW$z)ZTxRc#y!nmI3*f!#GWmVlW>u%eI#@KJKZSp2 zrzd(_J@4#E$EQ8=<)tFO{wBSjfZx^0_{`z520>CQaw0_oZpb#T*GjI6VX$SgnRXAe zG=#+f3DB|zFGK&o9)x5LFwl1zVNDI=#IA%upuP*-$)d=Roh!6IvM&N zk62A-#izo&4hEJTf0X#^NNqe8r_b+UNQiB-pFQ)tWfx1TAKMk< zGx-FmCOBv*J}IHC9aiS3xC0m(xhFf|GnJD2H{@xS=mp#7B;jBSpRhOnF9>uP~t zFslsG2u>)jS197R$^d~WsA~Wpp0{Hp(8up^r|T2I}XrC=y_N zj{C-IGV}|D+RyxWLbc~E^l1IbEOrH7@y#5JsMCQyn0df2;a4&~fR$q%Lohnlle}#z zh2RLD6|>XMU>3L~{mX6I34jw)yE-|r+5NtQ?@qmMmDXqu%8G6uuull6HK&sT8@z9q ziCva*i{Ga0)AF7y_FoNH({P`X>40!pFswbPm*Z9r_^M@LaN^@sPIY3yzn;m=2^+=j z>{*a1fXR`dx-9-Az4$|<6Hlgl18`v4yF6@!33(BT(>Ues~XheLAvkid#W zX2}nglLS{#%u(j~R_ZJ0CzL+>2mVp}x207^;IP*T+$@74K54GAj5?pt^r-@C{KF(Q zJivSGc3^#vutzqu!|xajt4*qB7Qe4815ec!B7%#OVBM`9)mP+l;valYl2@Bhfdk27 zM_82xJBlMPJa2ewb)3pcXwi`zCK6`$m+2e!dJ-36f1c4Q=|0XSbnr|4WwKW9OZwO8 zG~92YJc~~kZ%KSyrt~DfZnvj(AJ1~yCH*_O-IHsy!t(0NgobaFcHH|y`ET~1>yRc4 z*h-!2&Eop*epdDgk1M*qrI_4-pOns!A9eb0;RgcoxV|paR>udh%V(%>z&U~6-p4`n z1jeM|&OT20v3eYb`KP-&h|(aQ@SMrNdb@MY-Z}{5*KtmnTjlgfLo~sf` z9Hh)X!MQWQ8UZfs4mJX@S{Y;mVgfsI1Ga&F0Mae@v)4lWwE<52CmtE9Ky?jPF1C2Q zt`Nj<1wYt9U8IDl+pXk*PYM%(o+pUa3$fsMEg)NQP(Q~TjTyMChFndru+3EI?b_q( z5!f%X9U_1JddEev+KI|pcZXb+VFg+QWb1a!C{GRi#qSv@jXyMf4<#xuXwJIY=Wy8Q zK|A%YQ*c0jZMhACxca?ySgl|Cj2e*NkG5`K-GF}SRYzZh`WHz|_^O0@7kpb5Kb@tM z3`V}nPWyRdyX?X;xuQ?7!xG_32zcN1$4(mq-zF5$8&OM-){Ea^V1LFiSz+pko%rfc zaVxgTR{5h;#Pt(<58xjaJ%LjG$h$sQ*umX4@>6R9_hxpjdNV|TTepa-zcUj>yae_J z^qZ7H7WI`i4*pj=zKAdriS?l@w!XXgrzDB&6n?|+{|Vy+@}Y#_%O}|HgC7G{%pWwq z5BbJjPq^tnip5THaG6GPiQ{Z+8p-?h`^J+xc7kzVX(JSv+ndTYAaO?Ap3Q%}; zav6f3wMWB#?Qlm9B2O2Qy4?S`tB(55&q_QvK}JnKKYUi8st?3I4|TZtjdhAoctDTR zF}r{Hp=@(;Vy%m%mEP6{n#!GNXLwqs)fOxCxqY^eHGP+%GW^CeaS=tIC%BIIT)~?m z4bRcJF6zw)KVk9?j8*+zIpOy%%pEQ*pTIS`lR+KJ-IALHjR1Nlr?*NDy3^bz&W1)met%lB6fY34}nJ`CX9=uq2nx(PO@`pbmum*FWj0{-}?c?cmiM8vHT z!rqZ2K&r%!3;eo7pt}U)uB!^CvL*vq4EMAd=(*{`ll(F8&s61_{em?b5B!V<=OJ%* z57csOAMvO!Uk>ruwfI|oWhwS!lBk8WeLkUkFH!_)Rf2sFNh2nFX_L<=XwP|IYoX-=7qw zr)L0cpm&dDa{sOJHtds5dZ#S>dJBsu_fK)G?p+8r(EF(9m9hid%EO|S`?yY9<$AT< zH!XM}mk;$YYhG+@qH_!Ch%E5u^fV)5A}a5AP6!H4ZA6?YZYTq9SScJ2LO_N2Nyf(( zvOCOKe-M|G(GUd3C3uc28#z>J3Oo9oJKOKU8`cZI5tvL?6-!;G(^v{Yc%-9a1L@G~ zu+0=lI2;7J;1^&N3N=y4B?achWUojd{do=7G@t2Oz*jX(t`9aJg6aG_N6{Hi^N48# z!P23^TV0{3tn-L6@6f0oKXAuD!o2QZPqfJps#eRE1KMQ+B4DdqM<)#0lIt&`tji zAL-C09g@Z$;iI0vMDJ{fY5-(2j$_BXFvtQYf7K1G$niSOSv&xXp?E~?%x&hs8>?I_RaS?-9v3+&J}<9-vU*YyzLXnTLxZ*lCX9*|%Q(OhL zLxM!%jlY(pPz=6+jw^u*DPQ zAc$4@CkmY?*|$E@(~WTlLq}r}6ngn)R}8|6+vhX=z>_*65!>y+0T8+E1^AUWBN1d8 zPLOWehx!3+^eef3-l?R)sC` zcnPZ!&?gD$8vN-i2!w(GTcTRLKOkeEpoFv2hbq9|mBbZ1X`WLMr1tHwx@I<}I~%lq z@K|QMN=P@JM0olfeVCKvEP)RMKilch;p2DeqkR@fm+VLh?frA5!vTQx3aBmPHyWZm z5Vza+MWDUfiT0=%(Jr(66T;9wn0M@dfmQ&76TEqqQH&X~w|;Pc7TPTOIxIn6N;Pza z_>~FxVP@#`tNa+AyAO{J5_>=N+VITU;l$_YPnRs4&YcYi?)fB{J2sOE__v@(H?;y6 zX)Zq4jdkT(5+DXz8(BaMXkWJ=y3PwxT}c3AaQJHO{-}Z9^}oVQCb=o-rP{u371QKP zGloAZsK_*Et>C(ys$RwKKP=|9&BrhBqu^Eo*7}OW{uA$~+ilxGD?Dp=NIw|cYf@VS{gvaYQzC0%$Vk=F_kg? z`tO#CJYZMaZ6hiS7`|B7zbb+&Q-MMVX!3v^-W}#jJ0=Su$p*MBi}2fErh7R!4JSAw z`yAzHC>XZzb~9mJ=Vi5B53*FA;az3+_90Z>X6g;Cwsq&-UMNHo)K@ zu81g|E*RT@oe+1fAog-0wO4O_U2&|~xaHASuyy3p%`(v@G4XV0E(@$Xr=jt`5-&^| z$^RObS>P&e-$9jHD@VOZvScJZooc5dU4_`Lm$3gp`wwL5^L9vZe;MefC?Bv+AOP)M z(&R$y>UqK9p?PlTAp#)iJmU6nnCztXHKz3TQSZP)6v}v8>i}3fro zMLbA|hZj*9h$8-FI|Ur{i^L?r-!KMOV>_9s;LumK~7%0??Tfa6UKtxBrX{cij@R*c<9~ttSwfAdO z0?IeZC+in#PJ?}uNwl?q1bIZ-Q=PUgsyV^Zd&U1Yu(55(Yt?q4K8`n5x?p5RH}qFb z{-v$cgU>##*j#F$x(t&rMc>@p2*N1NG>{vK&DBC|B5jpWt;N+%p)AT&2e+!+FW-(m zM_GM({MG#I0nD8Qc9SCc(9gFE+S!iQ9ToGger5+hGX&U|lFvUX4F68+-ziL&5q?uq zM|3p!Kc}cl8fE#ki$7~O`Sy8&dtx7V?BP!FfwqYx8vIjwi_hm^V;F~A_P3rt%HZzG zzk|P$^HXP$+j%e)552*FM!%!X_&kr=hQKG1aBMYQ@OT@Tueu!$PX0Zvs)3(WhVr*j(g%b7=s#y`rYFE#iy@!dtR?k-76LMe8R)68q?D(Xf$%Ek}@_Nvy_Z!zdPBu8- z^;!6z;vaP{8M&?C$nD99AGGH?9N6(HFA6g!2+2_FU`^H8fa8g*dlk`tf!FA-A z7vq-TUmZ;1*w+>be}bR0NvhP|c7BNB82@wUVRnZe9{YFb$>Q{1c+ImV4%i5g(I@ni zc={@#S4lp`lq~M&fVwb#sEk#o%)Y}b`DN?RK|qc!ck9v+E^))XaA^R~N_TM_8jv02 z9B4xO+UNCV?V#(}{clVLL|d&CcRZYuA>~Jf{Zvj%e3SBx+>)8Ykvp9a(chOFo8-8M zc9>yyU~VTSC&;Avy>C-%ckKf+H@3NaTv9}eiuwZhui-f^Cwq5pfny6M+vnr&U5ry3 zOAqe8@)1A%Q(LXRrtqe&JZ@O)V?7jTagoou)*6iR)Kdb$>A#tY%ML-2uH8iA9S5!KVF!()yCNf z!SOcg1lV`Jk_^K3`tjVr%SB7jH^Vcy&N%cSH2w*4aPn0!KkR`iC;XJ{hvRb|wUU6t zJM}+FP7-NlASUxb z%wk6l^oR*uh2R0#18$M5G1 zYu^uB-f_z<&^0W|<%C6V|3*SXzpEmwiY@KOt222g6Sg6;&wyTyy#Gzdt=RyP`c-tT z;1{JEwsI#*uL8L#c-`#p;4_~(X=ZG>N2dJ8_)PQ@f&Zq=kN?+Vh>2Xn>OY{-cwsuZ zm&d1BF&ZP4mbfD$1+Hr*fm5r#ehb^gxYjCOF2IcZh}CiWicW)&q5+{lk2j;eR1lcL%E^yej`hb)ipyx5$cx{5Gj<`IyicBg-3=nsvAcU`gC2Pk%^M!=i z`$+@zZ$$dGP1; z8R{usrwGLEdH`LAKEbgqrXAK_+DOF%obcJKBq!Y3A2A@q*q#gn zr5@TZGIkF7j66EU=8rM?hW;Je+ZPBTRJWDJr|AQG*W8m!2D$io85cL9{~0XYRWP3E z_WtPJd{r3kM_#~owI3&&GPsjIUM8J7ndLIzDcrD9o9sC^Lw}+8Qw^tE{}$isH%cEO z=jhi*k6(aSg>7#1{a9xK{s^~Xu z&qSxo3c3=7q^{zoVEcpkXbw&NSSL?x=7vj~zELh6EqF=gyyo}Iu?*VP{K;1M7vkH_ z=kB21Nk=}R(E8;6NSSr*CndxA@6jqRdq7g0<^u6unXX`-;5ElKxh{2Kl)`Pnh_gFD zVpUqcS-0G+;mp3Jxx=UBwAG_;c0MhQK+384X%>4&M}Ce06~?YOgS#XV=vi$8DzkEv z`%^qKxYL@GCs}^uK74&Ewn6?@^vMH_8Nc8dTP`2j1dJuhKMr|4>=!?AX#(((q*n6NV(d zoGoA{?g)S<{yu26!N_Q$orrXRfTI%W+O9kdKFdGgtbW!LSnOZryAmKv4z_H_LA zM7w)*h%i({zZ2vuMbBZ#GhM4cOM^Ca?|k3XfxnYoxqI-+Iv(e7O5v*f%1(i-3+q=| z4q_;cW)qzYHjLfKWHY9)?uZjVlg5D%z))g>cQKcqODF08M)5ao1AVDYW45o9LdPOU zP+E@ZNx4n#C*}h-0Ki#r{`yS11A zB<9NL*uX=3vIj33kM=zHwICjaZ?;0D$$*{mpLBG^b8I|B{2fg>0Ev@V(dJy4W{(+W zxe=p!^U)a0HZ&Dt;gtcU%iE{k$$kf)OIkIJtzvuqaqjc5J+#u#X=Qc@5`-3CHrR*; z1Moh03@`6Q5;8NxyyI+A*I%%3R)I zLZ#8OPe@hTa6Ye2G-`iF`;UILlb_m4@xPfmg{$&apE@3fi5`RD^n{5Cb~}wYo$(@> z#_pn9<-j2Ja~=(fKFgTp^+Rp7{X|mo7IA_B-CgEoQ?lopKslBYjoWyai z^|zeD-Exf`XS*9pyJ=w`XPInOC%zg1{aS+%s(~R9$lQYLNJM~z6hcLt1kgAt2Ou4f zLU4M2LytE6?H-T?Ikwv0BA}H6wCJf0KF&vogy0%a>t~Acw>Ay#ng6?RNl&jTo5Z4{>{m(m-^{APhd}78)|PNBb(tzhdG>=L#QiuxagU@~?iR*cV)9`JkP~{#NUok3t@bF~qiocm4T0YIL@k?Pi8UJjZHbkeZG} zkOFOUpUJ#7v{wOX|E`Z?`)q#>B*-?Agi~4=KH+OWmi!w?_Cd4_Al8b*?pLa&0h;k| zm;6@{*2E81ogu5u;_iY(@c&Q=lN0ngiCvQTR<89%`9|J1jqNr7KAC{{wEk-oDmQTE z5+(rj#B&{>EO_}6QJMKq@I5ksTsFpV3inRE(~~Ck;5mD)_CiF=BjFXYlZ7?FcG>x-gme(I z!{5jQq`a+BPgAzj|5Fg`z6TRSrES1!0t?cW4l`!Ac?*c3sTgk{7y)<|-Ng58&CcXn z*TY=~op9S%Y?wla4si_{G6bJG{op6n`|7{7XOL4WczU#vgY*W$kS8c05Q`;+d`E#M zKb*mgbx)ut=mP9QOimo=%K`f}p(BBQd#9Y^fs80S7c$Dj7MvBl1_la`#j$Y{;oWcAL9?~*Wi~vDUInI z6Lv=y)_2Hlsnh2i07E~8nDK)$qalOUzOQZUey(fV5QlQ+>hVGKPRWF22py4sS$6pE z(6^G1@4UQf-Ql;{MK-0YC^x%N*!J^Gqt6Q4e=13(9=%Uj4j{_I4Z?59>csxKXS;s2 zYrmtXz~%%Cf*B1G1g?d0a0XkeiAb%Fu^k#oh*si#L(LAy0+hrA(h>R(_NU@K8@Uxy z#*I$EtN~j+)K9-wfOtc~-LXvGmGxbI$@1seSYcZIbb7c3Tv`Oh9rU3UsO%lX?XRIO zJD}k0xVDc7k}Prw@?g+wwQ$wDZFw%TS`;4+qh8==u^p9ndY17MIZPCH8_ZaMFX363 zOc{n85)T12Cb|cyrX404ulS6{qPB+TfJmV;aKLaaRU2rZv#>t!U%Pxjhxd)Hlz@c# zmEy1}%E~)Q8k@j=bN?}Z2__?=j=~EEzf@j*QVf2oM5Q;^_crA8qMb^rp5Zm{&DK{{ z?Rk<@l5t4P2W_ow1Kw~i(NV&eFwTH|f{Q6EVt>H#A`TtVj=(o7UP8P|hfVMmmqs&?bxn;Y{)iEL^c5zHupm%n_NwB%}3KkXH1K$-FGh+iOInGc&G*bPyLAE4cM~2 z!DnXwh7^W2pd)*RHrQLi?Xv6-P^a^ESq=U$p4C!Ez;{d4Ma$jxZGEmb zNL{@Jz7xA3^7sbz{iN)|l^Go!{Y>pE0FC#5O2xx+2mF^wd0eKQ-imjPWxc#A@YHq| z4G&`MC5?}C@C^_51__P%pLX)UC?~S+>dc(;Nhxs(1XvxQSr8d&2!;3P*?-!vX?wPK zG6YAN9;BPt1JRR7r`t+SyBziiC=vp}`)biwZ{ms*=W62haw#iM5S-h;0HgVxz}ku` zxfm{)H$4a7GyJdYM!@Es3;>_;rB#zX;AB$YH(+Zmuo>(4O^xZ%R+z|Ev$zA0=wr(D zoCecq)4{T?+3H7}9NH8M397zUpA)x|9a_Rsdu7EwV4Wd}iUT7g2qGxOew?_3xA1L#HoFRlb7@(Y~v z5_dpZL{n^>dwdOF23fm->Id3Emp(3W!%GG>5>QTd#HdHdi#{V95I80yjn$3qIdOVd zeY-bm$1Bj&rQ;!a+>Ma*s^?HNZlx{D-KjW1!NKGlWzS+;q^iTms<9oQP$Tw;Ok!c| zWLjhWo3a!$DEBWY?Qq=eMjzw*UoL&z@>vPc{vi23EkZ>9VHXi12+Fw-iw;LU;pN~f zQc$DDd#%fJ|8B^fq#^<+eh;AaAJ2vAwgI&+VW_t>^lAR zD-UMoN*@@nzXIa7@qpXV-;`eLFJMo|pWah{be(m<1;6Uc_6k^gO}(xg`jr3^m+>Pe z?|6DV$g8VQE*FU;5jGSVFAI6vAUtADF1?)6|o;dz-!jFi;_#*5w4NOM5vaUJbOeK+6 z?)!~s3$0yGU@gnbN#;rE=$lb7lTUvBDHqm0&*Up^9S@44YW*eru0&HBVB;9NEgL#= zx4v7jjkFIU{<}DMdXW)QZxkKEZKs;l>k4z+CezZ>MMkM!R>F#hTOD~*X82kep;I`R z8O*Tn>hG-+EvL?O0)L~f0=I*G!Qb}(79PYITfBG579PiKdh>b|;)-3tc46>b&~*Bo zsJC7Gdp$_O^8y#A;G#TNuRj7AVWA%gc{L#L0K?-DqZ<=a4Jrp^*^xTsObm%gD~w#& z*`KO*(2*B|=G*4A9!#nfPaToP_kg9)8{mWDvhRR+xU`M(MKE;>{>5vwiREB3xu49+ zaVB};su_|WPUap(hqWr@4K!}pdso>T=edj#M!+Ht^ zC+ttUf_*aVC}4ceCK^#l6ybR|JQ2+|B~0N{yJjzue+<0m{5nq&oJOWe`5U%fyS77DwlhfRH2%T>+(&eckPUwaH{SyK zg4s3oGp>p23KfjxEMv75r~^IWx(d(I_=TgxiqF>3C%Z0BvyhXXl6ZSe`veiQbuAxaAoU8=kiS8cNta2zi!*GJ`*Gq13G;!KxcZ6xGlLAzn6pPxWXu*PTQbpu?uV2W%o`Jq7 z*pap8wts~pNoME{z$eti7jzB!>-=8UQ7&wiU0&gDL$A^o7RQqAa{npqkxsZVO9uK- zM%t_EFh`yPOV=(!ZupLJaognZ*EEv*bdK1eKlLP;*K(3T$5}t94{JU6Xnm>On;AvD zKNWqlt%aHCb4DBA#izwT(v7fby8@5KoA93ESd|Zw|G$b`XB5t3>l<}9_-4P~F1_sv z<=FDH%;Mx{7@xJRsl+Te!V%HzRVC3paH6{XL^Om|0hzzbY{+ zc`#q%;WQ|m(DJa@074L;QKVO|k0x&b?x}PzxVptl)2UZ@1-B4)_0scgnZW7vd)J2V z+Sd{;0KOK*MljRNge(3Ze8%;;-qG!m_B;ewBT)oTgh@+YcraOlu(Es+9~ndlj@kXa zVdiMhMvV~h4|y_yfh~K*^{X$V|Dhbl4cjsg$CE36F?biJn;c(wjB)}-IPeQAOGDQ# z9dTX;ow?7H!7g`5fvx$R5(3m2dys0|XO$KRaPuw+Z?Awk!h-hbw^RouJG3n^dj=o>)V*nMi*WQ=|v{zxG)Z#^`gpd&c^pTE%rO zDl_av1onjenR%e437whpCO~-O~Zc7EQ!PJP#!`PYzI;+lM*9VQoTBKeEo{t zPpiD0+DInIMt8Y|Ls8*yNj>0@b)tx`op5B6b4+-MPU%xgE~qgc#)+>XsLX^BK(^`e zN*36ZMB!%lUtFLU^%-JyNgTb-;ps3WL-gE20UYeF6m8375zNH9hp+&R9-*<{n8F%M;q%t*)6guEuA}tcShF< zLl)O}N*UxP_$bwz!D;E(5STmkju#I)&bD$C`Qsqd)H}Y9hSUW1cj(Ic%w+|$vxlzD zOt!Q3I~sOp5)^nk=`@j32zU<4DLps9w9WyeCF%&1Dv=BwxIY2M4Tut-j>}5 z*whDR+>2spp?VDztBoQ{7yj!}7#t|Fd^HS`I*AF?Tco!-r#m-xy6QS%Bwmw{SyI8R|f2wTEC$A|PwHK)*I z(cZO~2t!gc&J{h0FWadAGHqYZ1LH1!PoSR46Yg~P?QU??j;br=boj|To^f6blK+9j zGRCBrOHW?g=>wT-hZnrQewZE&zxS65W$d&?&f<0Q>mDY9D3QKiTFhxbzi515zkqI^ zs+Z;oB%E*o_2Wx8IAN4&3HY*!NAonu6sFhf5E|Uj;CC69C7Gv`G9`BV>g;FV`LCIIfzGkpc%Edh57 zeF8goq)*_S8rzD75(7;eeg3Zf-BRgVMH46O3zSFCKPi1E@C`&B9DKVxvBSTRgY}V# zqn`EaLU$hcwGIyC5V^$@%n`cI?&~j3mFi%{LgUb`nj95hk^)L4Y&}e+_pved(}0HI zu`UZX0twGaBOQjMH?lkJ!U|#*VB;uZJP(}tRR$vZP4`p>g2X63g(oh5A`f!v0L9^6 zz;A5I!c;G8CnmA^BokDGdQGcR+l?khYI=-9?-H2b|Fd)-QjYmps9b_MqKs<%PPt>w04}VNYAz`aHb|x7i)p0Sy~8 zyK)d`r?BBq%b&E1BAoAOjP-nV9?qsRno7t`5#!-IYE=Fxudn!P=E;0M$V3%9PcqsgluqJbor0F&*xB;BJdmWD67d~gagVDG{`QYBHiW;tmU!~*CR+PTq$co#jN;cUP+hq5!2Y-ku>QjaAAHZ~Y+;eS$UieG zCQXA+C|dx=9PLpBC-rLw!Tzbn73P++-)ZW*ABYkz6GY_wAoP&YzcJU-2`zm^Bp$4n z;eh1KnTaW*jQ#ACBCJBQA)_!Miu|A&T(;>sQ;>fy49>UJ3-C&kQ`dAzv zRAg$mxCmDIDbx>$%rClDf}B;>5VZV*GU=T)1lVxt(U;#Rq2`@QZ( z-MvzhJ3!n4O>0Mu+NkAY+)3|Kcu>!S zsdltXh{WD^*HyB&^?Rpuo&Pm@7Pi$n?%A_?AHGMdcSaP`IdTh1piPPO>=B3OdCMhI zp*R?BF!}KgA@~5uxb?U2G5*P~5b=25*!Ua3N5EbZni4p=udx6#U}2))q45v}LbV(S zbJR~htHX5AMxVf6LZiaO$&^gW^^c8Jf#9tqHRJcM#1rLP+U0^FHF09FtO`{CieffPB!})l@-@|I{pNE2D?^yfOY#d1k7Rb!2gQG zwwjPcd_ZUl8Vf%{r9zfVF3~#=Kl@9-MJ_R6vi|k!f<_nO`+i)$;WJNmyTgYQBjwS8 zt40vij610>OoKeha=NI6d?(aHO~)7lpI3XDm9TRF>4oM6*QDqtA2Ylj?*$oMo|*DM zxDJ|ebinbz?L=u$!%FG8=)WTD0^uSJlvBDtdrT1>9o%5DFVeCZd4gkjI@^UimLQiW z5KjTWs?4mP$R>gh;!vN3@U8^_9h>}|7UI;mpdBXhgV`Y0t9pO7mNfV5na$`$)~sEw zzq$TOfeFD`c-E=tZoP?0*YH|k*+X?tHgIV!|Ljp)m`}H}JS^X^gB{GJ&S4Chbzv4asg22FZ02t09q)Nu6JZWt`+>1ls6x;{(1TVDZ?%tHEDT z0|Q+Q0liJIIUdxD1=6gzQqabLU&+;gNlilSF9dzD;jf#Io&ImOoMmWmuiw8Y+pz>2 z_z4svBK?^r5>jlcv42rI@MqJLqFa`LHZFLFy-38Z__(`2=!qT?6CAI*>cd%v z=#fIcp89ga7@swCQp0oU2Na(nJ*HFDLFOUb&y2y$L$<-pQ`4M?#zYY~C$mpoXKifN zc=!HXI5LD8WGKVjTcK~o2_dTh1N@r!cww!9_3%T1} z9^NdSJzaF19k_myLuHrr7LWg3fdhMRc8DN-GB@}sCYmN(SeWD1H^r?$f*%8#1ih&+7lB;V*Gb0*)1*a#+t`w%hQ=9|7B2IGcWpaXT&_m(V7x z!kxFvaT_MrvC-tjTf_^QlJ_6|(bJWk>5)E=em#v{gCUCBEeV38v4~;GiSnZ>1%U{l zTjNy2!$e_YYvVCh9Jrw3yZEn`_I@Bn)ky5X=gFDl!+|lpzb|oXGO>dzlK@(N{2tn- zijM&X{sr;+>Eu9X*Cx5sNEd_HlSs9G*b)nRmqCNQx*&0-Kl}aIA1hLqX$s;~-0lH7 z13vf~0Xd$a?!kx3$<8epwh(wWq5&SV#WW1tqt^0zKK5U;cNu3^z{%cve?-e&zYwr~ zr8!T)d2+%aJN!z6%1hylK7qR~fM4aoPu&MRIm276MT!QdZIWgwDk|+2jQH zE$`2QSX{RNUVSmfd!aj;ew}_Ej>MiPKa6gY1XQBBG`Pu!=_B-804%@CrJ~}|x7^Fr z_6*l5)C>+{cXi@FcnF8fF}m``w_o ztk}cGJ{IJD6W;YY7Y=r7NK?MXUu&K8a75?m7-rw@a7e9CplZPXa`KPxL!1=)AQgGd z)SK@YA2}n$#yjvw)Z>iJ&h%LudcW)FT;dr*QJ-oRvY;-9F-f#+u%hChJm5moo|l<3 z%CnDJdS^1HWXk6uO&fG2ZKwGWRUVd?_|ECxEHKKH+DuTEGni>Sc=GPcuuJeOC7L1C02hB<(_g_mlxyUPQ=$~&HvTU6TdzB{J zrSic5zq7r-A2J1u?tD`YSSRM-U{DI6S0J;fB$Vp+aZ;l++mNrHgo||{UNeHOyI}$> z2WL&eI4V??$#1Qk?gxIyv!GJ-RkQd8Cg380mWTmqiYUGS%v_I6~n8fg>r}!^j#s*#+XS{%GAbcb!qlxE>u~fgZ>%K(x$yXq>%tm4$t?e&%2EggbjHTmE$Cng{{U0cI z$n|mfY@0`oWbc(bExWq1dZ>>&{onE=^YQ|S=a^5N(;|t^pG^5mIk1gZKM$PSx7bPf z+;tC@E4kE+G(n7AVK?%bNsMV8poiduAQ%hPyT}3q>q>XHuiyP%(6=m@SVDAOR1E?% z`V)gnoBqpaZ0t{oDf$avS@nC2&nfPRP`Vi4Ara***1 zgKLgVYWqNnP~J%!x@dT9ZmcY_AV2K#Ra^)_>c4u%^#v@y`x^U^o^PNs;J~kq*Ajc6 zL(qW4C{DHfm7KiO;d*__Qjkj~z+=cO1`Q$2fP~153iT&yzZ_r$N7MMfkjNK%0Xs^x zUAvAL>N$$8?zFa8&DgheU!Hcn>DouLtAqjPL+QK)Ao!+5i>~_$)L54d8$aBJ>|l zWZ*!WiRp&DaC*Ptu|Cv1OkfHd(2cMwg^HPeV?iQ`e9>WYTm=KPd6sB=v$R9iVQk-# zJcajRxdq{1H^FR(zMe~ae~ONzwWUu>i}zDmp5}KSlsEMKwEVYx%H7J?S@9L4=d(Qp zX8M(#cCe;S_@JIS=VlzsxI%2j_1>z?#`|5# zG*{=KLF$(~%3`7*1~wCVFi_Efl^cC(pd>oZO}6qkWv2gQ`y;yT6rapacEOsE`-6}` zNm}86ps<}Oy#SFNEQCQK#9Yj{{$8olEryEPR-kQHg#*nyoivG!Cpl|-tt%E3#~2HU zh5IpC#CB5e4KThc?J-E+LSOtN!4_oYA7M_6Nrv3jR^xZ%&D??iz%AicTP9p*7S}Bk zY^{xShb_8r`v1kdpY9*v5!iu5n^Jmpd!@A(e@EW%nT-6k4udUm+hhE~0qSbJ+5)_& ztfRsvC3r`0>Js8rqhPa=a4%uIZYR4pT}V!pbT2(?-g`EdUIc~Bt63(fs}JLALZljbHZ_hDS% zSwB!|VEaUWlt`@~;WowKxld^M1A8a!C*UtbeR!s}XZ;v(2LAwzx%|>%RPuSTe`mXe zLEW}6`E4Ry^>g1=N>=Ou9`#AV_c*D*?*wdkr75$?sjVQt&Z|*@G0dbs43Ra?#358~ zLOmfL&SK$;XI7;CEb;+5LSMa6N)z;H4Z5lRH|19BmfLViDxAf(3Un%pi>S_q?mAe0zPmnw z(a|}G+;-M2zC(|}Nq0N>-2^|!JAqs3{KzXe#b~o@msrb#hL_^_ zkn_+F008#OASdqShV30MwemCiQ6K||%N_&VNrCp594eRBa}5~l=MvK*JC5yuVoWew zA|C^+m~UbVmtZw;wWXvwmVkraa0|SL(?p&mN2b66Lm=W4rcCA2Smb)d=OuZ?AjodI zd^yxf3LN^-)=?iuoI`>PD12fv5Z)4a(Zn9mqu-m3Cq7U&Fq^0z(UF;ZFs@(|&>!`Z zkuX#Q`nc3jN|D&CJO(=wYJyj&mskpOfLSVGLanquX$ebd*lt@@wHVwfPr36My?%Ygw%m5)$F9iO1-6WO+6LJi!~sXD0xU6L9@B^#C`X|3g&!&YjZr&FjH?i;!~^d-@xX z-QJtErLO(xOwx7kV?z1{xnG}xI}Asoz5qx^2~N5rqBr!q5*Hp2eHvq1{T|?%aBkvh zx?|fW->;tm%m8l^TL?)rnqMmrROHz3R$n-{?#e7Us19%sZCB&l@_frx?&v(l^9|Rn z0oUv02C=vJ;?Lx8I?%jPw*3vF%YApaA`x9=iSSbZ*4!=Q9C^@fwJ;G_Bmm)-T)s_+ zO5z@nZAXL%b6o-IOoH&TDw%Mr90RWO++;n1v+L7rkffNL9FS1zQwT>&^?_?7k-r|y zD}4NGb#o_Bd-!!c1bPWP=ZjF^aa}9l^>lu1!y@+CKoW`vcNyK)UM0~NXzye%c*9>Y z$Z`$WMX_37M}p#p&PVD$Ez^mfrhezY0*@`w*f#^NTD$Vq{RV!52|`tv zqYaZB5|AX=aDZd`m`syTy@C;?p+OO3683xv~XBV|y0_?Jr@s~k|T#adapRS@T+Tj^0B5ZF_An>n8v;C{1%6K*-y3)U*wi*taQ+_d2<`5yCp7GDr}p0{Guz(P z!TVF%cD`csyx5T1G+$54u8ECvx-G+-zRm}9$gnr{A^!+yL(-*5Rb9qk?j8}?#!Pf2 zH$U0`NS3Pu5h3Cq@>dgv-_EP+xZ_A?sP#4M3&jYfF!K6w9>NNZjtz}mvI6}T3dlN1 zX>zz69%KQJ%Rq0!XK)O0pbc}xV4FWENb=;BT@+02xApAcaF8G={TQ+OR&{NU+naN{ zU}Gw#ANN&~_zm9cEY2 z07e0pwvVsFP%HpntiFkf@~cCt*L>h<#8*(b-tqw5`2e8Vak`Tn7Bl2f{ zKPWfky+IIsUT!vtGf(u_xZCpViTW7yc~49}{5SBF9I z|Ki|~+3qEym3;*lDW44{CP#~Pnp3L>&mO#aQl7^$0f70CAqEBvJXe~m4SPEexMMpH zV4RQ2AJ-tKpM!JqoAO;eb&R9(xe^pT`ZrD+beD5Hc}}C{HFC zONc8uYtf0DfK&rbYzO01oM`da1JHt$%penTJHcdxnXgr6cJ?q~B;`H#@Da=xFOmaj z=nrV&&PQWefkz4|^*$g5JHKb?5~ySK$_woR$S`q4>D7`TiQyR}Tmgb8O9sNq%PGa_ zOup>V#4*KxNxqMU<>ZCr6KO-T#C0f1Kd}pD*#PDQFUkkxrF17AgS`g%QffPBh%PM& zC;TZes)x>%srOYx6hDa&Ut3w(n>L9qR=46iHN|CZhT5yXDlb0+F0=h=ofHSV`)s{` zk^7Wpu67anMl=4Q%@&`JIKUT&Hse|Lt2XW?U*46T>-l}G0LSG-dJo}kaV%iX@b#%t zxc~ssph-kQRGrX*^}4!OH*RWl{S4YneOPixe-Tcu=$WBczVl*FTYu<(1+T-M>p!)D zC9Wn%$h>unT6b&)%PIZSR{%aKTPIA-fb}vByTIgYh3~;XkyTq?%AMEB9f-Ri?~U?p z`2UMV$KUSBQ~Uj@9NCkS4o`MwVUV_fu#3bw+WZ&R6VOjkySg)BL-n zGn{}<6t;6CAd8vxZ%Q02ZYl&jmWY1bK_eNf%C)jw+mciBoD5^2hrAZP5q>d5p)xTA zuytk5gUiGNvCEK$zVd+1M8A!k!-_jmSjFcoE|Xayf84IpRved%8RW%;3a%4#ZX;Q4 z7L2Q0a&|Ic=bbC4x&SBigps7FP6U3Fi{ClrD8mR15@j$={^6cYB*Jg&qi{_&K?En? zkAGz{K}BFxvB5hjxYDh#qJImARqwL*IRq6A9O~1vdo&HnFpwoZr z8>cgVPiTFEr;m#zpM7V}_V_iY`GMVca@^UyI zus_E7u=;5UnZj}ZWA`->Nx`5){c4J}C8fYR*JO!TnU#&d;2wmIge;tPh>H;!?z#JoL$Pn_W>nlB@$>-`W3e&-*FumH%t)9 zj$kJO&|%aHtZxtaPE$Hf9Aw{pC4iGH0Xfz$lp0qduD&XQ>LJ$d5@o5>MGvC3s(b~z zVATf);G#|?^+`;KB4Kf-j;P^K`l1B69

      )Qc%yLhf&o^4o=+QF*vc5Yb)`s}Zyfyi}8s{lJLw`u=fW!bK8 zIanbpU-?Xn+pEfTB5cA+uQwpiJ4N zENJ|gYn%1oZaL2g8_-duBx0?{TM>G#fbI8>d@%cna9s8#rc86hN3P64XMTsAqiUQZ0H?S6Tpj@L3;DDv z_C#>$I`GzaZ?V@`532Ur|0jVfZ&S!YS$ed-#GsFN9zF0#`MZ$5_a9KL?pq@-B$Q)} ziHbHjpJ_+s+VpF0 z!B(J%Le5Nh@{K1rI$y9~3XV?{XYMHYg*RTp2X1b0rfde?Q#YhMa|53Z;{XC^9E9a* zh2TVQ;21~P$N{!eaYrfmx-Wboo_?lcDw2YijnVPBRU90W{*Ce^TUBJ+NkLtx9w&mH z@QibLVPqcoB+55DG~vU#;G)-lPX%=goZU=#=>wnA&6sDt*3aM{^>LL5{~gYD?dclq z+qrh;r7I;Plmv7|sOF+&S$v5{?i-gud2DxeVtviIqItQh+L!&e*Zq|;VHUx6{rorK zAN<1K!AHLYx;YW-)q;%(q*O@Jm=U%XO5~%~@osuZv-zOsjuHhe#3;Y5a7pFY4!_Z6 z--JxmH+{B*tUDJT7n!7;hHmXIXM)A0kuUX*Lbu5siacZibbqz*;%ojJ1su!82o6yfNWrYLR;~D|Py1#(|LhBK z`9zz4qGj*%3~W!do${a1?zyk!V2eqeK*m>p8BbU8T~2rMz^3*IxHV#1$C?L5J$4&I zPrYREtKlC?(ej3Zt5>)9nlF6-dqr_vXY9!tJbQEzT2F=*J+WwsIo5LIF*~sHQ=Bm< zqL@^%w?=4&7~a3?WzE@B+3;C|4iK$lejWU__%=)+-s)ohO8(A%$RpvXKV3=qZ41Df#;mMh z+7U___@V>NNDG;V)ujO>3O8|s<6iXktCx^sJeAF$gyX|MFbfSpb_}#{>B7eRtyaTSL3K7H89qV zt+(3^C@n8OB?g$nWc{#&hW6;QrqFhRj6;WID-YNRMyFuqVX8&~aC*Y|<`Kj|h)Ls4 zt9Vc-gX^BU4555Frv?S=q!@qK zogTm->A7_lTm3%6waO13ePz|w=BRvzI?K#&kbKN}k$gMJW`8DgTOJsv>v!8X z)=;}EF~K`Fp(g=HK=r};PdcrA(!`jkg5w#u>+pU&dhYp+E)hr{XHEJhwB*zEvGW!Y z9EN!5xI@I33MZdRzip6(eYvAbau1nWy(S;&jEr{|=V)NqE=QM*?`FqcU7a@LYqMtS z5ZkJ!z{3?HW9$iuAfCh$&VGtgU|Y4H^nVlI_G4dwpL*+0;A5X(RIUJfswhJI?x+0w zf>Fvq)FZZ_P}}L$cnO}{l1xj)n=dyXWV|yvY}J=75f1(aSX*U~PaE!~&`t=Ccwudu ze>Z>CSQyJK#g@ez$0%lcXTW|t-t3>pPJ6^zK|A%o7U1e-#UKBS{|W$5Ysh-BB?5W5 z_{iU+-wS&o?OwiCh_o~Gu=$s;j`W{(WSt*C9H!TOq9iU*3kdjPej_=IKCWx@V)23h zjk}Wm4&=GrcE4>hBohvPu2eSvY^h={%{?FwxEd4Nd zpww<^j575$E*tV%?4crk^4KBfV_Ap+KfTMHSdhzt>;XZaeIRb@gJX}lAO)(5Gn;ex z*3bVAoIfABs#P%0itStx9mi~kyo6lnx3R+gfw5mX|1*1+jyJ_$P%LB;t-SFmf}OW% zykLByygL8+gj9?3s?r8OjAa585nR0jyyP*#7k%vW@a+5?CTUv$E?>XW@m0W2_sJ6D zi0garnWk>HCjMF#dz0Y8HQ;UUm~k+v_r*5?TzEfl^{oK*3RG?BpqhJN4VfQ!SiWCG zs~-_y6F@yLgvRQ}r0>N0cnzc`d9%N_JizKkeH(ZRAIH`dzTf^?IE;8S=)&s7cIRwC zB8=m>dFON(x5k&W^^4&#a%`Ng=Y$G{3U`ytqXaHurj-%G&+5up5vKd(uU!_F1!dVR z;w{M#2p4DY!k$ddq00;YkS^^!1K?J&+;w@-T5{Q8 zk|R=$8Syqt+3mfySJPEhXf5-+h1_wsy!QUb%8&Q%UYtngd&#=dpPlf**KcwBT*0&v z%&OQw5WMO)uHv_zyMcqLKxx=mfgT*!j5ObJ3vdH7_7u!G!7+|7VIK;?BuDtxFMTmC zUz)LU;{vbhb1gVLYPD= zyPbi%&pwE=<*-59Ib}rcj_T?(XM6pfT(?{@%gvp7cQnS+Yc6iHd8Vkkc5??vx1SXp zI=^O}G3yq!kChb>Oq+uDpFEB~^~0ZnH$M9+yy(FRCzmQVn1KS6sY0f(gf<|c*NMcWe+L09e92cxZ(Wlv&KAECFs8bS(xs z=`-AjaU3Apa2Zi80jd<#QgHo5@G+0P6rcIf@5jk}0x50jznpdq(XCWM7PD(qH~Zk- zpq6>WvYlJt;q2ILZL;{b5)4m;pYxa{WLf=0`7EgQ6%lOXn(oEF43RtP>x{FG?s_|X zbyrD>*A$G}TV38ESy_3ydF^t)YRY`dwJ?C?SNlDrW=kKnlD~yib6o(Cz7;^EV6GKk z@kxIgj~qON8^;A&C(L!iw)O+#I{P^$S;w6_JCyLHzoR>j8Ap3=aZ@PPTBpQf>)6H+ z#SKRtijm3*%d&s9RY@r;aH13<1;;mMeB&Q|1XWH@Q6SjEg&P;3GJD=pRr}i$2n_NS zd5CRC3LEfmRj|Jiyyuh-`!c4Cu+7HT`c**I>ve5jskH0)%C*{WSV zGkx}Gc7Lqvq0;nnK|*+A_c%-&8=Z!pq`}FdXyW6F%N+G}b)a(bTNn44b!*#Ge+SnP z7*sK0r7Pc(L9aYvsF_(ioTgXI8Zd?gI~2%*VlZB^6B=4^W2Q2$D2ADHH)ehKz9mc^ zr-*i+86tS;Hz^|Dxt$HzK6DY$j`Ht-e$Q0n|299^Pa0aTqa z_a*<(rhjk0^cH;U5B**|BTwMby9)G*VgrSsqLjG}07yka%>0|KEcz}c|6SO2eX|7L ze5~n}ZJKv~?Yd;frP}>fTi{{OyMC8k2ch;6Z^A~jmt~_KbdYR;eLQnDR>IJ%1o_}` z5Wr;tV1}Sh1(z-ZU-Z#mkD`L@d;*{yfn9`OUZ`m>qjNL>0*J%im;f%&xGqC=rv;~9 zKDI%J$nj^aANk0--DTtr19r5hTllUa1v%x{cxTLi0;iE5qrRJF8KAUN8Vj0vrNHp< zZD&q0{YWA;XV~!*zz(^K=SG(<%12~5{mLaX9jWfJ*;6mG>E-=h`S5_3^$$cal?ft( zxz0GZcNf0kQ@#`zE&;Vp*lwle3U2RVkZh0Q&wI{U(Po(4X2PBg%S9}9CvFd0%qBOS z`J_E_>JF*Fh^aL5O_74DcaTP1wWy&iqK|Ud-GK%E4q9VUCOTdH=?ol9f)88--uCVp`%|m{+}{J9ejK>*4nXz`ou>d( zPZ95VsNVmue9yF}*XyhWZStoTwVZIES4}w-fsr3}JIKpr7_;eP01uhcst5Av&M#t@ zJ&55TlIH+_l;pzGjpY~hx#;@Jk}(G5+%5AY@lu(7thy}r&Uxa9<0&IB(5B0uJT{r} zBYU-H3meS-Y2=5F?GFrR8Cw|v`YXnE1)*EVri^DMJGcb|UE+Cn>fRc@31%l1y6sn>;8l?aRDLdpZdfAGAO` zcf+TpZEGX}VLXg-`kR9D+Qpikamx)6FkN}Hh8y49(R?fc?}go%P&ojrX!^ zEZy}b$J$}Q{AY*Nm&z*Xm~?^p64qfkt01-{WJLRszOS^PrdiY@Xi174`O?G5qEC@Jp!f)iUMc>l=l3yJ7B?t-?f!klK#5fmK9;k z!CZgXZmlti@(X|4+j0NTsv|KtkY^Xk9-NmPPh??y*?z(}7l{Qz12dzT)-K!H@Hm+j zhjIpA@`>MsmiW64c5#spq|`=?M(D8Ynxcg!3_|`XqEMntdZ<2n;zs1uDZKaK4c;YL=I7EaW zfhW|a%DzPm&Zd+~g=#MOX=h1VyD1SN+4xoqk3(VaE(fnC9!#zCY0K|ntKL>t6GWOn z*m07VwPUaimtDDTrag2yG|YHO{8fQy>2JkoWB!V-_@qApsS{?B356*3w)uzYd?!y6 z!;Htdp89?B>77=09l@vABTv4;b&mPS{wsLp`75)JRnp2+9BAF>f~qsV<&S<8p401X zMUhOnaP1PL7)TAyn@+g@Vm=79*W*-TVSAl&nF?P0ri$$`d6>?k$6wuH7OV-ynk{>G z;4OFEho9PR8-o7&zqIe)a3X)&8_OH%PSd$~o~@~?h>d2=g)3ug|7=iHf zgL?`_C6_cjG$`b6z4Pw?dbvS|nDShZ+I7~j?Mr&Ik$9U%&(eOF){#i%X3357poA=| zr7NC?4f@#}-4D92qB`!Q`<+|722gTqx4cLtH8Xct+4wn1F-l3|uV%(EsyYZ`XvsUp zbeBg?SA0`Ara@5A8L*ibC2kL+rVBEK_U^0*+!c}ni)yk7k9E#w8kr)Tb)e1nP+?$s zVvG77RIeLs@_NxxCS(SMQ?5^5Jxggt%c(s!WaTPr#zkJmWFY=qa$ODm60XZ`aL~Pk zBL5tN)lep{QlR#0;Hv$1UlkzzYyjC-)#tsa{8IpuKyAOMKH1f+&!;nT3fU{DPbl8^ z>od-rncBfXrDAUa{=;i70Xm_bOEb5m!tB8Z1dI;N^tdDDK){0+iW_F4i+N}3{e!`0!p z1rjE^BJK(L(mYOfMw#~|ms9e(gKjS;5uLuZUpxGNDo0*t1)3Srnj_BqT(;QZFK?}a z8U5!NfL2hy#YGJ}OiEC?-)%GgwTrQ!lmeLwzV}Vvh41=5zZv)5wZ%ad=!v3CRkc(| zA}UtIM1GSwznmHE>PrvO9#$;%DReY%Vq;&!2S%EIjW%r{tlg^>us&0ZV*)8nkz+Lg zB7S&G(uA*v3)A(UMQ~dl-#FoN{D>a|mnsA|j%R$#y`PLn4j)FXwJmK8hIiF$O+K24&H(bA!TRtaz z6)U8l&e3HzCgbvv$s+3SlJ`1p0}X>=F7P;=p*w|~Iv8u1Nn2#^@rvQ8;y-)%bMU;g z58>u^hD_?_!YG^lx=*l{*cV0Eqz+2|$Lv5CZ15D%?o`To)8HD@n|Q1Jj1r6Q;ad_K z!#8IG!nbWU1y4OW<4bGHvuqogt1Q;pd-9@-aSH z;lT|?KW3S`4hy1L95kpt@VS3Wy48QM#f;YLX>9&lAJE~Fc=&$>zu)7?2_jhHMlEF^5}t|(#S3ys?|hXyR)wf zRH^exmAmdQzjfy$np?&(sU}#?Sf~Jnz9h+_=$ZGO9YAq^DWy zPaD7s`NX(BL$RQ_HWOnLAhs33U^P9LMI-7T4ltqL&Nrte21K$;8B@_Ay<6Bb8%^j? zs8KdbU!}0H)n#B`GG%CrNlcbKI+|$n)D8{#nz5buxdve2*jB$c{j0FSENDCFA7z8T z_DkQ6zyFHAi^m=)kZnQP3Z?=@sla9iNuj z#MJR1Me{wit2Hup>({APed_Z?EKlE-^_IS1t$wUobVC|CgJZ1~j;H6#w(^QRZ++nD zdRuGIcT>~8E_G@sv4HHn;^b)shQYD?#_DMbw&Wo?taE#J;getdS-5#pfvE-+-Do&p zX)A5uvM~KigAk094bD5btbyro51j5d5b-rnaxghcho}Y)KCak(P2jW$XnvITY<8REEH2h*I z%@4fy)qs=&OqzBnxvOkRlkDG#x8Cz0eqydYJkYFv8mv%5$G(JQ_-gXtn39C*G6+rt zUwma5!5APfemR`cFUwHIP*(nd)xRUmBsGF#aPxuF^fQu&aN(GMum7r&!pM*2cQAO|z9`I>)Kcfwv zL3bX;K6h21p9LUN75dQg%fCRyWvCP=RAMlrAM#&C_6p`FfcL#|i!%okv~9P=!5QFZ zUVj-k=LwtA_7w_DzlaaJ=r;l!cP{~jpo-$UUd0KHA+o^{j&WAD`1U{g5tXXCGQ!L%_J@}QN z+PvCwu`zNn;zRtl|Lk|r68PF)NEE@9`3An@r@jO~`Obfdmp&rUBgIsEE+>FYz<3(C zHm3AE+4e#6aymM|kFb}%C)#75>6_7_t)2XwWZPt@F;kbjl#v*RH*FxgJ{Y@|R~`g^ zM07YqAn*S)1aCLx7K{MeW@h|*JypAz0_g~s|$WL<*e;oL-WNiZ; zb3UXVTlY*WGrip!7~}NZV#iv1AR=KopAWQkJBqgkEIb)3yO8eJ1y;UP#LIrl3x5}G99ul<{LuWp6&-v(`LS^8-LBlfkly!P)lUCsq55Oe8_Q1<{>Deu zzTHOhnL6&z;4~=sd9u{@ZxKkD@XV7lzU7ZUio*ijm`|{eLtH+&g5&wfeO91N@iN(c z|BvG%#P7M4SKx4OgSS4Rc=AIPn<-+)nLXe`?*NY9qrgD{Ehja8`8bI{=ldU#@7e6> z`8uPhoyJr%-Nr*>Leftb1@l`?Pl9fb8p+pXqOEl{D$jOE$6Dis5Pc?%&98xqNp+;LbwF80j=<G?W{OF1U~q5#jn2e67HV% z(%X=Nu%-Ocng{ck-fK3_1B!wZJ;qJFju|s1*~c^UCH#>`KL(%q33uSR=i2$aesB@D z=DN9N@r=vLJ?}K;8KTBtTFS+;Uroq4dA1G}t@1FWElFVyLJ5xosCu0BFvTbGM{Bmt z*UJ4osI0k&j|h;?Cn`OfonrKvVd3S+AgkTv2c=(w%gVlpNqUOJqgj@W9rRaq2GCBj zEz^W2Zaj{!{gKbaYtH`)Uh=>Oa#OIGRAp0Dra0g%)U3(3SfVcELoLTg+$+6M(pzPj zP?Sd`{PxJYz1BSYdDqW{PAv6hbz+s9_GG}y_hjBWE@M6K;pF>iWkaWP5zF{8{1mV= zHBL?xkKFSZKI)!NK-C#SHlAjP$1L+!mtuuify6ErtzPnxw7il}jL&ZYj0XgE7rl-A zY6Yj2PDVQsO8c2FB0{YVJSAlUXXNifX%~kFnmod8kO!AizfhcNh zuez+KW4vD1<2Jz5J~9a|T&(!CPn__DFMS>^*DKhUJsj&6m#DuLQ;x`+H#kCA%$etF!#(}Ca6KwDw|@Fn}(WU-vq^L^>Hg`8$^fwX-Vv zh2t68TjANlb!e2eci?i7kXM#L8dF&rjg0Rxu+t`2!Z4L#`N(VkjvlEnGFUQC2FDur zdc;s|D*+&=3PFX=GXy|==rQ?z)OsBNP-T22F;J_>L6P}!#p7?9vA-vnw}94)yUqxH z;SJaD?8$_KGNINQxW#;;Z4H}SYqUF$RTs1@IAXDaOTvo2XT|1sce6?B zT4l&G$Wb!O-n|U~)HVjDZ6(4q?cq(&z5##whd&ojpS%Z;oDt~tsuM(|C}eL2O4D^w zKBFm+;PzeL`VZlx5P)T6uAhpH4(PfXu}N}h>`)oy_L3_9~O;xYT4 zymCNYR|FF0stmr}P%wM5jsq`ojKp3CwIP1CW6W@T47~W>mtw!{VXm_^$^wpSv2J#4 zS*10ef3M{T!I_n&hQGT@e5B8AzgD)NMO06?=h(dT7q`M_-MnORZFNwD zf_XdP=vu`${?UhVg3CCmz+O4P`D+(3*Dav&CKqnUR$@7OdmN2Y8m^NSqAJcD?BPxC zs(9wT_-JrD)~18u^D-MfQ6p zE0zKC96+AwR`M4#;xXnbuB(&_dmqH^AuMyv1*QIx<}wjWM%_u0p&!vp6DptR#Sn(A z?*t_{1_d6!g8uCJ#{A#KX8eZ04i#PE%L>1OEHPp9(~F|Rh@*#Py3c)?F$}W2MjxcW zVlc&imdK`;xbM1r$;0i}fG0i@4BY`7t?NTGy0Uco9xnQ_BEG*MhYa78kvr7N2|m}A z6~(tlV#+M-bXij@N$Qvkg&m-z=Mq4PUEZ!~12a6Wdo$<76f~Ta;G5Ez5i*@wLm8id zv9SL^j7;BZN0NB~b$oMYljPveO;Z0y2Y9J{GV&<5Mh`he4#z}4FFj3&Ssj&JCmC_( zJtG`E>-%K8wtEn$eHl>=Gz3LYPPE+ju)Oy0KD@FW1uUk4sSOc@oGp0#)idgi2_nE& zfz3W}`Lg0y-+B>e%6`XymP5kKQ{gAhEAyt?{lGVGU4R)gj&TE9Y_Tr~cuue2Gw*y5 zfAn)7#)qD)*hr&|XXdlc2svwbr;1G>cuLvjijgX;1Cui_U&6(KL5#jIt%VKQ5?jJY zVejqjo z|FJ)alf!5A-UBF3sut}dXT4zyJw=*6*x%S9CiL5QY6MY&Z2H7Pv9~SQOgn7LKyr?* z50RP>XURFIg)pftW-SQ--d0;Zo~Aeee=7|Q+{1MZF~9-iZT4gSgy9-Io>m)@D=ENy zQt-%qFY0kL8JEWk9;h%lHpIazwR{k=lg%%0@VH>E%O1GRh(mxwwPBw8vE|zq{1;2& zd+=vFR(j5MC<9y!_uM`Wf3s1KWx>y-)nnzk4Mc13+if2%ue4=t1y*Xs>Fj0PX4dgB zJX#_jbnsw+t1t7`;A<{pQ{&XwuF0WI(Prs=i#2S&%^PyplUnnemSt*_+$gvu0^yo*;LKiiiZ2g zI?Ton^LyEZ;qjA`O5Vb$x`gfYnSby2No<9wh*;bPY@1C!bAHAj`n_lH8TZ|f>w1K} zvX5)^I<6mIi*AK&J>vF&6pt59)qH;GzPz7~cCfd>(^m`L_?ug7HiB6IOn^+ljbp(F zUZcQ1IU|PGR8yfUhxgzO_dK9K*(Y)aJ~V5w<@@8Rx|B1!<30fR896Zh)UK;Bpkn&#Tc&n&u9<(G zars%2N7(Zaa1v||>4qbRlqMQo$T*U!9DeO@vfm&(KBShqL=7d2;3L0ot3ET)Z``6N z=Qcn(P|ij}Z4hF?gaN74+N}^~hq3xBk1ToT!HRh2A}evUt^I%70-y{GmH=|Dq%1{* z(em$v=HfRw=S-%@;Pof=JD4)^WLZCouO=>LkS;^x|e@uej4BO`Jafp4-2kdX=!&=@#G|nOIPk0@5P%-@?-fV z+aP&Z{zvj(E_=&4sl#*G1wJ}FH2vM16wh8gk8AZNL`neJ;q!KR!qkZYyswpM>_m-8 z>Z;??9c4zNv#fasV!cT6kNm}g@VJl9OIR?=!Pj}b(zHS`>lSm}LRC@PqJNZ9@bBLD zFY*8S$v=U+?wIv12;@XjP$8%gD2h~{5o-B1{Cn|1E^bUSE6f%3?#M+hV@;c^m+^-FvXb@-m3OUEF{7(iKZ z@p|p?wkqyF`!H-EzX98A4?6&^{^aGlOZrltoylGcJ}cm^rI*S|@=aa-58$yL*{wZ>N_RMrrq zV5n8GUk-8i!Ts1C15k;{0*;@aM?`v=G0K~BArn% zwC}}oLh3GsIyLRDKn18MxOQD|?x5o9zxbo@Y`uzF1tJ@qzjgtT>bzDySYU&%Lyvb=0JRhDr+)c%g*fRFMEwKtR)CXb1! zE6m{)3xtj*wkr(~y@8LWC(E*cDa@d;NrwjKs)(7;m9`h1_=Kz^18d2PBt9%VYXi=% z#F@{j_|Pfvw%1TgxGVr+I8JMU(P(e{h4sPlRyf^@`#@6ic$F8CH8>%6wEeH9Pb}lB zYD?r*6;iiblzSh<&mG>2U+qpqqY;6s3kf73RM09z zjo^^=cvVYcmRuEn;0p3J+VSGoIQpC%lBB}vRcPKmi@x(+6w@AX>G&qzcjbL3Qow@) zyA_$e-VTRn`V-SkDE2b@;u+;s|!EU3^Wc+|e^e{M;u z2&5GJlQ;Y|eAmDGHr#pFR`*px*W|;#963oygD*P91@h%X zML(jUujLPaFPZkpO57^7quu<3`jUmgm4Fkt@ITg4?=bL;SeL7gaUzR5qN@h)BFD({Ql z=_9&^v|;rTt^RTKIMq31`HeL1Y-jEM%3#Ot%VG}wrZ_&fcN%05XBguAPDbnEr*nw& ziwKsjonBxUH`6@@q%ARnYDGc8J?HN0+xkWnD7VoO@v(hGzUeNvNBj{fufVV(CQ?Y+ zMFo?S^eGN}ThH^nd?`5p^o(!(V-Mk>!#y173HHkYE}mS%@%AL}Nw}=9RB^mbcT7Ig z*BwjCiOy~|c;YF+Ti>HxqP`%iQGhMp~pP30)3;f{~y$LW3uShIzs2J^jGZb$cI#Rn2z>2}Xx z)`ELD3EGL-%f?8Lon{&f4D+o0Iw{uK6Os1HH-s}b_`Y1XYN}`WDUenl@#u~X68O>| zqn(Uz90}`1=(iwk_t1z3T-We*zNoX6;Q1m>1C^Zw8oeVNix^x#g2>9HO7iKeMPRe+ zwA4;*6^Wk8U#=HAVfb(`G=3qsgIL;TaN%W)PF@9|;8y|mSwDdS^DH70w$FQ^e6MJ& z-4mo$R(%zK%AR2UpyC~`J;B+-f_V#UXT{lbf?xi%Yk1=`*Kp_F23o71Bx>y^c+Qu> zVx2y8n^Jd5Tb$sg-o%Uwk$pTpKZQU32_J>e`Gj+L@)@A?dD$Akvs`N6P8SwmnfzUaPwI4)(^c70Q#E`YSR1NzBGrCwhADY zulhM7WPon_wxmw`mZTk@*kdTef7ZIje>ULJna`^;GPc@t3rWPq5YphUeJQT=dYWRe z$zgmArPkKYv7X>N|Lp8SUhvO&IYDsO-aSLILw?Zonf#%tl%MGD`3=Q0mm>Qo zQ04w17{0xv57zR~p?V9q%64{NW34g43wcW~5Vzo{KYhWKZ^1LIFd-qkvIC4q~bM%z!`gpTydza7`_Bn%Gn&aia&jbQcy$PU>4 zH)RT3XfXU8@qAQjkg6v|LL_|LmMb25@{>?d9}w}FY3<4qA?tMbtUm9l>;h&dCzi}O zf`Qqnn7(v7C8$e&MDmuEx0SafHJ*p#AZpek^NK75Su9!EyAwJMz*6M-nI{U8@3T=3 zikb~x!tlnn9M2u2%PGMb+F8?UOWJ58Hqol_QBCVH}@ zi{oy}|FY|XNFS^pbD16aQL-I!tGm*6jQ-GQsla?J*k0S>&wb5Ha2?k%>x{j!k7uu6 zLik?p3`fI(58YkJHdd|)6r}=p9PHt(PbeOLf5qN@+u(@OSNJ^xJoiS0oGERfmr`~O zzgPj4vk&0qcioFO%=Qwbj$dEY5g%r0iZ8*hMhhia&egTQR$l=c_yKjWec-n{|LDi8 zh&}X#_q!ksYj2``5K3AO%B~um(?J)JijahfOnars(MAX-?YU zDLgS8mzS(6yhDm4ZyYTXL7W`xd9BSCX&9Iy?O8IoYYv~`XMTZv+p^PViL!X%95|F6 z;EJ-RnWV)-h9~KJ;LkG5qsH!t`ww$`I>NOjOk8OIO-*Fj1Fimgz^c$Hs#-(}jvxJ~ z&EM~<07^e@rq`jFd;#=1;4QD%;>=z_t-#4vv3CY|`~$~$`P(nx?#(6z2MeU$Etb<0 zPY6*u)7wlZTQXK=Y*#ea6^UHGa$@DM)q!5MofP>odpinia-`P+F}eSoYn z$ATv(EWTDp4Ih^8x-zg$`Utja(hX2jVei?FfE^2nwKpyb9PSI=_P$r+Sm(ZUeQ;#S zr30!Xca3-%zFBSiGI~?2m0CVOrO&eSN(eA-GM>?*roW_0LzyKqiZ=T{_kk0rVwyI1 z_j7N*PcI5g6)KgISHTWQzYj|98G zz5!j`vrSosLTqNPZQB=~fe(xdq`m4_A(BtBR-Q@Z+0mZ!@e%=l(89-<5I17Ohozam zFbTt0dF2lID~k`rzaoOUj{I$Ql(j~(qGx4VOozE!g+J(Wb zOfl6P1_9Psb$g~Qr~G1wOUUe(bu23@TbTYMuU*ha9@wQ+BJ-SU?8b3aJ0NWGH0;*s z4tviwz24~V&*`Pb4?vxEmI=QYN1|nAAQ(SJWZF z+#eXFi1!@SyZ?aT=?~8MnyUW%OkGg()XSE7&P%WP28GA4<^F{3*IKHE%9wYF7i#R^T{!m zuodZ4g?K0jSh*H{X3(FJ^Q(sdiv2SLFu%0|$TeCpa7o}J{d|u;ylm)}A&e6NrN5`- zyV+=RF{bIZFQ=dATB3N1VAz)GG+5-|DYJ|vdhjGut^7*IpZ$13WW09VkGy{HJQ|Kh zshqI07^xc+d%=5m7^B8gy+Ljsh=!$rVN5KKKwu;%CB~N6u*352HY%M*_+pS~WaK(y zqwO8f`#)tIXmIfn-$MJ0UT}$ zRDiiw+&CUFzA554Jt&sS=ET0OxQ$2h?efC+o$02k^7 z{F%@D7(8$g$+CMl2wrr4;={3|hYLGu?rnu(OxACx%xKe)gN?7L;ppv^=BE1GN2EP9*Okjb6e-wY$=2Pn@@1 zGA`J@QcP{t7%WxM2(w8zE{ni3sL66mOPNy<@~O$Ecb*fCmV#?XpcKK0UPE3b$Ic(! z$I)z^+H9Wqck|VpIA; z>+q6aH9i5jd3*#Z=;jzUnerT64k++1#o!NyTyynu-A89wY$>wN6N4M^3O}a7XL=sC z9dNE(1zz|l@a>=fBAl$m~i3R#oj5m+4~`95}LGvq`ca{XlN3;KiyNo*@F#U z`<5-vUr?02_G&+scJSY&CxGj}3CLj=z~I|~a9MXh5C8n^IlQ^fC}=5HxKTw6;^+t} zVhF$!Q1sj2(BFZrS+qMu+6wR_98GX6faUER;R=`l(}{#~xO|t@N=G)umUd%^o(p{1 zpRn&dcx66MmUY!tBXmbhpN2Vp_6gB(@tekzgjR$j=L7qu@zSBLw}+T!N`|SaR;Gz@ z?%xyXbl=CYlCRUnms77a)~cY_gi&jpZ_p#9d&+H&j%Y=>lSA|OHeyxVM|I|wC%CmR@@Yosm44v99>zl;zOuZgi4H_8=^6N3guwNVBX z&&X*6Z^$H;HbIKF>N}UJvaW&7M_b?ux5?#iP4L68DPVNu*XT*jDv%U`@MC@^m!+dR zhO9U#@jYRRSYhF1$YFM(6jJ6|Z$AGe39|ZH-NXka>m}&4&a*= z*c>RX-caX2dY=h8&4!>n(<5VKm_9~wW;D%nqksM(vhd5Tn8QJ1H zzV_pA{=ybIw*i28a8`9vVtGLHTBET%z zFB6`lHfKt9wjd`SW%w@3y?6xf%oVYL1gwvyzQ zZFSH#h>+5@+W~NUC3f{Flk84|nR7JPW&Vlx&UnDa`D+^cFnf&hfZqbc|goPZ9wp0g9lAplZd{8<#QJb0s!XY_yqg$K7nX zgD%MaBem;zXms4IlVq|$X0vTaqHb3bS*&CYE_*ySI{bVZZJqnM;PUy3zx4GVi&;)^ zR22v1PCR>j5hwMy&*B^Jjfa68^Pr_R(K(Gg*n)NA$rHLJhHxaX#ANE_9 zw+I~fgY0+eOG!dM^7$Q3CN!Ax2NFOQ>!1&7%;nsSai*)R6;8yE$j3Hx_;Ndra;>=( zY;_4o)(S3=ScBKpFs)dSMJR|mlE3@CwdI`1g3o~3m%KNb;Cm-BM4?A?Lb1Ouc=|oS(K`S+C|=i7OIlGQK)v_*_(%I^^!>F4`F^GoHi;gGvo?WFU`41y}b8*7ePnYLSNq!LeS)4ZQ}) z1jrsP>NEKBf8-Ofw<)-Bt<7%C+6TWyQYV*}1&6W)kA0+9;rbgq*Wo#pH>azBcm9n& zqB#a;Y^F72Zzn9nPoW1eE6$z)-uA)Q;{5R?h_o5*ia6C?NIrr-fQRU~wg)M4_{UHA z2PJ>D6n4;M8yFOcCH{UUNC(4RPb=^GDuG8NO`3iq*wgNIXU$9F(@F}GQP^YG_1aHc z){4LR@^8aG`{loj#~uRC7HFvzMQlTSZ68z=={(d}{%m|rSEtYIRp1Gy^aL>voSOYb zgf{&#I6fvb^w*Z6y1z2}H;y}gmdK;~KXv`}H)c3~wjgN0*XTtg z$Uax(_GO6}C0GVeV+#Ta){`r{N&%j|{A9p`gwHlp?tb3%*X-E0qS*3h=aq(jSyQIx zgV{JGPDkf6za2pQOS3QfK9CppGv)nvuOFrvV2J|>p8YkRNLvbTw6NVPkDyZ{qT~~3 z%R#K}AlvXk;Q*!iCvy!ZZ*vBMfflZ;BS!*~uWU-vHs~JPIig2N2tUzB>19)sX3d*{)I>N$hMd=3k(3t`q{F_}lTAgM@2W1?LWc z|HoH+BA%)j0qkRv4W7Mz5w%ZJwB|JDIhG$G{IF^}_*k`{U!d(!Ka-QFLbkw}{SAKe z@rw68zQw_w_BZ%+$g|-6ukL=9UpbU?Kok{aI)k@8@Cd$to}uUg+HyCG)h;U9|F4Qz z)j+R!WLbs|!u==nm1AqjA>?5=xK3!4R|d)=Wu12Y2&KyUKyf`;4#OMF&T za^|+gVQ`-^{C@Dud}`1u7;zm$N%HZWkPD3bx3(=88)#&j-F;hm3RL70$d}MF^AT1T zvS?%Bzeav9%IGP_Sd2gdheca!?dI~DgtuBY#qtOPi}Hh0UJ|wIq8g_722K_w7EXWB zj0Jka*^{EREMx@0-zniX1?7SsBZdH*IWZ6cGmy9uqtD`WrF~lzTys;hE_+VChI+e1 zl9Hfx|KP0*=1#nn!^mgExw<*r-H3u?pfrB%^Ti$zuH@xpT z+_~8UP<;SEy_cG_BOJ70EQ~!fr9%_JO}&g0ImTf*hhv=J(Q*dg@iiZdCqGnCO6jW( zA`oQad!|Q@bCGWj9nC<&GDPHoX}VXdQ8UyfWoP|Z^?9m5si>u5?-01Yy@{8-`-f1Z zV6HQ2wYLF~^JkhFuN{}HK3?K|y2&ted+AjlcPfx&d9Y>-rIa3Dy|edpk{+kSWDCbz=uw$hJV zUb2qBS~+TWSC!jzCs_`+Yk${R z_7Ml9t)Q52Fjv6kQ)eiVYH^TqU=>_EU-7M9^C0e;1SdGb+36h4A78}w~(JaG?%zKe%^)+TiN(2Cw^=sH826QM4avvb`ZP8kGF}K2dHE!;%7ZVF!IeqoES8+wyhnb0W zHj-HnO2R&22V%Dz0QgAvnyG{%@%F=3qMR-}c-pgp5uW2BvPy>-o)!y+r{)V*b0EH;&rmTrSUq#OyV|xp1sRpz^S?c@Tu1 zW;7GaybXUIRSRl^oqi%MDWML3?U9qD#M6;43#{PIVck&f`V^pL7SFJ+IjGw*m}JIHM8^HQK=NmF1)S(0+^Y zI0?aL2Vx{y>G9|p41U%?Eftt%XjR;Oui!^t^*uPz6V(1%yX9&T0=RNnt82kahTo^V zYR)J*IT#mo-=hAGvP;`NJuz;xGHn2$qAmTOrVZYG?Q#6c@Bb{k@~NN2OYR5i5g^+( z8?Vz0nQR{j9aQK}-)5W4a#wJWfotB`*S7K`CFz_N^*X`{l1V25oN2wU6cL6JGfM1} zgv;|YMQkhRG^;sm*LQL9ZD!wj(Fu%|0*G1U9vfmDAUYW#BamMrE~xp!LHCnCYhK&zlvzMpP7DdOb(r#HG1 z5_Yt9>nFFueeHhok5~?$>hL$WCbz+Z-T1ICU+cfG27Z_4E=RQEJKx~@EO%M@^VGbW zhgk)_ypqoCDAH-nsc(3F^OH7k{LZJ|g5&KCOjBo?WNdPNLUF?KLo4jd&zlT=rII7n zpLv{IYF8b4^%ie^8=abWgSSmCD_aMRI9_;0@w+}*@Z}%(LR_d9QLw?Wp5VFbmjD#^ zEm_nNS7P}(pSU0K-QLQhmLFHa{$_*MzV#RvFH}sM>UdAx;ylMtE1t_^?p<|Cw zRrc?}FWvi){JXi0AEca3iASK{NPpW88MeN%t(^Xs>k0Yr#+SuvRQs7ksmuEvX{CBe zy}5j{Wm!`luQSFxewK0*Ykz1m;jO@;{|N32MftHmmd#WX`eQj;F%~P8!`4FI2U2zA zM}kSZF`|<$Ta^Hp!O+_Yxsa~qhjHEZ3IOh~?Lsaebh5nG>ZMVWZrD6aGB&6qG4vT$ z>_y!*WVl_j8BwB>yj4R-{PzL}|I?Gh{@vg(DW;T>e07JmsyT#|{iepPb7CD5=O;BZ zc2sRIOu)+>SnW!#X|_ZcxF^0*uy8r-P?QCoJIiU}*`mT=%u(Jj3Zrs)4sEeh_NCFv z6eBIIZVyHyS8v~cB@dEK)OEx3i@|8%8MsN{r|?(UbVpF<6D^15@ejWrzx4heLn#F@NLQh%VoOuK^C1!+^p2>A zpOhU3&`Bpvy5C#*3))a1vCP&Kt! zmFx4Ykr%R}@Pya&N&0j0!Rmv-+I2+|oXCR}{ssZ<+X@UluMd}4%(M|agER0VI{86E z&}D_he_AZCa?0gA{viDh`YNW4;HewW;=|Y9>jTwB*CH8)s7To3__miEXR(~YRqcHu z>3&1q<{CVTjZ`NQp~Gib=WT;E{5^GpDbtUt>iC!)n@)+24JL2DxF3GM*OiWA|EPTi zG8vR~owCCtm;2|Fw{)BG_((}^lb5xR78^DEP;5ES1Xp>`o5kyOO!kH&Zx#qvGwZwq zK=m{E5*YB-2?%Y2rU14`RLEb8xIOz){d|f?V*B{5HPz`!vs?(=$!5)N-uT{EqiuWY zJZ7rQJ`>U1ha_@L2Jy`NO7vrRE0Muz1>MFwOg`Pk=fr z{^HlY1jo1zK(HtKIDhjzw)F(IT-?pd<75^Sl;s^X5nEcl3LI=EJn<~>8*e$r{vI%+ z&0tjp4h{tG`?ZSsed@FSD{VE-Ot|vU3*~Rggd=mms#q-ZU-%gC_t+l5TdxGRx^cy~ zFJx|D!zVefG4dc-ho8mPY98p}?QaYhgahY~ z+~H<(kEk3mD)S*?i`^8q5wM2}K6o~kco>rehEsBtbcKA>eiKtF z(S?P033&LkMZs`}n#zT9!qnUAGKZ zdPl4~)!NF`stPH3vIQP~;q-&k8N9o%xu2mug*H4aH#!tN{tJrja}zdG!Cc$kxO3+O z|Niwi@SdwDI6LhDswh2CGe_2vrS+h*`W;4BBV$IzwR#!HaubKs9k{F)@X3b{;?I1= z^YQ)<%-Bp4Bj%K7I%{=o%5ckpEuoh9rdeJDGn-eB>@JsZ4D3Hlr-YN)F01(jIQJ0n zeZTUz0RROBRV%hSpBBDP;p47iD+NCymwr1wb*;>33HEIro$!<+mDe?2EoAcTOXTACrP?|FNgutM&#|S>BO| zM2D?YG$>nfA3=M;)slU(p$?z@htoxaCidJqHym z;!o(S&HSbHK*Uq?qY6bSz_Fg-)$je8=C5qUhtx1=r-*pDs=s-LdQn8+14Ox+q%wYQ z#b*#j8J}BRJyqZNTo>QQva#m{t~U@I#sBJ{4z z>ieAp&W$@hYZ$G?snagSLci3Z-VQ%jL3+F&sarf-5wJp`wGEga&&PPn<8Q)dBY>7* z^Pt`g&*L678n&MO3!AXLVMl;|_^vIj_u%Ip9{`g;Y`@mPSpCzn>HcP<(>il}UnarR zPb>cPe|`@>{_K6YT8~h02G{FNT)Org)DI`Nxa>6(992Y);3p z%J<^cKT>CzuE7hXM?LY_fy-JSynS@ZY&Vo(cE%wXx+8yBf1s=&%K`~|Yrt`_#w2`E z61wK9EAZE4BdICxFbsikkv|0*DJ4(gEC~P$3`gwT5t%_Lm+vF61J83CdGu>E@OE?1 zAwB)C8=2qF2EM8T$*^#U$s<)1x$B(?i3~NS1JQQ zE9$&eIXJ|J9(Y0d9;lvlMXBABsJ1DT2I-)nJ`KF<6%}_Jwq?0m+ksu%s`#1LUBEsz z*a%SiEOE>0y5$*SwoGpPFNrZ`k`zG2ge^{R6PE!|9LimIYW@Je>398Ze9~ikc%>FV5i?s`v0C+eK-EvzyC9M{(}`~AlOsE1_CJxOsbgLjKAxa`M6yM4mpSY*M;bR}*%j}1n^H~*LpV@t2K~tHrvVafm(3z*B|w|ni{R>)V*X~uRkRFTU!-J{C<*|ZTC!O<|4#v#6u&*=g%~_0^Z!(;Q0TvFI%Yid0r(D7Ge8_7|?Tg^K z=YUWAc)>S(?o04&y@*NnpeT6y>UpTnzI5M^+}Yt7Lim$F=psG?;Ak#U#|G^i?|D>uFD$*AD^?{1M0w8s6S9oE( z_rHnRD-6!mE%OkzZI3q`n8}(ozKrwOnVn007cVXGdvq&<-Lt#pLxN)vd+_(P3N4X2 z=)f``M~{aZ@Es=LK2UQV>tL_dF^{mwD~Pt8gTbe`i$q$Vt&_E92!8nXVDh+ntI#3bc_Q7uR`#SEG@%| zrOFCF8MYH`X9C1bQt*`FClswV&0tA93JI7p5I+)&S#18?5~-+f`fSf_xpSO0YP5l5 zLeOn#bT4mijh&=WdyC~$%s-+#)F%RU$eo*- zuY+mA;xhj0KlQ1&azUXd{cY|Nuf#Q{oX_QT5;ZO=68Gy5`^N0)ciEMJa8Waa+1=nH3-LJ;QVCC-U%y4HSAig+!jV{HDiYZ=cDOZa1_$4-lPTQgt6))0O!PTIFNjFXbfdM-lS zUqt%(64rrG$H{HTU=7PMojo`wEfXi=G;En=d z4rW_}Jr0U$z3&C(dk@am->P#PVrgeIHGWsm)8d1kx4BnW4jn?wKyj zfQKw}n|P+6_FK+q9qsTx@mzG+Mn$&Z5we%#&iYd3BtD_%OcU~V9r)m3eBcM01cNDI z5%^Dd?E)6AQn~CJfdjO7L8^Oaya)gRS8`-J0 zhnfJS<^=ErhotH7h*@4ubM-Zz#Ilqe6vxp(ugFVkNG3ybeuIsEWL2On>E7^g_hqt9 zGiEsWUR#gNgyXP&h87Iyzl{h?<@ZsOr=1iK(*?& zZc%k!H0~+>PJ=RRb|CFgPQMnYQ^ugH1>$df-O)-%e)hu;+aXpW1)FJut9k|B@}s{O zKl$rFsvq^xr1cnDimHmL7GLtOHtR2fz6t=45}lf~PduI0Z)PU$4&t?h%%)K2+?mUC zD`gSpwwGIjdb{REhk;~I3fN6~=eB9NR@1H(EC~PLGr=-=9Q$kxj1+1SgN0V0X!fIS zd*;A6IMRY94he0Hx(}>wEA|0gzIg>Nd&>`dC(1*fn0yDDWa9Wix^A7jtZL^##rnYxhTk9mpt!{+Q#bJsslP?tDaO3|fY`DNA**c5HB9B{s-)M~#z0m~970qes!6(g5cA#VZAUpUvcDOjnic!8XRT;|% z6BaXV4ATOJM1tGy)4VBr48+Ww@nalivp;#3ag=euj1f*UX_lGu4_Vfo4j##GfkdHI zV)nn!w5f`o9AkRm5&4<@yYVxqn1H_C*4J1mR8&zb%3;CfSI>C%-35pH6XqGHTgCn% z@SYFO_}RCe$9>bLceZ&Y0J}2hJksUyCIWWmH*l;+xQ?q(5tOoz57!Uj+kf9D<0X$A z;OS>e+X^5y=auKYN8L@oYy57jB@{NZCd5mw4~6s6a}_f+`aX{IvSy~4WC5fqiUQlK ziiaL9_}^aszu`BY{xxi-4XP?;-Nq__m21gmZg;g{z#9D8ctz@=i*lpwFKQ-$rqPKP z+P#Fo{h;T8f0lFZIL(aZUyBK7Tn#!Hz6a#L`4Ao$m>{T^)V z>@&Y(qLPU?^=EE;C6CS!LpfZV$flQ#bPfxD#^!sYw0eNgAxQ^z+C9<>7vkt!je$%P z{Y|&V%-5?6!8W>RSV=O&6a#s_qGn*rx<|^ty@}pV`T*WF)io$_&oxkXe{8|Rn*5!P zvCdfJlwWI@>EcfQn)Pl;pWf<+tEcv@Qi`b*yy-))$FIHjwK%&0bgu9&@!)pHd}UZH z6RM5eIk1d3@;i{821Kjl9rAu4v9HwYpXxdBcnUsEUUa>9=2^vOeM-SMe&$Q?OuY=n z25ss8Gni|fmy>6hGXqo1LbRXCTL_qe!~G3@kG}ypdN+W> zDaU7*k7$n>+Xo*je_J;7f>ums&%R=_O8Xf7d>EkRLLLKRP-iWt=bz!fN#685Zgs+G zm8>qwS+uA9rjPls3>W1Hzfmq6KE`@pCUA=QVk@EDeI+hLe?=DU+uW$bGrUF`2D%v0 zC4QuPBfm&qiN9l8Kpt?5l%)NX_^$ky;0ei**pV4TzZbF=`VNfm-P&;ldYjjn z$oaKKfH|rhnW#M1CkYM&I?Q0Se^=EcdoW*$*vob3Ios`1A z4w=h(5-n9h$WiIS)}mN>)U5^B)xO08jeQ$0e+plS`{c8ogaCz z{4X-;1qcd6_*}8H{S+d2+slt}pa&@0&ICQ#D$d?n@Kdk3ig!G>#kpzY%O`_omb>Al zONRxMdjz*uw(;kBy@DegVI$|zb_id`U-{Zk!pRlI@r_O6mjun(*=ExpmoY=5Tk3ki zw&1WNN!jEgDJ#!`#&53$5Cj@+Id0?kgO3Wn<6nOruFls`N^v20&}$n9-F9rS)Y&;Y zeT^J9B?3t@6ui1X;?(NKlQ^y0_`n{8w(X3*U*aAwsjFI7c_l^gi|>6ozWVz<3s330 z@%(dw`3RVZ%~}8yZTtUCdB!B3W{vaTMy0r4m4vsgCV;*AVC=E3c$^Nfv8z{Z`Y1ZS zmUbL89^acCN@4@0VL7Je&{3*vXxg_$?CO=0H!+(qzH+b&$3!*ZdKmS!tGx~QW_ozV zL`%9x|J+K{EpYa(f_GeaA71<6Uq+GkMvUf%f)rnp?Q)@(Xr{w$ni6LxM^>ar{?>dC z(;sq^^s((_J~YnHiAOvD?eNUi@u~pH%ipQ-WnQ?oYir#Zrx6b61IcL+ zrxP6hDdaqMbht{`Ey>HBIoSZ=#N}P(IPMUdIY%0=?2`j8((mZu`mE=_eB}>9%N#T& z(OA6V6>gIGXXJIiqqb! zKx%OZv>nBV?`u44U=y@6q9vFe0Ok%F{2n>>>je+-v2Ge$UDeQVTKOC(EHB-uDK zNN7qh63_UyedjX(w7=uFsz9Y~PcYqmKVEm&!}3#@RieXSLhg{ILJkUUzJ11%Z=P}X zaKd&L=nPb;*eLL?f8|*S1be0Qy-v&Jl5TIt7tbS>bK4=(Hp;uj7FX*f%$Tu1oyA4H zjL*31UVQskyci$)z>JMdNhYl0?Bo!o{3q)d>#Gf_xh#^PS-;(!S&WHLW%z`E4}Nvl z&&R<2e!=x?@5g`hum2Pj?Y;M<>toe^IN-pu)SgF7iYn=WYvW)b>(?#4xU7_soj(8o zRjbz84*3(bHy@NT0Y&fwzxEIDZ9n!EIK1No_iiTWtdLCwrn#N4+zm}c(NBS(B!Rz# zBrLc^2e;k8^wlG_V^+`}jf+u9?0G`<${xjx9#6>6LlxK@%Z2TT{43(&uI{qf-TVCt~ne~2;G@5-suviVe zAc4`(WQ@&Vb!=!+Fyyo>O0*AEcY*c$9(y_H4WOJ>N$oIfe-HYuHapC$FDoUz<0**2 zoEG`x)fF02&g`mX$gqfrB$+^rI+v=6#Ak|Fti`V|#btMm@p? zXK+QY;o0k#+R}gDXO5w6_*utA11EE9wJW&!=%RvYZx65i%`L87sgTXw)uZ8dum`;J z7Zvp~AQQTeBI1FbPeIB7u0HhG^xv!Mtkqc9IZ(|P2I&SSe5L&(-I;4g%G0uw98~3r6lm}bcW9mdJDivO@g}S03$j1 zPkN2`62eKrQ?MQJizIJRkZ&=qgCf}X=%kO8vlHL78o|Qc^ z1i6e3&xy(=s|m+?12^<4L<;uH89X^(z&C%!C*ZR`{w|z9uh^7=s*>1|7^oq;#BRGU zkwEz143!b%2RmfDpPGtJ)+!$UoqT~Pv?!(mY>$9@9xV9z_q+^$>*u}`rA#O?bzW3d zZJ*JjX>XfGRuIl%WyW9yHy>d2E89Gh`VND!>#k{~8Kr@Yw$X8#TIc_7{@h=}-+1|V z;sy5?9Lxoxf>H#SDs(gVWdO}D7NHq^0nIiN`7n3WZk7@c-T!sY3HoY|#Hir0$iTs2 zR#t}J&8!V}zin<_#}FF+*}=F|rx?omM?`uOC%(#OcSptbwkM)$`VCK-)PeT>gUY0( zl#S@`Uno|1@~T#oILkg&+O`heD(<*r!W(|;_4v7W|DTwOcza%#^>Ec&V*Mdahu+c_ zMks3){5A~;!(=GtK5skuiQ22q5OJVgt`~bd#g|Lps!dx{;&FAQf{wQmY9m8*Stx}# z&VknOLC953D`cickQ9FKq94L|%C&OB3rv_cOU@Ln;W0kjz2Y@wv6{Q>5cQ55{=j^w zDo{#+h~gi;{BL6`$C!#hYLA1Qr}g%HR@4RvVJ6Ca8H~*Amtu+a{lnj|7K~*BTxIw~ ze=8@Xc#2ZmEB`+Gb2j+8PkI>V^*QXz9x5uHy8bM*!~kgM9_26jFgR z`y0ID1B!S5))of`Z55J~Hu!mX26+0Nf~#)^a5y!J%%^%t5lE3LP`U3B`B#T$^f%hU ze|^_MXNvRQKJ>dG+V~NEMtYp)_yy-Rn_fthon_Bk+4+LnV_vcA2^YR7@3Bf(?i=Rp z9{S%k`wB^}Zq8b5pYgIA0xbIp&NG8ae9-vh30G>9a9K0k(>wo?Z>z;yk{x2u-x3?9 z%`un3mq>nYx$JFUZX+u(pd(P&_YeJH|Evo%oXqIkb>;rL(@pL^ec#3NopEZo?6i6g zth73!3!rKCILagO$Sqf?6VaZjWm@Rtr{JY}-Z57WI!ex=efQZ&M3OerH#z~ngqmYI zG%EVYpXUaKzo~{&h#(lo2QX}+X*AkcdZ)v^L57})X2)ozwA|mqSIijMtLgH-8&WSn44iGuU5m#6zmnw^)v^HL?MPdpz*9OQOJ6JG6ajBdL#?wju7EdYHh zKn0+p+byOuci^q}zo7gGYL(v0F|$N~Q(#}P{ea>fzp}--gFV#RmIkRP&Yms!>DS-D zyDwLqnKsZmL;MsQvL(aUWa_#U^0Wa5w?S1@2p|R5>LncMF$DXl0$jnf_|C8SM98c- zJ}QtR>-!87pUfvMXC~YkQpS??!6g8D`@=#$OwV9HW{BhQOCr(voB*6`E1v&o!4JRY zd+~RF{=Zi#ZS8lCeCqxr?39=JYN(08c{(Pmu}l~qcuWo|Ve>7y4p2HQy9}S)JJSPx zwQpS@CPB4AO2PGd4S(Us{{(*c&HorLexN|+cB(%tA1p|ne^<^T-E~bSoa28A6j`^+OCNaOaB&n*vj+D5Y6{HfBUmx8o;&)+04A@X9O;b zX|a-^Pdf=zweL=#RSiDVpw{6Zhb~yZ#p8*B^ripy!84(RhU%N&4F}Wn1c?oKrAV<-fj;aX=2<~Mk$e*Qc5JI8&T4%hv2 z4s7Y*|IQmRdu2W*O1KFgkc%y1k>FwYlF7)HDTeeSUyC>vy6D)1I?&q&kojhMAewpJ zjh%fr2aYAZVGU-n-hns%68|CzHw3e+MIu_;bElitW#s2NTL-T39ioHy#hg!njW-BC zQhmm`qLd9@_JN zn2I#e(7l*H^ZbuEWNlV$Gx9PCu3ZJr>?!`**M9;o=?!dk#s&v?>i8mVZf}MzIdRcx zQi(P|?Tyj_;48^61N&3K)$N2=zy1V!J^qwlpa>va!FzvE`|AR8tRNk!swn&C@XP~` z%HNs$`9hq3#i{?s6ZWx78{j-I&u&ZRFQ}elH`30lg)N@&cLgO5UH;1fT+VsN&h+SB z+1+tD`v^bxkZ0b5gf+l)Iunn^g1L;vM}BN6-;iQ0QwXAOl-G*6FP?WcQ+yRHc*cA| z;E-0p4*@69yvTX^(_0S1i-WrnZ8Gj<_#F+b(Aq8ui7$C^>LtH}XR8Aq8g<;UkCb)C zws5*T8ZhCFijtAYT3|`$(*0Pn#s;mfBqI)<=#rta3)qFd4!~lzHmjCWGTq&Gn5gMbsbi%rN?Pz>dya)dwGy|9$^Xyr-|Fo4s@ofX!P};M{}{ zzvcwjKfJ-gX46orifON6u7aO_%>^7_!X(mzY7CSRS^Yzvp9+|z#r#6MDhg)NwiQ4s z_R1ly>veqe!CCx;uX-t-esad9wBz8s6J_MOoI78z<01r&XFSq=s<}w~Nsp`}=YQk2 z>58`~ZD0EaitSwS*h>oj*H``n{Eb)q1qcetG(og&2&h^y*V&hX1{xg$=W+KzyX>2E zDA`e>cgeBS{4^I(Xg}qDM#T&PP^7eEs!TY4avop%FFqT;@cx(K#Sd&CTVQXakg4`1 z{~F{N&me(7r!(xX;aW=P1SR>ZfE2Q8VO|jjy<-{vY|#N31udi3hjrk5oGX&(!AEyo zJQhjxvqsg+v5qndn7$4I;L`SbuW-<@DuU{$HRK6HJX?*m1aI8pFrM7+*G{_4-iwlw`YjgDPTdChmF>@x@41qvUz)N?#t zFEQY=NCwxgB$V9V8t*tU?N`-`Z9Rc%+x}Fh30L$8|L>ptR@`xSK~Z3D((s#PZ-(MH z0L&|eeBfJho-x7zu_n*_$IYH!t%nojyrin2qJN|fY}Q(E{>h5}>RTViBYT3IdL4)5 zEH2Ggarye?mQht2{!t)ixmPZ$q2_zZ_bU^+sF?{&v!MY9v;V1Wb|UQI zlhUmq$zYrThOef&X>5eaW?Go;p?u(%`8Tct5FJJfmCNWt79%~8aSK;T?P(_{_|1a{ zH29FdQ2S2rxQam?!a_`GrAlXz`q=9*a;WJqkNjzE@2IzT&uSHHXH1(t{m{cNEdP_V zJ=xk%rE<$tqih4{HOSjuab5N|`>-W1+X|dL1H9>-Tm0g0UBo?`{eBo>Fx$TR0p_;6 zjSjgBrYZdOS!B?Pf+M|&YkCD$fFcL@(EK#M;w2x8Km1wuKgYoy zd$Q0cvoG=o#@;-0%+SOiN>^x4vP>3~Q!{2oYFmaVzy^Z4RebDAfgk+2AH;w2D_;kN zV6)llvWx8iii&)Zp%H$I*?&#*QBKe}Q@>!=@=1adytf&vxpmySA{G&B%0AwD<&F4b z|MYj`Jy+g^NA48pkz!K-$P8?@kW!;_NNzdLEH|EKf3xf`s3m;e*|Y&oV-T$xAU=2~ zw%Kfnl{*00A7VVf^#k3;kS)J=knL={J|iE~Rq8FPqig)-&b28U5+G z4?Np!t%kmKgKY^q2LrhOGd?9BFRKG=adZ_MoR}Z9_^y~rMODSa4;Os@E4~-6c<;}( z^C9{&@7Mz4*zCB3Vsh5!F>$x^2f6cmU|_$x2_7JT4C=W%vlTEBl&+XvZCdh<0nWHHZt#7MWG zmIDf=IzrAFTMI&)>(Fee?_P^!yyE?%`Nx zJahd#fC|hU)q8#SS%WpvY6L}I6)4hO%M6^^Z17u80&ji$2@d!AN(3~t_cy?`^Ma>d zRUwD%#Yt|Rig@J#M0Lh=a2MWq*S+|G?TPjYat%|oJV4<&rP94@w&XK2SR9{?`(QP5G7^ke`7CyRtQ%tiKdgSc>T^-iTgR}Gln#H#yjKO;DbFyXM^?M^w*fa zG-UBV+4Z zqEAkaja^mpr=2>hwQ74+Fr;p0)q5V2e|7FY{4ASq=^g zs)(opTUFd~hu|k)eH9G5D!E4;M*F$};U9LeG=_b{x5*K>F+30DNgG{5!`bG&g~8 zsALm%6+kv^8_XoYi(UZy<$v?_`0(+wo`u+Yuh8@CpqDG;!e2J|O4j4f%d|qv%7Iu! zaS+KD3a#|EsP?uGjQe9ec7%(mRevO-F_3V;v_X5bY)L6QZk~2zQ|B zzb&pw`VIPRof->9#5V#Tw3+=xfS11VFy&hw*d%_ttJQu0ZNy|DVuagE|6%x^J)g%x z(tYLB594wCVE%t;TRbsM~2|xIje}@0#EDfm#zZ&iA$}z~I*a%&=S$U=#CLL~08;xlI0&v?1Ma;K_|E_0rMRlk zqAIW{8$5aA863|iP;GC=Vf}TPrLIt^*GhFPTwhDR{)TrQfETwdFWYI>L|0bN%)?=mG)aFQCz95 z2^(EyXXU=j6r0@dBKSKM{JR(KTF1D1N!8Yol&F(u$`fY@=OqKg;Q32mneL@Rc^^oL zOmb3*cL}AYttcFXBm`=bA8^n~}IwoE(6Iz-plzIy$Ty+iC} zd0R+$cbioOy^mg9|M+CtEK;QppbF`O0H_s3MUNhSQTeM7Jk#eVE4+8&3}};;v*2C7 zbOhWKOb}Fs)GbgpiksJf|MRua;*9KLk^)r4)T_2d0nM3uE<+qs`qv0hR8MHycfl4j zuFjXS#TEzCS=`W@cxV!Q=huERp1n9@o~O1BuS?W}=%^m#zCs?va;gyh7_%4V3yWS| z9~1wBhv383c<-sra{CV6qL{Q|djoj!^9$beTd%~Q_`XlZZ(Mp^OPWMbP~5jvRLr{V zpNa|^1aKQN!r|Y!)12dbq{jU>4L@}O^-b!n?RL1|taD$PV6+t!6fH&cNN?b8|H60T zFaPUr!2=Ie+%*^M)ryT&lu{uwL!_ce%VpDcR-~M}H{W$fd8Gvp`e-B)&f9K}f*7>b z@PjTtL%AOUOs^v$O_&J-HjVbrIm* z4KE&XjFROOF?kQ|GD-u?@mz!T<^1cih`Y;FSre{ne*=cD+)qfYw3|CYOQbYClx3M) z$)7s%>94Ho--<{aP8{UeY;o(`ylOuRrC=%(Uiri?;(z!*{xTkYUVHP-Br{~1QADE; z+&h`8@yhL2;!F?osY3BCmG{F?7XBpbk=wsVcnx&Aee@g#XdPoTyR5a~^7$Fx@wJcP zuFW29)ESeU!^Q0tT)TO-15!eYBX7nh501mztMoP%RX}IpV1EywH|9b*LjN zvh7KzC8Xv|N5QTwgGzW%CqHamqkU!mt|uzV`6}f*n)zV&Wh|R1!@%Jf5aFAhDaSuV1>AqIA+x${Z* zwG{vsa75ccf~rF5_5|gQd*sb`KTp07RUvJSTRVR*2~dIkg5&ono_JlwnN0z<02H#_ z0%y+&Uh|eMUj6t5oGW|&KIw!DVs1Jo<2sZwyvdOQfJ`{iBizJQs0jAuPCT={gwKEI zMflp^|1duA;TdI`P;C$(`39aj2>teNYY7EMw%$oHTp~ckc7|O^chh@W$T5ol|Csyp zc;B+CE)@NaxqiDl=TwtarBYSt69^EH_@ooXhl(QDU$Jjc6j4O3@M!KuE-E7W^m6Zg zg54A4J{7$ppn^bv1W7^?l0ZTdNKzqvQq4J4r|Is8ZV@X%)~u^WHk& zEn$o_hY`_kKQ;@MA3OFwGZ}14@o(T$8%wHMb=InFzrSTTlT4V(gr9%vo%rM5^IP$M zzUv?2h0j$?w*{MdLJ?_){7p4_{XiQLDH%DAWA28Dh?I~FW;c|`4?1jLHDEVQ^@U~! z3$;lHRx(H_1m3|Aze_wE(4h7rKDD?Z;Vak`rQktdqyIDH|<6#CmV4{`Ui3(np6DE{mZd>(G%xVv5JK|H zSm6cv-8-jV1Y?b%ckCc)#E zKW~GbZ421XKk*Cr(*N@h$X)l$*c`XL|LrX))oro)i~d_dIRWJ^u9URSLJ9;1uksq+Z&nw?v zp~o%H>a+if*m{Xrk(u*~HTxgZ4{CDVUyS8AfJYg#zeT6n>QPJ?Qn-~ikR{DB0*T7Z zch&Cm3LM5K)4t+AWXT`)Q{&)N$|F_-WR4x33vNGav*dO?;%;`e-ap|sR)CE$o$_$k z=hbvZym~TM8OsgLop5`x0-y+nahzb9Dn_jDiUvuc9rz}6f*1uX07@v=b2 zQFAB6aU2*o#yLKLGmWN^q8Xk18CM7_oS`CSdo%}^Fd%A|u8k;GJ`r>JeH=?;{>eHb zntJU)e{@vH_%)t!$2`h6=Vt7;GP%4`+vxkjdBI+^m+IR?f8DAO516OcSr$JJV9`m| zw)!D$Nf_j0oQhd^#2wWEUht0xT@rsxhy>p#$$Q`pZWyp9<=!qW-|{xs%J(u#a;zOj zUnQUwKvikm0tB-H54~vmC)2LJy8-R%+>)Mlz`KHv|ICc*=Qh}gV4l$ua{=~G34ZYP z*Kz)K#a`L*^8j473x2Efnn%UK%~JCU07Y=KUdJI00og!hgD30b_$$Bd)A30U?c%~k zL6PF`b?5ei(dN{-BM|!qZDu3~lbFGenOh0_>-6}l1?yxe%`A(h;-p`KHXCjA$@oNp zqKf%;#lfE7Irmh2>koe|zUl}5Al`fZeUPa%6fDyibTIg6|Hb(M`A>&$|5N|%N|xqV zT6^KQ+W3PAq!c|rU(#>+$#24+`PaW0k8R(97u;JgAND2xo}cs;1HK|6W+GC&@bWPT zWBjupw&%0?p$?4(?UcayN~q3f^NDswfZLP(C#ECji>)oY4*gAjz7wO482Jouk4(&i zH7y5J#0;U^xp)~~xv*HtU?5C?Vg96ZLJ5Cc!VjC-kObHHZTipg$N3>d4C~<1R~kIS zu~7J)YsGUPD0tt;-i^QXAO4@Xskb3h@fox36V?2Por%HAr9CJO4Ju^yEK=h&j1KyC z&9MO?9~g@3RK9nh#H$Wl223w)X9(!N^lNc2^nAb%)E*2)!o$dPZfNX zz=?m1Y~GsS+Y`iWGWZ;GZ0r1V@;s9WSR{*bO6 zo$wbrZciQj1H~uKt>N)K7}-F?HaN>mxsLJw+BLxg&j!Bg_q`lf>UGT8_5?k7^8$|N zW9JJGY;$Vj_>phPs~(4E71${Sx3+@U|NK!q{#dHJSDk_V(}EAY0hm7m$bLb3rGf(z zOA3zfez1J!!D)Se-L`&Hwf1f1zqcDAZrbIO3dV1kO_+anUq|g)dEE&o z^I@|$_VXiSv%Um>gBEbnpsK@%jx)XE^?G5^x?uA+9+)?3vhU?f%NQ_U5RaXO^ zd~>AND+#qB85gG?^dsH02PR|sJ@A4j#N6LeK9Ty%jQ>iU(}6D|zkz3P2Egj!CDek9 zTJsD(&X<+CByX6j9ZL=3yz_^XW~;a+VE>j-Itd)cj_(5fUMS&jibKlN1m~_a1s3k~ zdq-pi<&kZ?1wnd&apug8rMKfC?j%1;U^);}D9=#|#4`EQWs*S^d8LH;v063paUI1I zX4I7e^GWh`969`R1494yie%(2j|4vq*c>(w9IUk;8P76_SJW`k!_i`z-AY?bOZP=Z$6LHWgjBN z15B_hCw4j*ise_vOzjo@z#j;zRNS1epyC+2(++0Lm~ez|_@l2tJ(_WR7>*Iv=^6O9 zxQtbf3uo>3tyAQN=fehMK*TK5i9zJ)-XL~syyePmF~%ec-72IOyzsd@__;@4gFp2D z{SEl`H-0V79X|<~3QCzE2!6-7Iy}jo`=NZZZrf67`_pYat8;!<+r8Si7F4MFC`fCu zKu}aLl?}>fgDdqqzU!@j2VeNzpMwAJp8o?6-4C3`1U*E5&0mF1wY|?-JO_7Q3j4Na z5}}%X*GkOl^=)72O2j6($qfnl@_wzMw9dy-ZjmdG34c82*b(?ihTD;{B-~?)F~@uj z!#AHoZHcgchWp~PQbf2sV9UarOX&o4`j`DFO)BnDAlwWf@mfxyN=o+a+G+AGPEO}f z#qm+a!w+uo_7A-sf8yVK7S0`=#k847vm4;5+dgAz2V(|?YhILf3+8V+R_gUuI&X&X z!Z*usUxuflG#M^>o4Fgzoye2mtcB*ZdSrojaAV1nTt`kQGh&s$xeLF99rl@VN)LlR z^Mbj~8oI3j*Y&^A53VXhqF}v&wQ4EB=fNIoIdR5p%Sqcti3q;$-9Lao z^4(v6{evSM%z~l{DYfs`BSnyb71UP$kqAn!%B8$jtq%91ke?@BwEOgaDYtr;KIgce z2vrhh4(k->t7aEA(KDR!VZLor!Orf4 zH@~am!ug8LPTw-8ZLVo|AGq+i;KCaea(X!UFOv-@>gH~F?R^i)zp8WNTJ2*wN?QcH z6VD8!9Nua2+>ZDJ%`)-_=A$!iK9~>=bs;mBQM(k+(H4UMh}==v6kx?d#v&0{sRrS< zf}r2#__k=*<6CdTc<%8tVkrZa;de^ghV}(yyDQFs)iMnPj4(Q)K1iNm+5PMzLNCVq zU9KnkG=@yH=?WiDfKk?-pTww>KEXiAHwVCB-^(Ow6(}Reozd~pa6RUPX~fucI~m&= zx&)O3&5FfIR&>@^2-bj+M%8F2K9Wp=H)^fnpX@1SSkuQwl1$%DNUEJ5)`lSw+39lR zjexkr$jxT=WkJYBNvRw=&sIMRukmFGfBfx%IQcFiJW2kl)P5vphKM>IG250bAm>Dp?Zn-A;hzuAt}b9^HjSbLTn z#({cvCcuC!MtmD2!>{SMGib>lm`U=UUvYjKvv`J5T?WR7NJ`jOf}VA(QsQKJfFDEC z4W!Lvpsy}8K2{V3j*ox`9-Q$0v+u>1{PWMkyDq#Hn`r});#%D{pv-FenOKJP&lvG+ zV8;KFQtDbovazQrFOi6jDFEB3!xP%=jCx z`eyu<@BI_F_ns|wXFs8*`Oi{`Z80InA%*>eUB~P%`M>_q?nl0%!*imen~rmlU^9D? zi?BB~NyGT!lNEpVkKBvj^6;~8tzJfvU0k1U;L^=YKGEfEIj$kMupY~aBCi@{q5x2V zy`2dkd|dIK_ib^o3(P&gFtHXC{PL?RbUqNMgaoEg5b%j_7JBhdHzT?D=kRF|6i`E>u zz{ro|9;Y+v?Q&iwbf0J(`X{L^DrhSaQn#}8`FnGgq0~N)(M}UzICG~gC@BCv(Lm>vTXPH+mIu(&bTdx zd`>{x$~r>*@k&q#VQAopP7f!DBiLSYOcHG=igy|`%7_Kwo;W(~v?jxfIF)25W1_+M zhE)Pm;!FTbfYg(+EGHoVEwGWJ?TS)LIBXJB{~BhFj2{k|mi9`NN&HOw;WkEcE$ABV z9X8=)a%2AJ@a}Qv)KK0HgRdo$Gog2E8&xK+Ho&!n4=B+X?KS@QE=3QTMw9C*CmP}) z+MZg%vy@i8Ozl~j1TqPxB9NkGcSq}`^ZGd-dyoETt>qqt7HBo9e6m5M09(b*!@zI( z(|foz9jb16nA!ohTLFsVZ~ckq;mj^@IM2{h{Pj9*rqt{^_OuBTU_q_lmtY_S(hm+3 z+*9tyf!+~cQ0GQ;=m1r;Db?ehc9QUBhU`>K(++MNDz03d@xZh0#_#?0 ze;B{}6@Lbwe9z}#gAH0oZpJ*%sC7%aW(or5JP3!l$k|ts0uezetpg?^xHaFv+s?fW zKl+P5h@bqx58?8yC-K1jiUU#Lr~+HT)Q|MjX@*X7JN3Pz!Yj2!(8pE;VL~xmE{2~Z zZ;Y6Ej|A5JnQ2v$ugNb+EbLpkgKMnv`o=oJ7-RTS965?#<~9r-B_xZE6DK}A+MD#1 zw8`jIzU(WGBw%@R)aykY4n#bbQ3v1ree$$Q$&)lMH!f8To{9KUTxmAU_?UC4)l9!Y zw4m04S=%hvwQChOZ|>lK`aORif8taBG76-h2hdnuq%<8xAv-r#P<$U)&Cb|0h6^dx ze1`W|;fx>6_O@C+=~z7H6@VwVPqZa`GtKG8T0X?^SF^=C@WpTCNsvtU;#UNP(Z(=Mb;c*m7rz}NrVFUQ+H z_)fg=`2~7QWg~rS-c+Hb4~o~3uY)MeANC?fmHAiB|IF2>I|;EgJeTdyRe<&e;r72O z+9ZfMa@dP%!w=ajQl$tko>zRl%J%s0rp+s*Rt6RvCyAR%Vpx<58yV?Ku|K)2*fz*3w;6wubhPg|M)s9ncH|E~ zRQkzyW!Jv^Q2mxOj13^MYU%S=K3+y7m0X1@F^kEsjd6w{oS72LwP3<^mdNnEJm4^v zTR`s9x{;J>7KFtR@uz@B66?x9OkNw)P9w)86pBIN)R{SEPh8HO`@j`bvQ#eiBt<9P zSrweHXMVr)Lr8Ac(PP|MaabPon>$7_wzGl*^Cj^QfbALPvK;IZFGhS4P7-aH1^U1M z(Jr~XNukZSNf_2hw+u9KJDn-kF?FxRI1AxuIFwf3I~>yPm44t>nFM7*J7v27GSxCo zT0in0{jRHL=81KFG3wZ4ZUyWBk@@l;A!Y@H^3-{kuurCFZRG`if%xL?qJNHX% zf2@z8%B0g~Pk}?urz66pJ=L98W^rDRNlOl>mzUs(o2~PnSj6&T|2PI=`juj6FJBC- zsZalre3C|)^rP#)`;(3!t!p6!#QiPhL8Q+eQib#0S2GPU$p%h5!84dO+Xqh;aOmpE zq>nBb-Ii1;@zKhQPQF^9Rt2!Z;cejK7iRp9Py2j)9s1-92#AbpUkxJ(=T z>VrAjPvSV~Gv+l<`(Z`+6~eLHz&|HpmPU2x79y`$g}VlC4Y3oD9lXTy=HlUc2m*;8zxfVKgEG6D6r;BEg@ zp+_5FV_S-l^HxaJs%3Kq?|j1SFPIm?)}w&pcMd4hX%vaJww_$#`C_8c>vIV2QdFz1!!yGpm`w1M>htr!SqL`hJ37~z+F!Ok7FjD`uZP7JFWR^}gY%Ph5e&=;#ai zinWiy=->aH1^^5>U6%6!fbNj&ijoS+HRwIpt&DemD5;`MYsu1-?KL3oASF8RKrFEW z1>WeODlrc3bbZ8%+czaKTnmk~K{E~3BEtspzyD*)huBfsOf-)`jgpFi3A|8*p!PrF@#z7v`_YB+J_v&4Us~ ze;WX&4lR2HS=L#lH(hi48P9|l*P-81;+}{?+Uj^r8-Wx-DL^R#nN+47)x+y}_=E4L zZ{8lt^O{y_aV=7_1c6pjY-W7!mmgqy?ja6mZ9%jsHd=7`a>ZBtzI*VwFS`eqjt?`oVLbBqBY5{?zkrXN|0v4NEu20DoH|voqXIcD zkQtCtQOexjr7TLk?DQAnjp?@Yojm-Cjj%_vftxe{Y0u5y4n8k;+S?We=egS~^S}GA zxHUMh=3guUc4$4J=76h+nKuryLipIj&=1p{k-kBHI3saI_-Qd+7v^b~IBHT?Tu{CD_A zKl%^w(W@WB!w(fqwdfee>G;4-80(?0DFdpOYJ`G+!Knw`}Ggvw?F@3T&P#D!2vF9uj2fT^X=^i zwRzrZ&Z_gw4r^4z83y6Q#8V^lQ3}8YN>1%fc;usk*Sv0v-JOEtGWWWQc?QnhC3x%i zDsDXj$o>Yv9JzA{xE)Xe-9Gn|kU_zz9N7!Sd%=Ly09ORQq6G;a^CE|kwIJblR*0*0B@ZGR_&W9F z+~%om%O?@?r+AbRZn?m6w1D%MU(tP$^;d0KxgoIG((qvZV2GBeKvPVN4%$jA?o3(@ zyhM0g?n8;8wM+bxN~E(e$m;Jq_Mu-)vF6u(}^B1Y{rpg z$?dzGDIwy467Kwu_0xUAxA7;-dsUHFV7lSUvfRiw06o#p?LmZL z`bvOFfKtouF6v_+!dE@{zWEs0QGjo!6yqo@5^>@<<=IuQK%@UNq}R) zMik%tr=ExXoh^>%3MqYWzVQ?a>B9j+Qe=7y*{qdqCzcm~kN6pR4(`GO(7MGjuHm8b zAinz-e*xe5{U63lUpnDvThqIeMb!ss3Mm68P_7?l&j_dL9U+PiQJ(8-?&Pr^YonB- zmUcTAbLbZQ(E_T4TCIT80<8tmsg;?wkWEFI1d4*ATFa17NcQ570#mq?R6KDx_4v52>OVd_@|#iw>JTUe0P-a@tlCF}(1HsjEw-V)hBu zu1DqwXyAeH?oYx-b^#I8T2W`)B2Y1qKzw5+ zj%k%4mozG>n2}R_SY&x)lC@~_X+Eo^+=2YseAe;%@BLwqNVhx%eFoL7?mF_(z?%I0 zPO_vE*f8Mvbl7S75{ORIgh?hyX)Cg3J;r0Vp1^;3$A8BE?{(jUM=v~rd!Jo#a2HT- zRg`UkY&T7JH`_La4N5B{)27g*YAG)^UnEfR5ooek!0q3?NdHQE@r_~C>XXE*j))!Q z;)j8@nBTUMoqJ-&AO1b3@eRN8)9}=M8KvxC){2i`dlcK+PyJWzgMxj964di)l^8Je zG5{@q54~vNRIyhIt{xTqr&n!pc(VXIGgMj|b5)!^E%@-y0U!U*3OO|ael9@BvBx3B zR^{~b@Ve)}y!`HYTW@PcX-7DS`kR*K?!W9^hvpA$hPv@^$vg9hN*!=3-#gXePbK+f zRrD<(lqXoc=sAQYcvjP5g;_#a0dFb5kb^V<5Il!Q`Vs*sT{8_FYbb;d^|7FJ$P$7_ z13vLQ>#)UZ?t3oy39=*mqlWDbXncE7?+*7p&mG!#31l~tae120IB8)2+Q7x?r#IYU zw2jhJYbUwUU&;N2leI)p$$?Q4NC`yno;v84|cOmVafq9_<^0de5P; zNP~Hl?V5^*wv7$jmn1uj{6q(QbAs#(wXEzwlLBoefEoD7EC}5CV2uuCRSeT*AkuW5 z6Z8fAblsR1Ng*Pz(ep%)@vL7LTInEOKX@|AwsnL9hpz0gn#9Cq^h%d9wF~As(dEfH zw?Xv!U=2T`fdQ7UcGwb)CZ0pE80_#<)d^R_N&0JpcpHFk1t`+b1W=hKRjt#hU;eq{ zpFF&V-vp5g)uOBvFj@-q=8RAHA2xXL=N4Q!ItDgq`|WlLu3uAp=F4~RSAP4$IDdSz zbxvjKZ;Lb83oL11eK5Y{4xtIN^g)Dzf{IBe+*@9N1Kf?Ow@~#K?k_LGU;p7B$4|ZY zA|8CO;CNdxb#sy$yfxhex}Pz5kW5WBZu_u!5JA~3jOr_FmO1p;bhx<$>)fsQ8{!8C ze8-{+Jh@P`y`fTjKr7v+cEM{)mbP19TNOuJ#a7X_I9hUm7-%T~HU-$51UnNj^>ZT{ zuNvhtwLh2+Rx`*Rp{yKrV4XG_gbT(KpE-qT13>0K^8kT5jPUJ9E|dL8sz1$ghx|nFTd5$Hf7hlO^MsJ?lQeqY8mzIzTgbc0a8xj^}A6MHqie#=_1J)jQ7N zHzOf}C)^GHpwG*sENfU>*B=cDkaL0kdkjM4x=_TcOI3imKxctY6;%`k1yVLRnkz0{ zol&rZ&v@`R;fp@~58^Xl`~`UU%!{$XrfXA;Hcm{Q)Wl358GkJ&*iM3#YOWQQaC-}2 z>_LR?j0mp7UEneb@>l)o?K?>)F~R)ST9c%}>0}J2mKs@W<4!c_@=Jym1CII@PKP?S z$=4?+2H%w7kyty;W~$D3?Al{^>xX_8KlYygf}eTc>v8qwQ@H=`4Ne~j=Is_06{S=_ z3$QJKR8*;u5`KpL+oFTc&oxtpHUMBfWAAUq^HA<&&FYy>9AiZTh}L+2UXqDDSuYk_YXW3qUJDAz&aXR6X2_p^T008^Nq~8oXZU!r2c}OzZ z;HAiOuPd%r0mpyoP1f^=HCj)&>^H|46D#cU+xTMJ-Qq*Ywbhm05ows+DeRo+s%22V z6B=DiU{l-4>x|Fsz7Qjg7b)2p8aSa-9rl+87Fb+-E3J~Cj&pL*{Ta^!B^>&|fFBY; zFnPA06JI{4$`f!I=sXc-1P&4POo8ucX&IYzerO&5aO>m5 z!So8+c%uT*J|nNvZI%XtCXQS*6KpdU6_6^B+I}~BS{*69<3H6l2vFPtJh=2R$5>qv zo;+0E3bBsIm3Il!wigPW5!}p1kw4@w=oZ+YT1VY%IqjeAz9Rg4gfS2DwobO=VS_oL z7dEr5A#a3lFp?CS_`$x`k~_C!le?*u9T+8nSqzj&-#-sOd>{r4a{GygK4aDKcc<4M zN5~`ni^LB-Ql^=pSa?AGo0o42>3M?_2{Sw)R_k}8^7)apNW^;_bGVcU7vuv%Nb1kdQu{4{FT!tRwPY#)5rL+HrT(?l4)of zoF8DjuULg*c@dR&^tyHqokRC41Utbs4Nt~1oM6-^0Oe`c#)8ktTe*>VY#>k52ECu->q(O@$f1A@TCvpJ!jvG_dM}lyz|5F z#3Sb(!S(AGaIiPy-n#^Q(*|8M297;K6aUUwZmID4(t5)LF)djxr4#ySbXe$xYUBX4|ehP_gB2;^@li^1oNg1 zlFv}g6*zrn!rQ*D;^w;)<#)M1232Fy8j`3{qZqWRZ-`D_+J%iGykf- z{J+vHz56k8;D7~J8t||nBca5AbrZad@6pg!*7)KY*arp}zU#HO&(9G#P#10lJL=~U zJ^byq;&dW^d?3PA*5gYIU=XenbTKZj{|w*t9?k<}lf|e+yWfkI>0{^L`+rJ*2>Wu^ zG~i(}@xGg$j0cy=yjngBzfN!@_{swb?Yi4E`~Q`81_#$&;)*vM@LxPzgYS-om5<81 z0uOLP${E*_aPmRTRb*&ofeE(5_hfV!P;mYdqV^;O9qw6@FI^5GP|?VW5ndkNabrQH z*-V@aJ*M{wXd{f-1WKWCPCN4A&o7&Sy! zU#8YO8=OFz*BNI91CK_4H`V3VzO3QkBzLGSAa<)*cIdq0PHj1lS+T{{#W5W4OMDx6 z$?ZwPM^bs~P#dm}j&#{dds{=B{ckW@=id$m6nlGs?ChX??3d?%cJU+l3lN!AwYY}| z!bOwa;w`Y{1C{V}*U@kb`&iEUD>_Oar*9JG|EwosNG|x=>lJG8I zvT8PVNM8Za=K&!ACII_#H}1ysu%p0{p2z*ugZQN@7xCra`3Bto+zF7`w+(1-$MO|k}x0;LTC*Z@EbNbw2@!^Z4`Y*XktC8fbHA^WDK_{oRl z0aYKA98SISGbXxkG=FP+^Mkb<&nIHk!^Y6z5BWxCeUN9zu{9S7GoQw79ehP3 zzsYwKj@*G)0KSr;>z>Dp{=BcEZErguRSMa5T5Z6>f=Ea${jiW|2oZrlV!3wHN5xcAiExM%md zIJJ2ecBZ}No7_iQ@@QuUC}ux9AQJQ7M-OgYsut@6VV8=9kUFf2THB@s@63d}rAX1n znBZ|;addkNLB**9;I7kxovCYzR>)jX z>eOAg0;LTC_@+Aqd&6HCQXWVsrgQ?$K0SvNaL(IF>aW#_2~@R{_?zCLnjM+VtGy8i<`R@> zw5>+wyHyl217~)2apA^8hf{*;*7ILtG$c*Jw2Oxdr z*TH>w=-g-gYlZ6EdEegvz)R>Ai0uq^ALe`1WtavCyz?6|4Qf0$ zjtj}4^TXOy^+6=o5$*P1F)DSnyu6Siby$Wg#}I<;Ae7-`*b%=dzgcv`L(zk8@OZ0U z&ur5KCdA*Bj|N+1XafWOV_Q*Q(oN-O2>KRXSZA2f+cMe%A5@@_k@|OQykwdOU!_Aa zr-`3wE?|62vU#Q-@;fUJX=Z$Qv_{j2o1XA&*$fW?kfhh@tPTLsXbTnN*3BuWyph`- zxH}F41We|7FRw;}E-H{~r4DTbEMB6X0zqnu%5%F^M-9GYMtG+a$R}BK!X4gPyOgXi z`O5I49=|rQ5#J80vyOmJVc%2SHGITn!HZ^HEIt>W@y3l|rM}Cr*AXhWI)mTKGhPWk z;hI+XCj3JtNj^eLq&o#^P{439yjKPQif;ozUj-l#K`BM6R(bI+|J?Cwk8j8e6w=lu z3d_I&LvPIZq(8O61HYl*=B+I@wr6o8IJ~L&$%mKx$ ze{#s^TL5H&B^yP6qJmSn4|mJ6u|dW0d=<~#yb%BD7v75R_`wh3MK9f8J69C5rPPUJ z#?ye3$q#NVR4Tk0TkfLcPf1!EC_oap^oJ2tyH#7G7JLWKSS#Z6W>0V>0-Or?RAjH( zb-|J=LCosdtWo>3PAmBbJAs-y|CSh9XDav^x?;X1%x7={otHk?NA_Wfsy%Sn%CLIE z=mRHRPDKXZwYtUbnY~z0m!Y&Y(WHP*9pRw1C(;GJH!`~VUL@jlD)jbb!?j&wmEiJ>fEbb*7|XLoM`5wnw+|hN4ujm+%^soN9+4C{%xj{y~>hCu?ylyVhOdIuJdKk-(uJh zB-P<|6I|!L(mn5lnm^C@@i}A?ZK#3|o(y=l_$wnDUmklYB%%AJLVjyfXaO*Z#Z&f4 zeR^0bwDc8l>PbvLcK1=y>bF86 zYX3(7$fmuO2CC<-J0N8`dgePvC#qoUGd_zCHcl?Vj^m+ky2yuXU)?Cbv&M$i9 z^e6TX>VKM#Q52$eZnOQh4*;M_Y+Iti^wfbfKgxz@G_cOoK)_g@&k`^{#rZ=F92l%o zj#ST$WwbX_5Xp7#FaVJ3fAkTVsRVze?ZGxr?7SL!E4J+Q2Ac_=DGt}20+E=qI`%n3 z&wliItDg}UqB&Oesk7U*!JHo6D)PQO>#661OCx@wuEp3g5JS-h}GH7!>m}afNXa3V-LTyeB;O7Rlk=q2T{obdLjV!3f}+fEuQnzJ?!ik%-TBI zbygf42;TjX89()lPvQ$d{eE1UZ=j&`7sWNa!eSdOp<}#kKJ>WBrlR!u{Mzf?)=SvI z4(`Ie*eQ46sqLfqGr#^f;vMh1fS>u$bv*b`TajQ#585a=+n;rayfaGn5iv0f?Ia&{ zlE0HA+R-*bmyPC#4)z;9xRyq(V3$6J;&6Qsj&(<=lz;+U1SaYCear?L18)+r4gIo0 zw5d-EY^2l1N-A^GlHtY3p+O*9V|H3_b$a_l_H+S8qrP`=*PD$kRpQP2tDEWM-Z628 z>y!BNG$4$HdkH#7mQL<~p9OCl@~B-ui_i>%vx@_hiP3y~%+3d1E3rNCCF03g*AR1^ zqt1WuAQZIqcr)MA)(oI+W5MiX_zntf6AsefkzQ0Vm45Ka4$by-9Q~S6U825J0$smg zx)Og_cxqu)mI$;%gHQ*dU~hj1 zum6QDKJu{{`Bq!fvh&?5|(MM}XyiF1pk~7bM!t z14*opT;tB4(IuMFI7z^ANj>4jHV`*f8qk4l_PF1)a6=joK3F$VM1I@59u9YCKvri_Q@(EmSpRq+~}-UaHhU= zE6t9+!81oSE``do3=709AspM65LP(n=qN7&Ln;T?1n-0}y{u^xa6L4605L}xij@;R zremO)Iyt-#|0I5;M3a(hcu=R{K#`>Fk0u^4IwUh4;8-D^6>RWrrn@^uSl}8~4iF#X z6@6SF_QSD^yj>vm3A|dzDGi?#=U4>tu^!>$*VcM^n?VfJn2cK$vV@K|&r~OV8eQD3 zz~6cx6aA)@0c}e_vHqUy?$qhS@2>y!%47I4Y@|Zkrt(-g*wYme=#?4wexBenzGM%V zZysSPEwoP?pv(nztN6M<{yaSYo`M_4hrndZ1Zf$j1vy*szzLX>FMS07A9mMDPf+aW z9`2Qgu#Z#N>UHb^xLtSg=l;=8)c3R zekZNN%d3ZMAZp>?e1J_HAMhC+rX9ST)!Hw4Ms@j{GULueUot!NR&21$NHqTQ06^$+ z1SvXg8UQU>rLr-e8Z+_c=4+e!_@Fbb#BjQ_07WLhqxwZE4#%q={npAA% zhIal7!qFPfd=!9ePsvgUf94-CJ^TmVGqFL}>YKd~eB*->5AbwJyLD?G86WXm~%0rV)( zB3}D2ks~9Ayu)$jA{z88s_Lj4Lz^p28p^68#AUlchOaB&QgZ~6I{LYix+_d^2!zu@ z?*~4u44O!~PwE?b6~$MHK+N`=uSq?24H1sIoBXE-hWPXNKQt^|=d>S;+Qh8TVqIND z3qIreGgmthnWPQ1Ov{Ex-1cHMuQ{WdLWWoE@) z`@4Am8B#RX@QbK#bR

    M6lo<)3;z+w8%b5w<1`+8Lc&2QY#qtQFxtn8oW`y1uEb20PnY)%E{xn z;OZyhSeJpi%?3DENc!?*y^WZ7YFH3dlZbn6xpd3W2|grWF&Uij5tho=Jp4+u9!|jZ z%MZ=~Yg?|wZ89gaUfU#H!DLZZZH{bbB`>P81!%iy?E{OPD%|uh4E}D+m8RVh==ct8 z^QpYPDbNhPG#$Z}5?k5SZAR2`#l?gKD1pO;7rJO2shz#OnVHLTJu>&=HDJ5UhXB?F z=NG&3a39-Zq?elfApAQ(r9^Cv3jJ0R-i@UgxVuY^yzS!tUe;DLM$wVrI<8QES_{Ft zQkiIjK!Wk9*hO6H2Aws%YH5d= z-P?AwPfeK}ciirp2%?l`Zy?eX&N^Uf=@~ z*3mSGs<%>Uwimn3J05`hL(t*3S8#I10~kKP*iGPh2sQ?RvkxMWjFlfgNAe@+%t3`y z?viA@<^l5#uj72gCo=~3C%VTtcRD05*_zC84QK}k-9ugyRe%T+W@_TT7}|P&kYYz7 z>GvS{A9CRFVc_N4CmtU;bl3xLiFHLaA73fXdw0|R8Qh9Ik#b8QCRGMpYUMAQP`V9& z^_PNKB}gt&CuQlq`6NbY$Ne~QvrOs}(K#`hdHF&|N}wzX0EulL$Gu+Q35PUw(OFr> zagU|!zHVRB235!gLIO0;0N!Q@^M5KUT9`L1O}evJ;(yv-4SA|z?>>naA|RhoXn7%n zcbL0ElV652NpVM94o4J_U6#|hy9hnB%Ht+EZwLZTY05EcIg?bbc6MMcEL~5JD}bJ* zp_FqQBx3)SrnV%XTt;(8~Mj%cWeTD@rrJTU4cvKsV+@5UQW3-FU z7pQ8-toLT+EbNJJ0ILv$DAi#y=;;b z7FRlcB!cQ?>PiC5)uV~PdK-9lL0OG0v3Frzjh}hX_eBKP>jTvGtSNWymK6b6qdsLY zRxdVfMk3SQZt|bAv`%EMlxgr9Wg;Q)uGBz@BdCzPxIM4$cmk5QYr^TDJ(v0mO1;{dtnYo9S19?r)8kuy#FJXJ z)9LFxA$nNbgYcVU9N*03Lh5*zfFW@`fSz~@_^`V1e9Dw>{`N8yPgrMuUo)Wd>F5F* z^T&lK>~A-S<YR965#A*Ao-VtNyu7E>sqv#SbAWV8fSf-!U zi8{}b^Yn>Yj&n7CD}B2C!|Aj5OxxGPo@nLM_3!aT>Gz5We&0OXRDBDtF70WAPk!W9 zDevbff3P_LaxYbGKl#_>ZB*$j&*{;Sc+B@QUWmZ$-BWtf_xv&P!2$M}w&Ne_3hWpY z*QB%`^oBl|!OG9wG5va4>VRUzTNk=<2zBaS!}jd*^J_lY=fn&J#x-|Wz<(~UnYeSV7>atz0Q*`xq3@OZbY+k%EbYB;hvm^J- z&R;#aK>l=+!=DO8ROKD=k!_cB983cju5NEdo^=F&nxJA0gzO#|6)M8!sA&fBdV#rIouyU#a1%FhOhDLG+v zHLbxrah!x^V=d+7Y8~J^wlW5!M5fPkxqZXWBLXlQE9#Y|h z4!-N-DGX&Z&hmt7K0=aILDubn>IGN-PCMH9UvI)VB_Ev6cbIQ`rW61&F8CRr{R{C2 zzVgpty#49;&?g|ro6qrZ-o;=bR{N;gc}mh2f(|LNj`&X}+&>Eok)d-X!eq_Yz0Kbt z2eNvr8?^QI13c4r)v+i2Q@chb>u>Lu7soq6Spal9mT8CHy+8CZjWqnF1|wpCSD<~O zll|KZ;>F7o_YaCwfFWoIhL|L$c;gpavMi<3#~2-uQ~2 zNX>ibA%@;J`+bn<@xnV0Cp;;mf5JZ9{yP>5wNo&~FRI-iO)6z27N==+k*UCqYVr2~ zNoUaFpN3=2@x09YcxLzBj=FsW@nUZh;YHc?HeM43#Zg{>DVXh0E~yZqI=r(b8t*{l zDw6yZ`>uJf;`-!)$>r_sEZzL=@runR z1ttodkU9Bgc74)o09m~4kmHCYnO3AbS0T75E$OZEAr#Y`iq(s2yYW!j5?U9EYWzzX zC2b@jv%UTdjLNN_-y(xxPfe;M1*uQCuo zGgA8KL3=+Dh#EIdFw*Fa%VZ=acnA_iK25!s~dbdLj8N_s~b*b)X)CrwVelC8}U7~jdz=ByUclzUYxNI-u zGR}!=y5%5z8l_gD)9piZ>yW>x3?SPw+vW!}MdIz|!~;LYGAZG`#{kkk7en@e==fKtcT!&!p2FQFiL{DbrG|%%A{8jrczN0#{NT&NE4^*o^ zn6D3ee3dnvy9M}n%1q6(-1ay>PyaJROWy2+*vejJf&S(MmvZzU*O5AeiY-7!a<8hQ zd7nldco1I1%I)Mw`5te}M(B6i2iI%z^$-&B5=E@^*8T)S&nU^~)pdR7+(i)jsJhRI z7WaGCPqv|O`MLc7F)mW14LZGAZ3HS9DtLWA@apA>>(#G#8trzgu|-4eJI4bL_0?g6G_ONwuZEZU=$!Se)##c5Ak>cpBQp|3+1=0k6e*W-5_Ep zL9@)Q8D{_HFZCG%E>u^0`h@#aea1r!X;SY>@lJAKYtoc;Bh6y_C;m`^G0aw^((CpV z^*R3~dqtROjN4S_?;c&=F`fA_2GtqM|F@XgC0hg?AqbGit ztpd1Q4s!$7+X!8_AA;!de{vGcJ zdvf`hvCQ4LjFlYkxP$x?Fuy6A-Y4}=pYl$(0Fc~hcAFau!IkoTjr56jKiNZg_Dkts zw6kLIsa|!#=wd>patfCzE)rd(yUtv;{uxD>pkC(*$9qa{VIQ(N*^;Qz$+l6xF0Gub zbtHA)n~mf<3d)wpE*7N=5x`2&s&q!3UE7CTO{2ngqa-vD!Q-RP&AX*hS*J0;d$o2y zUw|D3*Xqzd|1S2PS7wbT2qM7PsR2Y{q8PZI4{fy~Wuink9N2=gx{~eJrODIx&fT8d zt%jy_ZFX0Iw>Hw~>&*q7x151BK%lqpEl&zxZ#YGE=_z9M`1GJqWmKhPrL`Rvmsu;S zw5#V-|1=pM3S0){VgYGf@OhtchyVKRzmBi_^IwJ^xc(y?$9$Unw3!jl1PC1yo$rj$ zPao7|I#CgN@t9ig=24OTzZ-?`zSnoGO34`?>!jrtcy|@ob|Ude%RF#_r36qJIL9MC z@7a&X@Bev!5kLNYKUTi~!;f;jq4WKwL!jpYD7`u=l7t+5`tM=^J*)-ZRz!%ED+8=G z1dxAt{ACBFuarV3>n*N?SC}KpUJnBJR^G_?G-56H!K5@?p=(~BTvJw^C8XL3^4FGp z@ycjDUjF;7alyjzKm)GO~?*aK?TjZa#oWqoP{ zTfun+UcNZ->b}0eL^glkls6Z)LI4yozbpv(BwFDy)y!iiFXUx8@nCG$ET$^`DyJtI zU)xc1!62uocA!}E$!N1WiTKJ6pmk5Lo#usyLPfU2n+CXBp9j`4-6WZhG?j9JGuJI9Cz~21ZT{f^GrWbjNmi92kLRJA5v>lqUaLB>a^M z8Lmg(o1EStj*fbDB~IE8&y`wgx50!;<5Qi><{Y1lJyg1wVX0fZSN7-E4&UkUTjkvO zcTB!xqmyiDXBOaWvr;Jitu5{@hb?LEuX?X?23`h*_ zcVRkNq*WpeT*sA+$1{kw^6!+|PKDvC8{#4p#Cxof;4V?02gUup)t+bjs%rZlEoGf} zjUdP#`St-y7W%Ap;it>U{hO}m%qaVBZocH53?W-VPO=ndQ2OTOELaH2J&9^~7w-Wl z`T1(eELV{(gM5>mD&$beG2dc&K!8&)t_MEnQx3d+{saAnKl_vL!PoyE9LL4_QTTm> z&FQjz^5dFpZX&s41yO0GD3zeTa^k~v%8`M2yp=sXee}|+w)WhtQsx-IS1Y|Cf|Y?r zK^t5fzU+KEH&LgN%vY!7HtBhK>T>9bPrds*{LZiZ4*ZPI{xW?3M^4By;M4;;j*5RH zeZc(#h0}%=?we+#C0=Tkj4EQM&s?2NW_XZk_^z=^?v<%M4okzZsp!jO=cc%-*?SHp<)knoGah?UOm#q2nS005W*fmc&BSw`FDv^ zyboVA%!vHeu8R{Gj?&~)__qQsBT307JxF}<`0MhF8$;6Gc_-GSFYR;>+@| zcklt@F=^f&=0nFt?1eD5W4Ak~`$EqdYC&n&a-vPCUbTNGNdg~S=DZ`1dnFSK+4x7@ zg(F1L&ENbmoWo^#w=C4PwC?<_;ki59O23`oG?6VNe_Es_s|=SxM6qYOl+L!N{VC)r4S_Ye?DoiF3Q^lF zOD;%*U9l_ouYprbTGd))+ESl|Ti$ZD^LR7J%cV))9Q~G_)0YH_ficdd%#1H-FKUB{ zAYh}Tc{&H~<({$)F|gKHa0_BWY463>3G_J|iKF1l}dp ze4xT!sDxLFNBCD(;(^5AnBMTl`z~AC8C#&>nQtE$@-sWacU7fKL0Q`rnF#@T6R?1GaQI!#l!6@>0WVko+|LPsAo~D?V1`m>dU96f4Djr=hp+EeYGR z(`$AbHc7HrfQxW1iVA=O=P7vk>cp$pitA``k9hZ(<>#tBxu4ao{`DT{K3FFGv29bk zjNgS2YNOZ#$sr~rxOlG{_#_@+0xvTHA!2v69ml&wtBfxkzXQZ$A|VP!M|%ej-bfM5 z!jxZ~s37L3F6~qyyGUD1Ur-`NQT@#a+6t`?`*X1`qaCUG%Yvn@Ta~7$iv0)w#o@h< zmv5L@K~vj0qGA5pL@?uJ*nf5us^mUgADZQ&=dR-34N^9V&PYfmymh!+ znj<@+x!!=`%0eH#1f{*$!s5=33d|$FcN!0dgq8T(aV3n5h@0lv(FiK_6^lXainGtD z0}g{+85S?DDH36>1;Yt<%UT24PhEn9! zyVhFK-7ID<=`ZQ8l#sdaJBAyp0W3T30-6rM)p9$XrSS%M9Z+)Mu{ox#J+iGV=3?>k z^;?REaW+I*kgM2Y4Pcp+h|qT2@;A@lU5)^SV0$wO5Z!97key>hLg?3$nzU7aUO=!y z$yJCyKrQJHvZFovT?UbMj_*qaXr|eNy0tU1E>EC&8E>CqkNtn%2ee?dM7?#pi%p;f+ouA&;r4T3_5GeYH2R zODMG)ZDkW_mlL0PWq95z>%SRKCg#V=s02UN!6*O2@N5i{XT68j>(EpM3O zJ|vY+f5GJFEA1&RPFQ5hvpd(N>m&r7WxVG)fLD7JTdpoH^8+P*q|G=9t`j0DsP_FCl zwmQeF7N6;N?PHTq$x4GChhxoBtvD5-Bg)(dk<_T(9Rwgx7pJXh+3hreGL_Ll?k1bH zqXfQgwEojVkI+SBg;V+7B_WbQRtYWuukbKk5`P6Rh@!1^1V42|yED4=P?Bvo-KXlx z<|nNi@E4JieC!-zp6pwL@_PZ(=q}~8J<_HX0vs1SKrm1iI1*so5AI(8k3-8M4AVYO zX$h#=hObO|`FUHxJSCVbcsYal?C!uN_TZ2$?^sga1uFCY?ih7vp$RP0W;uEA$JquL zYz@i-bOpV7|Cyq%kcS)DBfwQ@LI8b0kHD5`9ujS&TNa1$Rw9T{-bUkW+t4ha0G{n> z6lR55d*ba)B6dL|=+H@x19JqKktW%zxxLv$1(Zw#2ow(q0P}St-w;_BUW6xze+1-KW6fsA-S7h z!JZOKX|{hih`GVdW`7dZ-65UR#r0gF=`-3YN{_@Fda77!^lbBx#cm`@NW30!PAZN$ zaWw`+FZdt-_kOedJ74x6$wxk_xIY!+BDf9#yKNa{HzK9!Ju5OIlcXX8N#9j&qdlcM zC)s?*&@Par5T}1+|GDFpSL_qG-4BB{qr<4{d1i37Vx7bV&T>3Pmi{S_X#EGirGDWb zBrhVeuVnYbWmdPd^6xUbbWl^7Pr;j?N)NwrQW}W*>R;%$IB4@jbs83Gt;~VPN5zX5 zCtlqv&cW9s!?H7yXRYbMM(UJn+7XKMr9h9%%-O7ti_AwHZ_U2g+Woq>qU|@!F;;#< zH2dpOwGDoJ63ON7{Px?jgzTqDd&#N8#$p94%a^>M7)4@WozxICQ&{k$^j~pWd%TV)DV3nx)zHq z-wpwu*#tnA;$b|Ej~ogm%SKKXw<2*4miXmy@?KAzL+1p50J?h(pjY*;2hQWb!y>4j z6THL0t|8P1OSyJlW6>5hediLDi&i#yM9o*~_1wWj#TlRIotNQkero{rR~xAPX1M88 zpnfN;+C85mCIh8nv#3Cp7KPpdfNZQDqyh$#_^x?^2GrXvv;@itJhExN--GL2w81n_ zOJd#nRg#j05UuG4dzc z@NsV+C}sIsm~t%Zrp-{XKJA+jzqjVj;AXke>tSypK2+WU|3^;vj>r-(o-; z3hKlF(bS(VoKNSEhLQJ-Dj0uwB9h_8DT}um2-NSX1;p+dq?N^>M?&UhWzl^i{-vPe z&vg!i)_G3G>`mt_0mm4sfPVhxLjQyB{*C&-{~N!`+Go5OF?kgJ8MN|$$*bFUPMmVo z$=y=hBvk2|Qe6+Kt_O|gA}NXUR$h?z$A;LPzZjs*t@{k@G4Vk5o)d9%>p#?QO-R(} ziN}J?G1=$AqbNG)jDA()R-!0b=(7+wBhamwL2MmmB+tBFo2bKq=8mjF>uzmGZbxlKc`v*(<|V9?pS{>xnRoeWAn! z5dR&oG+;8Ho{z{eN^%$S6NsoC@v?=ubvohwBmkd$}Yc?f3O1x1WNB>RyW&)7805&h|I?jm^)`Nd0<;5n6R5UjM-?( z2a^@{I@%ekT*_nZN_toY`*fi{03wAJ*NNWNF5^p~y^EK8GG!H97k&%l)LA?;bXAvg zxsjS(k6H4iqg~HCBD|fQGbokoa~G1DyK%5gb$8MUAyBDWy49#g`6s$3TBif*@(w@x z+C)e(@?G__bGzQr>N7prTwCp{Q*}a??4zyd$c~DPZ8sU3;+3MbY4|RnYMrtDIvjA7 z-RxWRawm^+(CK9sWi~(Vf$Mp}anzj{v%G{p{Q^&T@PnUXafY2*sJ;Ss7s2HY@Fxo2 zk_q8UJVft0&W)6Lz^q9(xl$&qEN0rtVE&NTl-lzFgZD*>6067lWc_*ID-!~R*2PMR z?-nQ){VKX3JTK&D9|R0HJ0k8&!;C+bhuT*+yE(wC$%3}>i`yvxvNsB`algDrg(+T% zpl)yL24q0)295#9Rq$gzPw=Py&L7d={r~C3i` zw}Wsl)!IWk^0j0WA6hs$VS0A^;!miWOeM%M$wJ#O=d4XGUOm2Iz?-l>I4E z8igEqyd3fnym=qD!rlVh`(uGMJK4A8E;c0nq*;CGGIO#%sP>&NJtpq*KIvuJq029_ zpBwp6Azx&9xe_nPa{C3_kbZol`*PvPCi^7@ixzy?px26VWL_x= zKo!PRDi1Pm}r&_1v!P(qS^OfUJX6xAXYzyf-hZvy?X?)%J{b^^{%(z;VHAK=KYlBf6;Y z0Q3R!@Gxg!J@=Kl3Yce`z0Bh0QWKSn9Jq*JAZC(b*cu<~PpXR39{hI>f5$sX z!OgiP$q|uxW;z(5MBW~db^}Z&ZBpOXKQa# zDNt%(?XAA0LgClwU*4Nd^l8Y&TZkD3BbO6z?_Pqplo#8cAl?JrSyGK%m%;+bK1?1O z`$^l27?^{GPA*7JRmTKED5>1IK#~ImZR(Ic;{RzjY+( z?TH4$|0R6{X@;X+&y`Ujf6PYb;=Hf?<;oPVNQVEg|24cx^7vi$guCR=$xHTA9_Tp# zreuxYzH-K8Swe~OyfSO}Dh)rlf0FaW0&xNe8wgJc&vQ#W%Nrrj7@UQkB=9$U#(U6d zfg&<*)zWA=^UWE0H$z8wn=ym~$K#mf_qrwO77lUKoGHCq+2^eDgqN&X~v zQh8!K>GN3P_UE?9`Hqz99w)=*D7j*J1pf($8NX=fg|nWwJ|{-x$~vO`@N1T@8A#-Z z#ePhGB&)(t(?21K&9~Tooy`m*$D{BCggtr#;I}C-;=8zeMDUBeQz2I3Nw#o)gC6&P zUO6XaD&V&j#dSA`z!Sr;={IVeg%SAY&62;S z=)xBd5!}f$sEXly0+PpRO?77r!rG|YzNMT$z_$QAo^=O+-vV$e9z%iSBKLCO9==3R z<<{|BKd}^uGii_2{=H*zKf*gAjr`h3rTCPEdw*fOfm4a};If2;{2kFoUW?D77pkL3 zI|zG7%uD(vx2x2ueFno%93ej`ZvogPb&WGBx;XyRU6x4KquRvXsXj+UUSULP znOBXpefEyYoH9xEKn+SxciEm}t&>6m?ZThH;N|PB4U6HrGl%986TSrR1a5eTBexi@ zMIAV#WG2<*DbV%Wt-+Ge_G@iPf>&l`D`1p!nV4-FkFrl&;^iXu5S*2cR#gCf0A9a3 zV~f=8hy_{6Bq{!Urjkx_a7;g&+pvxcZ@X+W<61>J6c}T^3U0pR9jV*eNk17$VwSq) z-P*1@qWh%?jWZZVlA{}YmSWG{_A`VT9}c+oJqNqyYt4aaP&At`2ed%0l&IF`?v=CyMuzVHJV z{GAuyiLd)}KLbDb_>UonZzRvbOFU0PEUl!d&xwYJ>)bFi)rI<0euTb!%Q~ZKx<*Y< zqMzu`8=pM#y_ZVmIwIs-1}5f4(kU)0PbRrOc|dP4;W6~$HN#6Z`EvhG_;kJyvT^(8 zmZkY;CcjQskE0xgC3XXR?(-jq-}lwuiGTV%KOX<^2T#azm3Tt{1Ue4Hc5aBp&D7hZ z-B)UD7@%2X(jt`}Wx07<)&64wG**@x#+LS&S1GYQKsCxp47h}>vQVmw& zR$V5q_K~Mh$^KmvnbdbUFa`MpkkT;U8!Z6I!1!VQIzGBw?9;cnvL`aBmHtV~Hr))| zN)NuC(3dYxy?;=sKfb#dE);oV&XjX>%RB8do@Rf(x^Ci;@S_%uSTyWML26)lgqgxG z7JHU#A)6+^4-E>y1OB{1b{_g6M=By}_EThIn780k7gm>nI5?M!!n+pidaSw^-^___ z7q;i(-cR~-c3YlF#b!=lJ>GRpE4&%~HCHi>>!NwEHAuNJyZM)(46xF#IxR13gp66VIIi@Ycb^vVG zZM~ZVujN2{VW7}o>$m*sv5fwGV*B4TSMrbAmDSIDt>VA&bYn4^8mRQ&veC6`s?&da zXsMhBoG{)HCOAJGE0!`!wCsrT_yc5`rkmFQR<*hD?TmTX!L8ntQ~|0{apN02tHR1) zDd;BTmnt|XXm_q8PE>!)0A?ZDF6rt7Oxr>a5w+cty)`~r&g}XEpqE2ms?Lo~K*u!)R|T%B_xESE z=dczI-~$UIs?n8ms*MFn2Xwh!L~uEBHKh$8v%cwX-oHER`%Zu?<6HErZ6;~c;{$Mv zj@g_dX1<(sY?Bc&j^vf6$efIxGKh0Y(qO#^HxrwDnmA!i!;@&!eV3kI94K-O z$i*KHc;NB1;IrTV3?F{{d-%2A^po+ymwy+R%bf}ig$f1+PMy0+NMh5LR#7%;ZvB3z zYCAh$P^gx@)s_kL$y)}VCI%iASYP|*w0^$ZJ|on$NwsYc`$l_=h*hU~LqJ?t3|z+* z?>{~Rzw77yRs6Ki{Tlp(kDZV=6+;B$dO*$#F!J#~;d7eb<3C;nAwNnwETM|}LTv!~ zx&X~LfVdN~zee4@lAZZjU1>=?$@yy`E4Ec@3-*RJ{e@gYb3<^6k`2_XO;;T(I%xyJ z+_tHNAMp7pg?XAN_su#6>DFbhA-hDul!31{4_eamTgS@EK7pb4P=;E=^&?~(vpc~7 zRl%$Kp)X&axcU|@4(u9c5wCOeL7&GewR6s|$BdfHrVVoZ;z?7Dz-M@C!p`J5F&HM( zs=f{KIJO{H{{0^0STiy~_JyFBXpod`$iKvcwo`$wL_7iy;>1^;&7SIHZnzi4s}gki zI*S+~rfG$m^hdmLO2~d(<=h3h8Yyg$|9d{ey$AmsU#UDapGh?1pA$IC4+>$yyT=A4 z`Y4z2E+ph_Et0E;yg@6oAw0_uuuLu{&LIUFd3?QJsnD#dxE#IZkd_xJ&caG_E^&gMkWAe%Z+C_FPMK@^x!X5~p%FeFkFx{9S*uE_g zl`eXIqhb6sDHS$^)xiB+RYvwf7{zT>DfBd^VNzuvd2;e@3u9^HmgL$501Ih9gBO@Y zpII$eoR``Cek_+GiZdh>Arz%%ar!NVE+UiZh&iNx z_eD@LK;@z|8Vbw<$}C+V zYy=0cSH+8$Ctlwx26&~AaGFVyltVs+o0X=yTO?)%dRVmchRGo>N#Cfpk*rTqc)VDU zj$#+Zs}N`Nbq^iN75F;EC8F2+hnpZsvyC~q?0ZV|z*XUGyMmLk^0tN@ zUqv)?hhfL7VlS?9e%p{;HhazVqUrK-h}|A~8b8AxFa#HFaNbmt@@;mLa2Pj`M7{e* z%e@X@obab-1|Pcse_Zfd%Bu->SpZX3w7r%lJB*!(B%i<^S4JOzlKoebY2u~eJ;xc% z{vt;cCcDJRQq5h9$=cXasUKx-?1Apk&jp13h`yk?$(G@>o`?y6+R9Ti3&mK~!yxxS zAiW$KAiN4lOS=H_X}^WStQdl$dOY(=HiTvlCAh8_-i@_h!J=R(RB6#pDy5|i8C;vP znct$w5|mJ!qtK{cSEAP)ca-2oM?(KHf9aGltV|C4>E~L(h~>*<<`!J37g8eji-!Td ztd^2H@ZquT<$_lbd5nf@W7*7rJlr=IqUNQ@LUN|P&^u)kU|j@~L|x>-o6jsL7lkzT z?CVg)b<9l+r?wpc#xSp}03Jg#AOSurY^Nm4`)Y;?J^dfBXU~%VXib=7kPGjN6ZMpj z2gGtag8I&b)U>b6&)-UI@+1Qyc}ZI8%8@GQH8_q{lyo>gXv%LUC9{8@?N6FbA`~Qo z7V`~wU5GuPFXf#N8%ut?|B?4nfbm3}VnMXe4{4gGXX(QOALj>998l5;iO3uf%CbVIiW^l0sHQgIrD^g zStG(HQ>UA)TOB!0#(CGJC6Jyd`zow37E03R10;#bKx;AROS-jn>RasdHVGvhP1=f` z3MCe9=RoM*udO-~%-4+`fDT;b8UC#=`@Q&O|J3ip_kBe0D1hGCDi0JGm~RLG?`+~2 zMmUdTm#_K#w@H8ME%8V~$GIkDdhqM)Z^0bw`5@l@wAo?U61&gTdk%9c@kc{~*8jvJ zLGXhpT&&jp*W6NIi9ba19(6N_mQy7Dx&KeLhdY<^u0Z0Aax;W~VZcF8B&x%9UUh6t zY?X#L)`S*X5pcTkU`<`WetqJ_t5dH-Ek_O{p!i2V;+$w=Y04A%UV6hHxOs(7`F8c1 zA0)og;)~gd`%HAS#1~|YaODIXW?NH?7V{my#YuDd@kD##T-X&mtLxerjGYBkH0cxi zZT9Z+^HwM}E%C~AI82Y)>DAI6+V$nPopbX7$o3_5u1dUzE!3SouJ529>EHf#mg%%o z^yOCOx{$(a_UA^l#COxDCKI+(NTLq6MkbWupZJUG$lH*r|E}_I8;R@S{(*A<&o6>I zxx=aR&D8^E$U(g(!NSfSdw-FVV*W^uf%}ImRObUUH6{Q+6+rTzxOiOf8e%VMaWHfG zBEM^u`4scfC($sqSNwqyLTY;pzj4yQzu8~$Lcc(*Wd=&R)3gC>Xy|X#U|As5B=uSbo^4C@ z{EZ7mV4JoUfl}OJf<+q-!G~^WVt$&l$et!?zqy(CvCu}%blx(jYkcbsAwHo{t)E)T zWZ}l{hR7S;Za|fbcX1sTxfj7b=G{#jh)lqG{rbc~4or}nPTfg!27MsnIueI12hMEd zfZ)wHj=4&NoC)l=D0xU4n6LkvN$CmR_ndf8G)^2lJnyXSDRH6;C!!M67Da!Owp z4RHU|z|9BY)q2?{C+PlYpdc@0+e&;X4AN^au3lN!4lebVXRA;hb z6Z>hEn@r%HjweC>258+9+B-BQ{NpA)HHhBsXB!RM^-uoN&9a;B<=t^qj)_V04FTeh zhtvTK;D7XEf2I7UpZX{8@sA&PrB|HK2ObsEu*cla?T-a0{=Lv9WVe|cEJ=R>{^X;S zrJ1Ts$TbokpS%{j&d>Q+amw2u;yoLRyui}e>FBrb1~nikedItyi$iW2ndH{}FOFTF z)cPgHgUq?4#N#Sk!dh>&C4B*8hS|eMVI1MhGc`nc<=wGJFyoXQbJhRl%d0*-`sA5n z&LCCgSG@?yQIXLMWuOZMbl9*kCM7rdPm#y`5#-h{$$!+9h<$}T1Ahu%?Doh1w*q4wk3cYfj+0;1l0#9P~NF-a+IUJ2=zU)aG|74;JH+kd#5rv>SoHl{8JW zPK*?Ow(@aXM0CK>F}k<@%X4QMsgd6FfXO=!cl5h9WhML0m1z}O#nR3Nu!9XwYs6RKUmuk zNNb6XZ?)&Tz>)s48y9WpcR`1Cl5=veq}J`fH@@hD{717ubmxVeO@)ngHoa{3r(Ue# zr>s?jUfG=oR-cbf{iD?g-P7-6oD_%@?Gjt}W*%`j>o*J1m4V)f>x7*&==1t)14J|F zE{m`dHEpg0Q|pVJywh5MoX)XB&e-S!Ex@5LWV|(VCPAZ)2Mjjs;JwtT-vwz`E3Nf< zT=SW3*vbvHEP$=_`AXIVeFn;Y6uCGsdeYH!RrFn2Xb$I2N+o&?{^E(pA$kh%Kt+V@ zDcT;u>(>ft{iM-(N!OCtzrLC?4JhuRD+DE=%m@X%@oWu-WHyC9Rp5GF0Vu|pGs6|k zZ6!z)^9=!ZU%f@8m_eR>YbIc>3oZQeDnj{fG|l_{rOD9R$E0D91NnQrr=Wc2nA_Ks zpYJ?~m9@Z~Omf+#-M9U^19FHY?8jG1Xr)JKRRmh)L%+SV7_4(W_h+Ja;tK^i$(0C- zfyNJKAQ^z-tkIe)jk7G@2{?lSZQ<9%pm{sM+{1AwAXmXS1)u)`#UKBk-=)9*yT2Ag zfI|*jDRR5f+J3>$;uYY%jXnVrV~b+LEm82qzuQlWv0%{rwjvEna0jh|HHnDwc7O>FP`HQ4+GEM5Il?n>JtFAlB(8b*r&J^)Vnm#e9t#Be;L{*gu|aY3M>Iv@X=zj9(Xv71@;qnxI#tOsJd@Un@slR-IK*-M`Gsip=Y(CR~ zu9F?ReB9-tf3bK^{f8w-d#SrP=T=2-p1TXIKl9~`M?!e7HP&g%2mN|{y}&>i%IUh zVT`gi#LJ6w7OHah_Uw*#9(Yz9^ds@Hul%}Gn)65hnO{)<(P`$=!*&2%;Nyl-Cgn>U zF<*%ch4B#Cc9~Gtd{w5H{_Y>Hz?kPxf2^M*?=F>W1bW=zp3u^Gt9F*fDe-}4&1`f zH$p^}Ui-!3_3oC5OQI>j5ovQ=G+*ahu!0e>3ZNcB|DtO&>2a=^;nHfq-jwf3YGf4Q z2q#4=naUSP*m3Gs-FJ1YMsG2y5D`y^C%T}lHwU_`&jEmeE_iCrJuj~_gxsau*WydU z3gpj?;Aub6QlbdEpJyO%N{Dg^v-7f3oyNPg-r4n?!S+iIIpr>11sIHO987%zzyl2j zj1CsF@r~`Icoqoe+X$ZD2|0CLaq1dS0M~H^zymbuh{PEaI2@Ib0G2V<2bL6o!{LI# z_*DPh{FMjL9gt#cA3t$KsP6{8X#u*S)J z?V8)E=CVTMOvZ#K4M9%?H^NmLR=HpB+W^F^*l98T@?E~BTf;x!HW#hicJmO}p*Y6C zF@P`m>8LB+{qTIWCcp9|j5h;}uEyfuA%wpa0> zzELB$-*=vT{1fInv%rXsdIQ@R*rCt->+vrKJP6$?kHO)SqXMy2of;bXp;TcXOOl+p z!b#+;UvVg=YTbmzUhyPzLg0{N`ovKDv!DLY|^Hxai{o9Y}pedW^-!BRc3~iD^sPC+keB{m$rpXHx z5}AsyOLmPa2TyuRctbdI^xqNF29e>0D^gZDQ_JQvJ>TT`n-c_T{de+QZyNH+uG4?X z?9<;P?uR{Z#)yuq<|k%r#s3H|GFqggs@r2SL=@RK${)CXM#T7?BS_-gNgWD2zdLX^ zUce^iT^Gca5)F)VNk@_r8|Z~-(m4ox{g9JM#2@-KytH+zwexpDC%1Ld+>ZH5$C)oJl!fqBCm-4V8@ehe_-{i*E!eQ#U8<(8(H+Pi}U&qmWQh1 z*`0@9Y^32_NUgtg9wpODS(Yy`Ucfl4d(*^N6|5bZJudRIB6P?-qax$hJG>FfY zf3^}{NeE$qU&Z1*a{`z5Y);yW-kl%oEFK0-vZccHyQJ*lJ0+U6t7755bXG`^CM$p%s$o)}TP-Ei5yIFZVgBu&EvYTyyz&zwXccRD9p#e`ABixq3Ws+9ZJ6n)C3^abSDw0N81dLGIH{)b(-QeA``JufH1( z7AsFWY)dK^-h=C2+xz@fM;u3pi+2H|;48@Z_x95xxYW^$;{2`A@mL$NJSN@V7 zi8^&<5lDgC^+92X;vKL2bK{OruCqGnkt?;#YwT}Qesa0;2OQaB;vq;ZVp@5cnC^sbPDZ1?2cEZ5@z&CJs?5F#9nc zV$QM*MzbwvCU&+_o3p;h2a6Z}TXT(i&EKT-p92uiM?$puRjdDTf>&qt+Xc( zJFvHHP=A91a`+3$PwkmEf>j@YKO|$yB=Siw?39bZW+JD5q>ZaqANF`2{SS0472*QE z;uM#b6cG}O*ghGY(u*U?3Ajxqw(Q}CV*t-CM@VHBQIZ7-+xg?Z!@;DKtaj}0ju8L{ z?jJNJkk3b}xqG^A<}rG?$XiHH%%cqGYUi$-9B;6F6J8a2#7c)Z&i<)uK2_|CWbI=S zk2+C*@h6SgK<-lept4?>d2;_QWLFZatlF{o2e&VKTIRKmTxjy<2>`$TPMMKZf%3M* z_#~pVSH@-~oWZfxa-+^wrAm(5hFF5bh9Wlvy4)NjJ_Fj%uXF{-FhX>S#7gpt1P2FM z`v`gMEo*Z^s>}&bmQUeE1naLtefx5&zvcM_;p5HlUG=E^wqt9~;s67xS zt2Ft9neC*WyBio3*jM7-#6HlYKpL24wmv$@nbPNqfd{G{m~!U;v%xDz#V;&;lC0`H zE3c$eHxWRE+bV*JkLcS^sPpJN)8tf`gw^L|V3Jkz*%Zrmp-6p&_&R=tdpNyX8mZGf zNG18-p}=JT_L@LZ!FUvW_GcdWnErkIns5Gc{OuRtJ#Pnq-{Rrfj!Tgfp0>4+a9!#@ zCCYIi*b^dN=15u8zJ_V<{a=Y@0O0#wLRV}jjQj%Nz>{Cl@x=nw*T;rgi z8@!eB3$Zep$>4lR;Kih_GIs(DeEQ`_;P?N$zmBi^z*pl#A0Cirz=;Do1Thm@Fv56` z2LZ^7Hn>@8f%dmnXS?O|xC*Bw$)# z_n^xh47_-8;(Btkv@WiBOM_$NbX5W4bgHF#CGXS_W7Xxe!-?=KUh!e9ktHoNHuYn?WoaK%WrmOCkAWhKVCGdsfNuk^SYyJ@}m(ZGW^c^Q= z?_21R!#rZSp7fM()@-k&w?>28pM+c|wKaqZAk~*R?@2F^ti+De=yjWvFh193rL*P? zRpuUt{UOff*}VC!7(niPtc0hosy)^mKQY_wWDMZV=a(3q%~WON*lek<#qXkzhAT;p z`;OU^9(a8}pEYnCg7blJge;Ui7!c@j;B8$~`Yc1luK!k6a75Ir>!5;NdXX}koqp^JQkI$#}@yZeQTC2IOC25LEH4X zeip?o+ExM>Fz)ORN+>Hc^d*9zhG4?U$T)aaG^nM$mJ$3oAq_I}o-}SLw?lW@$dHiA z;T0086^JEY(^zKR%S=u&jiy1-Y7hn^Y1#C3gYSr~Kkv#_pSa#+Yn~L8m9x@6(+uj*F(B#Vgd?|NvMgp_9wbWJvv6c>HVs(l^P8j`LdR%ZO|A35 zLGfE#a;0#_<@THDiwP#QATQ7Y?zt7wlPRDkS)l%y_poMvsy*gv-9_eWf8P7XfjfB% zzxkWK3V-DXzPZ@2>(g%ufRFM#PoPA%Y-0~>^F+gaM+mFZ_%*0an@Fs$r=jBaf5d<* zck)nvW^{qi`(HaByQ0Zf**QIji-|9zPn{MJJwU!OAT*IQ=5rc6u@}p$Qg?pObne(8 z$XB*uE&bFpbpq4-(lKy{3x4g-{=ea0`BA?d|LDVtacGSFaSAXFU<5S{Lzp0^$w&V+ zUV0*`YI{i>Z_FQ{8iU8Wc&N6*tnunEDgG748U1CBQ1Q?GKkgalvS!PF;TY_rh^+eh+v90#r^@Yc(@ z>fd+TuqAtp2+TtIpO9ZAe$|~}PItj)7o)hn628*JfVzG{f0Ddfd~Igoy@n;Y-kk>T zyFPP)`)~RO@*Z!b-8ii-nW;X*7L$*^T`eZVV<2WUSa!hnmD4~b$-t*jiB~3@2I+(B z!@Jd5-=!CL5&kn}e@wH4Pn2bSvkb+&&CBqb^MlYASyA#^X?J>ZCj?oc>%+4y%{D{X zQ6J#9nN0o#F>e_7Ns}?Ep_?iHjGUx@o7+_wj2C+SHUqft#%x030rNY^e%u~U1>W=g z4i`w2({kG<;yYPh;(-9Z=u)4NLZ#_8G6C@VeuUke57cPMEs8$$xZq`wQtyF_29%!r zLU2qRBtCjiTCThExv!-U3D{ZbR$qjwoye5Ubf$uSFwrXU*`TS^dpthyfhag_}q{aDa@GE@55+(4ZEs8V+j3sR#2O!=lXn-}3~g`UzW*M-_1pes z{MrBZ|BU09w*yQJ9P>%U?e&w?`@1}P0C6VYMfrb%$5R;nPvR)H9Erz zp;Hci+*F0z%j8t~kNQr#PW&mXk7{H6mX&DFe8MLTkROr3sbNVBhB|)vAgeIX+)8;< zcJLwGSL7INuB#=@Pvi}K7Zrc<1E+#FllNh-yLt6m@%GDs>nROrY97_|kdS|gA8~cc zXXoIQ&`JX~in1B5EY>h1MQq_mb8D!p%B!m25O7tV3pWp6t8SC%p2pExWDna}T~*pUZjf zzq2gmxhXj@2OH5-!!Ar8w56MtHe)QWwXQ14EewO6v*-LPc!%Shq$5m{7-Et?yBgxb z$8?AX`yh;Y5DXQ(=h+2^y~)KWz)^86ImSwR8;PvYf4+gy6Z(5D70@%dI zwQjQ!kbG6rfSX8?p9Xt;t1rR|D!y5=g1NvaYoD znW+$!(7BCJD@k>xh`pf5vj=D_O>gMsZKrJu5eNE055@V;^!Dh+E5w3NV)inVvvmT7 z>DqOiIv1la`mCh1>f$(gllI-={(N_b7Y-4!;!u$MiH|G9?vN@MqCMLAL4nFemadh7 z!3W>5N&&$D@aD5;VKa$cz6P*zH*W!;RY40(94L8$K=?O3eT-o*S7eMfN_^wGeTtRy znPs0b_xnxV7-E7#y}sEGCl~f_&S2(B&LF{+l@|ecX5QP0*hCY1G59B1U4N7s7)j>8 z&bRTxtFL*Vsp~~ENXV?mD<6Po3KG#niv5rmSzz$N3s0)VfC*_|xdS>UaMDoxV%GB_ z-UdV=heD1y^M63}I0bqLKKBDBe&1jIpW#n_&mV%wW!jfct?+7QHpX_Op~t{!l6F6y z!u~iKh6u^cuP?LUtxxukU5_qTf$RC5;$YfOaM=qBOP~?6p)nm}m5P!sm-BtJA+TEx zsxIavz=65(PvOr)J#dF#^kcpbzu~9+F}!>sczq7Yao{`;K!uvG$wSy8?c|!~o_J(l zQ2k%~t{}AQl_c?uudQPmeQn4D2gfJyL%aAfLt(13ppzrXw!r@HG*^0N`Y@lbG0|7&3TtW4^9h?wa4DBb2nF7Fb}766hOMTgFQp!; zRcoQM$j2K~dqu2KaK$m7du1~K*JTGlIbzqt-P{2H4TF=c*s-i3OT`)q%nq94%Fch? zCfJMFUeg~UJt52i(tbo?FQl5K!>6faiBH+p{3?EX%tlZi|6BgzDdA+B#&#q#fcz)y zeUrIp`N$Fxoath*f%$RpT9^b;Ju#^aL<7Zfx2M~W-bOX(QvRuWJ6eKHG9GepKGIBg zlM4wXixn>pp-nc-3%RG(Y9XVhJnwQ5cbuSB8UU?4?7#2JOZ(*WCBjvD4ajMVnTy>B z6SIJ7Kl{$cy;_&HzlD4?dr$@B?hbDgb-Jh%01n`-j{_OHHw4*|iZFQG#hU5DB_rOss4~JCb?| zd89B>J{ABq0pH8l1d9L~^k;2`J&U*RMQiX2`?Mzn&Nm7u4pF_c5!M&{NWuT+um5KJ zk?;96vu&1@aX24Fnb-Uo0KBCgQiENfuG^2MCq}tg0p^HRQwILs@2&2L;MYAE$Mq1< zKHSLWkIR-V(B*eKFIirYatMCRt=u%yjI_uhe88V|!Ef$RDfGlf5KUdMPQ)ex93vEp zpZO#HHT?FU`R8!=_8WNn@q|8`FP{p&?fC#cffmmLaKFeAT-dK7`S7nOF*%&5_*Njd zVP_~!kOMT1JDM1l{==FijaY^k_n>PbE{~m2a4`lL%|x3mA>1|S4Pp)Btbzu0#s5p6 zmED{Kj0rl&kBmD#Gz);^I539b<;xQ!TRS4j z=XPfX(Od9Ok;|@=hMZ%Ja8dEGJY#@<@A4nFi@ck_`AOjY*%kw`wseDm?B<3SwS&|KP3H>?;gEYS-WMTqq|4G^Ty# zFSoIjqZW3uafW2dODr&p3a+ZSzt3HQ=R?y%_;6`kFL&~iRd!4C`xD)WUCuoC_Y!T4 zh~#$*(w$hE?5Z{D#EdJV-tc5Ky1ltv2?zG!!ZE$^OZE^VYZy-qgrVFL@9uex^+ehX zAKM)OQCaKHrO56ilCfI>bbnqm05n2MKY{`>Yv*W2Pn{BA6%}vnWme%1v=n3jTg&<> z&6z@N^_pyVqO47B+IOmY1IqN}_BgE~SO!(zhu>RUX{5oAISV_g*H zj&;GD>3w#+vWc_%3oqTB&c6ATlQgIvggVY97*wFo2#wZgejsw32%0(lRT_t~;P zd&5)MC$Fp!MSv$}LBA~hIXxA>(zgU6J_z>&t;{=cV#R|&7}$H#R34>0|Hc6PovtGv z=S{kH-Sm|UUrCTs$Mqa5JJx^RvzS8UM4QYr=--(@ophRf`2e3T_ z-;QV3_u^yciQ~EA9Dtq&zng!?U(lef4P^Uq zjaTwW5;<7Uc;t&gz7r_iIUeI~AC^>ZG1YiYXr!H3O;$0mbbMeXS$ln8<9s+|22YBJ zJzhVr3w+i8;bGv#iz^-<0UT`-MA%Yj#j{c!{EXnK)6aNV0W5Xk{5g0h@X-_sVlTxU z;l|y@EWa4ovwKMWUhRTzCYratHzwh}4b%BG%639>Hr-QLV zZ8uicIZvb<5L|WO^=rEoMS<&U?2l0H{C2tE#Zp9Hc^dIgV*FGQEW> zyF;l~3a&YA{jw!@ITXdfmuC1nDIYO=T~#QoXk#egFM>-7xjW))UP@aDLM+wlEX4<% zmR7E?=KMDPSx(}lpw%V*xs6^h19ZETwoCk08bfYwvzzwI&mGW2_stE%(E6HKKPvby z?X(_q7GIZZwO%*_vlzuM7rYJNEI?{xs$~|q053kFP`y1j7CiXst#$1-dq_~jTp%Cn z1;AF{o*gqm$>7io#(0<6!JGilvDoq|7mXFdC5ZShPB76D6702?7?^(Nwier=R#Dvm z3GS?~Jk$z48L{&xxIwj*3$5ZX6i%S4tB{~Njt^c;=U5-KE3)&}WWp>j9>K{hPwGm%*!{k8n7pm61DHDjF1`~0cy;;mKYZbj=xH)G+wl}M}b3n$B_kDKMQy@m{;!IwLqRMbH(Bie>=bt94QoI41CG^ ze=7dhU;W+q!s83^p|`F$-c(!xj8iNwW>76I7Njw^IS>?)*lVw?e3>kV_v3Bl?@?|6 zNFB`feC4yso&}}tbRRT^*gZ&xDC-1X$s4TiTE5}y1{8DrM)?TgA8!E`D z(u5lJYV^-!|G;tF;k*i7yg2dt-X3oc}(iAZv#u; zV!W=@rd~A1EXJg`YSY(U2VI$l@9Sn+3BI)4UXwVhHWOOnV-!m{C7*QN2hI+==m+Vw zv|kM`e4vy|VHTScMiMD)xOy4|X}8{o$0v{Iv=9N4mCeqiTWj8&SXHd#cUtvR@{IhP z{PI@)Rj01al5;x`nk8Z=U;NMemR1MJ(>5kah$!$x8jeMS0NOK0$|oJeCoiQB{D_A6 zFn+x6jk^*}a;gH=MjHk*f1QpRMKea<55>d1;&M!0uJ_10SUc9a3IVaVYVD66zqS|Y zvTzJAuEQU^3{$f17D>NZ@wS*In~`>@Bw=MoQTV+31esHY=-NKPlK;;5BvB+R(S0sS zjc=>D$kI3S*!kbt2tXmAwqNf$Um76h01o7Itpx$z&ZSKBCNRdQPFngsU+lg;+1V3I z9f!i*l4*92VmJe4Z7z+HL7)3AqG&=~CI%c-h&LxS;@wSt0+VN7H_9zMG|=d`NaT6u zCqbL{=`DfwhS8*(Y4WM{s&AEA>F2&~(7OIoPa_;tE*HEFdl0WvP~wdMatFM6d(K=R zvf*#}l|YrjSEB%j3I-Qo#*MqwOOuc|TkKC$IuPzDhH zoyyGse?Wl0m1@nW*{bW>e>+IE_M?pP-`X!TL!N7s}Y=AqQcz8YVMW1`<-~7C`*M8n9|`2S;Jg6m5CDf;Nwyby;6%>9=lLmOwfioOpLq2DM2j&r?ln(r z2)5um1zZ?vyL9+^hL#*u30=>mg|UrdoYf6_P3h6T)sObfKBg~Fa;jWk+HYz<)kePw zf8p^Z2MubR!| zM6iUE5SWqj&bl%A3-5;Fhw(khOaF`58a77pfrtuxZt|UO%J|>pZ^YDi>A%fyNH>n> z2-;`);m%CDiHV37U%Nf9{xiwXU54?r{D45dMZ@jQJlt=sBCSV^bNvQ=*?+MG2-&wp zkr{tU*iNtYhjz__Tl60jH|g(r-+i@-i02mb+_yZQMg5?c%b4*axxZTsS%69^!e(Rtv&`9T-dEWQ@4kz5Mfq}6ieFn_H9>%k1Iq=x7 z!!wb2+>aCY_rT=>=m|W&O5IipU2Xt?BOU^{9HeJ>TM_J_t&Ypj_hC7*dj68wUv~n~ zTW^cMhYM=rM^bP0L<9!z03E0Gs`9>Nc?LZA$r_0@wOaEpK1eiJRMGZ!c2686fuU?YmkF zcjxs|j*rI$Z;N2Q-I!&^Hu4O3`C`6`r^)gCkavS~LVKI$ugyW@gqcWGk& zw>rH7qVy2Jq;EJsV7nW~LP6Z3$ zOa9cPRwjVEGtkJb{cOiotQt!g5~_Q^Q=-jz@!-4BZ<OV#T)ne~06#+VZY{b>F|ym{9R85&QbOJ-@^9)hXQ$4!PhWcb_fNBmNJ-#;F>-ks13FwSE>TOdr)JwsaG=5*u-ah+qJv;w{atbpJ0mB~%| z6Xj29exU1bFBgMoa@`ef&4HOTS!JzGZwwl}f|y8r07&Erlb3k7Ezo7>gJF_&2~Z?rJT6UdHl zlmFGxIGszDgaDtaa6eqSsmLaF5RzVz1lwf?Tfn0%l~ zE-xJ48%aBxMJY=|7McX!mt8|@r`IPSRYRAkjdI?>Fy~h^1l2E9&~zz*@2Lo5r=WM{L&X8amCk?LryL_4brj{wNvR z@we6wH(BZHzh*R80@#+XfZ>g>ZuU{3GM+i~PFVxj_rMqOXZ|#qr$+DY@D>y&@1U$i zDsU%w{Q|h219Dh(u>qCyD zKKLQ|#014`n`igSOg}BrvVOwXOfKvwG4tQLqo^1Q!dS`}v2;Cev0yArN%<^o%Fpd( z2GguRC(HPj4Nil?tcm_o-sp;%btpKAa|4}s3JgHz8v^czV7vxC^}QE7;QR6G{)?Z1 zzxCn23^|So!FF3pSp^CG8iypT*a1*<>HZbk3IAdJ7aJ!#PDx<=)j{6Ko02DSNvw1e9yeAQ#BY1tn~QB_k6nTPl_@#Vq8f)OPHm&zzrC#6h$`u;+FOjFRKYtnoL`S0_4n*7p6dX_n<;oD z8_|c`bd{;wPquHIItN%H2Ug(q^57x-*0L zQ*WR0mk9nyY%7)dGvm(~!1Dum&*d(jt~1e?UjyjT!mzDPOt_S1OiuddZF^2s?lyaU zKH}jzCjhQjK<`rxPHsO$1agsAQAD@JLU{!scHhGU1Zj*C_U-=UJ3lglvaum>fc-0Y z2nRc)QDQ+~)XJF702WouEEhrku}lLFFo8a~n-;l`|g!vm_tx zbjyq;147S!Yi)#^FC1@*a*11p#6@rAUrX6aCwF&S5gSs=R38-!KbFF3H=adQjsA`q z+)ybRgF^S}*3L>Hx(uE^%%%FwRlUjtmFtoEE;+$&?whnBT`#+ISZkSu{XLHnKmfga zCZE7u++P%`{*bgg!TAb!{dn5e{MkU+dI>4DBdPGjEx5L}7ZA+jB7!%b$xPB(yXi?* zUx0HcbPP*+>wtWMzR5puQR9yX!v%X)w;IZimaIu$&xEJc@{-`>tT*42z*$2UlNI|X z{7TctJji=ClfmB4b0bDmBxjTy&7u<9Yfme;;rmy+ZwjSXq3rBA`nF@vL(0M zls%_cHC|}Jqk@p3QycI(jwqu2V)Jx+Rkl}U=(h_=>nu}SjuV7PnphIg2O%Hu#AW_x zuM3=67yk91_X+ds>7|!b+cOXv1->44gVXP&*++ zq>h3Y?$2AY^U6rF9CBwNgvCKix(70;{*0wk^# zd3TC9^!UKveOv&)4XNI9Pq(c&Gd@5?%DT``JA0C|`LBp;fMm)*xVmq;ONl{^40HWgoVIv@Ds+ElzcuQ35|UI9I`F4tlL-@= z_Z{YukF7-$#?&_I#LLEe>0(=4SbFz~Vh#K7i09YCul8;iEec#lJ!j0grM-W*2MM>k z)eTV$gO>E;`MIHua_wD?)sN%p%bQ~dpb;EvXst%aME2%3fq}kjIiD*-(bp5?YmKJtEnqww9T}ZjEE{m`_=BK`&x=OMD zWc#|%7YT8tt5P9V$PuqJd16#50}Q^qCds*bhPMDb;+D^e0tYZ&0WV$+T#n>12bE9B zTh?=?c=yW)z9Kj+`G52Ikt;-8(G78=D9-b0w*i=T)YnRnC^NJs9<#e6+eO}En_ZgB z99(DsHj}C&jC+m=BIUEECrczavrP$c%&r`~=6An!ILGc@##g4L(dQCY(t##TUR*u( zaggu{5SIn7tR?z*`Lex=VmK_}vqaP<-lhAypJ4pUNrCFz9>D#rIfIE+P=7{4 z(l54W)Z>1C`$Ald{u6mbfP(@Cv1}nx;}LO?dDk}{0q6yv^MQfi`dRsm)5df1EQfu%*qE<+ z71TL;qAiBynuEdUY?oimZ%wo%O*rf~g`~h=hQku8Odky9&Y#frj61nf?-LU>r1agB z2)y^$zdZ8*)wi7|zDHM4`zkB>8U+xq>eP&9U0z-N?n9H_j1NWr>Nl6=b&sdoWS7#b z{1<-xBKyzbx!aV{K?2M%buf$Y>4cx?lVOg1TnG2>en&c^+=TBlFUJD*w9{Bq23|LH z)@hVdeyHO41-O%AzOD*@#_e?t>q36yW5!RCIcX^S2f_svhbUe@UU6RMGXTaF&`0bK zMa;t-cX)XmdLOxsPnZx*OFZhpqeM8!9^#ijQ-iLz+&0<~+C9^|q1ICdi7%>&KXLP9 zvwikg?~-%4kPn3g04R4w(sj1kisjV4^F!zRE_sGcHjQQQFSWcM^%(%VFT~d)a53PM z^K?Q=b#jDVaAXI}qXlL@FSluR#c)?#R$FOFbeSbp8XdLWjp!@!8`{?7K83g%tk+rT z=mx$!*2@{)x%c{IM{ioaY%BD&;|%<>zuu!zduyOE(H9w~gl}oG3s2kW30u#e9UlYm z+M3vj2si}#0DSzdM_eRA3}RMY;}?7cNN!M^+G+Ot;!>V|WkTkA-#BtBzBGOsik{=d zsb};R+t;H168XTk?R4Zr<&fuHBqV=c5sa`erg6LO;2PlQ{|M%N!rs4n|Hy<^TnZhm zJOZQe?kr9FPtZ;PHQnqGHGan+J|tv9%HRQ7c@zSFiLGbaUkNq&=QTF}qQOu4vI*Jw z(_Bf*2E-f1!H;V7td{iV#lzS7%mhs?@a(uW`DS7uVRmvTjzb|BIF5lsf#VTS6@2Lz zANY^|${)e+|K6{KLLkSXLrt<~QMZ`3!HpI&oZNJ{YhxO}L}&cR1O)5*JviSqA>mek;xRfqh<320z|#@`e~V znO~>dBw{!C@vW#7k9;5(WJ&cO=f}?}KYDG_=nLy4@N90h9t#1q~uLJ4AGm9@#u1o^iuc|m^vwlbbwQu! z7>svLXK9iDo$aHDq$tVSPC+N0_+@hH#;8!!rCC$M7{D8Mf@dNz=%3NlBdYsAi-B!s zGj=ACNK5?$S=>LI7z4OFfb&5yHybqKIot?vd4{({^kF{^al4)0%S53yk#WN1R)b_| z_er?W%vT{x*_w-cf4s<}#U2{3h#hkZ_^Xry2fPV!f6Py|pY&Jav+E`7(eiUI($uY} zl4S9eiH9bqV%u~aoG>>tUylwp>{v)iH&teN0w)g=TxadLb{IlXzXvYct%K@a6Qp!< zIJ;6nP>{h|o$m6xZsjV$!uq6c7uxznz=Gq%X9gCH|6E?TCIPDaQOAVsdM^vG(I`IEc8~(koBmhJq&z|9h2<|Jmg9eg1r^FuT1b`2G zvna_!N&n(DsMMI-R1Yp%WC4sh0YL8o)^eS{3a+Q(dS0`OxK7(oi~aZt5^tyVJ5SxF z>((((R{5T8xA&B3ZO=h6_|@4iKVzWQcljmK#dbwy`{SUXmfYt(tcBP3sje%6s1fwV zU|xZtkhmw6h-3e@ds>A@{UQ^Bmh$c+N|w|7!aXBQ1Zghe9aKM79z)!HB~HU0Lmz%k zBx79QR1OMenR?HszfHkqESR?g%zBCgin~)W9uz z=is+}<#*uC^E2_$w+AlIe1od>Hvk>xU#?H>_~sLlo0T&gv_=$md;mhM?7C?Bdm=mYv( zotJ3OJ9Bk&d=k-kn4TJbMgMN|feG%0?m) zzH=?L((s?{rTK%$Pv@WI>w{Ni`la&QcFh4z9s-hQ-L9Xd6Q7yBoS62;NJQcPnO|fS zS5;Nt@}?s5C#5Vv$h_tdnO}I@&ELY-C3MC7F3;ppUHm)oBm)%7KX($yTo@6zhu{wY za6N(dy)ma>bq3Oif&Fki%q`(IRqMW?m4E-&ycrXn2ksx{vjHv#<|_aL%&D^sDF76A z&+t+NXPw9o19jpmvGm3u%Z&Lx;qw-mvnDvR#lt=W(zu}%J+*IO8^r6Ih z!zQied;8H|@JapyvIk<_LEGnctNEg1}_h_i6*c zv*+@7yor}`$SH^4z-VIjxFLWJ;Nx$fEr{<)cZeY0Eaf6-q`>L=3;=IFpASEZSKBn! z*-uWLZvu$L0lyvrWj#uZs*7F(?mrnMR~n|1u_>bPS9RcY$HWK`>jOE~W%w8yHq%QW zxyq6H?DTis@cz9==G$oo>Z|FP-rCpmtzL8!60~zqAG-XwUGLqr*vq`r?{{oW>(3uvOHWO0$RbdxapH^L`xEhd|AoJSFM0L__|S_hh2L`VbjH70xi^Q3bwtszu? zcu`j~9`=F%Qw~lcI!hYB#RM45&@dV-R!?~BY&d>b`tww-+9gB?1tj&@Uj`SYx$N6I zW$T@%GRKPn`v%tHdO1P7(qxPvzvqrS3Hp<-l!eCwe?_Oq)4G#`hzpyMqDyxWHZWdP zVtJ|pa!_eI$$BaIdHDZqHc|_xg^axFR-&IC6GL<%r(JBwGBrIVUX}!ytgwra&MBQg z2k+QhlPq;qJU+NkOXSE4;&)VM=$>3!HUy_bCGA8rx%+GdF16H$tZIWXjT2 z!T4nV3i;rox*ZetaqRLZp&qt`y^C{7-vXRa!9@7_uANSsTZx07BA+HqWqqczJKCH) zT+;__1oW8ZB+S6Du4FPzc~;1lc>e&GVQ@%e-N~{KMAoCOv-2cE*P-xj%zVf z4Gwg()N0(7Q(x(FUyArKsT_850QnnXsE4%sLiRjR~gNIuOW9P0PjyJpWHJ~?K zEfJmLR|{~hl%QX>lt#EFk5<9pCNqj2B69Kl;i6Dc8KPszXTR}z`0Zc)H}O;6|1aQ! zKR9qb1gBhZj?0_~u&k=AYRdXj0l010zB z76FL&wC5_5hRo7F2w&ni(q?#Y#=dFSXyrP`wdyfU*+kFfm)AlH1g#9zP7j^n9uAHj~EaR4E_ zPkob^%Y049E4!`fg$R5_G$Ekt$K~a+cA=+8Qob#gG&(&tu)URQB-`EON^#G)k}*S( zd(b@YN0gO7Le!mjJG57#v&m1gK7@CGrF=Ml5JAZ)GoB|u=Lx+3jmyHVE-}G7NbFPb zR*QV-xAQz#6I5rO_v&8Z@Z%Ez%OH{)6zJs+ABW7j$6_=MPYi%7;l-z{hzX)bW_SOj_5%aw*X6aJ&E5lMxogHB?mKvp zP+(33*2xT)#?eozQRQHmgXn0wGxWJsB4Uz@;6pxu)WM}tOV1bQxjx)DB8#e0DblbK86G5PLOD!+exCl9Mw3c$t z$(rsPq|bOIR0f|)o#MUEkF-T{@GO-EH--)RNw*1LY&iYKi~Q!Gz%#HV$+Htp<8hRG zsIs_yHh^B_oY$4gC)upOnhe#!a}oX4Ie4y7t-jat#De9^_uXbv7pH1qX^zFLmS-+7 zEey~g-9?i$G2?yCTFMo2qAZsj7rvG0Ac@)e81|8k$KX&b8TAZCs1Jg6k$JoE1;BU& zKI795yci$EulaxebNJr3{xa?AaLx&{sRWXft45r@QkSHRm`F*zg{JAMUoHBE=go5!2@`k(u!@IUz6UyKiZSn;TeaXAn-fvDI60ww%Q zUDg45LVtv_{;*gp5?iqYw6cEnSMq1^>(yqWT*u}TGy<&}*hu258B*d)lbdfrvmFFk zsg~5GrrFV)f`P~d4-deL7XuHEc56jbPO&Ree&|>@ifMVU-GX-j0Y?TW@$;H}l@(?t zNn1NoAQKsIZuH9&oStw9_v6=B>D6z}r1!`43bjP`s1y$fPZ!@u-`z#LdyF$(<@_Y= z?jSye>9qzuK81dG0?n_w4q^tQ$~6|C!u*K~;x{0N_znL-#nVWICGnS}SlVOz;IU%0 zHzoj~>rjiyZrSZdP`JcfveTMpNDxnGOcRPE=7KMkCbsYJ3qC?$b%z8SiH3A%bEg9D zfAc~eFz%C_${Dv3vd<{Sd`|#6a0Cn~fS30Jhjn>8Qxya=XpTK-NY{}Sq zkI8eTV)@-f8`s?5cY!=$dG$&!pVF?jq4dd3gbR_#cU`YObo*eJ6_5?HN?R_lw5jQH zrCpDylmo=A0)n0fd@Pi46~ zXMR@u+JXGO>hil>Q2MrR`^xpjZl3S1-x4ETHPzQ^-G;T&t!YzdiR3q}^XYaYYlT{z4>jdB6fc& z4LW({+=JZ6QHxDvQ~*n}%$aq+&Pgk%efC|iBGi^iTvSyOe*B(a&LBcqp^peKJh7p^ zQjbcmx+(Kg;Av@aT9$eKs)VnepVQB54E; zQ5=`~hJbMoyyy9W=f_+4b^qnh#CQMDUzoQ8;IIHT;JalwY1tnY7jMdm1!;Cjxd`@ecMaO#|t%KKcsbEyMNF-a)*HRag{ zQ4vN0uOwHh2?@OZ+&*lvBL?N9k1~PBU%Wj!UF508Tdh{)?Q(MaV0%&I+iS4kXOtJV z5y@vJ=0G-abUv(+?#uPIl;8PIVkVgt`}SCC{f8}ZY%%#sbhPG&xdmP410Vey_3!q@ zlR9oO9FMpyqO`;jz~iYBZ>gN_U;R*~zlEHhf<`U@vPZ#EpHytLN~9=Zd&3u>BvK#t z=ZKG_qnTH=ou`D=Wn5+7hY5`HCi-ad=K7vLBzmaMTL9kw#vK&%worl0*Xr_Pbrq}d z>_SmdW>QfNu;+&)8+iHp#KkrpocGz9%Q@jTW=!;QCm+MSBeh@*40Cc$C3b2N06MB$$FX_)GC-@WRr>&Qz=fk(zWk10opyZ+|B?5 z81!Q`Q#Kw)7ym7lJ}Ao)WU zAwa1Zme6Kk^q%K;^Njf7NgL9seKru5I;E}y`q zcCD;jrn)28?q*~oaYMewN@CW4wwflhGih;6wOenPj_8e@%kPI(!mudpb}00fWxa83 zkqlX0l=USkf8LrO85O3)ePV<%mPi6!A2BJq#?1M)aT;?U~dijoUA(o1(@gzV>b%*rCM(LS1~ z2wksbnRWk|_Ri?yfq8$b?-J4JmvTVlm;9vPi(mN@zY#z1iGf#g#khm*5#>&K<(dN~ z>(KS1#XMr-(QGGIIy%piO~y_r-*vEdwQQyCyt^c|eS-W&h`z8nG5Vz_(D5P_Sg4-Q z);JCf9C-C=;Kkbm50AVQQq#IjXp#Ndg~BUK++%c)ab8#u@u^y{TBv z5*^tm_hSNzcxJlJ=dx(%k#7-VC*O4ujg#Hv28|{HU90&Q9!P@XUFe6Bb50wX7dY+O zrOD;lF0$V-GCs3?#Uwq4H*eqcDO4Z^L&3E3;~3y_(_$KG}#O7nt0>q~)Yt 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