From 28137fc8246687a66fd2106d0435fa7193ed6a0c Mon Sep 17 00:00:00 2001 From: pip-install-python Date: Sat, 1 Aug 2026 19:37:07 -0500 Subject: [PATCH] Bring the docs site to the 2plot network standard (0.1.1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Retrofit against the satellite blueprint (STANDARD.md), proven on the boilerplate, leaflet and email hosts: - Identity: SITE_BRAND "dash-mui-scheduler — MUI X scheduling for Dash" on every surface (Dash title, /llms.txt H1, index.html, manifest, README); image_url= + description= at every register_page; app manifest added. - Social card: 1200x630 CDN card (cdn.2plot.ai/github_assets/ muischeduler.2plot.dev.png — uploaded and verified 200 + IHDR before this commit); scripts/make_social_card.py renders it from assets/dms_logo.svg. - One short app id `muischeduler` everywhere: traffic_report.app_key(), ad_client.APP_ID, bulletin.app_id(), render.yaml SATELLITE_APP_KEY. - Internal-traffic contract: write-time UA drops (case-insensitive) in the tracker; every outbound call sends internal_ua(); /healthz never a visit. - /healthz with ok:true on flask too (lib/health.py); payload names the app. - lib/bulletin.py wired via NETWORK_BULLETIN_URL; lib/network_directory.py publishes the cross-host directory (## Network in /llms.txt). - Dependencies: dash-improve-my-llms[flask,fastapi]>=2.3.4 from PyPI (vendored 2.0.0 sdist removed), gunicorn>=23 with markdown2dash installed --no-deps everywhere, dash-clerk-auth 0.9.1 (satellite avatar fix). - Tests from zero: 82 secretless tests green on flask AND fastapi (identity, social card, internal traffic, bulletin, battery scripts, pages); .flake8 + pytest.ini; flake8 debt cleared. - CI/CD from zero: ci.yml (actionlint first, secretless matrix, docker build + in-image fingerprints + container boot + battery, advisory pip-audit) and cd.yml (owns main, sustained health, live battery). - Fixes found while porting: flask visitor tracker now registers BEFORE add_llms_routes (dimll's bot middleware was answering crawlers first, so they were never counted); crawler-HTML canonical injection guarded (dimll >=2.3.4 emits its own — we were shipping two identical tags); Dockerfile sets PYTHONUNBUFFERED so boot diagnostics reach Render logs. Container battery: 11/11 with the CDN card live. The live domain (muischeduler.2plot.dev, already DNS-cut-over) still serves the old build; merging this to main deploys and closes the gap. Co-Authored-By: Claude Fable 5 --- .dockerignore | 3 + .flake8 | 26 ++ .github/workflows/cd.yml | 114 ++++++ .github/workflows/ci.yml | 252 +++++++++++++ CHANGELOG.md | 71 +++- CLAUDE.md | 41 ++- Dockerfile | 15 +- README.md | 14 +- assets/favicon/site.webmanifest | 21 ++ components/appshell.py | 4 +- docs/quickstart/video.py | 4 +- lib/ad_client.py | 11 +- lib/analytics_tracker.py | 20 +- lib/asgi_middleware.py | 61 +++- lib/asgi_routes.py | 4 + lib/auth.py | 2 +- lib/bulletin.py | 82 +++++ lib/canonical_host.py | 55 +++ lib/constants.py | 140 +++++++- lib/directives/source.py | 2 +- lib/health.py | 52 +++ lib/network_directory.py | 221 ++++++++++++ lib/social_cards.py | 129 +++++++ lib/traffic_report.py | 16 +- package.json | 2 +- pages/home.py | 77 +++- pages/markdown.py | 5 +- pages/not_found_404.py | 14 +- pytest.ini | 7 + render.yaml | 51 ++- requirements.txt | 36 +- run.py | 259 +++++++++++--- scripts/make_social_card.py | 255 +++++++++++++ scripts/network_smoke.py | 430 ++++++++++++++++++++++ scripts/smoke_live.py | 434 +++++++++++++++++++++++ setup.py | 2 +- templates/index.html | 203 ++++++++--- tests/conftest.py | 231 ++++++++++++ tests/test_bulletin.py | 89 +++++ tests/test_internal_traffic.py | 267 ++++++++++++++ tests/test_network_smoke.py | 194 ++++++++++ tests/test_pages.py | 70 ++++ tests/test_site_identity.py | 215 +++++++++++ tests/test_smoke_live.py | 334 +++++++++++++++++ tests/test_social_card.py | 373 +++++++++++++++++++ vendor/dash_clerk_auth-0.9.0.tar.gz | Bin 157535 -> 0 bytes vendor/dash_clerk_auth-0.9.1.tar.gz | Bin 0 -> 158246 bytes vendor/dash_improve_my_llms-2.0.0.tar.gz | Bin 39574 -> 0 bytes 48 files changed, 4734 insertions(+), 174 deletions(-) create mode 100644 .flake8 create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml create mode 100644 assets/favicon/site.webmanifest create mode 100644 lib/bulletin.py create mode 100644 lib/canonical_host.py create mode 100644 lib/health.py create mode 100644 lib/network_directory.py create mode 100644 lib/social_cards.py create mode 100644 pytest.ini create mode 100644 scripts/make_social_card.py create mode 100644 scripts/network_smoke.py create mode 100644 scripts/smoke_live.py create mode 100644 tests/conftest.py create mode 100644 tests/test_bulletin.py create mode 100644 tests/test_internal_traffic.py create mode 100644 tests/test_network_smoke.py create mode 100644 tests/test_pages.py create mode 100644 tests/test_site_identity.py create mode 100644 tests/test_smoke_live.py create mode 100644 tests/test_social_card.py delete mode 100644 vendor/dash_clerk_auth-0.9.0.tar.gz create mode 100644 vendor/dash_clerk_auth-0.9.1.tar.gz delete mode 100644 vendor/dash_improve_my_llms-2.0.0.tar.gz diff --git a/.dockerignore b/.dockerignore index eaa2717..9921231 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,3 +15,6 @@ flask_session clerk_events.jsonl .claude nohup.out +# CI/build artifacts — never needed inside the image +build +.github diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..16d136e --- /dev/null +++ b/.flake8 @@ -0,0 +1,26 @@ +[flake8] +# Line length is not policed: this repo's comments carry a lot of explanation +# and reflowing them to 79 columns would make them harder to read, not easier. +max-line-length = 120 +extend-ignore = E203, W503, E501 +exclude = + .git, + .venv, + venv, + __pycache__, + node_modules, + vendor, + dist, + build, + .idea, + dash_mui_scheduler, + src, + docs/*/, +per-file-ignores = + # run.py's wiring is ordered on purpose: load_dotenv() and the backend + # resolution must precede first-party imports, and the reporter/bulletin + # imports sit after the app is fully wired. + run.py: E402 + usage.py: E402 + # pytest fixtures look like shadowed names to flake8 + tests/*: F811 diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..97d4457 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,114 @@ +name: CD + +# Deploys muischeduler.2plot.dev, then checks the live site. +# +# The deploy step POSTs to a Render deploy hook held in the +# RENDER_DEPLOY_HOOK_URL secret. Without that secret the step is skipped and +# the workflow goes straight to verification — Render is auto-deploying from +# GitHub on its own, so absence of the secret is a working configuration, not +# a failure. +on: + push: + branches: [main] + workflow_dispatch: + inputs: + target_url: + description: Site to verify (skips the deploy when set to another host) + required: false + type: string + +permissions: + contents: read + +concurrency: + group: cd-production + cancel-in-progress: false + +env: + PIP_DISABLE_PIP_VERSION_CHECK: "1" + SITE_URL: ${{ inputs.target_url || 'https://muischeduler.2plot.dev' }} + +jobs: + test: + name: ci + uses: ./.github/workflows/ci.yml + + deploy: + name: deploy to render + needs: [test] + runs-on: ubuntu-latest + # Long enough for the wait loop below (a 120s settle plus up to 40 × 15s) + # and no longer — without it the job inherits GitHub's six-hour default, + # which is how a platform that never comes back healthy holds the + # `cd-production` concurrency group all day. + timeout-minutes: 20 + environment: + name: production + url: https://muischeduler.2plot.dev + outputs: + deployed: ${{ steps.hook.outputs.deployed }} + steps: + - name: Trigger the Render deploy hook + id: hook + env: + HOOK: ${{ secrets.RENDER_DEPLOY_HOOK_URL }} + run: | + if [ -z "$HOOK" ]; then + echo "::notice::RENDER_DEPLOY_HOOK_URL is not set. Skipping the deploy trigger and verifying whatever is currently live." + echo "deployed=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + curl -fsS -X POST "$HOOK" > /dev/null + echo "deployed=true" >> "$GITHUB_OUTPUT" + + - name: Wait for the new build to serve traffic + if: steps.hook.outputs.deployed == 'true' + run: | + # Render swaps instances rather than restarting in place, so the old + # build answers /healthz throughout. Waiting for a single 200 proves + # nothing; give the build time, then require SUSTAINED health. + sleep 120 + ok=0 + for _ in $(seq 1 40); do + if curl -fsS "$SITE_URL/healthz" > /dev/null; then + ok=$((ok + 1)) + [ "$ok" -ge 5 ] && break + else + ok=0 + fi + sleep 15 + done + if [ "$ok" -lt 5 ]; then + echo "::error::$SITE_URL never became reliably healthy" + exit 1 + fi + + verify: + name: verify the live site + needs: [deploy] + if: always() && needs.deploy.result != 'cancelled' + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + # The network battery first: the same script, with the same check + # names, that CI ran against the container this deploy shipped. A name + # that passed in CI and fails here isolates the fault to the deploy. + - name: Network smoke battery + run: python scripts/network_smoke.py --base-url "$SITE_URL" + + # Then the satellite-specific checks the battery does not make: every + # canonical, every crawler body, the CDN card's real pixels, and every + # peer llms.txt in the directory actually resolving (peers WARN, this + # host FAILS). + - name: Smoke-test the deployment + run: python scripts/smoke_live.py "$SITE_URL" + + - name: Report + if: failure() + run: | + echo "::error::Live verification failed for $SITE_URL. Every failure these check for is silent in production: a site identity fallen back to a framework default, a stale dash-improve-my-llms artifact, a canonical on the wrong host, a page serving the JavaScript stub, a 404ing or reshaped social card, a missing network directory, and dead peer llms.txt links." diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..24dc79b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,252 @@ +# CI for muischeduler.2plot.dev — the 2plot network baseline, adapted from +# dash-documentation-boilerplate (see 2plot_leaflet and dash-email for the +# same shape beside a wheel build). +# +# * least-privilege `permissions`, cancel-in-progress `concurrency`; +# * explicit `timeout-minutes` on every job (the default is six hours); +# * actionlint first — an invalid workflow file dies with ZERO jobs and no +# failure signal, which is invisible for days; +# * a secretless in-process pytest suite — no CLERK_*, no +# CROSS_APP_WEBHOOK_SECRET — because fail-closed behaviour is only +# provable when nothing is configured; +# * the real Docker image, built, fingerprint-asserted INSIDE, BOOTED, then +# probed by the same battery that runs against production (LESSONS §19: +# CI green without a container boot is not a deploy gate); +# * an advisory pip-audit. + +name: CI + +# Deliberately NOT `push: branches: [main]` — cd.yml owns main and its first +# job `uses:` this workflow, so a push trigger here would run everything twice +# and the runs would cancel each other in the concurrency group. +on: + pull_request: + workflow_dispatch: + # Called by cd.yml so a deploy can never ship something the matrix rejected. + workflow_call: + +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +env: + PIP_DISABLE_PIP_VERSION_CHECK: "1" + FORCE_COLOR: "1" + # Never let a CI run inherit production behaviour: the base-URL guard keys + # off RENDER / APP_ENV, and the traffic reporter keys off the webhook + # secret. Both must stay inert here. + APP_ENV: ci + +jobs: + lint: + name: lint + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + - run: pip install flake8 + - name: flake8 + run: flake8 lib components pages tests scripts run.py + + # The workflows lint themselves. An invalid workflow file is the one + # defect CI structurally cannot report — the run dies before a job + # exists to fail. A double quote inside ${{ }} silently killed every CI + # and CD run on the boilerplate for four days. + - name: actionlint + run: | + bash <(curl -fsSL https://raw.githubusercontent.com/rhysd/actionlint/v1.7.7/scripts/download-actionlint.bash) 1.7.7 + ./actionlint -color + + test: + # SINGLE quotes inside ${{ }} — a double quote is a LEX error that + # invalidates the whole file with zero jobs scheduled. + name: py${{ matrix.python }} · ${{ matrix.backend }} + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + fail-fast: false + matrix: + # Both deployment-relevant backends on the current Python... + python: ["3.12"] + backend: [flask, fastapi] + include: + # ...and the supported Python range on the default backend. + - python: "3.11" + backend: flask + - python: "3.13" + backend: flask + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + cache: pip + + - name: Install the app + run: | + pip install -r requirements.txt + # markdown2dash 0.1.2 declares gunicorn<22 against the CVE-driven + # gunicorn>=23 floor. Same two-command install as the Dockerfile. + pip install --no-deps markdown2dash==0.1.2 + # The component library itself — docs pages import dash_mui_scheduler. + pip install -e . + # httpx backs starlette's TestClient on the fastapi leg. + pip install pytest httpx + + - name: Confirm the pinned dependency versions + run: | + python - <<'PY' + import dash, dash_improve_my_llms as pkg, gunicorn + + def parts(v): + return tuple(int(x) for x in v.split(".")[:3] if x.isdigit()) + + assert parts(dash.__version__)[:2] >= (4, 2), dash.__version__ + # 2.3.4 is the network standard: below it resolve_site_title does + # not exist and the published identity degrades to app.title. + assert parts(pkg.__version__) >= (2, 3, 4), pkg.__version__ + # 21.x carried two request-smuggling CVEs (CVE-2024-6827, + # CVE-2024-1135). markdown2dash's spurious <22 pin must not win. + assert parts(gunicorn.__version__)[:2] >= (23, 0), gunicorn.__version__ + print(f"dash {dash.__version__}, dash-improve-my-llms " + f"{pkg.__version__}, gunicorn {gunicorn.__version__}") + PY + + # No CLERK_*, no CROSS_APP_WEBHOOK_SECRET, no SESSION_SECRET here ON + # PURPOSE. tests/conftest.py pins them empty; a secret injected here + # would make the suite pass for the wrong reason. + - name: Test suite (${{ matrix.backend }}, zero secrets) + env: + DASH_BACKEND: ${{ matrix.backend }} + run: pytest tests -q + + - name: Boot under a production server + if: matrix.backend == 'flask' + run: | + DASH_BACKEND=flask gunicorn run:server -b 127.0.0.1:8598 --daemon --access-logfile - --error-logfile - + for _ in $(seq 1 30); do + curl -sf http://127.0.0.1:8598/healthz && break + sleep 1 + done + # A page that renders under the test client can still fail under a + # real WSGI worker — different import path, different CWD. + curl -sf http://127.0.0.1:8598/ > /dev/null + curl -sf http://127.0.0.1:8598/quickstart > /dev/null + # The battery, against the same server shape a satellite deploys. + python3 scripts/network_smoke.py --base-url http://127.0.0.1:8598 + + docker: + name: docker image · boot · battery + runs-on: ubuntu-latest + timeout-minutes: 25 + needs: [test] + steps: + - uses: actions/checkout@v4 + + # The same build Render runs. A dependency-resolution failure surfaces + # here, at CI time — not at deploy time where the only signal is a + # dashboard log while the old image keeps serving. + - uses: docker/setup-buildx-action@v3 + - name: Build the production image + uses: docker/build-push-action@v6 + with: + context: . + tags: dash-mui-scheduler:ci + load: true + cache-from: type=gha + cache-to: type=gha,mode=max + + # pip metadata is invisible from outside a running host, so the + # versions are asserted here, inside the artifact that actually ships. + - name: Version fingerprints inside the image + run: | + docker run --rm dash-mui-scheduler:ci python -c " + from importlib.metadata import version + + def parts(v): + return tuple(int(x) for x in v.split('.')[:3] if x.isdigit()) + + v = version('dash') + print('dash', v) + assert parts(v)[:2] >= (4, 2), f'expected dash >=4.2, image has {v}' + + v = version('dash-improve-my-llms') + print('dash-improve-my-llms', v) + assert parts(v) >= (2, 3, 4), f'expected >=2.3.4 (resolve_site_title), image has {v}' + + # markdown2dash installs with --no-deps to dodge its gunicorn<22 + # pin; this assert proves the dodge kept working. + v = version('gunicorn') + print('gunicorn', v) + assert parts(v)[:2] >= (23, 0), f'expected gunicorn>=23, image has {v}' + + # ...and that skipping its dependency graph did not skip the package. + import markdown2dash # noqa: F401 + print('markdown2dash importable') + + # 0.9.0 ships a dead avatar chip on Clerk satellite domains. + v = version('dash-clerk-auth') + print('dash-clerk-auth', v) + assert parts(v) >= (0, 9, 1), f'expected dash-clerk-auth >=0.9.1, image has {v}' + + import dash_mui_scheduler + print('dash_mui_scheduler', dash_mui_scheduler.__version__) + " + + # Boot with no secrets: Clerk no-ops, the reporter stays dormant. What + # this catches is any import-time or preload crash — the class of + # failure where the platform loops the worker and the deploy never goes + # live (LESSONS §19). + - name: Boot the container and wait for /healthz + run: | + docker run -d --name docs -p 8598:8598 -e PORT=8598 dash-mui-scheduler:ci + for i in $(seq 1 60); do + if curl -sf http://127.0.0.1:8598/healthz > /dev/null; then + echo "healthy after ~$((i*2))s" + exit 0 + fi + if [ "$(docker inspect -f '{{.State.Running}}' docs)" != "true" ]; then + echo "container exited during boot:" + docker logs docs + exit 1 + fi + sleep 2 + done + echo "never became healthy; last logs:" + docker logs --tail 100 docs + exit 1 + + # The SAME script CD runs against https://muischeduler.2plot.dev, so a + # failure in CI and a failure in production read identically. + - name: Smoke battery against the booted container + run: python3 scripts/network_smoke.py --base-url http://127.0.0.1:8598 + + - name: Container logs (for the record) + if: always() + run: docker logs --tail 40 docs 2>/dev/null || true + + pip-audit: + name: pip-audit (advisory) + runs-on: ubuntu-latest + timeout-minutes: 10 + # Advisory on purpose: a CVE in a transitive dependency of a docs site is + # worth knowing the day it lands, and worth nobody's broken build at 2am. + continue-on-error: true + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - run: pip install pip-audit + # Skip local vendor/ paths — pip-audit can only assess PyPI dists. + - run: | + grep -v '^vendor/' requirements.txt > /tmp/req-pypi.txt + pip-audit -r /tmp/req-pypi.txt --skip-editable diff --git a/CHANGELOG.md b/CHANGELOG.md index ea7d41e..1ab1afc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,10 +10,51 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +## [0.1.1] - 2026-08-01 + ### Added +- **The docs site is now on the 2plot network standard**, the baseline proven on + 2plot.ai, 2plot.dev and the other satellite documentation sites: + - **A test suite and CI/CD pipeline, from zero.** Every pull request now runs a + secretless test suite on both the Flask and FastAPI builds, lints the code and + the workflows themselves, builds the real production image, checks the shipped + dependency versions inside it, boots it, and runs the same smoke battery that + later checks the live site. Merging to `main` deploys and then verifies the + live domain — waiting for *sustained* health before calling the deploy good. + - **One identity on every surface.** The site now states what it is — + *dash-mui-scheduler — MUI X scheduling for Dash* — identically in the browser + tab, in search results, in shared-link previews, in the machine-readable + `/llms.txt` index, in its app manifest and atop the README, and a test pins + each surface so none of them can silently drift. + - **A proper share card.** Links shared to Slack, Discord, X or LinkedIn will + unfurl with a purpose-drawn 1200×630 card served from the network CDN (so a + sleeping free-tier container never blanks a preview) instead of an upscaled + favicon. + - **The network bulletin.** The hub's tips and announcements now render in the + documentation's llms.txt viewer once `NETWORK_BULLETIN_URL` is set on the + service, so network-wide news reaches this site's readers without a deploy. + - **Honest analytics.** The network's own machinery — health sweeps, smoke + batteries, this site's calls to the hub — now identifies itself and is + dropped from visitor analytics before it is ever written down — however the + marker is capitalised — and every + outbound call this site makes carries the same marker for the far side. The + site reports to the hub under its one short id, `muischeduler`, everywhere. + - `/healthz` on every backend (previously FastAPI-only), answering the hub's + hourly health sweep and gating deploys. + - **The cross-host network directory** — `/llms.txt` now lists the sibling + documentation sites and the hub, so an agent landing here can discover the + rest of the network. + - **Walkthrough video** — a video tour of the calendar, resource timeline, and - radial charts now sits near the top of the Quickstart page, and the README - header carries a clickable thumbnail linking to the same walkthrough. + radial charts now sits near the top of the Quickstart page **and on the + documentation home page**, so a reader landing on the docs can watch it + without going to GitHub first. The README header carries a clickable + thumbnail linking to the same walkthrough. Both embeds use YouTube's + no-cookie player, so nothing is set until you press play. +- **Richer search-result data** — the site now describes itself to search + engines as what it is: an MIT-licensed Python source library with a + repository, a PyPI download page, a version number read straight from the + package, and the walkthrough video attached. - **The docs site now reports its traffic to 2plot.ai**, the analytics home for the whole 2plot network. Once an hour it sends a signed daily rollup — page hits split human/bot, unique visitors, sessions, median session length, top @@ -22,7 +63,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/). network secret is configured; without it the site behaves exactly as before and makes no outbound calls. +### Changed +- **Fresher, safer dependencies.** The AI/SEO layer (`dash-improve-my-llms`) now + installs from PyPI at ≥ 2.3.4 instead of a vendored 2.0.0 snapshot; the + `gunicorn` web server is floored at ≥ 23 (clearing two request-smuggling + CVEs its old pin was stuck on); and the optional Clerk auth package moves to + 0.9.1, the release that fixes the account chip on satellite domains. +- **The documentation has its own home: [muischeduler.2plot.dev](https://muischeduler.2plot.dev).** + Everything the site publishes about itself — search-engine addresses, shared-link previews, + the sitemap, the machine-readable pages — now points there, and the README and the PyPI + listing send readers to the docs rather than back to the repository. The old + `onrender.com` address keeps working and forwards to the new one, so existing links and + bookmarks survive the move and search engines are told where the pages went. + ### Fixed +- **Search engines were being told this site is a copy of a site that does not + exist.** The page template still carried the URL it was built with + (`dash-mui-scheduler.onrender.com`) rather than the address the docs actually + live at, and it claimed that one address for all 17 pages at once — the + fastest way for a site to fall out of the index entirely. Every page now + declares its own correct address, kept in step as you navigate, and every + link the site publishes about itself is built from a single setting. +- **Every page was announcing itself as the home page.** The template carried + its own copy of the title, description and social tags, which overrode the + per-page ones — so a search result or shared link for, say, *Recurrence* + showed the site blurb instead of the page's. The per-page text now wins + everywhere, including for search-engine and link-preview crawlers, and shared + links unfurl with the project logo and the right page's title. - **Visitor counts and countries are now measured at the edge, not at the proxy.** Behind Render/Cloudflare every request looked like it came from the same address, which collapsed all visitors into one and mislabelled where diff --git a/CLAUDE.md b/CLAUDE.md index ad700de..ed806c0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -35,7 +35,7 @@ The React sources live in `src/lib/components/`; the **built bundle + generated are COMMITTED** (`dash_mui_scheduler/*.min.js` + `*.py`), so `pip install -e .` works without npm. Changing anything under `src/` requires `npm install && npm run build` and committing the regenerated artifacts. `setup.py` reads `package.json` for the version — keep them in sync -(currently 0.1.0; PyPI publish is an owner step in `.claude/migration/OWNER-ACTIONS.md`). +(currently 0.1.1; PyPI publish is an owner step in `.claude/migration/OWNER-ACTIONS.md`). ## Layout - `dash_mui_scheduler/` — the built package (5 wrappers + bundles). `src/lib/` — React sources. @@ -50,8 +50,32 @@ regenerated artifacts. `setup.py` reads `package.json` for the version — keep - `components/` — `appshell.py`, `header.py`, `navbar.py` (Scheduler + Radial sections), `backend_badge.py`. - `pages/` — `home.py` (landing), `markdown.py` (docs loader), `not_found_404.py` (plain DMC). -- `run.py` — entrypoint (PORT env). `Dockerfile`/`render.yaml` — fastapi Render deploy on the - default `*.onrender.com` URL. +- `run.py` — entrypoint (PORT env). `Dockerfile`/`render.yaml` — fastapi Render deploy at + **`https://muischeduler.2plot.dev`** (custom domain; the service's own `*.onrender.com` URL + 301s there via `lib/canonical_host.py` once `CANONICAL_HOST_REDIRECT=1`). + +## 2plot network standard (retrofit 2026-08-01) +This repo follows the satellite standard +(`pip-docs+/.claude/support_files/subdomain_blueprint/STANDARD.md`): +- **Identity**: `lib/constants.SITE_BRAND` ("dash-mui-scheduler — MUI X scheduling for + Dash") reaches every surface — `Dash(title=)`, `register_page_metadata(path="/", + name=SITE_BRAND)`, index.html ``/`og:site_name`, manifest. + `tests/test_site_identity.py` pins them; don't restate the brand, derive it. +- **App id is `muischeduler` everywhere**: `lib/traffic_report.app_key()`, + `lib/ad_client.APP_ID`, `lib/bulletin.app_id()` — pinned together in tests. +- **Social card**: `scripts/make_social_card.py` → CDN + `cdn.2plot.ai/github_assets/muischeduler.2plot.dev.png` (1200×630). Upload is MANUAL + and gates deploy: og:image points at the CDN, so a 404 there fails + `social_card_real_pixels` in the live battery — deliberately. +- **Internal traffic**: UAs carrying `2plot-internal` are dropped at write time in + `lib/analytics_tracker`; every outbound network call sends `internal_ua(caller)`. +- **CI/CD**: `.github/workflows/ci.yml` (lint+actionlint, secretless pytest on + flask+fastapi, docker build→fingerprints→boot→battery, advisory pip-audit); + `cd.yml` owns main (sustained health, then `scripts/network_smoke.py` + + `scripts/smoke_live.py` against the live host). `markdown2dash` installs + `--no-deps` everywhere (its gunicorn<22 pin vs our >=23 floor). +- **Tests are secretless by design** — `tests/conftest.py` pins every secret empty + before run.py imports; run `DASH_BACKEND=flask python -m pytest tests -q`. ## Run + verify recipe ```bash @@ -70,6 +94,17 @@ In a sandbox that blocks sockets, render in-process instead: - The `.. kwargs::dash_mui_scheduler.<Component>` directive renders the prop table from the generated wrapper docstrings; `PROPS_TO_EXCLUDE` in `lib/constants.py` filters style props. - `MUI_X_LICENSE_KEY` flows to examples via `licenseKey` — never hard-code a license string. +- **Host moves:** change `APP_BASE_URL` only — never a literal host in code/template. Order: + attach the domain in Render → DNS CNAME verified → confirm it serves → flip `APP_BASE_URL` + → set `CANONICAL_HOST_REDIRECT=1`. Flipping the redirect early strands every visitor. +- **SEO/URLs:** `lib/constants.BASE_URL` (from `APP_BASE_URL`) is the ONLY source of absolute + URLs — canonical, `og:*`, sitemap, robots, llms, JSON-LD. `templates/index.html` uses + `__BASE_URL__` / `__PAGE_URL__` / `__VERSION__` tokens that `run.py` substitutes; never + hard-code a host there, and never add a static `description`/`og:*`/`twitter:*` tag (Dash + emits those per page from `register_page`). Dash replaces **every** occurrence of a + `{%…%}` placeholder — including inside HTML comments. Crawlers get + dash-improve-my-llms' own prerendered HTML, not the SPA shell; `run.py` patches canonical + and `og:image` into it. ## .claude/ scaffold - **`migration/`** — the 2plot network split packet (HANDOFF → MIGRATION-CHECKLIST → diff --git a/Dockerfile b/Dockerfile index 8bf1809..2e8a10e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,14 @@ # and committing the regenerated artifacts (the image no longer self-builds). FROM python:3.12-slim +# PYTHONUNBUFFERED is load-bearing: without it Python block-buffers stdout to +# the pipe and NONE of the boot diagnostics (bulletin wired/off, traffic +# reporter state, backend banner) ever reach Render's log stream. +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PIP_NO_CACHE_DIR=1 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 + WORKDIR /app RUN pip install --no-cache-dir --upgrade pip @@ -17,8 +25,11 @@ COPY requirements.txt . COPY vendor/ ./vendor/ RUN pip install --no-cache-dir -r requirements.txt -# dash-improve-my-llms 2.0 is not on PyPI yet — install the vendored sdist. -RUN pip install --no-cache-dir "vendor/dash_improve_my_llms-2.0.0.tar.gz" +# markdown2dash 0.1.2 pins gunicorn>=21.2,<22 — stuck on two request-smuggling +# CVEs against our gunicorn>=23 floor. --no-deps dodges the pin; its real +# dependencies (mistune, frontmatter, pydantic) are in requirements.txt. CI +# asserts gunicorn>=23 INSIDE this image to keep the dodge honest. +RUN pip install --no-cache-dir --no-deps markdown2dash==0.1.2 COPY . . RUN pip install --no-cache-dir -e . diff --git a/README.md b/README.md index 261432d..3a811de 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ <div align="center"> -# Dash MUI Scheduler +# dash-mui-scheduler — MUI X scheduling for Dash **Event calendar, resource timeline & radial chart components for [Plotly Dash](https://dash.plotly.com), wrapping the [MUI X Scheduler](https://mui.com/x/react-scheduler/).** @@ -13,7 +13,7 @@ Drag & drop scheduling · recurrence · resources · timezones · automatic dark [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](https://discord.gg/WEnZR35mrK) [![YouTube](https://img.shields.io/badge/YouTube-%402plotai-FF0000?logo=youtube&logoColor=white)](https://www.youtube.com/channel/UC6Bmo0t0ZUpU_xKBYW0bJuQ) -**[Documentation](https://pip-install-python.com)** · [Discord](https://discord.gg/WEnZR35mrK) · [YouTube](https://www.youtube.com/channel/UC6Bmo0t0ZUpU_xKBYW0bJuQ) · [GitHub](https://github.com/pip-install-python/dash-mui-scheduler) +**[Documentation](https://muischeduler.2plot.dev)** · [Discord](https://discord.gg/WEnZR35mrK) · [YouTube](https://www.youtube.com/channel/UC6Bmo0t0ZUpU_xKBYW0bJuQ) · [GitHub](https://github.com/pip-install-python/dash-mui-scheduler) <br/> @@ -94,15 +94,18 @@ if __name__ == "__main__": ## Documentation -Full documentation, with a **live, editable demo and source for every example**, lives at the -open-source documentation index maintained by Pip Install Python LLC: +Full documentation, with a **live, editable demo and source for every example**: -### 📚 **[pip-install-python.com](https://pip-install-python.com)** +### 📚 **[muischeduler.2plot.dev](https://muischeduler.2plot.dev)** + +Part of the open-source documentation index maintained by Pip Install Python LLC at +[pip-install-python.com](https://pip-install-python.com). You can also run the docs site locally — it is a markdown-driven Dash app served by `run.py`: ```bash pip install -r requirements.txt +pip install --no-deps markdown2dash==0.1.2 # its gunicorn<22 pin conflicts with our >=23 floor pip install -e . # install the built components python run.py # open http://localhost:8560 ``` @@ -229,6 +232,7 @@ The full, auto-generated prop tables are on each component's documentation page. # Install dependencies npm install # @mui/x-scheduler + build toolchain pip install -r requirements.txt +pip install --no-deps markdown2dash==0.1.2 # see requirements.txt for why # Build the JS bundle + regenerate the Python wrappers npm run build # webpack bundle + dash-generate-components → dash_mui_scheduler/*.py diff --git a/assets/favicon/site.webmanifest b/assets/favicon/site.webmanifest new file mode 100644 index 0000000..f803323 --- /dev/null +++ b/assets/favicon/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "dash-mui-scheduler — MUI X scheduling for Dash", + "short_name": "MUI Scheduler", + "description": "Event calendar, resource timeline & radial chart components for Plotly Dash, wrapping the MUI X Scheduler.", + "start_url": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#3399ff", + "icons": [ + { + "src": "/assets/favicon/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/assets/favicon/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/components/appshell.py b/components/appshell.py index 73b36b6..3cbdc0e 100644 --- a/components/appshell.py +++ b/components/appshell.py @@ -56,7 +56,7 @@ def create_appshell(data): # Border Radius System "radius": { "xs": "0.25rem", # 4px - "sm": "0.375rem", # 6px + "sm": "0.375rem", # 6px "md": "0.5rem", # 8px "lg": "0.75rem", # 12px "xl": "1rem", # 16px @@ -324,4 +324,4 @@ def create_appshell(data): Output("desktop-navbar-toggle", "opened"), Input("url", "pathname"), State("desktop-navbar-collapsed", "data"), -) \ No newline at end of file +) diff --git a/docs/quickstart/video.py b/docs/quickstart/video.py index 79b65b6..27f22ec 100644 --- a/docs/quickstart/video.py +++ b/docs/quickstart/video.py @@ -5,7 +5,9 @@ component = html.Div( html.Div( html.Iframe( - src="https://www.youtube.com/embed/i-CZH7W5ZsA", + # youtube-nocookie, matching the landing-page embed (pages/home.py): + # no tracking cookies are set until the reader presses play. + src="https://www.youtube-nocookie.com/embed/i-CZH7W5ZsA", title="dash-mui-scheduler walkthrough", style={ "position": "absolute", diff --git a/lib/ad_client.py b/lib/ad_client.py index 97b146d..fba7266 100644 --- a/lib/ad_client.py +++ b/lib/ad_client.py @@ -41,7 +41,10 @@ logger = logging.getLogger(__name__) AD_SERVER_URL = os.environ.get("AD_SERVER_URL", "https://2plot.dev").rstrip("/") -APP_ID = os.environ.get("AD_APP_ID", "dash-mui-scheduler") +# ONE short app id, network-wide: the directory key (the subdomain slug). +# AD_APP_ID, SATELLITE_APP_KEY and bulletin app_id all converge on it — +# tests/test_internal_traffic.py pins the three together. +APP_ID = os.environ.get("AD_APP_ID", "muischeduler") _TIMEOUT = 2 # seconds per fetch — never stall a page view longer _COOLDOWN = 60 # seconds to skip fetches after a failure @@ -63,10 +66,16 @@ def fetch_ad(page: str) -> dict | None: if time.time() - _last_failure < _COOLDOWN: return None try: + from lib.constants import internal_ua + resp = _session.get( f"{AD_SERVER_URL}/api/ad-network/serve", params={"app": APP_ID, "page": page}, timeout=_TIMEOUT, + # Internal-traffic contract: a bare python-requests UA would be + # classified as a bot by the hub's tracker, inflating its numbers + # with one fake bot hit per page view here. + headers={"User-Agent": internal_ua("ad-client")}, ) if resp.status_code == 200 and resp.content: return resp.json() diff --git a/lib/analytics_tracker.py b/lib/analytics_tracker.py index c29d42b..3199c50 100644 --- a/lib/analytics_tracker.py +++ b/lib/analytics_tracker.py @@ -11,7 +11,6 @@ import os from pathlib import Path from datetime import datetime -import re import requests from functools import lru_cache @@ -149,6 +148,10 @@ def detect_bot_type(self, user_agent): @lru_cache(maxsize=1000) def get_geolocation(self, ip_address): """Get geolocation data from IP address using ip-api.com (free service).""" + # Tests and CI must never depend on a third-party geo API being up. + if os.getenv("ANALYTICS_GEO_LOOKUP", "1") == "0": + return None + # Skip local/private IPs if not ip_address or ip_address in ['127.0.0.1', 'localhost', '::1']: return None @@ -190,6 +193,19 @@ def track_visit(self, path, user_agent, ip_address=None, auth_name=None, """Track a visitor. auth_name (the verified Clerk display name, when the caller resolved one) stamps the hit as authenticated. country is the edge-supplied CF-IPCountry code, when the request carried one.""" + # The network's internal-traffic contract: hub health sweeps, CI smoke + # batteries and satellite-to-satellite calls identify themselves with + # INTERNAL_UA_TOKEN in the User-Agent. Dropped at WRITE time — before + # device detection and before bot classification — so machinery talking + # to itself never reaches the ledger the hourly rollup is built from. + from lib.constants import INTERNAL_UA_TOKEN + if user_agent and INTERNAL_UA_TOKEN.lower() in user_agent.lower(): + return + + # /healthz is a liveness probe, never a visit. + if path.startswith('/healthz'): + return + # Skip internal Dash paths and static assets skip_paths = [ '.css', '.js', '.png', '.jpg', '.ico', '.svg', '.woff', '.woff2', '.ttf', '.eot', @@ -241,7 +257,7 @@ def track_visit(self, path, user_agent, ip_address=None, auth_name=None, try: with open(self.data_file, 'r') as f: data = json.load(f) - except: + except Exception: data = {"visits": [], "stats": {"desktop": 0, "mobile": 0, "tablet": 0, "bot": 0, "total": 0}} # Add visit diff --git a/lib/asgi_middleware.py b/lib/asgi_middleware.py index c4d0d97..ba12b57 100644 --- a/lib/asgi_middleware.py +++ b/lib/asgi_middleware.py @@ -8,10 +8,12 @@ from starlette.middleware.base import BaseHTTPMiddleware from starlette.requests import Request -from starlette.responses import Response +from starlette.responses import RedirectResponse, Response from lib.analytics_tracker import resolve_client_ip, resolve_country, tracker from lib.auth import identify_request_user +from lib.canonical_host import canonical_redirect +from lib.social_cards import is_social_card class AnalyticsMiddleware(BaseHTTPMiddleware): @@ -43,30 +45,59 @@ class SocialCardMiddleware(BaseHTTPMiddleware): """Serve the full og:image HTML to social-card scrapers (Twitter/FB/Discord/…), which ``add_llms_routes`` would otherwise hand its image-less SEO HTML. Mirrors the Flask wsgi wrap in ``run.py``. Added LAST → outermost → pre-empts the package. + + ``renderer`` is a ``lib.social_cards.SocialCardRenderer`` — a callable that + builds the card for the requested path, so each URL unfurls as itself. """ - def __init__(self, app, social_html: str = "", social_uas=()) -> None: + def __init__(self, app, renderer=None, social_uas=()) -> None: super().__init__(app) - self._html = social_html or "" + self._render = renderer self._uas = tuple(social_uas) async def dispatch(self, request: Request, call_next) -> Response: - ua = (request.headers.get("user-agent", "") or "").lower() path = request.url.path - # method-aware: scrapers only GET/HEAD — spoofed-UA POSTs (e.g. to the - # Svix-verified /webhooks/clerk) must reach the real handlers. - if (self._html and self._uas and request.method in ("GET", "HEAD") - and any(b in ua for b in self._uas) - and not path.startswith("/assets") and not path.startswith("/_") - and not path.startswith("/webhooks")): - return Response(self._html, media_type="text/html; charset=utf-8") + if self._render and self._uas and is_social_card( + request.headers.get("user-agent"), path, request.method + ): + return Response(self._render(path), media_type="text/html; charset=utf-8") + return await call_next(request) + + +class CanonicalHostMiddleware(BaseHTTPMiddleware): + """301 every non-canonical host to the canonical one. See lib/canonical_host.""" + + def __init__(self, app, canonical_host: str = "", enabled: bool = False) -> None: + super().__init__(app) + self._host = canonical_host + self._enabled = enabled + + async def dispatch(self, request: Request, call_next) -> Response: + target = canonical_redirect( + request.headers.get("host"), + request.url.path, + request.method, + request.url.query, + canonical_host=self._host, + enabled=self._enabled, + ) + if target: + return RedirectResponse(target, status_code=301) return await call_next(request) -def register_asgi_middleware(app, social_html: str = None, social_uas=()) -> None: +def register_asgi_middleware(app, social_renderer=None, social_uas=(), + canonical_host="", canonical_redirect_enabled=False) -> None: """Attach all ASGI middleware to ``app.server`` (a FastAPI instance). Starlette runs middleware in REVERSE add-order, so the LAST added is OUTERMOST: analytics → social - (the social-card shim sees the request first on the way in).""" + → canonical host. The host redirect must be outermost of all — a request on the + wrong host should be sent away before anything renders a page for it.""" app.server.add_middleware(AnalyticsMiddleware) - if social_html: - app.server.add_middleware(SocialCardMiddleware, social_html=social_html, social_uas=social_uas) + if social_renderer: + app.server.add_middleware( + SocialCardMiddleware, renderer=social_renderer, social_uas=social_uas + ) + if canonical_redirect_enabled: + app.server.add_middleware( + CanonicalHostMiddleware, canonical_host=canonical_host, enabled=True + ) diff --git a/lib/asgi_routes.py b/lib/asgi_routes.py index f54c763..70f374b 100644 --- a/lib/asgi_routes.py +++ b/lib/asgi_routes.py @@ -51,6 +51,7 @@ class PageListResponse(BaseModel): class HealthResponse(BaseModel): ok: bool = True + app: str = "" backend: str dash_version: str @@ -102,8 +103,11 @@ def build_health_router() -> APIRouter: @router.get("/healthz", response_model=HealthResponse, summary="Liveness probe") def healthz() -> HealthResponse: + from lib.traffic_report import app_key + return HealthResponse( ok=True, + app=app_key(), backend="fastapi", dash_version=dash.__version__, ) diff --git a/lib/auth.py b/lib/auth.py index 63cd516..a88bbb4 100644 --- a/lib/auth.py +++ b/lib/auth.py @@ -63,7 +63,7 @@ def clerk_enabled(): "https://cast.2plot.net", "https://2plot.dev", "https://2plot.me", "https://2plot.world", "https://2plot.shop", - # scheduler-docs origin added here once it has a domain + "https://muischeduler.2plot.dev", # these docs ) diff --git a/lib/bulletin.py b/lib/bulletin.py new file mode 100644 index 0000000..46b156a --- /dev/null +++ b/lib/bulletin.py @@ -0,0 +1,82 @@ +"""Network bulletin — hub-published tips and announcements. + +The hub (2plot.dev) serves one JSON document at ``/api/network/bulletin`` and +every satellite renders it in the header of its llms.txt viewer — the network +says "here is what changed" once, in one place, instead of in a dozen +repositories that immediately drift. + +The wiring is a function that returns whether it wired, ``run.py`` prints +that, and ``tests/test_bulletin.py`` exercises it directly — no commented-out +code, and a boot log line that says which of the two states you are in. (The +boilerplate learned this the hard way: four commented-out lines in run.py and +an env var set in production against code that never read it. Nothing failed; +the announcement just never appeared.) + +NOTE: ``NETWORK_BULLETIN_URL`` must be set on the Render SERVICE, not only in +render.yaml — blueprint ``envVars`` apply on Blueprint sync, not on git-push +autodeploys. Detection: this satellite showing ONE generic tip where the hub +publishes more is an unwired bulletin, not a styling difference. + +Env: + NETWORK_BULLETIN_URL the hub endpoint. Absent -> feature off, silently. + NETWORK_BULLETIN_TTL_S seconds a cached bulletin stays fresh (default 900) +""" + +from __future__ import annotations + +import os +from typing import Optional + +DEFAULT_TTL_S = 900.0 + +# The hub endpoint. Not a default — `configure()` requires the env var to be +# set, because a satellite that silently starts calling a hub it was never +# pointed at is a surprise. This constant is the one place render.yaml and +# .env docs copy from. +HUB_BULLETIN_URL = "https://2plot.dev/api/network/bulletin" + + +def url() -> Optional[str]: + return os.environ.get("NETWORK_BULLETIN_URL") or None + + +def _ttl() -> float: + try: + return max(60.0, float(os.environ.get("NETWORK_BULLETIN_TTL_S", + DEFAULT_TTL_S))) + except (TypeError, ValueError): + return DEFAULT_TTL_S + + +def app_id() -> str: + """This app's key in the hub's network directory. + + Reused from ``lib.traffic_report`` rather than hard-coded, so a deployment + that sets ``SATELLITE_APP_KEY`` for its traffic rollups is automatically + identified the same way here. tests/test_internal_traffic.py pins this, + ``ad_client.APP_ID`` and the reporter key to the one short id. + """ + from lib.traffic_report import app_key + + return app_key() + + +def configure() -> bool: + """Point the package at the hub's bulletin. Returns whether it did. + + Fail-open in both directions: with no URL the feature is off and the + viewer header renders the package's defaults; with an unreachable URL the + package's client degrades silently — a hub outage must not take the + documentation down with it. + """ + endpoint = url() + if not endpoint: + return False + + try: + from dash_improve_my_llms import configure_bulletin + except ImportError: # pragma: no cover - older releases lack the feature + return False + + configure_bulletin(url=endpoint, ttl=_ttl(), app_id=app_id()) + return True diff --git a/lib/canonical_host.py b/lib/canonical_host.py new file mode 100644 index 0000000..69d1c6b --- /dev/null +++ b/lib/canonical_host.py @@ -0,0 +1,55 @@ +"""Redirect every non-canonical host to the one canonical origin. + +The docs are reachable at more than one address — the Render service's own +``*.onrender.com`` URL never stops working once a custom domain is attached. Two +hosts serving byte-identical pages is duplicate content: search engines pick a +winner per URL, links split between the two, and the ``rel=canonical`` we emit +is only a *hint*. A 301 is the instruction. + +Off by default. ``CANONICAL_HOST_REDIRECT`` must be set to turn it on, because +enabling it before the custom domain's DNS actually resolves would bounce every +visitor to a dead host. Order of operations is in render.yaml. +""" +from __future__ import annotations + +# Never redirected: +# /healthz — Render's health check; a 3xx there fails the deploy. +# /assets, /_dash* — static + the renderer's own XHR; an extra hop per asset +# buys nothing, and a redirected POST would lose its body. +# /webhooks, /api — signed/programmatic callers that address a fixed URL. +_EXEMPT_PREFIXES = ("/healthz", "/assets", "/_dash", "/_reload", "/_favicon", + "/webhooks", "/api/") + +# Local development and in-process test clients are never "the wrong host". +_LOCAL_HOSTS = ("localhost", "127.0.0.1", "0.0.0.0", "[::1]", "testserver") + + +def canonical_redirect( + host: str | None, + path: str, + method: str = "GET", + query: str = "", + *, + canonical_host: str, + enabled: bool, +) -> str | None: + """Return the absolute URL to 301 to, or None to serve the request normally. + + ``host`` is the request's Host header (``example.com`` or ``example.com:443``). + """ + if not enabled or not canonical_host or not host: + return None + if method not in ("GET", "HEAD"): + return None + + hostname = host.split(":", 1)[0].strip().lower() + if not hostname or hostname == canonical_host.lower(): + return None + if hostname in _LOCAL_HOSTS or hostname.endswith(".local"): + return None + + path = path or "/" + if any(path.startswith(prefix) for prefix in _EXEMPT_PREFIXES): + return None + + return f"https://{canonical_host}{path}" + (f"?{query}" if query else "") diff --git a/lib/constants.py b/lib/constants.py index 4601464..7f6be03 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -1,8 +1,144 @@ -PAGE_TITLE_PREFIX = "dash-mui-scheduler | " +import os as _os + +# --------------------------------------------------------------------------- +# Site identity — one string, every surface (2plot network standard) +# --------------------------------------------------------------------------- +# The brand reaches: Dash(title=SITE_BRAND), register_page_metadata(path="/", +# name=SITE_BRAND) (→ the /llms.txt H1 and the viewer brand chip via +# dash-improve-my-llms ≥2.3.4 resolve_site_title), templates/index.html's +# <title>, and the home page prose. tests/test_site_identity.py pins them all +# to this constant — the failure mode is silent (a viewer chip reading a bare +# "Dash") so only a test catches it. +# +# Library rule: the PACKAGE NAME comes first in the brand (people install it); +# "Pip Install Python" is the byline, never part of the brand. +SITE_BRAND = "dash-mui-scheduler — MUI X scheduling for Dash" + +SITE_DESCRIPTION = ( + "Event calendar, resource timeline & radial chart components for Plotly " + "Dash, wrapping the MUI X Scheduler — EventCalendar, EventCalendarPremium, " + "EventTimeline, RadialLineChart and RadialBarChart, with recurrence, " + "drag & resize, resources, timezones and theming. By Pip Install Python." +) + +# The brand without its tagline — for surfaces that prefix something else and +# would otherwise run past platform truncation points. +SITE_SHORT_NAME = "dash-mui-scheduler" + +# Prefixed to every per-page title. Dash passes page titles straight into +# og:title / twitter:title, so this is the headline on every share card. +# Derived, not retyped, so the two can't drift (test_site_identity pins it). +PAGE_TITLE_PREFIX = f"{SITE_SHORT_NAME} | " # App accent: a blue palette ("brand") anchored on rgb(51,153,255) = #3399ff, # defined in components/appshell.py theme.colors. Set back to "teal" to revert. PRIMARY_COLOR = "brand" -APP_VERSION = "0.1.0" + +# Read from package.json — the same file setup.py takes the version from, so the +# site, the wheel, and the JSON-LD in templates/index.html cannot drift apart. +try: + import json as _json + from pathlib import Path as _Path + + APP_VERSION = _json.loads( + (_Path(__file__).resolve().parent.parent / "package.json").read_text() + ).get("version", "0.0.0") +except Exception: # pragma: no cover - never break startup over a version string + APP_VERSION = "0.0.0" + +# --------------------------------------------------------------------------- +# Canonical origin. ONE source of truth for every absolute URL the site emits: +# canonical links, og:url, og:image, sitemap.xml, robots.txt, llms.txt and the +# JSON-LD @ids. Env-driven (APP_BASE_URL, see render.yaml) so the host can move +# without a code change; the default below is the live public address. +# +# The Render service's own dash-mui-scheduler-docs.onrender.com URL keeps +# serving the same site forever — lib/canonical_host.py 301s it here so the two +# don't compete as duplicates. +# --------------------------------------------------------------------------- +BASE_URL = _os.getenv("APP_BASE_URL", "https://muischeduler.2plot.dev").rstrip("/") + +# Hostname only — what lib/canonical_host.py compares the Host header against. +CANONICAL_HOST = BASE_URL.split("//", 1)[-1].split("/", 1)[0] + +# Send every other host here with a 301. OFF unless CANONICAL_HOST_REDIRECT is +# set: switching it on before the custom domain's DNS resolves would bounce +# every visitor to a host that isn't answering yet. +CANONICAL_HOST_REDIRECT = _os.getenv("CANONICAL_HOST_REDIRECT", "").strip().lower() in ( + "1", "true", "yes", "on", +) + +# --------------------------------------------------------------------------- +# The social card (2plot network standard) +# --------------------------------------------------------------------------- +# The card lives on the CDN, NOT in assets/: a scraper fetching from a cold +# free-tier container times out once and the platform caches the miss forever. +# Rendered by scripts/make_social_card.py (1200x630 — the Open Graph ideal) +# and uploaded BY HAND to the Cloudflare bucket. HARD GATE: never deploy code +# whose og:image points at this URL until the object answers 200 with a +# 1200x630 IHDR — scripts/smoke_live.py checks the real pixels after every +# deploy, and fails while it 404s, deliberately. +# +# image_url=OG_IMAGE_URL and description= go at EVERY register_page: one +# missing and Dash emits content="" — and the empty tag, later in document +# order, is the one scrapers take. +OG_IMAGE_URL = "https://cdn.2plot.ai/github_assets/muischeduler.2plot.dev.png" +OG_IMAGE_WIDTH = 1200 +OG_IMAGE_HEIGHT = 630 +OG_IMAGE_TYPE = "image/png" +OG_IMAGE_ALT = SITE_BRAND + +# --------------------------------------------------------------------------- +# The network's internal-traffic contract +# --------------------------------------------------------------------------- +# Any request whose User-Agent contains INTERNAL_UA_TOKEN is 2plot machinery +# talking to itself (hub health sweeps, CI smoke batteries, this app's own +# calls to the hub) and is counted NOWHERE. Two halves, both required: +# inbound — lib/analytics_tracker drops token-carrying hits at WRITE time, +# before device detection and bot classification; +# outbound — every call this host makes to another network host sends +# internal_ua(...), so the far side can apply the same rule. +# The token must stay byte-identical across the network (mirrors +# pip-docs+/lib/constants.py and the boilerplate). +INTERNAL_UA_TOKEN = "2plot-internal" +INTERNAL_UA = "2plot-internal/1.0 (+https://2plot.ai/docs/satellite-analytics)" + + +def internal_ua(caller: str = "") -> str: + """``INTERNAL_UA`` with a caller suffix (e.g. ``"ad-client"``) for the far + side's logs. Only the token matters to the contract.""" + caller = (caller or "").strip() + return f"{INTERNAL_UA} {caller}" if caller else INTERNAL_UA + + +def require_owned_base_url(base_url: str = BASE_URL) -> None: + """Fail fast in production when BASE_URL isn't this app's real origin. + + Only enforced when a hosting platform is detected (Render sets ``RENDER``; + ``APP_ENV=production`` works anywhere else) so local runs and the test + suite are unaffected. Catches APP_BASE_URL unset (the canonical would + advertise whatever the default says) and platform-generated hostnames + (``*.onrender.com`` still resolves after the custom domain attaches, and a + canonical pointing there splits link equity across two hosts). + """ + in_production = bool( + _os.environ.get("RENDER") or _os.environ.get("APP_ENV") == "production" + ) + if not in_production: + return + if not _os.environ.get("APP_BASE_URL"): + raise RuntimeError( + "APP_BASE_URL is not set. Canonical links, sitemap.xml and llms.txt " + f"would all claim {base_url!r}. Set APP_BASE_URL to this " + "deployment's real origin (e.g. https://muischeduler.2plot.dev)." + ) + for platform_host in ("onrender.com", "herokuapp.com", "railway.app", "fly.dev"): + if platform_host in base_url: + raise RuntimeError( + f"APP_BASE_URL={base_url!r} is a platform-generated hostname. " + "Set APP_BASE_URL to the public domain so canonicals point at " + "one host." + ) + # Populated by pages/markdown.py when loading documentation files (raw markdown # keyed by page name) — used by the "copy for LLM" button directive. diff --git a/lib/directives/source.py b/lib/directives/source.py index 76a06dd..a3d73bd 100644 --- a/lib/directives/source.py +++ b/lib/directives/source.py @@ -29,4 +29,4 @@ def render(self, renderer, title: str, content: str, **options) -> Component: "icon": mapping[extension]["icon"], } ) - return dmc.CodeHighlightTabs(code=code, defaultExpanded=defaultExpanded=="true", withExpandButton=withExpandedButton=='true') + return dmc.CodeHighlightTabs(code=code, defaultExpanded=defaultExpanded == "true", withExpandButton=withExpandedButton == 'true') diff --git a/lib/health.py b/lib/health.py new file mode 100644 index 0000000..f5a5586 --- /dev/null +++ b/lib/health.py @@ -0,0 +1,52 @@ +"""``/healthz`` liveness probe for the Flask backend. + +The 2plot.ai hub sweeps every satellite's ``/healthz`` once an hour and +records up/down + latency — the "Satellite health & reach" panel on +``/traffic``. The battery (scripts/network_smoke.py) and the CD deploy gate +both assert the exact field ``ok: true``; a 200 with different JSON reads as +"unhealthy" to them, deliberately. + +The FastAPI build already declares a typed ``/healthz`` in +``lib/asgi_routes`` (it shows up in Swagger); this module gives the flask +backend the same endpoint so the probe result doesn't depend on which backend +a deployment happens to run. Keep it cheap: the hub measures the round trip. +""" +from __future__ import annotations + +import dash + + +def health_payload(backend: str) -> dict: + from lib.traffic_report import app_key + + return { + "ok": True, + "app": app_key(), + "backend": backend, + "dash_version": dash.__version__, + } + + +def register_health_route(app, backend: str) -> None: + """Mount ``/healthz`` on flask. No-op on FastAPI (already typed there).""" + if backend == "fastapi": + return + + server = app.server + payload = health_payload(backend) + + if backend == "quart": + from quart import jsonify + + @server.get("/healthz") + async def _healthz(): # pragma: no cover — quart runtime + return jsonify(payload) + else: + from flask import jsonify + + @server.get("/healthz") + def _healthz(): + return jsonify(payload) + + print(f"[dash-mui-scheduler] /healthz registered ({backend}) — " + "the 2plot.ai hourly health sweep probes this path.") diff --git a/lib/network_directory.py b/lib/network_directory.py new file mode 100644 index 0000000..701b46d --- /dev/null +++ b/lib/network_directory.py @@ -0,0 +1,221 @@ +"""Cross-host directory for the 2plot network — one definition, every satellite. + +Why this file exists +-------------------- +Search engines follow links between hosts weakly; agents don't follow them at +all. A model answering "what does this ecosystem provide?" fetches one or two +URLs and reasons from what came back. Landing on ``leaflet.2plot.dev`` it sees +one library, with nothing in the markup saying the other eleven hosts exist. +``sitemap.xml`` cannot fix that — a sitemap is scoped to its own origin by +design — so ``dash-improve-my-llms`` 2.1 emits an explicit machine-readable +directory instead: ``<link rel="related">`` tags in ``<head>``, a ``## Network`` +section in ``/llms.txt``, and followed links in the prerendered body. + +Keep the definition **here**, in the template, and import it. Twelve +hand-maintained copies of the same peer list will drift, and a directory that +disagrees with itself across hosts is worse than no directory at all. + +Three tiers, and the distinction is load-bearing: + +``PEERS`` + Same network, same operator. These build the cross-host graph you own. +``AFFILIATED`` + Yours, on unrelated domains. Findable when asked "what else did you + build?" without being swept into "what is the 2plot network?". +``EXTERNAL`` + Third-party docs you reference but don't own. Emitted ``rel="nofollow"`` + — references, not endorsements. + +Usage in a satellite's ``run.py``, before ``add_llms_routes(app)``:: + + from lib.constants import BASE_URL + from lib import network_directory + + app._base_url = BASE_URL + network_directory.apply(BASE_URL) +""" + +from __future__ import annotations + +from typing import Any, Dict, List + +# Only list hosts that are actually live. A directory entry pointing at a +# subdomain with no site is a dead link an agent will follow once and then +# distrust the rest of the list for. muicharts.2plot.dev and +# flexlayout.2plot.dev have no docs site yet — add them in the same change +# that ships them, not before. +# +# --------------------------------------------------------------------------- +# DIVERGENCE FROM boilerplate.2plot.dev — deliberate, not drift. +# +# Verified by request on 2026-07-31, not by reading a status table: +# +# pannellum.2plot.dev NXDOMAIN <- listed in the boilerplate's copy +# emojimart.2plot.dev NXDOMAIN <- listed in the boilerplate's copy +# muischeduler.2plot.dev 200 (hub still says "shipping") +# flows.2plot.dev 200 (hub still says "shipping") +# leaflet.2plot.dev 200 +# boilerplate.2plot.dev 200 +# llms.2plot.dev 503 spin-up, live per the hub <- ABSENT upstream +# +# So the two dead entries are dropped here and llms.2plot.dev is added. The +# real fix belongs in the boilerplate, because that copy propagates to every +# satellite; restore this file to a straight copy once it lands there. +# --------------------------------------------------------------------------- +PEERS: List[Dict[str, str]] = [ + { + "name": "2plot.ai", + "url": "https://2plot.ai", + "description": "Network hub and account origin.", + }, + { + "name": "2plot.dev", + "url": "https://2plot.dev", + "description": "Package index for every open-source component in the network.", + }, + { + "name": "Documentation boilerplate", + "url": "https://boilerplate.2plot.dev", + "description": "The markdown-driven documentation template every satellite site is built from.", + }, + { + "name": "dash-leaflet2", + "url": "https://leaflet.2plot.dev", + "description": "Leaflet 2 maps as Dash components.", + }, + { + "name": "dash-mui-scheduler", + "url": "https://muischeduler.2plot.dev", + "description": "MUI X Scheduler — calendars and event scheduling for Dash.", + }, + { + "name": "dash-flows", + "url": "https://flows.2plot.dev", + "description": "Node-graph editors built on React Flow.", + }, + { + "name": "dash-improve-my-llms", + "url": "https://llms.2plot.dev", + "description": "The AI/LLM and SEO package every site in this network is built on.", + }, + { + "name": "dash-email", + "url": "https://email.2plot.dev", + "description": "Email composition and delivery components.", + }, + # dash-pannellum (pannellum.2plot.dev) and dash-emoji-mart + # (emojimart.2plot.dev) belong here the day their DNS resolves. Both are + # NXDOMAIN as of 2026-07-31 — see the note above. +] + +AFFILIATED: List[Dict[str, str]] = [ + { + "name": "Pip Install Python", + "url": "https://pip-install-python.com", + "description": "The original component documentation site.", + }, + { + "name": "Pirate's Bargain", + "url": "https://piratesbargain.com", + "description": "Deal aggregator built on the same Dash stack.", + }, + { + "name": "ai-agent.buzz", + "url": "https://ai-agent.buzz", + "description": "Agent tooling directory.", + }, +] + +EXTERNAL: List[Dict[str, Any]] = [ + { + "name": "Dash Mantine Components", + "url": "https://www.dash-mantine-components.com", + "description": "The UI component layer these docs are built with.", + "llms_txt": "https://www.dash-mantine-components.com/llms.txt", + }, + { + "name": "Plotly Dash documentation", + "url": "https://dash.plotly.com", + "description": "Upstream framework documentation.", + }, +] + +NETWORK_NAME = "The 2plot network" +NETWORK_DESCRIPTION = ( + "Open-source Dash component libraries by Pip Install Python. Each component " + "has its own documentation site and its own llms.txt; 2plot.dev indexes all " + "of them, and 2plot.ai is the hub." +) +HUB_URL = "https://2plot.dev" + +# The mark drawn in the header of the rendered llms.txt view: "2" + morse +# encoding of "plot" + "ai", as columns of dots and dashes. +# +# No period glyph between the halves — the morse block already separates them, +# and a literal "." next to it reads as punctuation dropped into a graphic. +# The renderer turns a suffix ending in "i" into an upward flourish, so "ai" +# draws as "a" plus that mark; `label` carries the real domain for screen +# readers and the SVG <title>, which is the only place the dot belongs. +# +# Defined here rather than per-app because this module is copied verbatim into +# every satellite — that is what keeps one mark across the network instead of +# twelve slightly different ones. +WORDMARK = { + "morse": "plot", + "prefix": "2", + "suffix": "ai", + "label": "2plot.ai", +} + + +def peers_for(app_url: str) -> List[Dict[str, str]]: + """`PEERS` with this app removed. + + A site listing itself as its own peer reads as generated rather than + curated, and it wastes a slot in a list an agent may only skim. + """ + own = app_url.rstrip("/") + return [p for p in PEERS if p["url"].rstrip("/") != own] + + +def apply(app_url: str) -> None: + """Publish the directory for the app served at ``app_url``. + + Degrades rather than fails on older releases of the package. A satellite + pinned behind this file should still boot: losing the directory, or losing + the wordmark, is a degradation — refusing to start is not. + + That matters during a staged rollout, when this module reaches satellites + before the new package does. ``register_network`` arrived in 2.1 and its + ``wordmark`` argument in 2.2, and Python raises ``TypeError`` on an unknown + keyword, so the argument is only passed when the installed signature + actually accepts it. + """ + try: + from dash_improve_my_llms import register_network + except ImportError: # pragma: no cover - only on <2.1 + import warnings + + warnings.warn( + "dash-improve-my-llms is older than 2.1, so the cross-host network " + "directory will not be published. Upgrade to publish it.", + RuntimeWarning, + stacklevel=2, + ) + return + + import inspect + + extra: Dict[str, Any] = {} + if "wordmark" in inspect.signature(register_network).parameters: + extra["wordmark"] = WORDMARK + + register_network( + name=NETWORK_NAME, + description=NETWORK_DESCRIPTION, + hub_url=HUB_URL, + peers=peers_for(app_url), + affiliated=AFFILIATED, + external=EXTERNAL, + **extra, + ) diff --git a/lib/social_cards.py b/lib/social_cards.py new file mode 100644 index 0000000..b1a8e3b --- /dev/null +++ b/lib/social_cards.py @@ -0,0 +1,129 @@ +"""Link-unfurl (social card) HTML for scrapers. + +Why this exists: ``add_llms_routes`` classifies Twitter/Facebook/Discord/Slack +crawlers as bots and hands them the package's prerendered SEO HTML, which has no +``og:image`` — so every shared link unfurled as a bare text row. These shims +serve those scrapers the site's own ``templates/index.html`` head instead. + +Scrapers never run JavaScript, so the Dash placeholders are stripped and the +per-page ``og``/``twitter`` block that Dash would have emitted at ``{%metas%}`` +is rendered here from ``dash.page_registry`` for the requested path. That keeps +the card per-page (right title, right description, right URL) rather than +describing the site on every link. +""" +from __future__ import annotations + +# Scrapers only ever GET/HEAD. Matched case-insensitively against the UA. +SOCIAL_UAS = ( + "twitterbot", "facebookexternalhit", "facebookcatalog", "discordbot", + "slackbot", "slack-imgproxy", "linkedinbot", "whatsapp", "telegrambot", + "pinterest", "redditbot", "skypeuripreview", "embedly", "iframely", +) + +# Placeholders Dash would fill. Scrapers read <head> meta only, so everything +# except {%metas%} (replaced with the card block) is simply dropped. +_DASH_PLACEHOLDERS = ( + "{%favicon%}", "{%css%}", "{%app_entry%}", "{%config%}", "{%scripts%}", + "{%renderer%}", "{%title%}", +) + +# Dimensions/type/alt come from lib.constants' OG block at render time so the +# scraper card can never disagree with what the SPA shell declares. 1200x630 → +# twitter:card=summary_large_image (the wide slot, no letterboxing). +_CARD = """ + <meta name="description" content="{description}"> + <meta property="og:type" content="website"> + <meta property="og:title" content="{title}"> + <meta property="og:description" content="{description}"> + <meta property="og:image" content="{image}"> + <meta property="og:image:secure_url" content="{image}"> + <meta property="og:image:type" content="{image_type}"> + <meta property="og:image:width" content="{image_width}"> + <meta property="og:image:height" content="{image_height}"> + <meta property="og:image:alt" content="{image_alt}"> + <meta property="twitter:card" content="summary_large_image"> + <meta property="twitter:title" content="{title}"> + <meta property="twitter:description" content="{description}"> + <meta property="twitter:image" content="{image}"> + <meta property="twitter:image:alt" content="{image_alt}"> +""" + + +def is_social_card(ua: str | None, path: str, method: str = "GET") -> bool: + """True when this request is a social-card scraper fetching a page. + + Method-aware on purpose: a spoofed-UA POST must fall through to the real + handlers (e.g. the Svix-verified ``/webhooks/clerk``). + """ + ua = (ua or "").lower() + return ( + method in ("GET", "HEAD") + and any(bot in ua for bot in SOCIAL_UAS) + and not path.startswith("/assets") + and not path.startswith("/_") + and not path.startswith("/webhooks") + ) + + +def _escape(text: str) -> str: + return ( + str(text) + .replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace('"', """) + ) + + +class SocialCardRenderer: + """Render the scraper-facing ``<head>`` for a given request path.""" + + def __init__(self, template: str, base_url: str, image_url: str, + fallback_title: str, fallback_description: str) -> None: + self._base_url = base_url.rstrip("/") + self._image_url = image_url + self._fallback = (fallback_title, fallback_description) + + html = template + for placeholder in _DASH_PLACEHOLDERS: + html = html.replace(placeholder, "") + self._template = html # still holds {%metas%} and __PAGE_URL__ + + def _page_meta(self, path: str) -> tuple[str, str]: + try: + import dash + + for entry in (dash.page_registry or {}).values(): + if entry.get("path") == path: + title = entry.get("title") or self._fallback[0] + description = entry.get("description") or self._fallback[1] + return ( + title() if callable(title) else title, + description() if callable(description) else description, + ) + except Exception: + pass + return self._fallback + + def __call__(self, path: str) -> str: + from lib.constants import ( + OG_IMAGE_ALT, OG_IMAGE_HEIGHT, OG_IMAGE_TYPE, OG_IMAGE_WIDTH, + ) + + path = "/" + (path or "/").strip("/") + title, description = self._page_meta(path) + card = _CARD.format( + title=_escape(title), + description=_escape(description), + image=self._image_url, + image_type=OG_IMAGE_TYPE, + image_width=OG_IMAGE_WIDTH, + image_height=OG_IMAGE_HEIGHT, + image_alt=_escape(OG_IMAGE_ALT), + ) + page_url = self._base_url + (path if path != "/" else "/") + return ( + self._template + .replace("{%metas%}", card) + .replace("__PAGE_URL__", page_url) + ) diff --git a/lib/traffic_report.py b/lib/traffic_report.py index b1aefca..096f954 100644 --- a/lib/traffic_report.py +++ b/lib/traffic_report.py @@ -58,7 +58,16 @@ HUB_TRAFFIC_URL = os.environ.get( "HUB_TRAFFIC_URL", "https://2plot.ai/api/satellite/traffic") -APP_KEY = os.environ.get("SATELLITE_APP_KEY", "scheduler") + + +def app_key() -> str: + """This app's ONE short id on every hub surface: its network-directory + key, the subdomain slug. AD_APP_ID and bulletin app_id converge on the + same value (tests/test_internal_traffic.py pins them together).""" + return os.environ.get("SATELLITE_APP_KEY") or "muischeduler" + + +APP_KEY = app_key() SESSION_GAP_MIN = 30 # the hub's session rule — keep it identical _TIMEOUT = 10 # seconds per POST @@ -217,9 +226,14 @@ def post_rollup(rollup: dict) -> bool: sig = hmac.new(secret.encode(), f"{ts}.".encode() + body, hashlib.sha256).hexdigest() try: + from lib.constants import internal_ua + resp = requests.post( HUB_TRAFFIC_URL, data=body, timeout=_TIMEOUT, headers={"Content-Type": "application/json", + # Internal-traffic contract: the hub must never count + # this machinery POST as a visit or a bot hit. + "User-Agent": internal_ua("traffic-report"), "X-AI-Canvas-Timestamp": ts, "X-AI-Canvas-Signature": sig}) except Exception as exc: diff --git a/package.json b/package.json index f9358b2..69dd709 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dash_mui_scheduler", - "version": "0.1.0", + "version": "0.1.1", "description": "Dash components wrapping MUI X Scheduler — Event Calendar (Community & Premium) and Event Timeline", "main": "build/index.js", "repository": { diff --git a/pages/home.py b/pages/home.py index 4b0f0d0..77e536e 100644 --- a/pages/home.py +++ b/pages/home.py @@ -3,19 +3,20 @@ from dash import register_page, html from dash_iconify import DashIconify +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX, SITE_DESCRIPTION + register_page( __name__, path="/", - title="dash-mui-scheduler — MUI X Scheduler for Plotly Dash", - description=( - "A Plotly Dash wrapper for the MUI X Scheduler: EventCalendar, " - "EventCalendarPremium and EventTimeline plus the RadialLineChart and " - "RadialBarChart polar charts, " - "with recurrence, drag & resize, resources, timezones and theming." - ), + name="Home", + title=PAGE_TITLE_PREFIX + "Home", + description=SITE_DESCRIPTION, + # Pins og:image/twitter:image to the CDN card (see lib/constants). + image_url=OG_IMAGE_URL, ) ACCENT = "#3399ff" +VIDEO_ID = "i-CZH7W5ZsA" _FEATURES = [ ("tabler:calendar-event", "Event Calendar", @@ -33,6 +34,67 @@ ] +def _walkthrough(): + """The walkthrough video, embedded on the landing page. + + Same tour that the README links as a thumbnail and that Quickstart embeds — + here so a reader hitting the docs can watch it without leaving for GitHub. + Responsive 16:9: the outer box caps the width, the padding-bottom trick + holds the ratio at any screen size. youtube-nocookie keeps the landing page + from setting tracking cookies before anyone presses play. + """ + return dmc.Stack( + [ + dmc.Group( + [ + dmc.Title("Watch the walkthrough", order=3), + dmc.Anchor( + dmc.Group( + [DashIconify(icon="tabler:brand-youtube", width=18), + dmc.Text("Open on YouTube", size="sm")], + gap=6, align="center", + ), + href=f"https://youtu.be/{VIDEO_ID}", + target="_blank", underline="hover", + ), + ], + justify="space-between", align="center", wrap="nowrap", + ), + dmc.Text( + "A tour of the event calendar, the resource timeline, and the " + "radial charts.", + size="sm", c="dimmed", + ), + html.Div( + html.Iframe( + src=f"https://www.youtube-nocookie.com/embed/{VIDEO_ID}", + title="dash-mui-scheduler walkthrough", + style={ + "position": "absolute", + "top": 0, + "left": 0, + "width": "100%", + "height": "100%", + "border": 0, + "borderRadius": "8px", + }, + allow=( + "accelerometer; autoplay; clipboard-write; encrypted-media; " + "gyroscope; picture-in-picture; web-share; fullscreen" + ), + ), + style={ + "position": "relative", + "paddingBottom": "56.25%", # 16:9 + "height": 0, + "overflow": "hidden", + }, + ), + ], + gap="xs", mb="xl", style={"maxWidth": 820, "margin": "0 auto"}, + ) + + def _feature_card(icon, title, body, href): return dmc.Anchor( dmc.Card( @@ -80,6 +142,7 @@ def layout(**kwargs): ], gap="lg", py="xl", ), + _walkthrough(), dmc.SimpleGrid( [_feature_card(*f) for f in _FEATURES], cols={"base": 1, "sm": 2}, spacing="lg", mb="xl", diff --git a/pages/markdown.py b/pages/markdown.py index 3ff8315..fa225be 100644 --- a/pages/markdown.py +++ b/pages/markdown.py @@ -11,7 +11,7 @@ from pydantic import BaseModel from lib.ad_client import inject_ad_into_aside -from lib.constants import PAGE_TITLE_PREFIX, NAME_CONTENT_MAP +from lib.constants import PAGE_TITLE_PREFIX, NAME_CONTENT_MAP, OG_IMAGE_URL from lib.directives.kwargs import Kwargs from lib.directives.llms_copy import LlmsCopy from lib.directives.source import SC @@ -123,6 +123,9 @@ def _build_llms_doc(name: str, description: str, expanded_markdown: str, path: s layout=layout, category=metadata.category, icon=metadata.icon, + # Pins og:image/twitter:image to the canonical origin. Without it Dash + # infers assets/logo.svg — an SVG, which no social scraper renders. + image_url=OG_IMAGE_URL, ) # Feed the expanded markdown into dash-improve-my-llms so /<page>/llms.txt diff --git a/pages/not_found_404.py b/pages/not_found_404.py index 0755d58..0899ba4 100644 --- a/pages/not_found_404.py +++ b/pages/not_found_404.py @@ -6,7 +6,19 @@ import dash_mantine_components as dmc from dash import register_page -register_page(__name__, path="/404", title="Page not found · dash-mui-scheduler") +from lib.constants import OG_IMAGE_URL, PAGE_TITLE_PREFIX + +register_page( + __name__, + path="/404", + name="Page not found", + title=PAGE_TITLE_PREFIX + "Page not found", + # Every register_page needs description= and image_url=: one missing and + # Dash emits an empty og tag — and the empty tag, later in document order, + # is the one scrapers take (network standard). + description="The page you were looking for isn't on the calendar.", + image_url=OG_IMAGE_URL, +) ACCENT = "#3399ff" diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..7ec8cdf --- /dev/null +++ b/pytest.ini @@ -0,0 +1,7 @@ +[pytest] +testpaths = tests +# tests/ is on sys.path so `from conftest import ...` works in every module. +pythonpath = . tests +addopts = -q --strict-markers +filterwarnings = + ignore::DeprecationWarning diff --git a/render.yaml b/render.yaml index 8925bd8..1b93eb2 100644 --- a/render.yaml +++ b/render.yaml @@ -1,7 +1,8 @@ # Render blueprint — dash-mui-scheduler docs (single web service, docker runtime). -# Auto-deploys on push to main. Serves the component documentation on the -# default *.onrender.com URL (no custom domain yet; add one later and update -# APP_BASE_URL). Clerk auth is OFF at launch — no CLERK_* env vars → the auth +# Auto-deploys on push to main. Serves the component documentation at +# https://muischeduler.2plot.dev (custom domain attached in the Render +# dashboard; the service's own *.onrender.com URL 301s there — see +# CANONICAL_HOST_REDIRECT). Clerk auth is OFF — no CLERK_* env vars → the auth # package cleanly no-ops (see lib/clerk_satellite.py for the later flip-on). # # FIRST DEPLOY CHECKLIST: @@ -9,8 +10,9 @@ # the dashboard (values live in the local .env — NEVER committed). # 2. DASH_BACKEND=fastapi is load-bearing: without it the app boots on flask, # /healthz 404s, and Render loops the health check forever. -# 3. APP_BASE_URL drives sitemap.xml/llms.txt absolute URLs — keep it in -# sync with the live URL. +# 3. APP_BASE_URL drives every absolute URL the site publishes about itself +# (canonical, og, sitemap, robots, llms) — keep it in sync with the live +# URL, and see the CANONICAL_HOST_REDIRECT block for the domain-move order. services: - type: web name: dash-mui-scheduler-docs @@ -30,10 +32,30 @@ services: - key: WEB_WORKERS value: "1" - # --- Public base URL (sitemap/llms absolute links + social og:url). - # Must match the live URL: the service name below → dash-mui-scheduler-docs.onrender.com. + # --- Public base URL. THE single source of every absolute URL the site + # emits: canonical links, og:url/og:image, sitemap.xml, robots.txt, + # llms.txt and the JSON-LD @ids (lib/constants.BASE_URL). Get this wrong + # and every page canonicalises to a host that isn't the live one. + # + # The service also keeps answering on dash-mui-scheduler-docs.onrender.com + # forever. Two hosts serving identical pages is duplicate content, so + # CANONICAL_HOST_REDIRECT below 301s that one here. - key: APP_BASE_URL - value: https://dash-mui-scheduler-docs.onrender.com + value: https://muischeduler.2plot.dev + + # --- Send every other host (the *.onrender.com URL) here with a 301. + # DO THIS IN ORDER — enabling it before DNS resolves bounces every + # visitor to a host that isn't answering: + # 1. Render → Settings → Custom Domains → add muischeduler.2plot.dev. + # 2. At the 2plot.dev DNS provider add the CNAME Render shows + # (muischeduler → <service>.onrender.com); wait for Verified + the + # TLS certificate to be issued. + # 3. Confirm https://muischeduler.2plot.dev serves the docs. + # 4. THEN set APP_BASE_URL above and this flag, and redeploy. + # /healthz, /assets, /_dash*, /api/* and /webhooks are never redirected + # (a 3xx on the health check would fail the deploy) — lib/canonical_host.py. + - key: CANONICAL_HOST_REDIRECT + value: "0" # --- MUI X license (perpetual LICENSE key, not metered — set it). # The docs examples read MUI_X_LICENSE_KEY (licenseKey=os.environ.get("MUI_X_LICENSE_KEY", "")). @@ -51,9 +73,18 @@ services: # reporter is a clean no-op (and the app never appears on /traffic). - key: CROSS_APP_WEBHOOK_SECRET sync: false - # Network-directory key for this app (lib/network_directory in the hub). + # ONE short app id, network-wide (the subdomain slug / hub directory + # key). AD_APP_ID and the bulletin app_id follow this value in code. - key: SATELLITE_APP_KEY - value: scheduler + value: muischeduler + + # --- Network bulletin (hub tips/announcements in the llms.txt viewer). + # ⚠️ Blueprint envVars apply on BLUEPRINT SYNC only, not on git-push + # autodeploys — set this on the SERVICE in the Render dashboard too, or + # the viewer keeps rendering one generic package tip and nothing looks + # broken. Boot log states "network bulletin: wired/off". + - key: NETWORK_BULLETIN_URL + value: https://2plot.dev/api/network/bulletin # --- Optional --- # Visitor analytics writes ./visitor_analytics.json. That path is diff --git a/requirements.txt b/requirements.txt index cc8aaf8..0da3f1b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,26 +17,36 @@ dash-mantine-components>=2.7.0 # hooks no-op: unauthenticated, $0, no network, no session files). MUST be # installed WITH dependency resolution (never --no-deps: dash auto-imports the # package via its [dash_hooks] entry point, so a broken transitive dep crashes -# every Dash() construction app-wide). -vendor/dash_clerk_auth-0.9.0.tar.gz +# every Dash() construction app-wide). 0.9.1 floor: 0.9.0 ships a dead avatar +# chip on Clerk SATELLITE domains, and this host becomes one at flip-on. +vendor/dash_clerk_auth-0.9.1.tar.gz svix>=1.45.0 # Clerk webhook signature verification (POST /webhooks/clerk) -# 2plot.dev ad-network client (lib/ad_client.py) +# 2plot.dev ad-network client (lib/ad_client.py) + the hub traffic reporter requests>=2.27.1 -# Documentation rendering +# Documentation rendering. +# markdown2dash is NOT listed here: 0.1.2 pins gunicorn>=21.2.0,<22.0.0, +# which is unresolvable against the CVE-driven gunicorn>=23 floor below. It +# is installed `pip install --no-deps markdown2dash==0.1.2` at every install +# site (Dockerfile, ci.yml) and its real dependencies are pinned here +# instead — with ranges, because --no-deps removes the resolver: +mistune>=3.0.0 python-frontmatter>=1.0.0 -markdown2dash pydantic>=2.3.0 python-dotenv>=1.0.0 +# markdown2dash==0.1.2 <- installed --no-deps, see above -# AI/LLM integration & SEO. -# dash-improve-my-llms 2.0 is not yet on PyPI (PyPI publishes up to 1.x only), -# so it is vendored as an sdist in this repo. Install it with: -# pip install vendor/dash_improve_my_llms-2.0.0.tar.gz -# (the Dockerfile does this automatically). +# AI/LLM integration & SEO — from PyPI (the vendored 2.0.0 sdist is retired). +# 2.3.4 floor is the network standard: it brings resolve_site_title (the +# /llms.txt H1 + viewer brand chip); 2.3.3 fixed the Anthropic bot taxonomy +# and directive stripping. Both backend extras: prod runs fastapi +# (render.yaml), CI and local dev also run flask. +dash-improve-my-llms[flask,fastapi]>=2.3.4 -# Production servers. uvicorn >=0.49 is required for `--ws websockets-sansio` -# (the Dockerfile CMD depends on it). -gunicorn>=21.2.0 +# Production servers. gunicorn>=23: 21.x carried two request-smuggling CVEs +# (CVE-2024-6827, CVE-2024-1135) — that floor is why markdown2dash installs +# --no-deps. uvicorn >=0.49 is required for `--ws websockets-sansio` (the +# Dockerfile CMD depends on it). +gunicorn>=23.0.0 uvicorn[standard]>=0.49.0 diff --git a/run.py b/run.py index b23d3e7..d191bcc 100644 --- a/run.py +++ b/run.py @@ -1,8 +1,7 @@ import os import dash -from dash import Dash, _dash_renderer +from dash import Dash from components.appshell import create_appshell -import dash_mantine_components as dmc # AI/LLM Integration & SEO — dash-improve-my-llms 2.0 # 2.0 supports Flask, FastAPI, and Quart via a single backend-detecting @@ -114,6 +113,33 @@ def _strip_clerk_url(layout): except Exception: pass +# ---------------------------------------------------------------------------- +# Index template +# ---------------------------------------------------------------------------- +# templates/index.html carries __BASE_URL__/__PAGE_URL__/__VERSION__ tokens +# instead of hard-coded URLs. BASE_URL (lib/constants, from APP_BASE_URL) is the +# single source of truth for every absolute URL the site emits — the reason a +# host move is one env var, and the reason the template once spent a release +# telling search engines every page was a duplicate of a host that never existed. +from lib.canonical_host import canonical_redirect +from lib.constants import ( + APP_VERSION, BASE_URL, CANONICAL_HOST, CANONICAL_HOST_REDIRECT, OG_IMAGE_URL, + SITE_BRAND, SITE_DESCRIPTION, require_owned_base_url, +) + +# Refuse to boot in production with an unset or platform-generated base URL — +# every canonical/og/sitemap URL would advertise the wrong host, silently. +require_owned_base_url() + +_INDEX_TEMPLATE = open('templates/index.html').read() +_index_string = ( + _INDEX_TEMPLATE + .replace("__BASE_URL__", BASE_URL) + .replace("__VERSION__", APP_VERSION) + # __PAGE_URL__ is deliberately left in place — the index hook below fills it + # with the REQUESTED page's canonical URL on every response. +) + app = Dash( __name__, backend=BACKEND, @@ -122,7 +148,12 @@ def _strip_clerk_url(layout): external_scripts=scripts, update_title=None, prevent_initial_callbacks=True, - index_string=open('templates/index.html').read(), + index_string=_index_string, + # The site identity, stated the same way on every surface (network + # standard; tests/test_site_identity.py pins it). Feeds the <title> + # fallback and the "name" in the crawler HTML's JSON-LD; per-page titles + # come from register_page and are applied by the renderer on navigation. + title=SITE_BRAND, # Belt-and-suspenders: keep the GLOBAL websocket flag off too (see the # capability disable above for the full rationale). websocket_callbacks=False, @@ -132,13 +163,35 @@ def _strip_clerk_url(layout): # re-reading the env var (which could drift between processes/workers). app._backend_info = BACKEND_INFO + +# ---------------------------------------------------------------------------- +# Per-request canonical URL. +# ---------------------------------------------------------------------------- +# One HTML document serves all 17 routes, so a canonical baked into the template +# is right for exactly one of them. The inline script in templates/index.html +# keeps it right across CLIENT-side navigation; this hook makes the very first +# server response already correct, so a crawler that reads HTML without running +# JavaScript sees the real canonical instead of the home page's. +@dash.hooks.index() +def _resolve_page_url(index: str) -> str: + path = "/" + try: + request = app.backend.request_adapter() + if request is not None and getattr(request, "path", None): + path = "/" + request.path.strip("/") + except Exception: + pass # no request context (build check, tests) → fall back to the home URL + return index.replace("__PAGE_URL__", BASE_URL + (path if path != "/" else "/")) + + # ============================================================================ # AI/LLM & SEO Configuration # ============================================================================ # Base URL for SEO (sitemap.xml + llms.txt emit absolute URLs from this). # Env-driven so the Render service / custom domain sets it without a code change. -app._base_url = os.getenv("APP_BASE_URL", "https://dash-mui-scheduler-docs.onrender.com") + +app._base_url = BASE_URL # Configure bot management policies. See dash-improve-my-llms 2.0 SKILLS for # the full menu — balanced default = block training crawlers, allow AI search @@ -159,16 +212,13 @@ def _strip_clerk_url(layout): register_page_metadata( path="/", - name="dash-mui-scheduler", - description=( - "A Plotly Dash wrapper for the MUI X Scheduler — EventCalendar, " - "EventCalendarPremium and EventTimeline plus the RadialLineChart and " - "RadialBarChart polar charts — " - "with recurrence, drag & resize, resources, timezones and theming. " - "This site is the component documentation with live examples." - ), + # SITE_BRAND here is what dash-improve-my-llms ≥2.3.4 resolve_site_title + # publishes as the /llms.txt H1 and the viewer's brand chip — the display + # name "Home" is deliberately generic so this one is load-bearing. + name=SITE_BRAND, + description=SITE_DESCRIPTION, llms_doc=( - "# dash-mui-scheduler\n\n" + "# dash-mui-scheduler — MUI X scheduling for Dash\n\n" "A Plotly Dash component library wrapping the MUI X Scheduler.\n\n" "Install: `pip install dash-mui-scheduler`\n\n" "Components: EventCalendar (day/week/month/agenda views, drag & resize, " @@ -207,6 +257,92 @@ def _strip_clerk_url(layout): "[boilerplate] FastAPI showcase routers mounted: /healthz, " "/api/backend, /api/pages. Swagger UI at /docs, ReDoc at /redoc." ) +else: + # Flask/Quart get the same /healthz the FastAPI build declares — the + # 2plot.ai hourly health sweep, the CI battery and the CD deploy gate all + # probe it and assert the exact field `ok: true`. + from lib.health import register_health_route + register_health_route(app, BACKEND) + +# Cross-host directory for the 2plot network: <link rel="related"> tags, the +# "## Network" section in /llms.txt, and followed links in the prerendered +# body. Must run BEFORE add_llms_routes so the routes pick it up. +from lib import network_directory +network_directory.apply(BASE_URL) + +# ---------------------------------------------------------------------------- +# Crawler HTML: add the tags dash-improve-my-llms 2.0 does not emit. +# ---------------------------------------------------------------------------- +# Search engines are served the package's prerendered per-page document, NOT the +# SPA shell — so the canonical link, og:site_name and og:image have to be added +# there too, or they are missing from exactly the response Google indexes. +# Patched at the module attribute because handlers.py imports the generator +# lazily inside the request path. Best-effort: any signature drift falls back to +# the untouched HTML rather than breaking the crawler response. + + +def _augment_crawler_html() -> None: + from dash_improve_my_llms import html_generator as _gen + + _original = _gen.generate_static_page_html + + def _with_canonical(*args, **kwargs): + html = _original(*args, **kwargs) + try: + path = kwargs.get("page_path") or "/" + url = BASE_URL + (path if path != "/" else "/") + extra = ( + f' <meta property="og:site_name" content="{SITE_BRAND}">\n' + f' <meta property="og:image" content="{OG_IMAGE_URL}">\n' + f' <meta property="twitter:card" content="summary_large_image">\n' + f' <meta property="twitter:image" content="{OG_IMAGE_URL}">\n' + ) + # dimll ≥2.3.4 emits its own canonical in the prerender; adding a + # second identical tag fails the battery's exactly-one check (the + # same double-canonical dash-email shipped and then removed). Only + # inject ours if the artifact ever stops emitting it. + if 'rel="canonical"' not in html: + extra = f' <link rel="canonical" href="{url}">\n' + extra + return html.replace("</head>", extra + "</head>", 1) + except Exception: + return html + + _gen.generate_static_page_html = _with_canonical + + +try: + _augment_crawler_html() +except Exception as e: # pragma: no cover - never block startup on an SEO nicety + print(f"[seo] crawler-HTML canonical injection skipped: {e!r}") + +# ============================================================================ +# Analytics tracking (flask) — registered BEFORE add_llms_routes, deliberately. +# Flask runs before_request hooks in registration order, and the package's bot +# middleware ANSWERS recognized crawlers itself: registered after it, this +# tracker never sees a Googlebot hit and the ledger undercounts every crawler. +# (FastAPI is unaffected — its tracking lives in ASGI middleware, outermost.) +# ============================================================================ +if IS_FLASK: + from flask import request as _flask_request + + @app.server.before_request + def track_visitor(): + """Track visitor analytics before each request.""" + try: + from lib.auth import identify_request_user + from lib.analytics_tracker import resolve_client_ip, resolve_country + # Behind a proxy remote_addr is the PROXY — resolve the forwarded + # client address so visitor counts and countries mean something. + tracker.track_visit( + _flask_request.path, + _flask_request.headers.get('User-Agent', ''), + resolve_client_ip(_flask_request.headers, + _flask_request.remote_addr), + auth_name=identify_request_user(_flask_request.cookies), + country=resolve_country(_flask_request.headers), + ) + except Exception: + pass # Wire up the package: /llms.txt, /<page>/llms.txt, /robots.txt, /sitemap.xml, # bot-detection middleware, and (on Dash 4.3+) MCP resource registration. @@ -236,56 +372,27 @@ def _strip_clerk_url(layout): # ============================================================================ # Social-card scrapers (Twitter / Facebook / Discord / Slack / …) are treated as # bots by add_llms_routes and would get the SEO HTML (which has NO og:image). Serve -# them the full meta HTML (favicon + og:image/twitter:image from templates/index.html) -# so link unfurls show the card image. Registered OUTERMOST so it pre-empts the package. -# Scrapers only read <head> meta, so we strip the Dash placeholders → a static string. +# them templates/index.html's <head> with a per-page og/twitter card rendered in +# place of {%metas%}, so unfurls show the image AND the right page's title/URL. +# Registered OUTERMOST so it pre-empts the package. See lib/social_cards.py. # ============================================================================ -_SOCIAL_UAS = ('twitterbot', 'facebookexternalhit', 'facebookcatalog', 'discordbot', - 'slackbot', 'slack-imgproxy', 'linkedinbot', 'whatsapp', 'telegrambot', - 'pinterest', 'redditbot', 'skypeuripreview', 'embedly', 'iframely') -_SOCIAL_HTML = open('templates/index.html').read() -for _ph in ('{%metas%}', '{%favicon%}', '{%css%}', '{%app_entry%}', '{%config%}', - '{%scripts%}', '{%renderer%}', '{%title%}'): - _SOCIAL_HTML = _SOCIAL_HTML.replace(_ph, '') - - -def _is_social_card(ua, path, method='GET'): - # method-aware: social scrapers only ever GET/HEAD — a spoofed-UA POST must - # fall through to the real handlers (e.g. the Svix-verified /webhooks/clerk). - ua = (ua or '').lower() - return (method in ('GET', 'HEAD') - and any(b in ua for b in _SOCIAL_UAS) - and not path.startswith('/assets') and not path.startswith('/_') - and not path.startswith('/webhooks')) +from lib.social_cards import SOCIAL_UAS, SocialCardRenderer, is_social_card + +_social_card = SocialCardRenderer( + template=_INDEX_TEMPLATE.replace("__BASE_URL__", BASE_URL).replace("__VERSION__", APP_VERSION), + base_url=BASE_URL, + image_url=OG_IMAGE_URL, + fallback_title=SITE_BRAND, + fallback_description=SITE_DESCRIPTION, +) # ============================================================================ -# Analytics Tracking — backend-specific. -# Flask uses before_request; FastAPI uses ASGI middleware. +# Social-card / canonical-host WSGI wrap — backend-specific. +# (Flask visitor tracking registers ABOVE add_llms_routes — see that block.) # ============================================================================ if IS_FLASK: - from flask import request as _flask_request - - @server.before_request - def track_visitor(): - """Track visitor analytics before each request.""" - try: - from lib.auth import identify_request_user - from lib.analytics_tracker import resolve_client_ip, resolve_country - # Behind a proxy remote_addr is the PROXY — resolve the forwarded - # client address so visitor counts and countries mean something. - tracker.track_visit( - _flask_request.path, - _flask_request.headers.get('User-Agent', ''), - resolve_client_ip(_flask_request.headers, - _flask_request.remote_addr), - auth_name=identify_request_user(_flask_request.cookies), - country=resolve_country(_flask_request.headers), - ) - except Exception: - pass - # Wrap OUTERMOST (after add_llms_routes wrapped server.wsgi_app) so social-card # scrapers get the full og:image HTML instead of the package's image-less SEO HTML. _orig_wsgi = server.wsgi_app @@ -293,8 +400,21 @@ def track_visitor(): def _social_card_wsgi(environ, start_response): path = environ.get('PATH_INFO', '/') method = environ.get('REQUEST_METHOD', 'GET') - if _is_social_card(environ.get('HTTP_USER_AGENT'), path, method): - body = _SOCIAL_HTML.encode('utf-8') + + # Wrong host → 301 before anything renders. Outermost of all, so a + # scraper or crawler on the onrender URL is sent to the real domain + # rather than being served a duplicate of it. + target = canonical_redirect( + environ.get('HTTP_HOST'), path, method, environ.get('QUERY_STRING', ''), + canonical_host=CANONICAL_HOST, enabled=CANONICAL_HOST_REDIRECT, + ) + if target: + start_response('301 Moved Permanently', + [('Location', target), ('Content-Length', '0')]) + return [b''] + + if is_social_card(environ.get('HTTP_USER_AGENT'), path, method): + body = _social_card(path).encode('utf-8') start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8'), ('Content-Length', str(len(body)))]) return [body] @@ -305,7 +425,11 @@ def _social_card_wsgi(environ, start_response): elif BACKEND == "fastapi": from lib.asgi_middleware import register_asgi_middleware - register_asgi_middleware(app, _SOCIAL_HTML, _SOCIAL_UAS) + register_asgi_middleware( + app, _social_card, SOCIAL_UAS, + canonical_host=CANONICAL_HOST, + canonical_redirect_enabled=CANONICAL_HOST_REDIRECT, + ) # ============================================================================ # Satellite traffic reporting — this app's hourly rollup POSTed to 2plot.ai, @@ -323,6 +447,23 @@ def _social_card_wsgi(environ, start_response): print("[traffic-report] disabled (no CROSS_APP_WEBHOOK_SECRET) — " "the app will not appear on 2plot.ai/traffic.") +# ============================================================================ +# Network bulletin — hub-published tips/announcements rendered in the llms.txt +# viewer header. The boot line states which of the two states the process is +# in; NETWORK_BULLETIN_URL must be set on the Render SERVICE (blueprint +# envVars only apply on Blueprint sync). See lib/bulletin.py. +# ============================================================================ + +from lib import bulletin as _bulletin + +if _bulletin.configure(): + print(f"[dash-mui-scheduler] network bulletin: {_bulletin.url()} " + f"(app='{_bulletin.app_id()}')") +else: + print("[dash-mui-scheduler] network bulletin: off — set " + f"NETWORK_BULLETIN_URL={_bulletin.HUB_BULLETIN_URL} to render the " + "hub's announcements") + # ============================================================================ # Optional: Dash 4.3+ MCP server. # When available, this exposes the app's layout, components, pages and diff --git a/scripts/make_social_card.py b/scripts/make_social_card.py new file mode 100644 index 0000000..b484487 --- /dev/null +++ b/scripts/make_social_card.py @@ -0,0 +1,255 @@ +#!/usr/bin/env python3 +"""Render the 1200x630 social card for a 2plot satellite. + + python scripts/make_social_card.py # defaults, this site + python scripts/make_social_card.py --open # ...and preview it + python scripts/make_social_card.py \ + --artwork assets/logo.png --brand "dash-email" \ + --tagline "email components for Dash" --domain email.2plot.dev + +NETWORK FILE: copied from dash-documentation-boilerplate 1.2.4, with this +site's artwork, tagline and accent as the defaults. Every card in the network +is framed identically instead of being hand-made once per site and drifting. + +Output goes to `build/social-cards/<domain>.png`, which is gitignored. The +card is NOT served by the app — publish it to the CDN: + + https://cdn.2plot.ai/github_assets/<domain>.png + +That is deliberate and is the network rule. A card served by the app itself +is fetched by the scraper at unfurl time, and on a cold free-tier container +that request lands mid-wake and times out — the preview renders blank, once, +permanently, because platforms cache the miss. The CDN has no cold start. + +WHY 1200x630 and not leaflet's 1280x515 +--------------------------------------- +1200x630 is exactly 1.91:1, the Open Graph documented ideal, and it degrades +cleanly into Twitter's 2:1 `summary_large_image` slot. leaflet.2plot.dev's is +1280x515 = 2.49:1, which is wider than both and gets cropped on each — and +what sits at that URL today is the 2plot wordmark rather than a per-site card +at all. This is the shape to converge on, not that one. + +Pillow is a build-time dependency only. It is deliberately absent from +requirements.txt: nothing at runtime renders images, and a docs site should +not carry an image library into production to support a script run by hand +every few months. +""" +from __future__ import annotations + +import argparse +import subprocess +import sys +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(REPO_ROOT)) + +try: + from PIL import Image, ImageDraw, ImageFont +except ImportError: # pragma: no cover - the one dependency, named clearly + sys.exit("This script needs Pillow:\n pip install Pillow") + +# Card geometry. WIDTH/HEIGHT are the contract; everything else is derived so +# a fork can change the padding without recomputing a layout by hand. +WIDTH, HEIGHT = 1200, 630 +PAD = 72 +ART_BOX = 430 # the square the artwork is fitted inside, right-hand side +RULE_W = 6 # the accent bar under the brand + +# Palette. The backgrounds come from assets/favicon/site.webmanifest, so the +# card, the browser chrome and the install splash cannot disagree. The accent +# is this site's Mantine primary (lib/constants.PRIMARY_COLOR = "blue", shade +# 6) rather than the manifest's theme_color: the manifest carries the dark +# surface colour here, which would be invisible against the card's own +# background. +BG_TOP = (26, 27, 30) # #1a1b1e — manifest background_color +BG_BOTTOM = (17, 20, 26) # a shade deeper, for a gradient with a direction +ACCENT = (51, 153, 255) # #3399ff — this site's "brand" primary (appshell) +TEXT = (245, 246, 247) +MUTED = (150, 158, 168) + +# Font families in preference order. `truetype` is tried on each until one +# loads: macOS ships the first group, Debian/Ubuntu CI images the second. +# There is no bundled font on purpose — shipping a licensed TTF in a template +# every satellite forks is a licensing question nobody wants to answer. +FONT_CANDIDATES = { + "bold": [ + "/System/Library/Fonts/Supplemental/Arial Bold.ttf", + "/System/Library/Fonts/HelveticaNeue.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", + "/usr/share/fonts/truetype/liberation/LiberationSans-Bold.ttf", + ], + "regular": [ + "/System/Library/Fonts/Supplemental/Arial.ttf", + "/System/Library/Fonts/Helvetica.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf", + ], + "mono": [ + "/System/Library/Fonts/Menlo.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", + "/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf", + ], +} + + +def load_font(kind: str, size: int): + for path in FONT_CANDIDATES[kind]: + if Path(path).exists(): + try: + return ImageFont.truetype(path, size) + except OSError: + continue + # Pillow >= 10.1 scales its built-in font; older ones give a 10px bitmap + # and the card looks broken rather than merely plain. Say so. + print(f"[card] WARNING: no {kind} system font found — falling back to " + "Pillow's built-in, which will look wrong. Install DejaVu or " + "Liberation fonts.", file=sys.stderr) + try: + return ImageFont.load_default(size=size) + except TypeError: # pragma: no cover - Pillow < 10.1 + return ImageFont.load_default() + + +def vertical_gradient(size, top, bottom): + """A one-pixel-wide gradient stretched across the canvas. + + Cheaper and smoother than filling row by row on the full-width image, and + the resample keeps the banding invisible at this height. + """ + w, h = size + strip = Image.new("RGB", (1, h)) + for y in range(h): + t = y / max(1, h - 1) + strip.putpixel((0, y), tuple( + round(top[i] + (bottom[i] - top[i]) * t) for i in range(3) + )) + return strip.resize((w, h), Image.BILINEAR) + + +def wrap(draw, text, font, max_width): + """Greedy word wrap against measured pixel width, not a character count.""" + words, lines, current = text.split(), [], "" + for word in words: + trial = f"{current} {word}".strip() + if draw.textlength(trial, font=font) <= max_width or not current: + current = trial + else: + lines.append(current) + current = word + if current: + lines.append(current) + return lines + + +def build_card(artwork: Path, brand: str, tagline: str, domain: str) -> Image.Image: + card = vertical_gradient((WIDTH, HEIGHT), BG_TOP, BG_BOTTOM).convert("RGBA") + draw = ImageDraw.Draw(card) + + # --- artwork, right ---------------------------------------------------- + # `thumbnail` preserves aspect ratio, so a square-ish logo and a wide one + # both land inside the same box without being stretched. The alpha bbox is + # cropped first: assets/ddb.png carries ~66px of transparent margin, which + # would otherwise be centred as if it were part of the image. + art = Image.open(artwork).convert("RGBA") + bbox = art.getchannel("A").getbbox() + if bbox: + art = art.crop(bbox) + art.thumbnail((ART_BOX, ART_BOX), Image.LANCZOS) + art_x = WIDTH - PAD - ART_BOX + (ART_BOX - art.width) // 2 + art_y = (HEIGHT - art.height) // 2 + card.alpha_composite(art, (art_x, art_y)) + + # --- text, left -------------------------------------------------------- + text_width = WIDTH - (PAD * 2) - ART_BOX - 48 + + brand_font = load_font("bold", 62) + tagline_font = load_font("regular", 29) + domain_font = load_font("mono", 25) + + brand_lines = wrap(draw, brand, brand_font, text_width) + # Shrink once rather than overflow: a three-line brand at 62px collides + # with the domain strip below. + if len(brand_lines) > 2: + brand_font = load_font("bold", 50) + brand_lines = wrap(draw, brand, brand_font, text_width) + + tagline_lines = wrap(draw, tagline, tagline_font, text_width)[:3] + + brand_lh, tagline_lh = 74, 40 + block_h = (len(brand_lines) * brand_lh) + 26 + (len(tagline_lines) * tagline_lh) + y = (HEIGHT - block_h - 60) // 2 + + # Accent rule, aligned to the top of the brand block. + draw.rounded_rectangle( + [PAD, y + 6, PAD + RULE_W, y + block_h - 10], radius=RULE_W // 2, fill=ACCENT + ) + text_x = PAD + RULE_W + 28 + + for line in brand_lines: + draw.text((text_x, y), line, font=brand_font, fill=TEXT) + y += brand_lh + y += 26 + for line in tagline_lines: + draw.text((text_x, y), line, font=tagline_font, fill=MUTED) + y += tagline_lh + + # Domain, bottom left — the one string a reader uses to decide whether the + # link goes where they think it does. + draw.text((text_x, HEIGHT - PAD - 26), domain, font=domain_font, fill=ACCENT) + + return card.convert("RGB") + + +def main() -> int: + from lib.constants import BASE_URL, SITE_BRAND + + default_domain = BASE_URL.split("://", 1)[-1].rstrip("/") + + ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + # This repo ships no standalone logo, so the 512px app icon is the artwork. + # It is already square, already transparent-cropped by `build_card`, and it + # is the same mark the install prompt and the browser tab show — which is + # the point of a card: recognisable before it is readable. + ap.add_argument("--artwork", default="assets/favicon/android-chrome-512x512.png", + help="source image, transparent PNG (default: %(default)s)") + ap.add_argument("--brand", default=SITE_BRAND.split(" — ")[0], + help="headline (default: the brand, minus its tagline)") + ap.add_argument("--tagline", + default="Event calendar, resource timeline & radial " + "chart components for Plotly Dash, wrapping the " + "MUI X Scheduler.") + ap.add_argument("--domain", default=default_domain) + ap.add_argument("--out", default=None, + help="default: build/social-cards/<domain>.png") + ap.add_argument("--open", action="store_true", help="preview when done (macOS)") + args = ap.parse_args() + + artwork = (REPO_ROOT / args.artwork) if not Path(args.artwork).is_absolute() \ + else Path(args.artwork) + if not artwork.exists(): + return print(f"artwork not found: {artwork}", file=sys.stderr) or 1 + + out = Path(args.out) if args.out else \ + REPO_ROOT / "build" / "social-cards" / f"{args.domain}.png" + out.parent.mkdir(parents=True, exist_ok=True) + + card = build_card(artwork, args.brand, args.tagline, args.domain) + # optimize=True typically halves the file; scrapers fetch this on every + # cold unfurl and some give up on slow responses. + card.save(out, "PNG", optimize=True) + + kb = out.stat().st_size // 1024 + print(f"[card] {out.relative_to(REPO_ROOT)} {card.width}x{card.height} {kb} KB") + print(f"[card] ratio {card.width / card.height:.2f}:1") + print(f"[card] publish to: https://cdn.2plot.ai/github_assets/{args.domain}.png") + print("[card] then update OG_IMAGE_URL / OG_IMAGE_WIDTH / OG_IMAGE_HEIGHT " + "in lib/constants.py") + + if args.open and sys.platform == "darwin": + subprocess.run(["open", str(out)], check=False) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/network_smoke.py b/scripts/network_smoke.py new file mode 100644 index 0000000..66790ef --- /dev/null +++ b/scripts/network_smoke.py @@ -0,0 +1,430 @@ +#!/usr/bin/env python3 +"""Smoke battery for a 2plot satellite — CI container and production alike. + +One script, two seats, the SAME named checks either way, so a failure in CI +and a failure against production read identically: + + CI container python scripts/network_smoke.py --base-url http://localhost:8598 + Production python scripts/network_smoke.py --base-url https://muischeduler.2plot.dev + +Stdlib-only on purpose: CI runs it from the host against the booted container +with a bare `python3`, before anything is pip-installed. + +Copied from dash-documentation-boilerplate (the network template); only the +block marked "per-site" below differs. If a check outside that block is wrong, +it is wrong on twenty hosts — fix it there and re-sync. + +What a satellite is to the network is what the battery proves: that it states +its identity, that its agent-facing document surfaces are real, that it runs +the intended dash-improve-my-llms artifact, and that no owner-only surface +leaks. A satellite holds no key material, so unlike the hub's copy of this +script there is no agent-key API to fail closed — the corresponding check +here is that this host's llms.txt points *back* at the hub that does. + +Every UA this script sends carries the internal-traffic token (the analytics +point of truth — https://2plot.ai/docs/satellite-analytics, "Internal +traffic"): a battery must never register as a visitor or a "bot" in any +network ledger. Even the deliberately crawler-shaped probe appends the token +— the target still exercises its bot path, but its analytics know the caller +is machinery. + +Exit code: 1 if any check fails, else 0. +""" +from __future__ import annotations + +import argparse +import json +import os +import re +import sys +import time +import urllib.error +import urllib.request + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +TIMEOUT = 30 +try: + from lib.constants import INTERNAL_UA as _INTERNAL_UA +except Exception: # running outside a repo checkout — keep the token intact + _INTERNAL_UA = "2plot-internal/1.0 (+https://2plot.ai/docs/satellite-analytics)" +UA = _INTERNAL_UA + " network-smoke" +CRAWLER_UA = "Mozilla/5.0 (compatible; Googlebot/2.1) " + _INTERNAL_UA + +# The body dash-improve-my-llms serves when a page has no prose registered. +# Matched in full, deliberately: this app's own <noscript> block legitimately +# says "requires JavaScript", and a substring check on that phrase reports a +# perfectly healthy host as broken. +STUB_MARKER = "This page contains interactive content that requires JavaScript" + +# ---------------------------------------------------------------- per-site -- +# The values a fork changes. Everything below this block is the network +# standard and is copied verbatim. + +# This app's one identity (lib/constants.SITE_BRAND). tests/test_site_identity +# asserts every local surface carries it; this pins the DEPLOYED artifact to +# it, which is the half no unit test can reach. +SITE_H1 = "# dash-mui-scheduler — MUI X scheduling for Dash" + +# The container port. Matches the Dockerfile's EXPOSE / PORT and run.py. +DEFAULT_BASE_URL = "http://localhost:8598" + +# A real documentation page, used to prove `/<page>/llms.txt` works at all. +# `/quickstart` is this app's first docs page and is not going anywhere. +SAMPLE_PAGE = "/quickstart" + +# Owner-only surfaces that must 404 their llms.txt to an anonymous reader. +# `/404` is this app's one hidden page (run.py calls `mark_hidden` on it). +HIDDEN_DOC_PATHS = ( + "/404/llms.txt", +) + +# The hub one level up the chain. A satellite's llms.txt must name it — that +# is what lets an agent walk from any leaf to the network root. +HUB_URL = "https://2plot.dev" + +# The social card. Dash emits `og:image` on every page and leaves it EMPTY +# when it can find no image, which renders a blank preview on every platform +# and is invisible from inside the app — nobody sees their own unfurls. The +# URL is served from the 2plot CDN so a sleeping free-tier container never +# costs a preview. Keep in step with lib/constants.OG_IMAGE_URL. +OG_IMAGE_URL = "https://cdn.2plot.ai/github_assets/muischeduler.2plot.dev.png" +OG_IMAGE_WIDTH = 1200 +OG_IMAGE_HEIGHT = 630 + +# --- robots.txt fingerprint, and this site's DELIBERATE divergence ----------- +# pip metadata is invisible from outside a running host, so the robots.txt +# crawler split is how a live host is proven to run the intended package. +# +# Most satellites run `block_ai_training=True`, whose 2.3.3 fingerprint is +# `ClaudeBot -> Disallow: /`. THIS SITE RUNS `block_ai_training=False` ON +# PURPOSE (see run.py's RobotsConfig): for MIT-licensed component +# documentation, being in the training corpus is how a model recommends this +# library to somebody who never visits the site. Under that config the package +# emits no ClaudeBot stanza at all — training crawlers fall under `*`. +# +# So the fingerprint checked here is the AI-search allowlist, which 2.3.2 +# (OAI-SearchBot) and 2.3.3 (Claude-User, Claude-SearchBot) introduced and +# which both configs emit — plus an explicit assertion that ClaudeBot carries +# no Disallow, which is what turns the divergence from drift into a decision. +ROBOTS_ALLOWED = ( + ("OAI-SearchBot", "2.3.2"), + ("Claude-User", "2.3.3"), + ("Claude-SearchBot", "2.3.3"), + ("ChatGPT-User", "2.3.2"), + ("PerplexityBot", "2.3.2"), +) +BLOCK_AI_TRAINING = False + +# --------------------------------------------------------------------------- + +PASS, FAIL, WARN, SKIP = "pass", "FAIL", "warn", "skip" +_RESULTS: list[tuple[str, str, str]] = [] # (name, verdict, detail) + + +class SmokeFailure(Exception): + pass + + +def fetch_raw(url: str, ua: str = UA, method: str = "GET", + body: bytes | None = None, headers: dict | None = None, + timeout: int = TIMEOUT, retries: int = 3): + """(status, headers, BYTES) — HTTP errors are results, not exceptions; + network errors raise AFTER retries. + + Bytes rather than text, because one caller needs them: the social card is a + PNG and its real dimensions live in the IHDR chunk at bytes 16..24. A + decode with `errors="replace"` substitutes U+FFFD for every invalid byte + and is one-way, so the header would be gone before it could be read. + + Response headers come back lower-cased: gunicorn sends `content-type`, + proxies often re-case it — callers must not care. + """ + last_exc: Exception | None = None + for attempt in range(retries): + if attempt: + time.sleep(2 * attempt) + req = urllib.request.Request(url, data=body, method=method) + req.add_header("User-Agent", ua) + for k, v in (headers or {}).items(): + req.add_header(k, v) + try: + with urllib.request.urlopen(req, timeout=timeout) as r: + return (r.status, {k.lower(): v for k, v in r.headers.items()}, + r.read()) + except urllib.error.HTTPError as e: + return (e.code, {k.lower(): v for k, v in e.headers.items()}, + e.read()) + except Exception as exc: # timeout, reset, truncated read, … + last_exc = exc + raise last_exc + + +def fetch(url: str, ua: str = UA, method: str = "GET", + body: bytes | None = None, headers: dict | None = None, + timeout: int = TIMEOUT, retries: int = 3): + """(status, headers, text) — `fetch_raw` with the body decoded. + + A thin delegate ON PURPOSE. The in-process test patches ONE transport, and + if these were two independent implementations the card check would keep + reaching the real CDN from a unit test while everything else was stubbed. + """ + status, hdrs, raw = fetch_raw(url, ua, method, body, headers, timeout, retries) + return status, hdrs, raw.decode("utf-8", "replace") + + +def record(name: str, verdict: str, detail: str = "") -> None: + _RESULTS.append((name, verdict, detail)) + print(f"[{verdict:>4}] {name}" + (f" — {detail}" if detail else ""), flush=True) + if verdict == WARN and os.getenv("GITHUB_ACTIONS"): + print(f"::warning title=network-smoke {name}::{detail}", flush=True) + + +def check(name: str, fn) -> None: + try: + fn() + record(name, PASS) + except SmokeFailure as exc: + record(name, FAIL, str(exc)) + except Exception as exc: # network/parse error → still a failure + record(name, FAIL, f"{type(exc).__name__}: {exc}") + + +def expect(cond: bool, msg: str) -> None: + if not cond: + raise SmokeFailure(msg) + + +# ------------------------------------------------------------- the battery -- + +def satellite_checks(base: str) -> None: + get = lambda path, **kw: fetch(base + path, **kw) # noqa: E731 + + def healthz_ok(): + status, _, text = get("/healthz") + expect(status == 200, f"/healthz {status}") + expect(json.loads(text).get("ok") is True, f"unexpected body {text[:120]!r}") + + def llms_txt_identity(): + # The check this whole standard exists for. The H1 is what an agent + # fetching /llms.txt cold reads as the name of this site, and a + # pre-2.3.4 artifact publishes `app.title` (or a bare "Dash") there + # with nothing else looking wrong. + status, headers, text = get("/llms.txt") + expect(status == 200, f"/llms.txt {status}") + ct = headers.get("content-type", "") + expect(ct.startswith("text/markdown"), f"content-type {ct!r}") + first = text.splitlines()[0] if text else "" + expect(first == SITE_H1, f"H1 {first!r} — identity regression?") + expect("## Pages" in text, "page index section missing") + expect("## Network" in text, "cross-host directory missing") + + def llms_txt_names_the_hub(): + _status, _, text = get("/llms.txt") + expect(HUB_URL in text, f"the directory does not name {HUB_URL}") + + def page_llms_nav(): + status, _, text = get(f"{SAMPLE_PAGE}/llms.txt") + expect(status == 200, f"{SAMPLE_PAGE}/llms.txt {status}") + expect("/llms.txt" in text, "llms_nav header missing — page doc is a dead end") + + def hidden_pages_404(): + for path in HIDDEN_DOC_PATHS: + status, _, _ = get(path) + expect(status == 404, f"{path} {status} (owner surface leaked)") + + def robots_artifact_fingerprint(): + status, _, text = get("/robots.txt") + expect(status == 200, f"/robots.txt {status}") + lines = [ln.strip() for ln in text.splitlines()] + + def rule(agent): + marker = f"User-agent: {agent}" + expect(marker in lines, f"{marker} stanza missing") + return lines[lines.index(marker) + 1] + + for agent, since in ROBOTS_ALLOWED: + got = rule(agent) + expect(got == "Allow: /", + f"{agent} -> {got!r}, expected 'Allow: /': pre-{since} artifact") + + # The divergence, pinned. If someone flips `block_ai_training` in + # run.py without meaning to, this is the check that says so. + if not BLOCK_AI_TRAINING: + expect("User-agent: ClaudeBot" not in lines, + "a ClaudeBot stanza appeared — block_ai_training flipped to " + "True? This site allows AI training on purpose (run.py)") + else: # pragma: no cover - the other posture, kept so a flip is one line + expect(rule("ClaudeBot") == "Disallow: /", + "ClaudeBot is not blocked despite block_ai_training=True") + + expect(any(ln.startswith("Sitemap:") for ln in lines), "Sitemap line missing") + + def sitemap_absolute_and_on_this_host(): + status, _, text = get("/sitemap.xml") + expect(status == 200, f"/sitemap.xml {status}") + expect("<loc>https://" in text or "<loc>http://" in text, + "no absolute <loc> URLs") + for path in HIDDEN_DOC_PATHS: + leaked = path.rsplit("/llms.txt", 1)[0] + expect(leaked not in text, f"hidden path {leaked} leaked into sitemap") + + def crawler_gets_prose(): + # The prerender. A crawler that receives the JavaScript stub indexes + # nothing, and the page looks perfect in a browser the whole time. + status, _, text = get("/", ua=CRAWLER_UA) + expect(status == 200, f"/ {status}") + expect("<title>" in text, "crawler HTML has no <title>") + expect(STUB_MARKER not in text, + "the home page served the JavaScript stub to a crawler") + expect('rel="canonical"' in text, "no canonical tag for a crawler") + + def agents_and_browsers_get_different_types(): + # One URL, two audiences, and a `Vary` that stops a CDN mixing them. + status, md_headers, md = get(f"{SAMPLE_PAGE}/llms.txt") + expect(status == 200, f"{SAMPLE_PAGE}/llms.txt {status}") + expect(md_headers.get("content-type", "").startswith("text/markdown"), + f"agents got {md_headers.get('content-type')!r}") + expect("<!DOCTYPE html>" not in md, "viewer chrome reached an agent") + + _status, html_headers, html = get( + f"{SAMPLE_PAGE}/llms.txt", + headers={"Accept": "text/html,application/xhtml+xml,*/*;q=0.8"}) + expect("text/html" in html_headers.get("content-type", ""), + f"browsers got {html_headers.get('content-type')!r}") + expect("mk-wordmark" in html, "the network wordmark is missing") + + for label, headers in (("markdown", md_headers), ("html", html_headers)): + expect("accept" in headers.get("vary", "").lower(), + f"no Vary: Accept on the {label} variant — a shared cache " + "may serve it to everyone") + + def social_card_is_shareable(): + """The link preview, which nobody on the team ever sees. + + Checked against the deployed host because every part of it can break + without the app noticing: an empty `og:image` (Dash's default when it + finds no image) renders a blank card, and a CDN asset that starts + 404ing takes every preview with it while the site itself looks fine. + """ + status, _, html = get("/") + expect(status == 200, f"/ {status}") + + images = re.findall( + r'<meta[^>]+property="og:image"[^>]*content="([^"]*)"', html) + expect(bool(images), "no og:image tag at all") + expect(all(src.strip() for src in images), + "og:image is EMPTY — the link preview renders a blank card") + expect(len(images) == 1, f"{len(images)} og:image tags — scrapers pick one") + expect(images[0] == OG_IMAGE_URL, f"og:image is {images[0]!r}") + + twitter = re.findall( + r'<meta[^>]+(?:property|name)="twitter:image"[^>]*content="([^"]*)"', html) + expect(bool(twitter) and all(t.strip() for t in twitter), + "twitter:image is missing or empty") + + expect("/assets/" not in images[0], + "the app is serving its own card — a cold container blanks the " + "preview, and the platform caches the miss") + + # The file has to exist AND be the shape the tags promise. Read the + # BYTES, not the decoded text: PNG stores its dimensions in the IHDR + # chunk at bytes 16..24, which a lossy decode destroys. + # + # This is the check that catches a re-upload at a different size — + # every offline test stays green while the platform reserves the box + # the tags declare and crops the image into it. It is how the previous + # card (1280x515, 2.49:1, and the 2plot wordmark rather than a per-site + # card at all) went unnoticed. + img_status, img_headers, raw = fetch_raw(OG_IMAGE_URL) + expect(img_status == 200, f"the og:image URL returns {img_status}") + expect(img_headers.get("content-type", "").startswith("image/"), + f"og:image serves {img_headers.get('content-type')!r}") + # 24 bytes is exactly the signature plus the IHDR width/height, which + # is all this reads — `>` rather than `>=` would reject a perfectly + # readable header for being minimal. + expect(raw[1:4] == b"PNG" and len(raw) >= 24, + "og:image is not a PNG (or is truncated)") + actual_w = int.from_bytes(raw[16:20], "big") + actual_h = int.from_bytes(raw[20:24], "big") + expect((actual_w, actual_h) == (OG_IMAGE_WIDTH, OG_IMAGE_HEIGHT), + f"the CDN file is {actual_w}x{actual_h}, the tags declare " + f"{OG_IMAGE_WIDTH}x{OG_IMAGE_HEIGHT}") + + def installable_as_an_app(): + """The manifest, and whether a browser could offer to install this. + + It shipped with empty `name`/`short_name` and icon paths pointing at + the site root, where nothing is served — so the install prompt was + never possible, and nothing anywhere said so. + """ + _status, _, html = get("/") + match = re.search(r'<link[^>]+rel="manifest"[^>]+href="([^"]+)"', html) + expect(bool(match), "no manifest link — the app cannot be installed") + + status, _, body = get(match.group(1)) + expect(status == 200, f"the manifest returns {status}") + manifest = json.loads(body) + expect(bool(manifest.get("name", "").strip()), "manifest name is empty") + expect(bool(manifest.get("short_name", "").strip()), "short_name is empty") + expect(bool(manifest.get("start_url")), "no start_url") + + icons = manifest.get("icons") or [] + expect(bool(icons), "the manifest declares no icons") + for icon in icons: + icon_status, _, _ = get(icon["src"]) + expect(icon_status == 200, + f"manifest icon {icon['src']} returns {icon_status}") + + for name, fn in ( + ("healthz_ok", healthz_ok), + ("llms_txt_identity", llms_txt_identity), + ("llms_txt_names_the_hub", llms_txt_names_the_hub), + ("page_llms_nav", page_llms_nav), + ("hidden_pages_404", hidden_pages_404), + ("robots_artifact_fingerprint", robots_artifact_fingerprint), + ("sitemap_absolute_and_on_this_host", sitemap_absolute_and_on_this_host), + ("crawler_gets_prose", crawler_gets_prose), + ("agents_and_browsers_get_different_types", + agents_and_browsers_get_different_types), + ("social_card_real_pixels", social_card_is_shareable), + ("installable_as_an_app", installable_as_an_app), + ): + check(name, fn) + + +# ------------------------------------------------------------------- main -- + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + ap.add_argument("--base-url", default=DEFAULT_BASE_URL, + help="the satellite under test (default: the CI container)") + args = ap.parse_args() + + base = args.base_url.rstrip("/") + print(f"network-smoke → {base}\n") + + # Wake-up loop for live hosts: a free-tier container answers its first + # probe with the platform's loading page or a hang, and asserting into + # that reads as twelve failures. Poll /healthz until it's real, THEN run. + if base.startswith("https://"): + for attempt in range(12): + try: + status, _, text = fetch(base + "/healthz", timeout=10, retries=1) + if status == 200 and json.loads(text).get("ok") is True: + break + except Exception: + pass + time.sleep(5) + + satellite_checks(base) + + counts = {v: sum(1 for _, verdict, _ in _RESULTS if verdict == v) + for v in (PASS, FAIL, WARN, SKIP)} + print(f"\n{counts[PASS]} passed, {counts[FAIL]} failed, " + f"{counts[WARN]} warnings, {counts[SKIP]} skipped") + return 1 if counts[FAIL] else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/smoke_live.py b/scripts/smoke_live.py new file mode 100644 index 0000000..14ae687 --- /dev/null +++ b/scripts/smoke_live.py @@ -0,0 +1,434 @@ +#!/usr/bin/env python3 +"""Post-deploy checks against a *live* satellite. + + python scripts/smoke_live.py https://muischeduler.2plot.dev + +NETWORK FILE: copied verbatim from dash-documentation-boilerplate 1.2.4. +Nothing in it is per-site — every value it checks is read from the host under +test — so a change here belongs upstream in the boilerplate first. + +Everything here fails silently in production if it isn't checked. A wrong +canonical host doesn't error, it deindexes; a stub body doesn't error, it +serves crawlers nothing; a dead peer link doesn't error, it just teaches an +agent that this network's directory isn't worth following. + +Run in CD after every deploy, and by hand against any satellite you're +upgrading. Exit code is the number of failed checks, capped at 125. + +Only the standard library, so it runs anywhere without an install step. +""" + +from __future__ import annotations + +import os +import re +import sys +import ssl +import urllib.error +import urllib.request +from typing import Dict, List, Optional, Tuple +from urllib.parse import urlparse + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +# Every UA below carries the network's internal-traffic token (the analytics +# point of truth — https://2plot.ai/docs/satellite-analytics, "Internal +# traffic"). A post-deploy battery runs on every push and sweeps every peer in +# the directory; without the token it registers as a burst of visitors, and +# the crawler-shaped probes register as crawler interest. The Googlebot and +# Chrome tokens are still there, so the target exercises exactly the path +# being tested — it just knows the caller is machinery. +try: + from lib.constants import INTERNAL_UA as _INTERNAL_UA +except Exception: # pragma: no cover — running outside a repo checkout + _INTERNAL_UA = "2plot-internal/1.0 (+https://2plot.ai/docs/satellite-analytics)" + +CRAWLER_UA = ( + "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) " + + _INTERNAL_UA +) +BROWSER_UA = ( + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 " + "(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 " + _INTERNAL_UA +) +# `/<page>/llms.txt` negotiates on Accept, not on the User-Agent. +BROWSER_ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" +STUB_MARKER = "This page contains interactive content that requires JavaScript" +# Rendered chrome, not the bare class name — a Markdown page may legitimately +# discuss `dv-banner` (this network has one that does); it can never contain +# the element. +CHROME = re.compile(r'<[a-z]+ class="dv-banner') +TIMEOUT = 30 + + +def _ssl_context() -> ssl.SSLContext: + """Verify certificates via certifi when available. + + macOS Python ships without OS trust-store integration, so bare urllib + fails every https fetch with CERTIFICATE_VERIFY_FAILED — which reads as + "the whole site is down" (every check 0s). Same fix as audit_links.py. + Verification stays ON either way; certifi only supplies the CA bundle. + """ + try: + import certifi + + return ssl.create_default_context(cafile=certifi.where()) + except ImportError: + return ssl.create_default_context() + + +SSL_CONTEXT = _ssl_context() + +failures: List[str] = [] +warnings: List[str] = [] +checks_run = 0 + + +def fetch( + url: str, user_agent: str = BROWSER_UA, accept: Optional[str] = None +) -> Tuple[int, str, Dict[str, str]]: + """Returns (status, body, headers). + + Headers are part of the contract from 2.2.0 on: `/<page>/llms.txt` + content-negotiates, so which *type* came back is the thing being checked, + and `Vary` is what stops a CDN handing cached HTML to the next agent. + + `errors="surrogateescape"`, not `"replace"`: this function also fetches + the social card, and the card check reads the PNG's IHDR chunk for the + real pixel dimensions. `"replace"` substitutes U+FFFD for every invalid + byte and is one-way, so the header would be gone before it could be read. + surrogateescape round-trips exactly through + `body.encode("utf-8", "surrogateescape")`, and behaves identically to a + plain decode for text. + """ + headers = {"User-Agent": user_agent} + if accept is not None: + headers["Accept"] = accept + request = urllib.request.Request(url, headers=headers) + try: + with urllib.request.urlopen( + request, timeout=TIMEOUT, context=SSL_CONTEXT + ) as response: + body = response.read().decode("utf-8", "surrogateescape") + return response.status, body, dict(response.headers) + except urllib.error.HTTPError as exc: + return (exc.code, exc.read().decode("utf-8", "surrogateescape"), + dict(exc.headers or {})) + except Exception as exc: # noqa: BLE001 - DNS, TLS, timeouts all land here + return 0, f"{type(exc).__name__}: {exc}", {} + + +def header(headers: Dict[str, str], name: str) -> str: + """Case-insensitive header lookup — proxies rewrite the casing.""" + for key, value in headers.items(): + if key.lower() == name.lower(): + return value + return "" + + +def check(name: str, passed: bool, detail: str = "", fatal: bool = True) -> None: + """Record one check. ``fatal=False`` warns instead of failing the deploy. + + The distinction is a policy, not a convenience: **a check about THIS host + is fatal; a check about somebody else's host is a warning.** + + Peer reachability is the only thing in this script that fails on someone + else's infrastructure, and gating a deploy on it is shared fate — one peer + with an expired certificate turns every satellite in the network red, none + of them can ship, and the people who see it learn that red CD means + nothing. The information is still worth having (a directory of dead links + degrades silently and nothing else reports it), so it is surfaced as a + warning and, under Actions, as an annotation on the run summary. + """ + global checks_run + checks_run += 1 + if passed: + print(f" ok {name}") + elif fatal: + print(f" FAIL {name}" + (f" — {detail}" if detail else "")) + failures.append(name) + else: + print(f" warn {name}" + (f" — {detail}" if detail else "")) + warnings.append(f"{name}" + (f" — {detail}" if detail else "")) + if os.getenv("GITHUB_ACTIONS"): + print(f"::warning title=peer unreachable::{name} — {detail}") + + +def main(base: str) -> int: + base = base.rstrip("/") + host = urlparse(base).netloc + print(f"Smoke-testing {base}\n") + + # --- 1. The site is up, and llms.txt is the index it should be --------- + print("Core surfaces") + status, home, _ = fetch(f"{base}/") + check("home page responds 200", status == 200, f"got {status}") + + status, llms, llms_headers = fetch(f"{base}/llms.txt") + check("/llms.txt responds 200", status == 200, f"got {status}") + check("/llms.txt lists pages", "## Pages" in llms or "# " in llms) + check("/llms.txt publishes the network directory", "## Network" in llms) + + status, robots, _ = fetch(f"{base}/robots.txt") + check("/robots.txt responds 200", status == 200, f"got {status}") + check( + "/robots.txt points at this host's sitemap", + f"Sitemap: {base}/sitemap.xml" in robots, + "sitemap line missing or pointing elsewhere", + ) + # The artifact fingerprint. pip metadata is invisible from outside, so + # these robots.txt stanzas are how a live host is proven to run the + # intended dash-improve-my-llms: 2.3.2 introduced the OAI-SearchBot / + # ChatGPT-User / PerplexityBot allowlist, 2.3.3 added Claude-User and + # Claude-SearchBot. + # + # PER-SITE: most satellites also expect `ClaudeBot -> Disallow: /`, the + # 2.3.3 training-crawler split. This host runs `block_ai_training=False` + # ON PURPOSE (run.py's RobotsConfig — for MIT-licensed component docs, + # being in the training corpus is how a model recommends the library), and + # under that config the package emits no ClaudeBot stanza at all. The + # absence is asserted below so a silent flip of that flag is still caught. + robots_lines = robots.splitlines() + + def robots_rule(agent: str) -> str: + marker = f"User-agent: {agent}" + if marker not in robots_lines: + return "(missing)" + idx = robots_lines.index(marker) + following = robots_lines[idx + 1: idx + 2] + return following[0] if following else "(missing)" + + for agent, expected, since in ( + ("OAI-SearchBot", "Allow: /", "2.3.2"), + ("ChatGPT-User", "Allow: /", "2.3.2"), + ("PerplexityBot", "Allow: /", "2.3.2"), + ("Claude-User", "Allow: /", "2.3.3"), + ("Claude-SearchBot", "Allow: /", "2.3.3"), + ): + got = robots_rule(agent) + check( + f"/robots.txt {agent} -> {expected.split(':')[0]} ({since} artifact fingerprint)", + got == expected, + f"got {got}: this host runs a pre-{since} artifact", + ) + + check( + "/robots.txt keeps this site's deliberate open-training posture", + "User-agent: ClaudeBot" not in robots_lines, + "a ClaudeBot stanza appeared — block_ai_training flipped to True?", + ) + + status, sitemap, _ = fetch(f"{base}/sitemap.xml") + check("/sitemap.xml responds 200", status == 200, f"got {status}") + page_urls = re.findall(r"<loc>([^<]+)</loc>", sitemap) + check("/sitemap.xml lists pages", bool(page_urls), "no <loc> entries") + foreign = [u for u in page_urls if urlparse(u).netloc != host] + check("/sitemap.xml stays on this host", not foreign, f"foreign URLs: {foreign[:3]}") + + status, health, _ = fetch(f"{base}/healthz") + check("/healthz responds 200", status == 200, f"got {status}") + + # --- 2. Canonical host — the failure that deindexes a satellite -------- + print("\nCanonical tags") + for url in [f"{base}/"] + page_urls[:8]: + _status, html, _ = fetch(url, CRAWLER_UA) + found = re.findall(r'rel="canonical"\s+href="([^"]*)"', html) + check( + f"canonical on {urlparse(url).path or '/'}", + len(found) == 1 and urlparse(found[0]).netloc == host, + f"got {found}", + ) + + # --- 3. No page serves the JavaScript stub ---------------------------- + print("\nCrawler bodies") + for url in [f"{base}/"] + page_urls[:8]: + _status, html, _ = fetch(url, CRAWLER_UA) + check( + f"real content on {urlparse(url).path or '/'}", + STUB_MARKER not in html, + "served the JavaScript stub", + ) + + # --- 3b. The social card actually exists, and is the shape we claim ---- + # This is the ONLY check that can see either failure. The card is on the + # CDN, so no offline test can fetch it; and its dimensions are hard-coded + # in three places (lib/constants.py, index.html, the CDN object), so + # replacing the uploaded file with a different shape leaves every test + # green while the platform reserves the wrong box and crops into it. + # + # A blank preview is also self-inflicting: platforms cache a failed scrape, + # so the first share after a bad upload poisons the link for everyone. + print("\nSocial card") + card_urls = re.findall(r'<meta[^>]+property="og:image"[^>]+content="([^"]*)"', home) + check("og:image is declared exactly once", len(card_urls) == 1, f"got {card_urls}") + if card_urls and card_urls[0]: + card_url = card_urls[0] + check("og:image is not served by the app", "/assets/" not in card_url, + f"{card_url} — a cold container blanks the preview, cached") + status, body, headers = fetch(card_url) + check("og:image resolves", status == 200, f"got {status}") + ctype = header(headers, "Content-Type") + check("og:image is a real image", ctype.startswith("image/"), ctype or "none") + + declared = { + prop: re.findall( + rf'<meta[^>]+property="{prop}"[^>]+content="([^"]*)"', home) + for prop in ("og:image:width", "og:image:height") + } + # PNG stores its dimensions in the IHDR chunk: bytes 16..24 of the + # file. Read from the RESPONSE, so what is checked is what a scraper + # would actually receive rather than what the repo believes. + raw = body.encode("utf-8", "surrogateescape") + if raw[1:4] == b"PNG" and len(raw) > 24: + actual_w = int.from_bytes(raw[16:20], "big") + actual_h = int.from_bytes(raw[20:24], "big") + check( + "og:image dimensions match the declared width/height", + declared["og:image:width"] == [str(actual_w)] + and declared["og:image:height"] == [str(actual_h)], + f"file is {actual_w}x{actual_h}, tags say " + f"{declared['og:image:width']}x{declared['og:image:height']}", + ) + ratio = actual_w / actual_h if actual_h else 0 + check("og:image suits summary_large_image (~1.91:1)", + 1.7 <= ratio <= 2.05, f"{actual_w}x{actual_h} is {ratio:.2f}:1") + else: + check("og:image is not empty", False, + "an EMPTY og:image renders a blank card — worse than none") + + # --- 4. Content negotiation on llms.txt ------------------------------- + # Production is where this can break in ways development cannot show: a + # CDN sitting in front of the app is free to ignore `Vary` and serve one + # cached variant to everyone. Chrome leaking into the Markdown makes every + # agent in the network pay tokens for decoration and appears in no + # dashboard; the Markdown leaking into a browser just looks unfinished. + print("\nContent negotiation") + check( + "/llms.txt serves Markdown to a plain request", + not CHROME.search(llms) and "<!DOCTYPE html>" not in llms, + "the viewer chrome reached an agent", + ) + + page_doc = next( + (f"{u.rstrip('/')}/llms.txt" for u in page_urls if urlparse(u).path not in ("", "/")), + f"{base}/llms.txt", + ) + + status, doc, doc_headers = fetch(page_doc) + check(f"{urlparse(page_doc).path} responds 200", status == 200, f"got {status}") + check( + "agents get text/markdown", + "text/markdown" in header(doc_headers, "Content-Type"), + header(doc_headers, "Content-Type") or "no Content-Type", + ) + check( + "agents get no viewer chrome", + not CHROME.search(doc) and "<!DOCTYPE html>" not in doc, + "the viewer chrome reached an agent", + ) + check( + "page document is not a dead end", + f"{base}/llms.txt" in doc, + "no route back to the site index", + ) + + status, view, view_headers = fetch(page_doc, accept=BROWSER_ACCEPT) + check( + "browsers get text/html", + "text/html" in header(view_headers, "Content-Type"), + header(view_headers, "Content-Type") or "no Content-Type", + ) + check("the viewer renders the network wordmark", "mk-wordmark" in view) + + # The hub bulletin, which supplies BOTH banner panels — the "What's new" + # announcements and the "Tips for getting started" list (the package renders + # tips from `bulletin["tips"]`, falling back to one generic line). With + # NETWORK_BULLETIN_URL unset the panels still render, so nothing looks + # broken: you get one generic tip and "No announcements." That is exactly + # how this host went live unwired. + # + # WARN, not fail, and for a different reason than the peer checks below: a + # satellite may legitimately run with no bulletin, and a hub outage must + # never fail a deploy. This is the deploy telling you a panel is empty, + # which is the only place that fact is ever surfaced. + check( + "the network bulletin is wired (banner shows hub announcements)", + "No announcements." not in view, + "NETWORK_BULLETIN_URL is unset or unreachable — the viewer's " + "\"What's new\" panel is empty and its tips are the built-in fallback", + fatal=False, + ) + check( + "the viewer is noindex", + bool(re.search(r'<meta[^>]+name="robots"[^>]+noindex', view)), + "the rendered view would compete with the page it documents", + ) + + # Both variants, because a cache keys on the request that populated it. + for label, headers in (("markdown", doc_headers), ("html", view_headers)): + check( + f"Vary: Accept on the {label} variant", + "accept" in header(headers, "Vary").lower(), + f"Vary: {header(headers, 'Vary') or '(absent)'} — a shared cache " + "may serve this variant to everyone", + ) + + # --- 5. Every peer in the directory resolves -------------------------- + # A directory of dead links degrades quietly, and nothing else will tell + # you — so this is still worth checking on every deploy. But it is the ONE + # section that tests hosts this deployment does not control, so it warns + # rather than fails. See `check()` for why. That the directory is + # *published at all* is this host's job, so that check stays fatal. + print("\nNetwork directory") + # `[` `]` `(` are excluded, not just whitespace: the 2.2.0 nav block writes + # links as `[https://host/llms.txt](https://host/llms.txt)`, and a class + # that stops only at `)` swallows the label and the opening paren into one + # malformed URL — which then 404s and fails a perfectly good deploy. + peer_docs = sorted(set(re.findall(r"https://[^\s()\[\]\"'<>]+/llms\.txt", llms))) + check("directory lists peer llms.txt URLs", bool(peer_docs), "none found") + for url in peer_docs: + if url.startswith(base): + continue + status, body, headers = fetch(url) + # A 200 is not enough. A Dash app answers its catch-all with the SPA + # shell for *any* unmatched path, so a host that does not serve + # llms.txt at all still returns 200 text/html — and a status-only + # check passes on every one of them. Verified on 2plot.dev, where + # /api/this-endpoint-cannot-exist also returns 200 text/html. + is_html = "text/html" in header(headers, "Content-Type").lower() or ( + body.lstrip()[:15].lower().startswith("<!doctype html") + ) + if status != 200: + check(f"peer reachable: {url}", False, f"got {status}", fatal=False) + else: + check( + f"peer serves a document: {url}", + not is_html, + "200, but HTML — that host's catch-all, not an llms.txt", + fatal=False, + ) + + passed = checks_run - len(failures) - len(warnings) + summary = f"\n{passed}/{checks_run} checks passed" + if warnings: + summary += f", {len(warnings)} warnings (peers — not this deployment)" + print(summary) + + if warnings: + print("\nWarned:") + for name in warnings: + print(f" - {name}") + + if failures: + print("\nFailed:") + for name in failures: + print(f" - {name}") + return min(len(failures), 125) + return 0 + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print(__doc__) + sys.exit(2) + sys.exit(main(sys.argv[1])) diff --git a/setup.py b/setup.py index 48a29c8..5e35f4f 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ project_urls={ 'Bug Reports': 'https://github.com/pip-install-python/dash-mui-scheduler/issues', 'Source': 'https://github.com/pip-install-python/dash-mui-scheduler', - 'Documentation': 'https://github.com/pip-install-python/dash-mui-scheduler#readme', + 'Documentation': 'https://muischeduler.2plot.dev', }, install_requires=['dash>=2.11.0'], classifiers=[ diff --git a/templates/index.html b/templates/index.html index 4138c3c..073fabf 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,79 +1,196 @@ <!DOCTYPE html> <html lang="en"> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + <!-- FIRST, deliberately: Dash renders charset + viewport + X-UA-Compatible + here (it adds them automatically when the app config doesn't), and the + charset declaration has to land inside the document's first 1024 bytes. + Declaring them in this file as well produced a duplicate charset (an + HTML validity error), so they live only in Dash's block. This is also + where the per-page description/og/twitter tags land. --> + {%metas%} + + <!-- ======================================================================== + SEO NOTE — what belongs here and what MUST NOT. + + This one document serves EVERY route (Dash is an SPA), so anything + static in here is a claim about all 17 pages at once. + + * Per-page tags (description, og:title/type/description/image and the + whole twitter:* set) are emitted by Dash at the metas placeholder + above, from each register_page() call — see + dash/_pages.py:_page_meta_tags. Do NOT add static copies: they would + describe the SITE on every PAGE, and the duplicate would sort first + and win. (Never write the placeholder's literal name in a comment + either — Dash substitutes EVERY occurrence, comments included.) + * Only og:site_name and og:url are absent from Dash's set, so they + live here. + * Anything URL-shaped is written with the __BASE_URL__ token, which + run.py substitutes from APP_BASE_URL (lib/constants.BASE_URL). Never + hard-code a host here: this template shipped carrying a host that + did not exist, and later the site moved to its own domain — a + hard-coded value would have been wrong both times. + * canonical / og:url are filled per REQUEST by run.py's index hook, and + canonical / og:url / twitter:url are re-patched per ROUTE by the + script below — a static value would be right for exactly one page. + ===================================================================== --> - <!-- Primary meta tags --> - <title>dash-mui-scheduler — MUI X Scheduler for Plotly Dash - - + dash-mui-scheduler — MUI X scheduling for Dash - - - - - - - - - + + + + + - - - - - - - - - - - - - - + + + + + + + + + - - + - + - - {%metas%} + + + + {%favicon%} {%css%} diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..13c566a --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,231 @@ +"""Shared fixtures — boot the real app once, then interrogate it. + +The suite deliberately exercises `run.py` itself rather than a stripped-down +app assembled for testing. Nearly everything worth catching here lives in the +wiring: registration order, which middleware wraps outermost (the social-card +shim and the canonical-host 301 both live at the WSGI boundary), whether a +page's prose survived to the response. A test app that re-implements that +wiring tests the re-implementation. + +Backend selection follows `DASH_BACKEND` via `lib/backend.resolve_backend()`, +so the same suite runs against Flask and FastAPI in CI. `client` normalises +the test clients behind `.get(path, user_agent=...) -> Response`. + +SECRETLESS, AND ORDER MATTERS. The suite runs against the app exactly as CI's +zero-secret container does: no CLERK_* keys (the auth package cleanly no-ops), +no `CROSS_APP_WEBHOOK_SECRET` (the traffic reporter never starts a thread), +no `MUI_X_LICENSE_KEY` (Premium components degrade to a watermark — the docs +still render), and the analytics ledger in a temp dir. + +The env block below has to run BEFORE anything imports `run.py`, because +`lib/backend.py` calls `load_dotenv()` during that import and this repo ships +a real `.env` — a developer's local run would otherwise flip the app into a +configured posture. `load_dotenv()` never overrides an existing key, so +pinning each secret to `""` here (falsy to every `os.getenv(...) or None` +reader in `lib/`) neutralises the file without deleting it. In CI there is no +`.env` at all and this is belt-and-braces. Same pattern as the boilerplate, +leaflet and dash-email. +""" + +from __future__ import annotations + +import importlib.util +import os +import sys +import tempfile +from pathlib import Path + +import pytest + +REPO_ROOT = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(REPO_ROOT)) + +# --- 1. Neutralise every secret (must precede any import of run.py) --------- +SECRET_ENV_KEYS = ( + "CLERK_SECRET_KEY", "CLERK_PUBLISHABLE_KEY", "CLERK_SIGN_IN_URL", + "CLERK_SIGN_UP_URL", "CLERK_FRONTEND_API", "CLERK_WEBHOOK_SECRET", + "CLERK_IS_SATELLITE", "CLERK_SATELLITE_DOMAIN", + "SESSION_SECRET", "FLASK_SECRET_KEY", + "CROSS_APP_WEBHOOK_SECRET", "NETWORK_BULLETIN_URL", + "MUI_X_LICENSE_KEY", "MUI_PRO_API_KEY", + "DATABASE_URL", "AD_DATABASE_URL", +) +for _key in SECRET_ENV_KEYS: + os.environ[_key] = "" + +# --- 2. Keep app state out of the repo -------------------------------------- +# Without this the suite appends its own hits to the checked-out +# visitor_analytics.json, which then shows up in `git status` and, worse, in +# the next hourly rollup a developer's local run happens to send. +_TMP_STATE = tempfile.mkdtemp(prefix="muischeduler-tests-") +os.environ["TRAFFIC_ANALYTICS_FILE"] = os.path.join(_TMP_STATE, "visitor_analytics.json") +# Behind Cloudflare in production; in tests an outbound ip-api.com lookup per +# hit would make the suite depend on a third party being up. +os.environ["ANALYTICS_GEO_LOOKUP"] = "0" +# The base-URL guard and the reporter both key off these; keep them inert. +os.environ.setdefault("APP_ENV", "test") + +BROWSER_UA = ( + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 " + "(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" +) +CRAWLER_UA = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" + +# What a real browser sends. `//llms.txt` negotiates on this header — +# not on the User-Agent — so it is what separates "a person opened the URL" +# from "an agent fetched it". +BROWSER_ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" + +# The body dash-improve-my-llms serves when a page has no prose registered. +# Its presence on any page is the failure this whole network cares most about. +STUB_MARKER = "This page contains interactive content that requires JavaScript" + +# A real documentation page, used wherever a test needs one that is not the +# home page. Mirrors scripts/network_smoke.SAMPLE_PAGE. +SAMPLE_PAGE = "/quickstart" + + +def backend() -> str: + """Whichever backend the app will actually boot on. + + Not `os.environ["DASH_BACKEND"]` directly: lib/backend.py calls + `load_dotenv()`, so a local .env can select a backend the bare environment + knows nothing about. Reading the env here instead would hand out a + Werkzeug test client for a FastAPI app, and every test would fail on the + client rather than on the code. + """ + from lib.backend import resolve_backend + + return resolve_backend() + + +@pytest.fixture(scope="session") +def app_module(): + """Import run.py as a module, from the repo root. + + run.py opens 'templates/index.html' by relative path and pages/markdown.py + globs 'docs/**/*.md', so the process CWD has to be the repo root regardless + of where pytest was invoked from. + """ + os.chdir(REPO_ROOT) + spec = importlib.util.spec_from_file_location("runmod", REPO_ROOT / "run.py") + module = importlib.util.module_from_spec(spec) + sys.modules["runmod"] = module + try: + spec.loader.exec_module(module) + except SystemExit: # pragma: no cover - run.py doesn't call sys.exit today + pass + return module + + +@pytest.fixture(scope="session") +def app(app_module): + return app_module.app + + +class Response: + __slots__ = ("status", "text", "raw", "headers") + + def __init__(self, status: int, text: str, headers=None, raw: bytes = b"") -> None: + self.status = status + self.text = text + # The undecoded body. Only one caller needs it — the social-card + # checks read a PNG's IHDR chunk — but a lossy decode is one-way, so + # it has to be kept here rather than reconstructed. + self.raw = raw + # Headers matter from dimll 2.2.0 on: `//llms.txt` + # content-negotiates, so the *type* of the response is part of the + # contract and `Vary` is what stops a CDN serving cached HTML to the + # next agent. Keys are lowercased because the backends disagree on + # casing — Werkzeug hands back `Content-Type`, httpx `content-type`. + self.headers = {k.lower(): v for k, v in (headers or {}).items()} + + @property + def ok(self) -> bool: + return self.status == 200 + + def header(self, name: str, default: str = "") -> str: + return self.headers.get(name.lower(), default) + + @property + def content_type(self) -> str: + return self.header("Content-Type") + + def __repr__(self) -> str: # pragma: no cover - assertion output only + return f"" + + +class Client: + """One synchronous `.get()` across the backends.""" + + def __init__(self, raw, kind: str) -> None: + self._raw = raw + self._kind = kind + + def get(self, path: str, user_agent: str = BROWSER_UA, accept: str = None) -> Response: + headers = {"User-Agent": user_agent} + if accept is not None: + headers["Accept"] = accept + + if self._kind == "werkzeug": + r = self._raw.get(path, headers=headers) + body = r.get_data() + # errors="replace", not `as_text=True`: the latter decodes + # strictly and raises UnicodeDecodeError on any binary response, + # so a test that merely checks a favicon or a manifest icon + # RESOLVES would blow up on the PNG's first byte. + return Response(r.status_code, body.decode("utf-8", "replace"), + dict(r.headers), body) + + r = self._raw.get(path, headers=headers) + return Response(r.status_code, r.text, dict(r.headers), r.content) + + +@pytest.fixture(scope="session") +def client(app): + """A test client for whichever backend is under test. + + FastAPI needs the ASGI lifespan to have run: Dash registers its page + catch-all from the startup event, so a client used outside the lifespan + context 404s every non-root URL for reasons that have nothing to do with + the code under test. + """ + kind = backend() + if kind == "flask": + yield Client(app.server.test_client(), "werkzeug") + elif kind == "fastapi": + from starlette.testclient import TestClient + + with TestClient(app.server) as raw: + yield Client(raw, "httpx") + else: # pragma: no cover - quart is not a CI target for this repo + raise RuntimeError(f"unsupported DASH_BACKEND={kind!r} in tests") + + +@pytest.fixture(scope="session") +def tmp_state_dir(): + """Where the app's ledger files live for this run.""" + return _TMP_STATE + + +@pytest.fixture(scope="session") +def pages(app_module): + """Every registered page as (path, name, entry), sorted by path.""" + import dash + + return sorted( + ((entry["path"], entry.get("name", ""), entry) for entry in dash.page_registry.values()), + key=lambda item: item[0], + ) + + +@pytest.fixture(scope="session") +def page_paths(pages): + return [path for path, _name, _entry in pages] + + +def main_body(html: str) -> str: + """The prerendered
block, or '' when the document has none.""" + if "
" not in html: + return "" + return html.split("
", 1)[1].split("
", 1)[0] diff --git a/tests/test_bulletin.py b/tests/test_bulletin.py new file mode 100644 index 0000000..ddfb506 --- /dev/null +++ b/tests/test_bulletin.py @@ -0,0 +1,89 @@ +"""The network bulletin — wired, or off, and never a comment. + +NETWORK FILE: adapted from dash-email (itself from +dash-documentation-boilerplate 1.2.4, where this existed because the wiring +had sat COMMENTED OUT in run.py for weeks against a hub endpoint that was +already serving). Nothing failed. `configure_bulletin` is opt-in, so an +unwired app makes no request at all and the viewer header renders perfectly +well on the package's built-in tips and a "No announcements." empty state. +The only symptom was an announcement that never appeared — which nobody goes +looking for. + +The load-bearing test is the last one: commented-out wiring cannot define the +name it asserts on, so it fails the moment somebody comments it out again. +""" + +from __future__ import annotations + +import pytest + +from conftest import REPO_ROOT + + +@pytest.fixture(autouse=True) +def _clean_env(monkeypatch): + """conftest pins NETWORK_BULLETIN_URL to "" for the whole session; these + tests set it themselves and must not leak it into the others.""" + monkeypatch.delenv("NETWORK_BULLETIN_URL", raising=False) + monkeypatch.delenv("NETWORK_BULLETIN_TTL_S", raising=False) + + +def test_no_url_means_the_feature_is_simply_off(): + from lib import bulletin + + assert bulletin.url() is None + assert bulletin.configure() is False + + +def test_configure_reports_that_it_wired(monkeypatch): + from lib import bulletin + + monkeypatch.setenv("NETWORK_BULLETIN_URL", bulletin.HUB_BULLETIN_URL) + + seen = {} + + def fake_configure_bulletin(**kwargs): + seen.update(kwargs) + + import dash_improve_my_llms + + monkeypatch.setattr(dash_improve_my_llms, "configure_bulletin", + fake_configure_bulletin) + + assert bulletin.configure() is True + assert seen["url"] == bulletin.HUB_BULLETIN_URL + assert seen["ttl"] == bulletin._ttl() + assert seen["app_id"] == "muischeduler" + + +def test_the_app_id_is_the_directory_key_not_a_second_opinion(): + """One id on every hub surface. A satellite still announcing itself as + "boilerplate" (or "scheduler") would receive the wrong announcements.""" + from lib import bulletin + from lib.traffic_report import app_key + + assert bulletin.app_id() == app_key() == "muischeduler" + + +def test_a_bad_ttl_falls_back_rather_than_crashing_the_boot(monkeypatch): + from lib import bulletin + + monkeypatch.setenv("NETWORK_BULLETIN_TTL_S", "not-a-number") + assert bulletin._ttl() == bulletin.DEFAULT_TTL_S + monkeypatch.setenv("NETWORK_BULLETIN_TTL_S", "5") + assert bulletin._ttl() == 60.0, "a too-short TTL would hammer the hub" + + +def test_run_py_wires_it_rather_than_leaving_it_commented_out(): + """The regression this file exists for. + + Commented-out wiring cannot define the name it asserts on, so requiring a + real call here is what makes commenting it out fail loudly. + """ + source = (REPO_ROOT / "run.py").read_text() + live = "\n".join( + line for line in source.splitlines() if not line.strip().startswith("#") + ) + assert "bulletin.configure()" in live, ( + "run.py no longer calls bulletin.configure() outside a comment" + ) diff --git a/tests/test_internal_traffic.py b/tests/test_internal_traffic.py new file mode 100644 index 0000000..48498b1 --- /dev/null +++ b/tests/test_internal_traffic.py @@ -0,0 +1,267 @@ +"""The network's internal-traffic contract — the analytics point of truth. + +NETWORK FILE: adapted from dash-email (itself from +dash-documentation-boilerplate 1.2.4). This app has no `lib/hub_client.py` +(it holds no key material and asks the hub for nothing), so that repo's third +outbound test has no counterpart here. + +The rule (https://2plot.ai/docs/satellite-analytics, "Internal traffic"): a +request whose User-Agent contains `2plot-internal` is 2plot machinery talking +to itself — the hub's hourly health sweep, CI smoke batteries, the 4x-daily +heartbeat, cross-app calls — and is counted NOWHERE. Dropped at write time, +before device detection and before bot classification. `/healthz` is never a +visit either. + +Both halves are tested here, because a contract kept on only one side is not +kept at all: + +*inbound* token-carrying requests never reach the ledger, and therefore + never reach `human_hits` / `bot_hits` in the hourly rollup this + app POSTs to 2plot.ai; +*outbound* every call this host makes to another network host sends + `INTERNAL_UA`, so the far side can apply the same rule — the + hourly rollup POST and the ad client's per-page-view fetch. +""" + +from __future__ import annotations + +import json + +import pytest + +from conftest import BROWSER_UA, CRAWLER_UA, SAMPLE_PAGE +from lib.analytics_tracker import tracker +from lib.constants import INTERNAL_UA, INTERNAL_UA_TOKEN, internal_ua + +# A real page. `lib/traffic_report` drops infrastructure paths (`/llms.txt`, +# `/robots.txt`, `/healthz`, ...) at read time, so a rollup assertion made +# against one of those would pass no matter what the tracker did. +PAGE = SAMPLE_PAGE + + +def _ledger_visits(): + """Every hit on disk. The tracker writes synchronously (whole-file + rewrite per hit), so there is no buffer to flush first.""" + try: + with open(tracker.data_file) as f: + return json.load(f).get("visits", []) + except FileNotFoundError: + return [] + + +def _rollup(): + """Today's rollup as the hub would receive it.""" + from lib.traffic_report import build_rollup + + return build_rollup() + + +# --------------------------------------------------------------- the token -- + + +def test_token_is_the_network_wide_string(): + """The contract only works if every host agrees on the byte sequence.""" + assert INTERNAL_UA_TOKEN == "2plot-internal" + assert INTERNAL_UA_TOKEN in INTERNAL_UA + assert INTERNAL_UA.startswith(INTERNAL_UA_TOKEN) + + +def test_caller_suffix_never_breaks_the_token(): + ua = internal_ua("traffic-report") + assert INTERNAL_UA_TOKEN in ua + assert ua.endswith("traffic-report") + assert internal_ua() == INTERNAL_UA + + +# ------------------------------------------------------------------ inbound -- + + +def test_the_tests_can_see_the_ledger_at_all(client, tmp_state_dir): + """Guard for every delta assertion below. + + If the ledger path were wrong (or the suite were writing into the repo's + own visitor_analytics.json), every "count did not change" test would pass + vacuously. Prove a write lands first. + """ + assert str(tracker.data_file).startswith(tmp_state_dir), tracker.data_file + before = len(_ledger_visits()) + client.get(PAGE, user_agent=BROWSER_UA) + assert len(_ledger_visits()) == before + 1 + + +def test_internal_ua_is_counted_nowhere(client): + before = len(_ledger_visits()) + client.get(PAGE, user_agent=internal_ua("network-smoke")) + client.get("/", user_agent=INTERNAL_UA) + assert len(_ledger_visits()) == before + + +def test_a_crawler_shaped_probe_carrying_the_token_stays_internal(client): + """The battery's crawler probe exercises the bot path deliberately. + + It must still not be counted. This is precisely why the drop happens + before `detect_device_type` — classification would file it under `bot`. + """ + before = len(_ledger_visits()) + client.get(PAGE, user_agent=f"{CRAWLER_UA} {INTERNAL_UA}") + assert len(_ledger_visits()) == before + + +def test_the_token_is_matched_case_insensitively(client): + before = len(_ledger_visits()) + client.get(PAGE, user_agent="2PLOT-INTERNAL/1.0 Health-Sweep") + assert len(_ledger_visits()) == before + + +def test_healthz_is_never_a_visit(client): + before = len(_ledger_visits()) + client.get("/healthz", user_agent="Render/1.0 health-check") + client.get("/healthz", user_agent=BROWSER_UA) + assert len(_ledger_visits()) == before + + +# ----------------------------------------------- the reported numbers ------- +# +# The exclusion that actually matters. Everything above is about the ledger; +# this is about what 2plot.ai charts. + + +def test_internal_traffic_is_absent_from_human_hits_and_bot_hits(client): + before = _rollup() + + # Four calls that are all machinery, in the two shapes the network sends: + # a plain internal UA, and a crawler-shaped probe carrying the token. + for _ in range(2): + client.get(PAGE, user_agent=internal_ua("network-smoke")) + client.get(PAGE, user_agent=f"{CRAWLER_UA} {INTERNAL_UA}") + + after = _rollup() + assert after["human_hits"] == before["human_hits"], ( + "internal traffic reached human_hits — the hub would chart the health " + "sweep as readers of these docs" + ) + assert after["bot_hits"] == before["bot_hits"], ( + "internal traffic reached bot_hits — the hub would chart CI as crawler " + "interest" + ) + + +def test_real_traffic_is_still_counted(client): + """The exclusions must not have lobotomised the tracker. + + A rule that drops everything also satisfies every assertion above, so the + positive case is load-bearing: one browser hit is one human, one bot hit + is one bot. + + The bot probe is an AI-agent UA rather than Googlebot: on the flask + backend dash-improve-my-llms' bot middleware answers UAs on ITS bot list + (googlebot, generic 'bot'/'crawler'/'curl', ...) before run.py's tracking + hook runs — registered in the opposite order from dash-email — so a + Googlebot hit never reaches the ledger there at all (see the ordering + note in dash-email's run.py: tracking MUST precede add_llms_routes). + `ChatGPT/1.0` is classified a bot by this app's tracker but is not on the + package's list, so it exercises the full request path on both backends. + """ + bot_ua = "ChatGPT/1.0 (AI assistant)" + assert tracker.detect_device_type(bot_ua) == "bot" # keep the probe honest + + before = _rollup() + client.get(PAGE, user_agent=BROWSER_UA) + client.get(PAGE, user_agent=bot_ua) + after = _rollup() + + assert after["human_hits"] == before["human_hits"] + 1 + assert after["bot_hits"] == before["bot_hits"] + 1 + + +# ----------------------------------------------------------------- outbound -- + + +class _FakeResponse: + status_code = 200 + text = "" + + +def test_the_traffic_rollup_post_sends_the_token(monkeypatch): + """`post_rollup` is a clean no-op without the secret (the suite runs + secretless), so give it a dummy secret and capture the POST it makes.""" + from lib import traffic_report + + monkeypatch.setenv("CROSS_APP_WEBHOOK_SECRET", "test-secret") + + seen = {} + + def fake_post(*args, **kwargs): + seen.update(kwargs.get("headers") or {}) + return _FakeResponse() + + monkeypatch.setattr(traffic_report.requests, "post", fake_post) + + ok = traffic_report.post_rollup( + {"app": "muischeduler", "date": "2026-08-01", + "human_hits": 0, "bot_hits": 0} + ) + assert ok is True + ua = seen.get("User-Agent", "") + assert INTERNAL_UA_TOKEN in ua + assert ua.endswith("traffic-report") + + +def test_the_ad_fetch_sends_the_token(monkeypatch): + """One call per docs page view — the loudest outbound path.""" + from lib import ad_client + + seen = {} + + class _Captured(Exception): + """Abort the request once the headers have been seen.""" + + def fake_get(*args, **kwargs): + seen.update(kwargs.get("headers") or {}) + raise _Captured + + monkeypatch.setattr(ad_client._session, "get", fake_get) + # The 60s circuit breaker survives from any earlier failure in this + # process; reset it or fetch_ad returns None without calling anything. + monkeypatch.setattr(ad_client, "_last_failure", 0.0) + + assert ad_client.fetch_ad(SAMPLE_PAGE) is None # the fake raised + assert INTERNAL_UA_TOKEN in seen.get("User-Agent", "") + + +def test_this_app_reports_under_its_short_directory_key(): + """One id on every hub surface: traffic, ads and the bulletin. + + The hub folds legacy spellings at ingest, so an old build keeps working — + but a satellite that never converges shows up as two rows on + /admin/ad-analytics and the network board, and nobody can tell they are + the same host. + """ + from lib import ad_client, bulletin, traffic_report + + assert traffic_report.app_key() == "muischeduler" + assert bulletin.app_id() == "muischeduler" + assert ad_client.APP_ID == "muischeduler" + + +@pytest.mark.parametrize("script", ["smoke_live", "network_smoke"]) +def test_every_battery_script_sends_the_token(script): + """A post-deploy battery sweeps every peer; it must not register anywhere.""" + import importlib.util + + from conftest import REPO_ROOT + + spec = importlib.util.spec_from_file_location( + f"_ua_{script}", REPO_ROOT / "scripts" / f"{script}.py" + ) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + agents = [ + value + for name, value in vars(module).items() + if (name == "UA" or name.endswith("_UA")) and isinstance(value, str) + ] + assert agents, f"scripts/{script}.py declares no User-Agent constant" + missing = [ua for ua in agents if INTERNAL_UA_TOKEN not in ua] + assert missing == [], f"scripts/{script}.py sends untokened UAs: {missing}" diff --git a/tests/test_network_smoke.py b/tests/test_network_smoke.py new file mode 100644 index 0000000..37ce927 --- /dev/null +++ b/tests/test_network_smoke.py @@ -0,0 +1,194 @@ +"""Run the network battery against the in-process app. + +`scripts/network_smoke.py` only ever executes in two places a developer never +watches: against the container CI just booted, and against production after a +deploy. That is exactly the code that rots — a typo in a check turns it into a +silent pass and the battery keeps reporting green over a broken host. + +So it runs here too, with its fetchers pointed at the test client. Three +distinct things get proven, and it is worth being explicit about which: + +1. the battery's own logic still works (the checks fire, and they can fail); +2. this app satisfies every check the network standard makes of a satellite; +3. the per-site block at the top of the script — the expected H1, the sample + page, the hidden paths, the card URL — still matches the app it describes. + +What it cannot prove is the deployed artifact, which is the whole reason the +container run and the post-deploy run exist as well. +""" + +from __future__ import annotations + +import importlib.util +import sys + +import pytest + +from conftest import REPO_ROOT +from lib.constants import ( + BASE_URL, + INTERNAL_UA_TOKEN, + OG_IMAGE_HEIGHT, + OG_IMAGE_URL, + OG_IMAGE_WIDTH, + SITE_BRAND, +) + +BASE = BASE_URL + + +def _png_header(width: int, height: int) -> bytes: + """The first 24 bytes of a PNG: signature, chunk length, IHDR, w, h. + + Enough for the battery's dimension check, which reads bytes 16..24. A real + file is not needed and would only make this suite depend on Cloudflare. + """ + return (b"\x89PNG\r\n\x1a\n" + + (13).to_bytes(4, "big") + b"IHDR" + + width.to_bytes(4, "big") + height.to_bytes(4, "big")) + + +@pytest.fixture(scope="module") +def battery(): + spec = importlib.util.spec_from_file_location( + "network_smoke", REPO_ROOT / "scripts" / "network_smoke.py" + ) + module = importlib.util.module_from_spec(spec) + sys.modules["network_smoke"] = module + spec.loader.exec_module(module) + return module + + +@pytest.fixture +def wired(battery, client, monkeypatch): + """Point the battery's `fetch_raw` at the test client. + + `fetch` delegates to `fetch_raw`, so patching the one covers both. The + signature is `fetch_raw(url, ua=..., method=..., body=..., headers=...)` + returning `(status, lowercased_headers, bytes)`. Only GET is used by the + satellite battery, so a non-GET here is a bug in the script rather than + something to emulate. + """ + seen_agents = [] + + def fetch_raw(url, ua=battery.UA, method="GET", body=None, headers=None, + timeout=None, retries=1): + assert method == "GET", f"the satellite battery issued a {method}" + seen_agents.append(ua) + + # Off-host URLs — today just the CDN-hosted social card — resolve to a + # synthetic PNG header of the declared size. Reaching the real CDN from + # a unit test would make the suite depend on another service being up; + # that the asset genuinely resolves, and is genuinely that shape, is + # the DEPLOYED battery's job, which is where the check earns its keep. + if not url.startswith(BASE) and "://" in url: + return (200, {"content-type": "image/png"}, + _png_header(OG_IMAGE_WIDTH, OG_IMAGE_HEIGHT)) + + path = url[len(BASE):] if url.startswith(BASE) else url + accept = (headers or {}).get("Accept") + response = client.get(path or "/", user_agent=ua, accept=accept) + return response.status, dict(response.headers), response.raw + + monkeypatch.setattr(battery, "fetch_raw", fetch_raw) + monkeypatch.setattr(battery, "_RESULTS", []) + battery.seen_agents = seen_agents + return battery + + +def test_the_battery_passes_against_this_app(wired, capsys): + wired.satellite_checks(BASE) + output = capsys.readouterr().out + + failed = [(name, detail) for name, verdict, detail in wired._RESULTS + if verdict == wired.FAIL] + assert failed == [], f"battery failures against the in-process app:\n{output}" + assert len(wired._RESULTS) >= 11, "checks silently stopped running" + + +def test_every_request_the_battery_makes_is_internal(wired): + """A battery that pollutes the ledger it is auditing is worse than none.""" + wired.satellite_checks(BASE) + untokened = [ua for ua in wired.seen_agents if INTERNAL_UA_TOKEN not in ua] + assert untokened == [], f"battery sent untokened User-Agents: {untokened}" + + +def test_the_expected_h1_tracks_the_brand_constant(battery): + """The per-site block is a copy of `SITE_BRAND`; copies drift.""" + assert battery.SITE_H1 == f"# {SITE_BRAND}" + + +def test_the_card_constants_track_lib_constants(battery): + assert battery.OG_IMAGE_URL == OG_IMAGE_URL + assert battery.OG_IMAGE_WIDTH == OG_IMAGE_WIDTH + assert battery.OG_IMAGE_HEIGHT == OG_IMAGE_HEIGHT + + +def test_the_sample_page_is_a_page_this_app_actually_has(battery, page_paths): + assert battery.SAMPLE_PAGE in page_paths, ( + f"the battery probes {battery.SAMPLE_PAGE}, which is not registered" + ) + + +def test_the_hidden_paths_are_the_ones_run_py_marks_hidden(battery): + """A hidden page nobody listed here is a leak the battery cannot see.""" + run_py = (REPO_ROOT / "run.py").read_text() + listed = {p.rsplit("/llms.txt", 1)[0] for p in battery.HIDDEN_DOC_PATHS} + assert listed, "the battery lists no hidden paths at all" + for path in listed: + assert f'mark_hidden("{path}")' in run_py, ( + f"{path} is in the battery's hidden list but run.py does not mark " + "it hidden — the check would pass for the wrong reason" + ) + + +def test_the_battery_reports_a_failure_rather_than_swallowing_it(wired): + """The check that keeps every other assertion here honest. + + If `check()` ever caught too broadly, the battery would print `pass` for a + host that is on fire. Break one expectation on purpose and require it to be + reported. + """ + wired.SITE_H1 = "# not this site" + try: + wired.satellite_checks(BASE) + finally: + wired.SITE_H1 = f"# {SITE_BRAND}" + + verdicts = {name: verdict for name, verdict, _ in wired._RESULTS} + assert verdicts.get("llms_txt_identity") == wired.FAIL + + +def test_the_card_check_catches_a_resized_cdn_object(wired): + """The failure no offline test can see, simulated. + + Someone re-exports the card at 1280x640 and uploads it. Every unit test + stays green; the tags still say 1200x630; the platform reserves that box + and crops into the new file. Only a battery that reads the real bytes + notices. + """ + original = wired.fetch_raw + + def resized(url, **kw): + if not url.startswith(BASE) and "://" in url: + return 200, {"content-type": "image/png"}, _png_header(1280, 640) + return original(url, **kw) + + wired.fetch_raw = resized + try: + wired.satellite_checks(BASE) + finally: + wired.fetch_raw = original + + verdicts = {name: verdict for name, verdict, _ in wired._RESULTS} + assert verdicts.get("social_card_real_pixels") == wired.FAIL + + +def test_the_default_base_url_matches_the_container_port(battery): + """CI boots the image and runs the battery with no --base-url.""" + dockerfile = (REPO_ROOT / "Dockerfile").read_text() + port = battery.DEFAULT_BASE_URL.rsplit(":", 1)[1] + assert f"EXPOSE {port}" in dockerfile, ( + f"the battery defaults to port {port}; the image exposes something else" + ) + assert f"${{PORT:-{port}}}" in dockerfile, "the CMD binds a different port" diff --git a/tests/test_pages.py b/tests/test_pages.py new file mode 100644 index 0000000..f6f7cf9 --- /dev/null +++ b/tests/test_pages.py @@ -0,0 +1,70 @@ +"""Every registered page serves, and every registry entry can unfurl. + +Two cheap sweeps that catch the two ways a page breaks without anyone +noticing: + +1. A route that 500s (an import-time error in a doc page's `.. exec::` module + takes the whole page down, and `debug=False` hides the traceback). +2. A `register_page` call missing `description=` or `image_url=` — Dash then + emits `content=""` for the meta tag, and an EMPTY og:image is worse than a + missing one because scrapers treat it as the declared image and render a + blank card. lib/constants.py states the rule; this is its enforcement at + the registry level, so a new page cannot land without either. +""" + +from __future__ import annotations + + +def test_every_registered_page_serves_200(client, pages): + """A browser GET on every registered path. + + "/404" is skipped: it is the layout Dash serves *for* unknown paths, not a + destination anyone navigates to — its own contract is the test below. + """ + failures = [] + for path, name, _entry in pages: + if path == "/404": + continue + response = client.get(path) + if not response.ok: + failures.append(f"{path} ({name}) -> {response.status}") + assert failures == [], f"pages did not serve: {failures}" + + +def test_unknown_paths_serve_the_spa_shell_not_an_error(client): + """What Dash actually does with a bogus path, pinned. + + Dash's page routing is client-side: the server answers ANY path with the + SPA shell (HTTP 200) and the renderer swaps in the "/404" layout after + hydration. So the assertable server-side contract is: a 200, an HTML + document, and the real app shell (title and renderer entry point) rather + than a backend error page. If this test ever sees a 404/500 status, the + routing changed underneath us and the "/404" page is likely unreachable. + """ + response = client.get("/definitely-not-a-registered-page") + assert response.status == 200, ( + f"bogus path returned {response.status}; Dash serves the shell + " + "client-side 404 layout, so anything else is a routing regression" + ) + assert "text/html" in response.content_type + assert "_dash-renderer" in response.text or "react-entry-point" in response.text, ( + "the bogus-path response is not the Dash shell — the 404 layout can " + "never render" + ) + + +def test_every_registry_entry_declares_description_and_image(pages): + """The empty-og:image guard, at the source instead of the response. + + The response-side tests in test_social_card.py sample the first 8 pages; + this covers all of them, including "/404" — a 404 unfurled into a chat + still shows a card. + """ + missing = [] + for path, name, entry in pages: + if not (entry.get("description") or "").strip(): + missing.append(f"{path} ({name}): empty description") + if not (entry.get("image_url") or "").strip(): + missing.append(f"{path} ({name}): empty image_url — og:image will " + "be content=\"\" and the share card renders blank") + assert missing == [], f"register_page calls missing metadata: {missing}" diff --git a/tests/test_site_identity.py b/tests/test_site_identity.py new file mode 100644 index 0000000..8ca5c07 --- /dev/null +++ b/tests/test_site_identity.py @@ -0,0 +1,215 @@ +"""Site identity: one brand, every surface, verbatim. + +NETWORK FILE: adapted from dash-email. The network standard says a site states +what it is in the same words everywhere an agent or a reader can reach. The +failure this pins is silent, which is why it needs tests rather than a code +review: nothing errors when a surface falls back to a default. + +The precedent, measured live on email.2plot.dev: the /llms.txt H1 read a bare +"# Dash Email" — not a framework default, and not anything a reader could act +on either, because no package by that name exists on PyPI. The brand an agent +publishes has to be the string that finds the thing, which for this repo is +`pip install dash-mui-scheduler`. + +dash-improve-my-llms 2.3.4's `resolve_site_title` is what makes the identity +resolvable: it takes the home page's registered `name` first, `app.title` +second, and *skips* generic candidates ("Home", "Index", "Dash") rather than +publishing them. These tests assert both ends of that — the inputs this repo +controls, and the H1 it produces. +""" + +from __future__ import annotations + +import re + +from conftest import REPO_ROOT +from lib.constants import ( + PAGE_TITLE_PREFIX, + SITE_BRAND, + SITE_DESCRIPTION, + SITE_SHORT_NAME, +) + +# Spelled out rather than imported, so that renaming the constant cannot +# silently rename the site. Changing the brand should require changing this +# line, deliberately. +EXPECTED_BRAND = "dash-mui-scheduler — MUI X scheduling for Dash" + + +def test_brand_constant_is_the_agreed_identity(): + assert SITE_BRAND == EXPECTED_BRAND + + +def test_app_title_is_the_brand(app): + """`Dash(title=...)` — the , and `resolve_site_title`'s fallback.""" + assert app.title == EXPECTED_BRAND + + +def test_home_llms_doc_opens_with_the_brand(): + """run.py's `register_page_metadata(path="/", llms_doc=...)` is the home + body that /llms.txt serves. + + This repo has no home markdown file — the prose lives inline in run.py — + so the H1 an agent reads for the home page is whatever that literal says. + Reading the source rather than importing keeps this test free of Dash's + page-registry side effects (conftest boots the app for the tests that + need it). + """ + source = (REPO_ROOT / "run.py").read_text() + match = re.search(r'llms_doc=\(\s*"((?:[^"\\]|\\.)*)"', source) + assert match, "run.py no longer registers an inline llms_doc for the home page" + assert match.group(1).startswith(f"# {EXPECTED_BRAND}"), ( + f"the home llms_doc opens {match.group(1)[:60]!r}, not the brand H1" + ) + + +def test_llms_index_h1_is_the_brand(client): + """The single most-read line of this site, and the one nobody looks at.""" + response = client.get("/llms.txt") + assert response.ok + assert response.text.splitlines()[0] == f"# {EXPECTED_BRAND}" + + +def test_llms_index_tagline_is_the_description(client): + body = client.get("/llms.txt").text + assert f"> {SITE_DESCRIPTION}" in body + + +def test_the_viewer_brand_chip_is_not_a_framework_default(client): + """The chip that reads "Dash" on a pre-2.3.4 artifact. + + It is rendered from the same `resolve_site_title` call as the H1, so + asserting the brand is present catches both a stale package and a + regressed constant. The banner is templated markup, so the brand may + arrive HTML-escaped — compare both spellings rather than failing for a + reason that has nothing to do with identity. + """ + import html as html_module + + from conftest import BROWSER_ACCEPT, SAMPLE_PAGE + + page = client.get(f"{SAMPLE_PAGE}/llms.txt", accept=BROWSER_ACCEPT).text + assert html_module.escape(EXPECTED_BRAND) in page or EXPECTED_BRAND in page, ( + "the viewer banner does not name this site" + ) + + +def test_the_byline_is_in_the_description_not_the_brand(): + """Naming rules from the standard. + + The brand says what the site *is*; the byline says who made it. A brand of + "Pip Install Python" would make every satellite in the network share one + name. + + The PACKAGE name deliberately leads the brand: for a component library the + package IS what a reader came to find — same rule as leaflet.2plot.dev's + "dash-leaflet2 — Leaflet 2 maps for Dash". Nobody installs a template; a + lot of people install this. + """ + assert SITE_SHORT_NAME in SITE_BRAND + assert "Pip Install Python" in SITE_DESCRIPTION + assert "Pip Install Python" not in SITE_BRAND + + +def test_no_surface_falls_back_to_a_generic_title(): + """The values `resolve_site_title` is designed to skip. + + If the brand were ever set to one of these, the package would silently fall + through to the next candidate and this repo would have no idea which string + it was publishing. + """ + from dash_improve_my_llms.handlers import _GENERIC_SITE_TITLES + + assert SITE_BRAND.strip().lower() not in _GENERIC_SITE_TITLES + + +def test_the_home_page_display_name_really_is_generic(app_module): + """Why `register_page_metadata(path="/", name=SITE_BRAND)` is load-bearing. + + `pages/home.py` registers the page as "Home" — the nav label, which is + correct there and is on `resolve_site_title`'s skip list. Without the + separate metadata registration in run.py the identity would fall through to + `app.title`, which happens to be right today and would silently stop being + right the moment somebody set a marketing title on the Dash constructor. + """ + import dash + + from dash_improve_my_llms.handlers import _GENERIC_SITE_TITLES + + home = next(e for e in dash.page_registry.values() if e["path"] == "/") + assert home["name"].strip().lower() in _GENERIC_SITE_TITLES + + +def test_readme_agrees_with_the_brand(): + """A README that names the site differently is the next drift.""" + readme = (REPO_ROOT / "README.md").read_text() + assert EXPECTED_BRAND in readme, "README.md does not state the site brand" + + +def test_llms_package_floor_is_the_network_standard(): + """Identity resolution lives in the package; the floor is what delivers it.""" + import dash_improve_my_llms as pkg + + parts = tuple(int(p) for p in pkg.__version__.split(".")[:3] if p.isdigit()) + assert parts >= (2, 3, 4), ( + f"dash-improve-my-llms {pkg.__version__} predates resolve_site_title; " + "the viewer chip and the /llms.txt H1 would fall back to app.title" + ) + + +# --------------------------------------------------------------------------- +# The per-page title — a share-card surface, not just a browser tab +# +# Dash passes each page's `title` straight into `og:title` and `twitter:title` +# (dash/_pages.py `_page_meta_tags`). PAGE_TITLE_PREFIX therefore sets the +# headline of every unfurl this site produces. Nobody sees their own share +# cards, so only a test catches it. +# --------------------------------------------------------------------------- + + +def test_the_page_title_prefix_is_derived_from_the_short_name(): + assert PAGE_TITLE_PREFIX == f"{SITE_SHORT_NAME} | " + + +def test_the_short_name_cannot_drift_from_the_brand(): + """Two constants, one identity. Derived, so this should be automatic.""" + assert SITE_BRAND.startswith(SITE_SHORT_NAME) + + +def test_the_share_card_headline_names_this_site(client): + """og:title and twitter:title, as a scraper reads them.""" + html = client.get("/").text + for tag in ("og:title", "twitter:title"): + found = re.findall( + rf'<meta[^>]*property="{tag}"[^>]*content="([^"]*)"', html + ) + assert found, f"no {tag} on the home page" + for value in found: + assert SITE_SHORT_NAME in value, f"{tag}={value!r} does not name this site" + + +def test_no_surface_still_carries_the_old_display_name(): + """A sweep, because a rename never lands everywhere at once. + + This repo's pre-standard title was "MUI X Scheduler for Plotly Dash". + Comments and docstrings are stripped first: a file below is allowed to + document the old value while explaining the fix, and that is the one + legitimate mention. + + Scope is the files that PUBLISH an identity. `setup.py` and the package + metadata are out, because the library's PyPI description is a different + thing from the site's name. README and the docs pages are out too — they + legitimately describe "the MUI X Scheduler" (the upstream library) in + prose that a whole-repo sweep could not tell from a stale title. + """ + offenders = [] + for path in ("lib/constants.py", "templates/index.html", + "assets/favicon/site.webmanifest", "scripts/network_smoke.py"): + text = (REPO_ROOT / path).read_text() + if path.endswith(".py"): + text = re.sub(r'"""(?:.|\n)*?"""', "", text) + text = re.sub(r"#.*", "", text) + text = re.sub(r"<!--.*?-->", "", text, flags=re.S) + if "MUI X Scheduler for Plotly Dash" in text: + offenders.append(path) + assert offenders == [], f"the old display name survives in {offenders}" diff --git a/tests/test_smoke_live.py b/tests/test_smoke_live.py new file mode 100644 index 0000000..51604a8 --- /dev/null +++ b/tests/test_smoke_live.py @@ -0,0 +1,334 @@ +"""Exercise scripts/smoke_live.py against the app itself. + +NETWORK FILE: adapted from dash-documentation-boilerplate 1.2.4 (via +dash-email). The script itself is copied verbatim apart from the robots +posture comment — this host runs `block_ai_training=False` on purpose — so +these tests are too, minus the backend matrix, which this repo does not have. + +The script only ever runs in CD, against a host that already exists, which is +exactly the kind of code that rots unnoticed — a typo in a regex turns every +check into a silent pass and CD keeps reporting green over a broken deploy. +So it gets run here too, with its `fetch` pointed at the in-process app +instead of the network. +""" + +from __future__ import annotations + +import importlib.util +import sys + +import pytest + +from conftest import REPO_ROOT +from lib.constants import BASE_URL, OG_IMAGE_HEIGHT, OG_IMAGE_URL, OG_IMAGE_WIDTH + + +def _png_bytes(width: int, height: int) -> str: + """A minimal PNG whose IHDR declares `width` x `height`. + + Returned as a `surrogateescape`-decoded str because that is the shape + `smoke_live.fetch` hands back — the script re-encodes it the same way to + recover the bytes. Only the 8-byte signature and the IHDR matter here; the + card check reads nothing else. + """ + header = b"\x89PNG\r\n\x1a\n" + b"\x00\x00\x00\rIHDR" + body = width.to_bytes(4, "big") + height.to_bytes(4, "big") + b"\x08\x06\x00\x00\x00" + return (header + body).decode("utf-8", "surrogateescape") + + +# The app's real origin, because the script checks that canonical tags and +# sitemap URLs match the host being requested. Pointing it at a made-up +# hostname would fail those checks for the wrong reason. +BASE = BASE_URL + + +@pytest.fixture(scope="module") +def smoke(): + spec = importlib.util.spec_from_file_location( + "smoke_live", REPO_ROOT / "scripts" / "smoke_live.py" + ) + module = importlib.util.module_from_spec(spec) + sys.modules["smoke_live"] = module + spec.loader.exec_module(module) + return module + + +@pytest.fixture +def wired(smoke, client, monkeypatch): + """Point the script's fetch at the test client. + + Off-host URLs (the peers' llms.txt) resolve to a stub 200 — reaching over + the network from a unit test would make the suite depend on the other + deployments being up. + """ + def fetch(url, user_agent=smoke.BROWSER_UA, accept=None): + if url.startswith(BASE): + path = url[len(BASE):] or "/" + response = client.get(path, user_agent=user_agent, accept=accept) + return response.status, response.text, response.headers + if url == OG_IMAGE_URL: + # The social card lives on the CDN, so it is off-host like the + # peers — but answering it with "# peer\n" would make the card + # checks fail for the wrong reason and, worse, would mean the + # dimension check never ran against anything. A real PNG header + # at the declared size exercises it properly. + return 200, _png_bytes(OG_IMAGE_WIDTH, OG_IMAGE_HEIGHT), { + "Content-Type": "image/png" + } + return 200, "# peer\n", {"Content-Type": "text/markdown"} + + monkeypatch.setattr(smoke, "fetch", fetch) + monkeypatch.setattr(smoke, "failures", []) + monkeypatch.setattr(smoke, "warnings", []) + monkeypatch.setattr(smoke, "checks_run", 0) + return smoke + + +def test_smoke_script_passes_against_this_app(wired, capsys): + exit_code = wired.main(BASE) + output = capsys.readouterr().out + assert exit_code == 0, f"smoke_live reported failures:\n{output}" + assert "checks passed" in output + + +def test_smoke_script_detects_a_stub_body(wired, smoke, monkeypatch, capsys): + """The check that matters most must actually fire when it should.""" + original = smoke.fetch + + def stubbed(url, user_agent=smoke.BROWSER_UA, accept=None): + status, body, headers = original(url, user_agent, accept) + if user_agent == smoke.CRAWLER_UA: + body = f"<main><p>{smoke.STUB_MARKER}</p></main>" + return status, body, headers + + monkeypatch.setattr(smoke, "fetch", stubbed) + assert wired.main(BASE) > 0 + assert "served the JavaScript stub" in capsys.readouterr().out + + +def test_smoke_script_detects_a_foreign_canonical(wired, smoke, monkeypatch, capsys): + original = smoke.fetch + + def rehosted(url, user_agent=smoke.BROWSER_UA, accept=None): + status, body, headers = original(url, user_agent, accept) + return status, body.replace( + f'rel="canonical" href="{BASE}', + 'rel="canonical" href="https://someone-elses-host.example.com', + ), headers + + monkeypatch.setattr(smoke, "fetch", rehosted) + assert wired.main(BASE) > 0 + assert "canonical on" in capsys.readouterr().out + + +def test_smoke_script_detects_viewer_chrome_leaking_to_agents( + wired, smoke, monkeypatch, capsys +): + """The other check ROLLOUT.md calls out as silent and expensive. + + If the viewer's HTML ever reaches a plain fetch, every agent in the + network pays tokens for decoration and nothing anywhere reports it. + """ + original = smoke.fetch + + def leaky(url, user_agent=smoke.BROWSER_UA, accept=None): + status, body, headers = original(url, user_agent, accept) + if url.endswith("/llms.txt") and accept is None: + body = '<!DOCTYPE html><div class="dv-banner">chrome</div>' + body + return status, body, headers + + monkeypatch.setattr(smoke, "fetch", leaky) + assert wired.main(BASE) > 0 + assert "viewer chrome" in capsys.readouterr().out + + +def test_peer_urls_survive_markdown_link_syntax(wired, smoke, capsys): + """The 2.2.0 nav block writes `[https://host/llms.txt](https://host/llms.txt)`. + + A URL pattern that stops only at whitespace and `)` swallows the label and + the opening paren into one malformed URL, which then 404s and fails a + perfectly good deploy. Every extracted URL must be fetchable as-is. + """ + assert wired.main(BASE) == 0 + # Either label: a peer that answers is reported as "serves a document", + # one that doesn't as "reachable". + reported = [ + line.split(": ", 1)[1].strip() + for line in capsys.readouterr().out.splitlines() + if "peer reachable: " in line or "peer serves a document: " in line + ] + assert reported, "no peer URLs were extracted at all" + malformed = [u for u in reported if any(ch in u for ch in "()[]")] + assert malformed == [], f"markdown syntax leaked into peer URLs: {malformed}" + + +def test_smoke_script_detects_a_missing_vary_header(wired, smoke, monkeypatch, capsys): + """A CDN that never sees `Vary: Accept` will serve one cached variant to + everyone — the one failure that only appears in front of a real cache.""" + original = smoke.fetch + + def unvaried(url, user_agent=smoke.BROWSER_UA, accept=None): + status, body, headers = original(url, user_agent, accept) + return status, body, {k: v for k, v in headers.items() if k.lower() != "vary"} + + monkeypatch.setattr(smoke, "fetch", unvaried) + assert wired.main(BASE) > 0 + assert "Vary: Accept" in capsys.readouterr().out + + +def test_smoke_script_rejects_a_peer_serving_its_spa_shell( + wired, smoke, monkeypatch, capsys +): + """A 200 alone does not mean a host serves the document. + + A Dash app answers its catch-all with the SPA shell for any unmatched + path, so a peer that publishes no llms.txt still returns 200 text/html. + Verified against 2plot.dev, where `/api/this-endpoint-cannot-exist` also + returns 200 text/html — a status-only check passes on every such host and + the directory looks healthy while pointing at nothing. + """ + original = smoke.fetch + + def spa_shell(url, user_agent=smoke.BROWSER_UA, accept=None): + # The CDN-hosted card is off-host too, but it is not a peer. Leaving it + # to the stub would fail the (correctly fatal) card checks and this + # test would pass or fail for a reason unrelated to its name. + if not url.startswith(BASE) and url != OG_IMAGE_URL: + return 200, "<!DOCTYPE html><html><body>app</body></html>", { + "Content-Type": "text/html; charset=utf-8" + } + return original(url, user_agent, accept) + + monkeypatch.setattr(smoke, "fetch", spa_shell) + # Reported, but NOT fatal: this is somebody else's host. See `check()`. + assert wired.main(BASE) == 0 + output = capsys.readouterr().out + assert "that host's catch-all" in output + assert "warn peer serves a document" in output + assert wired.warnings, "the peer problem was detected but not recorded" + + +def test_a_dead_peer_is_reported_but_does_not_fail_the_deploy( + wired, smoke, monkeypatch, capsys +): + """Every peer in the network down at once, and this deploy still ships. + + The policy this pins: a check about THIS host is fatal, a check about + somebody else's host is a warning. Gating on peers is shared fate — one + expired certificate anywhere in the network would stop every satellite + from deploying, which is both wrong and the fastest way to teach people + that a red CD means nothing. + """ + original = smoke.fetch + + def dead_peers(url, user_agent=smoke.BROWSER_UA, accept=None): + # Peers only — the card is off-host but is this deployment's own + # responsibility, and its checks are fatal on purpose. + if not url.startswith(BASE) and url != OG_IMAGE_URL: + return 404, "", {} + return original(url, user_agent, accept) + + monkeypatch.setattr(smoke, "fetch", dead_peers) + assert wired.main(BASE) == 0 + output = capsys.readouterr().out + assert "warn peer reachable" in output + assert "warnings (peers — not this deployment)" in output + + +def test_a_reshaped_card_on_the_cdn_fails_the_deploy(wired, smoke, monkeypatch, capsys): + """The failure only this check can see. + + The card's dimensions are declared in three places — lib/constants.py, + templates/index.html, and the CDN object itself. The first two are pinned + against each other offline, but nothing offline can look at the third. + Replace the uploaded file with a differently-shaped one and every test + stays green while the platform reserves the wrong box and crops into it. + """ + original = smoke.fetch + + def reshaped(url, user_agent=smoke.BROWSER_UA, accept=None): + if url == OG_IMAGE_URL: + return 200, _png_bytes(600, 600), {"Content-Type": "image/png"} + return original(url, user_agent, accept) + + monkeypatch.setattr(smoke, "fetch", reshaped) + assert wired.main(BASE) > 0 + output = capsys.readouterr().out + assert "dimensions match the declared" in output + assert "file is 600x600" in output + + +def test_an_empty_og_image_fails_the_deploy(wired, smoke, monkeypatch, capsys): + """An empty og:image renders a BLANK card, and platforms cache the miss. + + Dash emits `image_url or ""` when no image_url is passed, and its tag + comes last in document order, so the empty one wins. Worse than declaring + none, because with none most platforms fall back to an in-page image. + """ + original = smoke.fetch + + def blanked(url, user_agent=smoke.BROWSER_UA, accept=None): + status, body, headers = original(url, user_agent, accept) + if url.rstrip("/") == BASE.rstrip("/"): + body = body.replace(f'property="og:image" content="{OG_IMAGE_URL}"', + 'property="og:image" content=""') + return status, body, headers + + monkeypatch.setattr(smoke, "fetch", blanked) + assert wired.main(BASE) > 0 + assert "og:image is not empty" in capsys.readouterr().out + + +def test_a_broken_local_surface_still_fails_the_deploy( + wired, smoke, monkeypatch, capsys +): + """The other half of the policy, and the one worth guarding. + + Demoting peers to warnings is only safe if everything about this host + stayed fatal. Break a local surface while every peer is healthy and the + exit code must still be non-zero. + """ + original = smoke.fetch + + def no_sitemap(url, user_agent=smoke.BROWSER_UA, accept=None): + if url.startswith(BASE) and url.endswith("/sitemap.xml"): + return 500, "", {} + return original(url, user_agent, accept) + + monkeypatch.setattr(smoke, "fetch", no_sitemap) + assert wired.main(BASE) > 0 + assert "FAIL /sitemap.xml responds 200" in capsys.readouterr().out + + +def test_an_unwired_bulletin_warns_but_does_not_fail_the_deploy( + wired, smoke, capsys +): + """How a satellite ships with an empty "What's new" panel. + + The conftest pins `NETWORK_BULLETIN_URL` to "" for the whole suite, so the + in-process app IS the unwired case — no monkeypatching needed to reproduce + it. Both banner panels still render (the package falls back to one generic + tip and "No announcements."), which is why nothing looks broken and why + only a check can report it. + + Warn, not fail: a satellite may legitimately run without a bulletin, and a + hub outage must never fail a deploy. + """ + assert wired.main(BASE) == 0 + output = capsys.readouterr().out + assert "warn the network bulletin is wired" in output + assert any("bulletin" in w for w in wired.warnings) + + +def test_a_wired_bulletin_raises_no_warning(wired, smoke, monkeypatch, capsys): + """The positive case, so the check cannot pass by always warning.""" + original = smoke.fetch + + def announced(url, user_agent=smoke.BROWSER_UA, accept=None): + status, body, headers = original(url, user_agent, accept) + return status, body.replace("No announcements.", "Launched a Federated Network"), headers + + monkeypatch.setattr(smoke, "fetch", announced) + assert wired.main(BASE) == 0 + output = capsys.readouterr().out + assert "ok the network bulletin is wired" in output diff --git a/tests/test_social_card.py b/tests/test_social_card.py new file mode 100644 index 0000000..74da04b --- /dev/null +++ b/tests/test_social_card.py @@ -0,0 +1,373 @@ +"""The social card and the installable-app surfaces. + +NETWORK FILE: adapted from dash-email (itself from dash-documentation- +boilerplate 1.2.4). It changes only where this site legitimately differs — +see the theme-colour and origin-token tests. + +Both things tested here fail silently and fail OUTSIDE the app, which is why +they need tests rather than a look at the page — nobody sees their own unfurls, +and no browser explains why it declined to offer an install. + +The two failures the network has actually shipped, measured live in 2026: + +1. **TWO empty og:image tags on every page.** No `register_page` call passed + `image_url=`, so Dash emitted `og:image=""` (dash/_pages.py) — and an EMPTY + tag unfurls worse than a missing one, because scrapers treat the empty value + as the declared image and render a blank card. It was doubled because the + template spelled the metas placeholder out inside an HTML comment, and Dash + substitutes placeholders by plain string replacement over the whole + template, comments included. + +2. **A manifest naming another site** — the string an installed icon would + carry on somebody's home screen forever. + +Note where each tag comes from, because it decides which file to open when one +of these fails: `og:image`, `twitter:image` and the `twitter:*` set are DASH's +(per page, from `register_page`); `og:site_name`, `og:url`, the `og:image:*` +auxiliaries and the icon links are `templates/index.html`'s. +dash-improve-my-llms adds a third set, but only on the prerender path — for +actual social scrapers `lib/social_cards.py` renders the template's head with +a per-page card, which is a separate surface `scripts/network_smoke.py` +covers. That is why deleting the template would silently kill every unfurl. +""" + +from __future__ import annotations + +import json +import re + +from conftest import REPO_ROOT +from lib.constants import ( + OG_IMAGE_ALT, + OG_IMAGE_HEIGHT, + OG_IMAGE_TYPE, + OG_IMAGE_URL, + OG_IMAGE_WIDTH, + SITE_BRAND, +) + +MANIFEST = REPO_ROOT / "assets" / "favicon" / "site.webmanifest" + + +def _visible(html: str) -> str: + """The document with HTML comments removed. + + The template documents itself extensively, and a regex cannot tell a + commented-out example tag from a live one. + """ + return re.sub(r"<!--.*?-->", "", html, flags=re.S) + + +def _meta(html: str, value: str) -> list[str]: + """Every `content` for a property/name — a list, so duplicates show up. + + Tags carrying `data-dimll-prerender` are excluded. dash-improve-my-llms + injects its own description and OpenGraph block on the prerender path, and + marks each one precisely so it can be told apart. Counting those here would + make this test fail on a package behaviour nothing in this repo controls, + and it would hide what the test is actually for: duplication between + `templates/index.html` and the tags Dash generates from `register_page`. + """ + pattern = ( + rf'<meta[^>]*(?:property|name)="{re.escape(value)}"[^>]*content="([^"]*)"' + rf'|<meta[^>]*content="([^"]*)"[^>]*(?:property|name)="{re.escape(value)}"' + ) + body = re.sub(r'<meta[^>]*data-dimll-prerender[^>]*>', "", _visible(html)) + return ["".join(m) for m in re.findall(pattern, body)] + + +# ------------------------------------------------------------- the og image -- + + +def test_the_og_image_is_never_empty(client, page_paths): + for path in page_paths[:8]: + images = _meta(client.get(path).text, "og:image") + assert images, f"{path} declares no og:image at all" + assert all(src.strip() for src in images), ( + f"{path} serves an EMPTY og:image {images} — the card renders blank" + ) + + +def test_the_image_is_declared_exactly_once(client, page_paths): + """The duplicate-tag regression, in both of the ways it has happened.""" + for path in page_paths[:8]: + html = client.get(path).text + assert len(_meta(html, "og:image")) == 1, ( + f"{path} has {_meta(html, 'og:image')} — a scraper picks one, and " + "it will not be the one you meant" + ) + assert len(_meta(html, "twitter:image")) == 1 + + +def test_no_dash_placeholder_is_named_inside_a_comment(): + """The bug behind the doubled tags, pinned at its source. + + Dash resolves `{%…%}` by plain string replacement over the whole template. + A placeholder named in a comment is therefore not documentation — it is a + second, hidden copy of whatever that placeholder emits. The template's + comments deliberately say "the metas placeholder" in words rather than + spelling it; this keeps it that way. + """ + template = (REPO_ROOT / "templates" / "index.html").read_text() + for comment in re.findall(r"<!--.*?-->", template, flags=re.S): + found = re.findall(r"\{%\s*\w+\s*%\}", comment) + assert not found, ( + f"a comment in templates/index.html names {found} — Dash will " + "substitute it there and emit the block twice" + ) + + +def test_the_image_is_not_an_svg(client): + """SVG is rejected by Facebook, Twitter/X, LinkedIn and Slack alike. + + Dash's asset inference reaches `logo.<ext>`, so this is one missing + `image_url=` and one added `assets/logo.svg` away from happening — and + this repo DOES ship an `assets/dms_logo.svg`. + """ + for prop in ("og:image", "twitter:image"): + for src in _meta(client.get("/").text, prop): + assert not src.lower().endswith(".svg"), f"{prop} is an SVG: {src}" + + +def test_the_image_is_absolute_and_matches_the_constant(client): + for prop in ("og:image", "twitter:image"): + values = _meta(client.get("/").text, prop) + assert values, f"no {prop} on the home page" + for src in values: + assert src.startswith("http"), f"{prop}={src!r} is not absolute" + assert src == OG_IMAGE_URL + + +def test_the_image_is_hosted_off_the_app(): + """The card must be on the CDN, not served by this app. + + Not a style rule. A card the app serves is fetched by the scraper at unfurl + time; on a cold free-tier container that request lands mid-wake and times + out, the preview renders blank ONCE, and the platform caches the miss — so + the first person to share the link poisons it for everyone. + + That the URL RESOLVES is deliberately not checked here. It is off-host now, + and reaching a third party would make this suite depend on Cloudflare being + up (the same reason conftest disables the geo lookup). + `scripts/network_smoke.py` and `scripts/smoke_live.py` fetch the real file + after every deploy and read its IHDR chunk — which also catches the CDN + object being replaced with something a different shape, something no + offline test can see. + """ + assert OG_IMAGE_URL.startswith("https://cdn.2plot.ai/github_assets/"), ( + f"{OG_IMAGE_URL} is not on the network CDN" + ) + assert "/assets/" not in OG_IMAGE_URL, "the app is serving its own card again" + + +def test_the_card_url_names_this_domain(): + """One card per host. A satellite pointing at another's card is a real + mistake and an easy one — the CDN path is a hand-typed filename.""" + assert OG_IMAGE_URL.endswith("/muischeduler.2plot.dev.png") + + +def test_the_auxiliary_image_tags_match_the_constants(client): + """index.html hard-codes the dimensions; lib/constants.py is the source. + + A declared width/height that disagrees with the file is worse than + declaring none — the platform reserves the wrong box and crops. + """ + html = client.get("/").text + assert _meta(html, "og:image:width") == [str(OG_IMAGE_WIDTH)] + assert _meta(html, "og:image:height") == [str(OG_IMAGE_HEIGHT)] + assert _meta(html, "og:image:alt") == [OG_IMAGE_ALT] + assert _meta(html, "og:image:type") == [OG_IMAGE_TYPE] + assert _meta(html, "og:image:secure_url") == [OG_IMAGE_URL], ( + "secure_url must be the same file as og:image, not a stale copy" + ) + + +def test_the_declared_ratio_suits_a_large_image_card(): + """`summary_large_image` wants roughly 1.91:1.""" + ratio = OG_IMAGE_WIDTH / OG_IMAGE_HEIGHT + assert 1.7 <= ratio <= 2.05, f"{OG_IMAGE_WIDTH}x{OG_IMAGE_HEIGHT} is {ratio:.2f}:1" + + +def test_the_rendered_card_on_disk_is_the_declared_shape(): + """If `scripts/make_social_card.py` has been run, its output must agree. + + The build directory is gitignored, so this skips on a fresh checkout — it + is here for the machine that generated the card and is about to upload it, + which is the moment the dimensions can still be fixed cheaply. + """ + import pytest + + card = REPO_ROOT / "build" / "social-cards" / "muischeduler.2plot.dev.png" + if not card.exists(): + pytest.skip("no rendered card in build/social-cards (gitignored)") + + raw = card.read_bytes() + assert raw[1:4] == b"PNG" + assert int.from_bytes(raw[16:20], "big") == OG_IMAGE_WIDTH + assert int.from_bytes(raw[20:24], "big") == OG_IMAGE_HEIGHT + + +def test_the_twitter_card_is_a_large_image(client): + assert _meta(client.get("/").text, "twitter:card") == ["summary_large_image"] + + +def test_no_meta_tag_dash_emits_is_also_declared_statically(client): + """The rule the OG and Twitter blocks in index.html are built on. + + Dash emits all of these per page. A static copy in the template makes two + of each, and the static one describes the SITE where Dash's describes the + PAGE — so the duplicate is both redundant and the less accurate of the two. + """ + html = client.get("/").text + for tag in ("description", "og:type", "og:title", "og:description", + "og:image", "twitter:card", "twitter:url", "twitter:title", + "twitter:description", "twitter:image"): + found = _meta(html, tag) + assert len(found) <= 1, f"{tag} is declared {len(found)} times: {found}" + + +def test_the_tags_dash_omits_are_declared_here(client): + """The other half of the rule — do not delete these thinking Dash covers them.""" + html = client.get("/").text + for tag in ("og:site_name", "og:url", "og:image:alt", "twitter:image:alt", + "og:image:secure_url", "og:image:type", + "og:image:width", "og:image:height"): + assert _meta(html, tag), f"{tag} is missing and Dash does not emit it" + + +def test_og_site_name_is_the_brand(client): + assert _meta(client.get("/").text, "og:site_name") == [SITE_BRAND] + + +# ------------------------------------------------------------- the manifest -- + + +def test_the_manifest_is_linked_and_served(client): + html = _visible(client.get("/").text) + assert 'rel="manifest"' in html, "no manifest link — no install prompt" + match = re.search(r'<link[^>]+rel="manifest"[^>]+href="([^"]+)"', html) + assert match + assert client.get(match.group(1)).ok, "the manifest link 404s" + + +def test_the_manifest_describes_THIS_site(): + """The string an installed icon carries on someone's home screen forever. + + On another satellite this file shipped still naming the hub it was copied + from — an installed app takes its label from `short_name`, so a wrong + string here becomes a permanent icon on someone's phone. + """ + manifest = json.loads(MANIFEST.read_text()) + assert manifest["name"] == SITE_BRAND + assert "2plot.dev" not in manifest["short_name"] + assert "2plot.dev" not in manifest["description"] + + +def test_the_manifest_is_installable(): + manifest = json.loads(MANIFEST.read_text()) + assert manifest["name"].strip(), "empty name — no browser will offer install" + assert manifest["short_name"].strip(), "empty short_name" + assert manifest["start_url"] == "/" + assert manifest["display"] == "standalone" + + +def test_every_manifest_icon_resolves(client): + manifest = json.loads(MANIFEST.read_text()) + icons = manifest.get("icons") or [] + assert icons, "the manifest declares no icons" + for icon in icons: + assert client.get(icon["src"]).ok, f"manifest icon {icon['src']} 404s" + assert any(i.get("sizes") == "192x192" for i in icons) + assert any(i.get("sizes") == "512x512" for i in icons) + + +def test_the_apple_touch_icon_is_declared_and_resolves(client): + """iOS ignores the manifest and uses this for Add to Home Screen.""" + html = _visible(client.get("/").text) + match = re.search(r'<link[^>]*rel="apple-touch-icon"[^>]*href="([^"]+)"', html) + assert match, "no apple-touch-icon link" + assert client.get(match.group(1)).ok, f"{match.group(1)} does not resolve" + + +def test_the_theme_colour_agrees_with_the_manifest(client): + """A mismatch is one colour in the browser chrome, another on the splash. + + THIS SITE DIVERGES FROM dash-email, deliberately: it declares ONE + theme-colour — the #3399ff brand accent — and the manifest carries the + same value, while `background_color` stays white for the install splash. + (dash-email declares two media-scoped colours and pins the manifest to the + dark one; this appshell paints its own surfaces, so a single accent is the + honest declaration here.) The assertion is membership so a future second, + media-scoped declaration does not break it. + """ + manifest = json.loads(MANIFEST.read_text()) + declared = [c.lower() for c in _meta(client.get("/").text, "theme-color")] + assert declared, "no theme-color" + assert manifest["theme_color"].lower() in declared, ( + f"manifest theme_color {manifest['theme_color']} matches none of the " + f"declared theme-colours {declared}" + ) + assert manifest.get("background_color", "").strip(), ( + "no background_color — the install splash paints black" + ) + + +def test_every_asset_the_template_references_resolves(client): + """The half-landed-commit guard. + + The boilerplate once shipped a template pointing at `/assets/favicon/…` + while the icon set sat UNTRACKED in git. The deploy builds from git, so + production 404'd the manifest, the apple-touch-icon and every PNG icon — + the whole installable-app surface — while every local boot looked perfect + because the files were on disk. `git status` was the only place it showed. + """ + html = _visible(client.get("/").text) + referenced = sorted(set(re.findall(r'(?:href|content|src)="(/assets/[^"]+)"', html))) + assert referenced, "no /assets/ references found — did the template change?" + + missing = [ref for ref in referenced if not client.get(ref).ok] + assert missing == [], ( + f"templates/index.html references assets that do not resolve: {missing}. " + "If they exist on disk, they are untracked — the deploy builds from git." + ) + + +def test_the_index_template_is_still_wired_in(app_module): + """`templates/index.html` looks removable and is not. + + dash-improve-my-llms appears to cover OG, but its injection runs only on + the prerender path, which social scrapers do not take. Deleting the + template kills every unfurl, the icons and the manifest at once. + """ + index = (REPO_ROOT / "templates" / "index.html").read_text() + for placeholder in ("{%metas%}", "{%favicon%}", "{%css%}", "{%app_entry%}", + "{%config%}", "{%scripts%}", "{%renderer%}"): + assert placeholder in index, f"{placeholder} missing from the template" + assert app_module.app.index_string.startswith("<!DOCTYPE html>") + + +def test_the_template_takes_its_origin_from_the_constants(app_module, client): + """No second copy of the canonical origin. + + The template is a static file and cannot import lib/constants, so run.py + substitutes `__BASE_URL__` and `__VERSION__` at startup; `__PAGE_URL__` is + deliberately left in `index_string` — the index hook fills it with the + REQUESTED page's canonical URL on every response. If a hand-typed origin + ever appears in the template, half the site can end up advertising one + hostname and half another — and nothing looks broken. + """ + from lib.constants import BASE_URL + + raw = (REPO_ROOT / "templates" / "index.html").read_text() + for token in ("__BASE_URL__", "__PAGE_URL__", "__VERSION__"): + assert token in raw, f"the template no longer uses the {token} token" + + index_string = app_module.app.index_string + assert "__BASE_URL__" not in index_string, "run.py did not substitute the origin token" + assert "__VERSION__" not in index_string, "run.py did not substitute the version token" + assert BASE_URL in index_string + + # The per-request half: a served page must have no token left in it. + assert "__PAGE_URL__" not in client.get("/").text, ( + "the index hook did not fill __PAGE_URL__ — canonical and og:url are broken" + ) diff --git a/vendor/dash_clerk_auth-0.9.0.tar.gz b/vendor/dash_clerk_auth-0.9.0.tar.gz deleted file mode 100644 index 290b84ebf2b2fa3fa9048514dafac853078a1aa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157535 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 diff --git a/vendor/dash_clerk_auth-0.9.1.tar.gz b/vendor/dash_clerk_auth-0.9.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..adb8d6be4fd745e24677a27ea7a7664aa6aaabb4 GIT binary patch literal 158246 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 literal 0 HcmV?d00001 diff --git a/vendor/dash_improve_my_llms-2.0.0.tar.gz b/vendor/dash_improve_my_llms-2.0.0.tar.gz deleted file mode 100644 index d1bf19348a01582d4180374971cd8f9cdb3af47b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39574 zcmb@M!*(T%5{2Uv+qR94ZQHi(j%`~V+qTV)ZQJbN-2Wl&s+tsrHL3k=q8MoCNkmK= zFrb;StCgX(y_1Whhq<A>x1pV#y(<GNBlCaZX6yoT-Mis}r`<-q`u9EBk9ZAb04f=T zs{)pSHk*_ts+?Otx#|)&jWH1fRV*D<%8gP8wpJy=@EZDa&?DD}4FBK?uZ;}9ZSTwL z+gI@9EASh}V3?2%4Zn)~#i@WWa%THz)3&~Mb<_5KwfAK&@8ix8@`qT;|4I9Y<9)BG zKW=QS>?7_jCr+dJ1@Ga9({O)}FYg1!4VV*<2h=f)d7#G!@Xk^x_I>;=Zu~GCwr$f< z#LdAg-K+We-T~shUsRyQmrMH+xQ)dqpvNu!p0@Rhdr|BH=G)mn?AiZpS#|pKb*|Xh z+5h@u$DY#w<mBXR3m|LjJO0TJU(%fxZalcZbNue@hx)g-IkyCi!}tc0KKGk10aw=) z`*xpk>8ARNfN?Lqn%z`PNbw4WzmEp%cY#|uIkM-#*Re4T*#+S2*sojQ%_`<Ra4cgR z2$Z=1k~MNZQfUgK8>Y#0E0a?`%-o3woiAOf&6u#@g;j#Uf6$!&9g&9)`yGTm^8LY; zITIWNO{HgsEfJ(is~-=>5}VQ}h<4v}R<1<;Cz7)tDY)`pKERQ#c*8EcZEbCD5Uam_ z*XP@-hfr=cCp2tDXEGmto8>)3Iq`mdR}aE8fEDiZu$x$V*b7ymCVa`rmw?<LSFg5w zsi5CqKJzBd;-~_a%<oyMr;yW8T)$->yNa{zvey3VUW!i<3`o#I3CN8O_+SF|N_{@C zBhPdG5bU!Xn+2^$=#&5IeKXO=zsrjvevqZG(vtfkk8)I@1!wa;GlYbn7b<x&JAZRV zB?C#dGdgmXK`0RhJHljsSRBa@TWg9CrdLp45*Hkkj_UQ|i=%3Qc+p0MXn<`dAJd)# zfn{IMQC=r<mbYp_@5vvdal<zDfnIV;pZRR|K9pPtrj7O0swd7IfEb@2A3)1k9iV!U zw}!5cw;$;^UauA;3LS(vU0_V}$LxNT<^uX-)*s^KK7-+gyO(`@E>-Fu`h<c7$CfD| z<HeW*{TaXYn10%?zeQy_MvXN(NWY;ef63-)e=m(*NPmCXDenJ{gwuiykn=fPIXS^e zJ0~O{Fm!uWeCuL<s%Fju-9&^C>Wpz)!+R@#Cy6_Q8G!HpCvYC+f4C<WIOCydnS|60 zztvk2<;4}kkv+l;qFU7bXQbCF{de<QvjYO*k`t7!>18jG<URZ`9Oq>9^br|U0oRi; zm-|3=$FAi5aF<BFV9b)VlA`28tR)M)MT60;jmO$U>O28|9+(Fo+ntlYsh~G!q$A}z z#!Z>)ScOU@B1c2;n<}niS7<~R%oTr8@g{mtIr{6r7%xP)gK~;O;|$nc%7vj~#IF*; z;0rPrfQ#I6!l!@+f$=B!`jYfIT*F4+rnU+CkU_W%97{Z!(5638+cf;YLMUr0dE=Xu z{e&mtJm)j`NG?v^D}ImY9FQ*P!VSj08$C$0b306`UAKiW<=CS^{KU$~GmD!X32>eq z2y2Y)3A?ZTZ~6!CHN~UQpD|INq>66xObH=JsG|13w#uisCF<)4Hayw#A9yD>5wt-L zu~m>w2w2_9sf&4Agu*#$eE47(|FjetaF+a4w17v%bX}#qeLul$q=LKDN>y5@CkSae zrZSEY#{=K2IOO)(ZrlV<(Bli-%EWh?TkpfSLAUVCU(jXJ^KXqt-(!l2KcZQ``Q)Q` zhKY?Yl|jmp<u4zfpUs&5zz@@n?67HNPLHw=?4f>vHVP5wP+f2Iv?odWxA#>&B}$m6 zmzP3jV<S~$2nRB_A(Qd2Z8YcF0OH%(LFR`Fd9s}CU!-rSzS9a2LUogDSmX{_^4XpU z>8scId7r(mZic`X#&mUg|424B?1Bdq5`X6_Iy<kej<}x>PtxzLdB;Le2xo#xJRh`# z9YKyCAwj|CL##4L(Fu)K?`*S>I2<19)1IOs(~QPUDDJI{z!7sYmt~7Z1+cxPWK~Qs z?0(s&VG<?{=F^K2SwN{%ARP+l@ubYqS9k5=m^={#>??vgpUi0+U_%`!igtHY$OY$I z+Nb?QiZWD)fIv<y$PNvvgDBO|TZ2saM!*^0RBgxm;uCikvN?mjPy0v{yMT}x*~<>N z_TSHR;6QdTMyvc_ax(%qk;wQW_?$uUag<m#k-RL%QR<-6U#;Fh@{pDW4j`S17_5k+ z;Yq&b6K|)mUZAJMBGIZ48p)>qoTYV7Xo0*E>kM=bA#pMDYy!ZtZwDE1-~z%|;O3A9 zkls4PdL)#tyx$H7htQ}RONi&^;)qDvHKykgeIYb#vqNb}QRQ`7XS<#7XN>GE{UM2& zt6+v4)@OLxGi)@$M)C(7L_rp~MZXym(}qhC0YL@5vgiOjd1K>yoK4WkgF%)EQ;h{! zqX;ysAZa=$?O18!?4kE7-0bAc$sbo<BxuIl79;${BBLGX@fAM=qn|%lA}9f|17{~Q z1)00f>>g3{e*U$qY0~D9<BK>?(7d=JOkdOpMxRUXOcqanu!s7@X-NSL!X({|i8r*F z2btqi1Ls<}C>A319Swol9f!t;_$ESGWh@PJq;Zg}Jc01vfm+%|J9t9*M$&#DH^?-x zAj-*;D$z$^%n;FV{jkSb?BaiDG02YPO%rL5FTSKiLQdVFQVF5y)Fgs6-s&lxqxH}e zOF><%nB^&B!afbshUD*}&IXhbg8d^|Wps|5#hkw!1Zq+8naUZRA&{I$@bpZy>@g?N ziI=Ro3SAxIAJL~_SN%^pp4ijLJ{Dq857`oD=#+6FM2X_TxlmKQi7Qq3Mr%X;Kmf*8 zIookAdN$b2UWfovc<=+6nWALt<H6xzv?pIkfF!~@J$~hgnSi@j+A<8}Su$8X)m|wf zv0?<(ELDYoxXvRwXaTiYsPG~Q{7Hjs!j*cj0zkQF>4G(-V3M?O%$HU1ED%O7vto=j zn`9i(m!yGAtmNhPJleCtzOLaFl4Z}`q%TNU8jJ_K(Q@|6l<sSH|Kezwvfd3=2@PX? ziR7AK*j(`&0?O8k$VJ>*{RT#Fk)%QIs8WYvc%Kv?jh4$;;)Xy^D+Rx<hCcjA5qJah z2%!ogKuGFV;B$zKJN_Mmufb>c1jB<+zD(yopk6&KuS~>r37y61rq_Ri`z%V0e9YPN zw(|LFX#9PvZdPc!nKAEFK|b)xWU=4T@BO}Q`rQxTV3I+2Msvx>khVAQA~r~-z!z={ zpJKC-5wj?D`#F(JRIL$dj+KDZ+|P>?A(e{h3crBo0fwAxP-_(F;mbKxDjI#h^q<@1 z5POio1b83~OC>HP=!I!PQaaUW6Mj9CX=mQf8Q4S_if4GL$3x~hh70ZmHGX*o=Fo*H zosKm`ZpSiqYfqWx=KaVOja^A#hd`oJpsiknAM*%*unB>(FASotgV?VosX6ciE@yG( zbeVf*4FGihgeF9=e8_kQ)7ZqdiDxv(gF}@Y#x7X9Lqq-88COrTlzQ4GQv^2a^1%g< z*ll@o(jWWE-eZ{?^}%c=t$bHna|kRQ3<J0t4Y|B7YKVKgGqlrEKr%a#LS#l%;;;P1 zfr58W?%THY8hgGCWZ<JAuvrMkO;n~pjGl*}K&V*(kkHm<wc6J2;5@j>*@S&RA++E` z6<8Ci%3K67*^p7f4<@jgTQAbIUa=N}5j56TBk(|9hh$9HlG62h089Efwk9JaA;IQp z0_HI&Qkl}ER==kGvG%N^^U<#E*mgOK5dIhV*8k-RY+r8|@A`L(0ET)Z`Jh6y*s*I| zMJ~5Gh;Z6*X=}?)u!x+vi4;%lJtoZ073OTewu;|~@``vrdXNtyUqLhsUsKD%$p#i5 zGzWW56Ip~TLmarW0dqJ2AI6dY8Jfg>vsQuIIJO3ApSA#|=yfQh=E&@EsV9>?6bmEG zadl_Jh??|s67bVM0#kDsGcYcnxws_>25B3V+`6u*Y5^rKyM1WHN>pFlTIm7O|8af` z#_#Lr>*Uhu<L&i3xWeDd#oMW`+td4fM>qqp>Gv}H^fdfk*YR4+?Iw+233&zEbZg%T z7yE{-XsF`yFYqx&kVK#4RkkWQ@N;+*Mrle&5pT<Atc?gwxKC>Uu^6Raf<INj$2=@s z#bF?ZTcBu!>9_KB0N_l>@R5w>?|=@JD<=4Lmp)ens5un{k8<?749%~|YhPQDpf<Hd zrUSFd!7xkv@a4jX+m<Sd<;6i#g~c|9Y1j1O=L79(k;oFk`^|kha@vmW^W{+|TdD=x z-6Dk~xajkuNf48g?huKffZ1TWqtO`d#8)=dIm8yV$eZiIQ?XEr_oGU+h9b26jezWO zwptp?*!AHwzj!)027r{h@5&`hBsv=^UHCf7fzbW#IH49YSV@lFEXpU;+*k+s?-Rra z_|C3WWQ(b9h-7f`%Q09+Kdr970*QourGZIsei`XhyK2I~Bv~kWeYD}~Kcp28%zQoO zqcRjK{-AC0K~Q(w8ZE(R)C{_S(fho|uHemo#ByMpG}c)Pex3H7<b*lV6AO2#Z$`aF z6Q3J80|_?+KpAy74kSva*a8Li7~<I2u;1Kp2q><}M(A=X+v9B14p$}^$tt?I*ARbM zst(E~HXD_o5M&_L`tJy2*&$wS&?UgNbd^DA1`DV>$UD`0CLZUMyi?u>%oHSHJ!}8g zXTNA}>4V~#f^a437{(7VGIR+28U6``?nA8DNrT3RG%ZprgDA9JyN-!CkRve)vRk0N zMh{4Ln=Vu#+82&&TBOa`Iz(VDbF}@!9p5zu%l#11`r|#WOZ${8k?36xlI4vcThiKc ziRSxZRfu;OyC4Wh9>#nb0W!DDn5N|g<&>4t6GIqfduUrBxB}zvwBHqC5-{7f=3R1c zc-aJ<Z!NY8W6o(hxMl<IExY)ti=GI_orbf$A<U-&!C{1INrvrD^m&J&5vZ1ZYsY~b zm#zK@J%`ER-;<G)S$MT6>fq4XeAdM{I`%8EO$ofI5ixQ|sPLEVZQe0i*D?M+0p~s1 zK-Aofy`=eaO~SA0WtoZjiwXffWbE@<RX%bxnyRU1N_lHs$g6g${wH!;U$(#uruSPY zND8CDPvMnBIWuS;FCQ2=qXt*77(LavAmSJip^d_olWc0;9ykG3fVRi^W!<4~v!(AK zMT|xvS8R4Vri!~EVhe9nxpd@EQ6G&hnzOqXy1*w#jt4+;5Lb63gU8Sw34%y-xncC! zEPF-QM88qFOCU!;$?r5wPF<^j5Jr-CCN7h}NN*)GxV$kYSir_uMU7=kt{C+pwdL{d zM>pfI$wa>qUF_6LIN(};l3|b*6rvXlg%+(`Sn!!_^w!iq1DHR^I!G!uFkvujtd?8| zDV&nJW6uLPzaJ+#Yz#m1)<w@dyGQwJ7byEWGlnN9H0u#wj<Pz1Wn)<|!jTgcs20tR zY;e!M2?l6I3?!b48bJVzxA%#WMeUJ}o~7_a0Tz#k!f|BIxPGN7CLM*box|vhN>;3v zb2_%|`44EXIPDT`wX7LHv8kBo6{t{RFR#|Wi}Rmgsh!X382An6titcJnqebmsz{T} z<<z#XtEYSpZ!9HfbH#u}&*%-!yuQ=RBUEG+4^`*3SxM81nr|LzM_GeT<u!LOJr8Lo zACB}R*3%PYTBt13Tue&LDNQ5AhA-bV`@=>+MEnkqu;eAp%|mA3FHGkz40#g{K!pCB zw}w#qn;oIj@n_+|HqW(TO)00KPUPNDPAXW(xG$(kKiUlT9Tk_pk1Nsk#iH1WJMqmC z&U^id7{Hv9Z;tivU2~kjN#`*q`ClS8aY(uJeB)RQ*1?g#H0H0%9RlAQ{`|idLbp>s z%FwLS&i6<{9m9hP-XK(BojMSfgq1q8!HvHOL7R8R^zUf!Uw$vA@NCPRy4kqCkQm?u z=?Rqsb1X<wCCsAXb+6(Kc5$Wl0txPHE1*Pp6Wi5L?W@U8kNP<SOF4Q%#N6!Ljgy%$ z%yTLUh!;rxsxSBHJ5c`u+8LJlED8KD*>*24hNIE&KFZ7$gDcb1%il*NZ~x7f5n2!= zAa5#f^cp$nyDNK}F`q6*kvt@%vi$NapdRvtpKh~?;cI0gZXry9K-Fqrrcslw{$nDl z(s+<7`Fw+6q`QR52h;H`-VEYI`uz!1)r0z8fIxCH7m3)E;K@8*Ahm8ipB=Z72T=KG zDqk>GeU(Tw6=0)y(u;1Ad2<jbD6zquIhQZlcaISuF?V<Dl!15oisL7^`^%)?s^*;l zzxq*vuRmx+?CcTh(YHr?gftY?itY*WRopelANiobvgID+s*0?%u}UBh4rsnLpylAJ zg-ULuG~U_E5ljl%;>hP=qu@0`%sE`5QeSIy9qBR18#pf;Ch^e^QC+m}!?Jt**bjYu z8uQ^*{@@-ua%Hg<L&Il|)>E&}<mQHR^G4ajt?l#MnJ<0<$hZ~`#a?{z`y#?U%B^U` z2hw_F@aK8(Au>icQJOEwKBGaLR}}_{q9KTfwuz{kUMosbAFqT+OIom+=B$N1u{c49 zbwtk9XoebzH<yPlXe?#dH`+m^etVU25RHd8QJ>9TS}w0)Sv5~yiap%<cF$#}sktm2 zCb$~WTEc0*?e>Vj)v2>#l5Js1I%i8z&stR*Qal~IKl~U45*_ynI(d`pTD=>7sA}D8 zAY^xY=x?Rex%-Vkr#wE}Z;r0@6*G5Gng^6fq*o=q%ucMX8fCkT&zoajk2&ujnG?`w z5u!#~C2f#sIW;Tq+4w@jJ;lem09?V|ZmK*HxF@g8S9EM*uzWS6YfCLG$ysPlZ1=2` zItzIxBdd8JuQOz%FH>$C;C$dyA7@rVyINL^1+|?8$4uS-8bEENkx9{6h~sfx*30ZO zW%^cSNE62o27}v#p^YK1CKt4pP!!90>It`swAn!wX{+Klp%2UaD&S)R<s{+&wWJ>! zo__I{$iTH)u)O9h<rC$!p3h1jNX;#V#9QRm8A8}JLNi}a)O4uf%s7P4OP`qXC!VH8 zw~_jzUEdo$K2cZ$2*{04#dp6E`VKaQ!;P-LXWMBT(2%n2zRV!mo1vTNY!l0?k0tj3 zaKVhPiK*&6*dTUSA)-48#cr!%HjlKcDeC%<6c&}ju_jB&@E({&zY$_)i90Yd^Rt9# zaMGhNmaqChnuD{4YIIMEr1K-G4BQ3r_@OTGk-~s_HVnwV_hl~0dtS=<ifWzq$Q_~t zI8V9x{1R%;LGG|&g(ekMXzsGHY)zAb-Ts8aP0zw<8^tv6P5y?tUo$MuO1ca!?<O*6 zA6<J+84Yb)FDRE4$`ggiN`_$sLG}B7MqQbmXxduZ7`dQc%JH*xhFw+4o5R5|R8-u_ z?1XQFFwwQzt|r5~rP1ehJ&^Wt7bgv+NrSSY-(N^Gp8bu~P1g~f0vS+v8Ltv}gQlVy zqJC=SMbjbQ^P^HrT{aY{_IscM+FD;a)-#?{kS-J-{o-#51YBTh>}$mc1w8>rt*;EP zBJZJ-I63iLYHrwea9EF#G}x*>5h8UMsH*7pN@^TrMXUh_gI~dN9vSQi)jeU+Y-Tsy zibYi5MBQd*lR1{zbYyy`#!I5PLSpGkbufijl|_+NdsJ<4p&`Kz;mV`eZJDAgSvTSW zIsF$}3i)5q)n6c2)VV#w)})vdD$va4mLzqmd}HsNTb(7KyPGpL1oo*k_N_669U}oG ziI;7oJm0Gjt@cUUMHWpesv0htf7_JemD`r%e>9LfODA?YE6_H$<>L&tDq1cE6sSm? z`h*ndr~rGKJ5Z^M)YWKIe_7mn>*^t*b(G+R+92IqjoGNO9a(P9dBK_}Ha4u5S$Td; z6D`;KAnT#*5XqOKlfgW7vVN)2>BxnKh{7ap1kK;`lnAa{cX1McERh!w$j2&HlhD@x zef4BQdaaJ9CDeRUM?SDJq}~mq_i9O$Wo_JUA2@6oC1jUtDfViP0OcI$QIO0*(Rz-^ z_O46|EjAC`6X+F;+AQ!c-z=E40iPvj>P#|XQ!!d<msY|K#*S=GkKGh1j(6XaT@w-G zT$iorZ%BR07#Spj7tR#{bVBk>OC#P}{zTSko<$G0^KbhzKI(}A7%5tWMg=+BZQ>-r z{YlcOR!V6=RYex+4-Vc0+bh;N4Ff1>@5SFWHAe`F;~7M{#krep`hqAq8{+s^`qRIq zVM>!z0;;B-VnQ|dA&07?xMV?A9!|T}euqmSbyUzyWG{f!g8MnU{dRVCb8;qOM2z=T zWJG!!*}Zt!;O-gBA=o#1$vt6STb21+K!ZM4XJR&}%DVaAS;n6o)$FT*>m_30;&}K4 zX1r793!rt64&ij>)8<7S-j1_Ox;{XRI5@-}+w>@l>YVPV`a14v`bwUuONKghkh&d3 zVHN`M3Rnd}EnVggowkyA7}uYu$XLi8%&fib?PWadN)(3Tx{+grOfx-U<w(1_=L^nl z9GIcgws2llNMh^qDM@&t^Is?I-^fo*E2@4qxd~NC3*#0xx3#TQIG&jsoG0uj-7BoV z!Q+x>EjV>s*@b{8p3+S}M?#2hIjLpEpfV{uv1FGP7av{cg>}9hr9UbJZ2qL$`2>eT zvg9;Kdui38bJ6eqV%$r{x~W<|eByQzeNoy)Xp+?luJu*i)seX>-a!BL5$-}li`OdN zTQl*aSbnJ?#tLvJEN-MoBebxG;MIlL#~{Pg50eUpOF!jKJT|80fI=k*A4I@6rkB`@ zf?GAw``7DzOa&4*VrV3vdU%?WD8_pz78eD&`SGXcn;AaDD$(E0vlOhEmcgr}g#a>z zPRRE<O<$-%TnrkScqmA?g2*Ew;j*OYB!x)~GIR6SF^`?S6YeDTK5pZYbnqDT@pjP| zgJTJKnNj|thAh$3xEbRv<0B<TnxLaC)?zFk`O8kiS1N_xFS@L&JYjJpui5UQ)aHkD zB`^*o_wl`j1<ZvO4pbaDLl+P_MOqKGquuA(F9w0ED#q*3e+V|}dG<zu?gO4sNGyHE z4r@Y;w!X%LvjeFoyx?f#>nGHGNlz&`(K2VCLw3(ulvrbo>$Qm?5(rl}3gw+P>Yr7o zd*9=+@j5aI6P^!>`ze7irFda({18R=e@v*Q1fp;OgXxE;Qf&U+w3xH|#g*ejN|8U; zGYB?w>keRkp4-2VCCzpiK=#r&0+(B*lUfD9K4_LE68{2@g&qDmK^*#lIroE)eIn`v z_V7^+C(msx+(vN{x}gwhQH{)#@<w*QuiZswDsw3t+y1#I_V^C2<F8s>*Kfz)4IojX zZc4^F(c58NHh&?G?`Kr^KGbjMh(gm)r8%s*!<KX8Kh7H(B!-<>Cx9)#8>)o7Up}<5 zOJ-o|QzjRfOFEj$=gel1?yj~s+5mZLDSK5mkPn<WaP8Sbup=?}U`VR1Q`Uc0CpcLl zhI|D#Z|P_YuL2dWszLXu$6HCSz`q3_oUw`OQdbLTz!eS{-dgEW3qHA|`BrSNVh8`_ zSM$}m@jDq5q?-0YW3?%%@fqC?N3}%L9i1O3BBhpqoCAF5ME>d~!byot)Mc7Pb+g{= zKy?YE219tVwn#|TbbbYY>L~!3MIfW%g$)SSIJ8Kh(=`9La~>aY{Pl_doxLvAa?YRe zbfUux6f6C1n(=r-pxyZ=?$h}P!7+p@K-%<2($!UF<OBiX1I)gC*^j`0o?VVOm(I#! zw|Ihw>xV}%A^4EE)!WqB@zBoM!^#E>6qY71zC`p&W8tNWB6c1-j(M?$vyI+Z3~u`` zP1D3f(vetmxx<;zyhF^6s9N#d#AG{|P);vjcTH69ME=nS&dfi9G;}{N$OwrbVXy%* zL9TU3l_<;x<D{<BM8?VluDMtjx!RC|d&7gsR3HT}dVOtY`i{mm`e?uOmc}o=Q;XN- zKcX2)C{lya9K-sEkyMG-q%(=ZWJ1$ulU&AVZu0$Y7C7n`mrbOK89Ng4{O1q*spp-U zADWeJj69I9c`MJD-J_#OY32C>c7=$#qK(77*MRaGY&X9u?soMyTJsI=zjpm_(0+2- z4Wwo7R{0<8)QblAI#(v3;eeQKSXr{Fb4(7h!cKX6V+Rsjx{#V2?#WJ}K(XT$MEOIa zlN+S@JySocriznPwm+hEoTz*G&3TcF_<-xJcw=v~P>PaCnoqz$W%5Lhv6zk>N*mOd z7?~V3f#R_L4w7;G^}=+9vo8kZ3wYu=hz|HJZxe-dhdOUhcSZWP^UK<?if?#2`Jhjt z{(12VSZvsd{{Rd>{$*nXMgB1J#W>Orb-b-fz-~YUkZqP)3PUJ~5pM#~7a1{X**Yzu zb3(`=Y`evY50@3Xzir*lj@WVW$O(YaRd<nm;yI4Q%ckuW;kQ=_3N_KiPv<~e?TX3? zgX@@xMfYi1?i`A>2s}3Y#ESh5ibI`zppFVoK;%l~t8*ldWba<2a0W_S#xR-3RNpBr zkBzkCrl2HzSdlvx1YOidm$;f(2E>JuF39BmrN4x`z8x!f4*_cTV@J}Z2sq%_fHoPa z)6T2oyDIUd7QEVI!CPKs_OH<{uk-T;TFV@_2gAe_YOcL_m!@BHg7DFpG@5hB8n*aN z5D1E&8K<sau+Bw#i>%kGm0aktSXh~QwP}IO|Fxq}aW@8gKv*?DrS^Ggh{<oP>&ci} z$;F9v^*PC2JqxCU#^M1tdcxwJm6)S4MiPYk7kdu7OvqGiu8+K71>v?Lh*!$%ICb@7 zgrA%R>=Hy+Tbpv!ehjUrMnKLi@JJK3$<m$|_#<g|X3*1CX*!%glLo-+Oug)t^LXm9 z{hPYOhYJ1Z*!uk^?#18h<_#-!S{h&4t>vqt`5oG_^d#JC5OT*kMsT1lU4Gr9IqOav z6|6Hn&xI=~SBu4us$Av5kw@JfJ)TWnFv0lNPF_p9KAGsH`rgJYS`&Ad(|sQ!D?GDV zca=nbS*YvpX|RWL$oL>}Zo*ZuUAN*T!kw)H)*PK+?6Z*5<JFCm(VAzKgYb%d-M`-w zQw;i?=1;GwSA?S#UCq@FLMsd!)fc6+b==>`ADvmFmZriu+OaL1E~6F3&FLyR!dGZJ z?{I2fNMx64yQL{4u@4Vs@c$S?PZKql+US6h5pqC+Cw-x{;Hw5lZZ0PNeSlt~-6<_` zZ*R`%Qa1K@FLUs$f(fsZ-8!hcA9+>0)MQM*b%@?kVu^axCUdwuGqp{)FDTo6Jv3)j zx5-R*x@yj(K?$uOe(`?}hHP2_^4scvG05v`i~B=P=HN7()nM@reVH{|^QTC~2Vqv< zH9bK_NLt~7+g^NT#q<^L|D3*Gh#CNkO0vZ`UCc#CB@umUs;JtZpu8kttH=~(IUSK| zVIZOfv}sq&;f9g+UisQ+no<3UW=MZdq!qug51@F&a6ajkz4M0_xWh+5Eoi!`qTWz6 zgC44USQp*IoueZVhG*{{D*DLqK<O-uASVcJ1K<Zah~D-aY9<RLllI_>QrB`sNea%G zd2FmK=UZEsY(uS_L;>3qiY1V_w$a2liHwu}vZT;7!`K%stqJsR1R3WHBhV+su=oXR z3!C`rC!SHu@jDCbB~A^Ka&H_bf56Nkcb?GnMGEg3tFWa`cG6qKX)`OTA`j^}Ue9Ee zwDG1xxSU4qqWc<~%S}xg`^Ug#P22HPiVG<0RCjP?J))y&qcVO$rI_UHI%(&V(^I?{ z+JQ-gaJ<;}Hngo<ZkE?5y-Ks2Jt{{WfK(}Cqnd6S6T~!leB$#(*n>KI%5P}TQ-))T zN-VJgiaN=bnsg=R7T`@z&-F|ayzH)FlahHn673v@b)+OPS$~m|8tH!VALF0U`q~_f z!c-R>|D>#|qEYGS)NEu6zh2YLqjyDCy&^o0)R2)eKN5tN3`TtRFqcuSk1bV}Y;C?q z499Vg2}X~BmVL-<#8Fq#gEF=3U>ZIRp3Xts?Su3Q=;HoO^J54)f^3QdRv<j2UXc_x zw)Hh=!o2K>L6wqZ=c*?=-5XoOXc&!9-AEuy%`GzHUU>0q^Rc2qB0mn|Ya7Vkt7vOf z4Cj~ZXTwL4=OJoKv%rPWKc^CCgyYRFWpwFnX6tB1OH2H~NL5o|LP-zvTVgcD)VDjA zta9_l2;GitFXDxY5ngCjoi;Wm<$KiJlQ^s+T5{#pG`8woiZ(C1C8j*e=pGPH&7Zq8 zC~;wS%qA&BdBAB9khVGB2f^b$^o`TRi%hEJnu^)@creY2WW0Mdbyu4!v}e~Yk*SlA zX#BcW#q39<Tr);hlzO<iw_MDZ&4yah0$WqO3l8fdNZOk018YZUfLrfT8$}=!vE(Q^ zIL&@r464P#B*y+*j{ZlJw38%BTU6&JXT{Q!(LL!1SIvAf_kqUzH?yUn<n#y&2ZT5; zrVWx8R5c$X>;xK`C)Hw{by*wzA;N>;fI>$|H@5M-8$6*pRfY|n9zil_;#~^%u@4SE zPVsN4ot=PpL*O3ptlzM#>e!1Jdwg1jeZzxz-Mt+PgcOPZXQ6W%C8H!h$ug+$2favJ zC5E+XVUW+x8S=yyS^JXu^t|D(7|TUXI+&lIb_d7zP)m}GeE?=QJ9_JIpz^OEJnP@n zN7#!ef@Erl39tBm?-VFZJV)7aW17rJTJSE-sWP2nG|$Y)SWYX7tNBVK6>76IS6Y<? z?=5h(2h4JjZaIw{RyC@WjkEvGcTLD3$9ik;#GY%HfXC@(GhA+t?uN;p-8wU8<r#TL z!{6V<A$OjCk$57;EhPaw$AO%L>#;@dLD}XQS0<jo_xqBke@N>i9~Yj>6Of!jCW+|2 zN`c0*ovG>}$Fi_P{Y%bghc6Egw;xD)hL27gSJvi5@=k&s9oM-;xp{vKvxT=v>?S~v zjZRhP728mX`KM$VwR$TCgE4p-GzeM`u@e~9YRJ2mfAd&k{jRPH$^eXXF#gQq_on(t zWp%>7Odcs=t(*ZsCcq;aJ1O(}`W8Lwzt4S_X4*$WfCqwsBi@iMH$Ht5KEiYU`k8X* zpCLT>J;imfH}O#@?^eSTfhC`<S*~@L=Tz!7Ipk3bbYfa8Pi~Nw%~tZB6Q*^~?<O*% z2WmEYwaj(9SILdehIa!{-hfNlu>gr-Aa|AB#7~>mc#-%q2LakslwgFo!up+xO`7q+ zS7lex2EW-SWvxh<gg!;@7zt(jIv_-<Y5E)5DkPL@!l#nYNE-x~`Xx9KC0?6^+_9WW z^ExNWl0#ZyPCfBilrQu|n3K_(#TuXp0NXDYvgMF&8hXA2DZA{Na_XH+WA>pLe#3t< z(Y+Z}Ib}i|NboB}WC{i@_>0Al>WN}PMy;M<%~%TqG8=#M&3%Sk1Xa+9LZN57!;=?% zO$U7KJ)}Y!{RvYg5Kwh^EH36}Z4|PEeC1xlnmlM><Sya4I-Gm}34Ng+!w$EUw!<j% zB+T7Cri5pOq^-d$3v@5cbM)$^{xw0nwnPiu`Y#zi_S$r39d)*5<J5oJ)qgl=dfeSQ zJe^#e@2y{fk6(^)8m6C<j@h~$7wzqwzYcs{ZC!0`(||X!U%Uc6=#s`nT<%6*uZI_; z!mA=`|I}IIv|UCrWGpL^O5yO$7+47K?!gDN3;HDyGV242Z(_e7>Z6$Zhs=VeAk1P8 z|3o|PgFk^?GpCk(Iau@MCT)uus9EE_i5|W_9TW;xi1Cg;hSez7t#ZZI6QxlT5JVnT zv7D?Y?w2aBYX&7MM-<)m-MfZTzHNhRP;r$|cwE&jaM|LcfCHh}8Dv^h;%!d5APmaT z74Sf1rmA1Chmj?eVRVETP-j<S<1zHC(qcgJq>-KJ<CA92i!D*hN)Pz5gfi?z_##2g zmdQTWCZxQFv6)`D`^H1%0nChe|D-;8GoP7kvZz>gD`8TM{?=4|rN;Xr?lAhHYd<!Y zr5L?gjZ5@2%L%3BP(n!rxDzuf80r;)Fd#BPME6I00zQj+d_e!6WWWF1KdxL{$%0bM z{U>e&AeS?Z+)g4LzC}=dayZ`uTp-ZO&nQxZk&yOx4kmXOuD*v;G7h<yhqt{XBLWxZ z&rd1`5Y1I109fnm4};v4tv%a*{$6fgAELF-hxd;VTfWY}89hcfZa+>AcCU(eT%BM4 zeO*5vf^_XgSSTVY8sv&Hk$d~h)AgVM_69>byjp$SLiN);42RGEI{TX3JzqyW4QJFd zj#e)fe}j8{e1S-`eSVz>b_Yw}5Zn+Fu8sWMKHN@&SGmL1=4LctCn)#=FF_2A1G?|` z_+cHPm)3dtJ4YHqIWkW^O6&f8AB+miU;iO8AQm#n%_m%wfmWz+mWdPUO#yd+6lTc9 z2qJy|`gbVAN&SlCkx)<z_aBB=3+u%QX*dLGegXFkf6n5@PAyDFf%WeJ$G`+nMMOh< zJ-y!t$IXwx+1Z=$Dd1O0tN2GgDBgeT8I!=8B3CPM)9@XMQ>8s-)H{8Z2U;z-yEwqV zxI8w!{?y<S|MXX5H@XPe`5~kiVW%5kH~s^eQaOt#mEcXA9><Dm+*ChD1W6Uvr4|UB zKXSsoq*U`9%UgTR*KP*~;uJ4F_Xd!HI0^3gn#$Wx#a-;{D0y>k3*$~fc?z#+9-n1I z{j+^<uS`5v+gQhRCC+vC>Rh_b0MR$vMH%`?lUL-U!b+ZN=Srf|Nh3+a--+Q{U{XdL z2=lb>L#u+eVeTc4)(4t*Jehh}0WiY*bU%w!0pUZA=VgltF}h;Hb@!r<gc9KIO@}}M zaA135))`QT?&mJ%KETlOy`Kutpm}A}_fg(<6!Pcl6gcM(Z1VSdJbY%m3eeTnt)<Ea zZdv_O26nf0_8tQJB7ZbpJYMe9c0<$KwRuR+o`&GzG`LgInbZdQ`8{NGB^A|J88W#t zj?P22FnL~#<+Y-a4hEYPC>5d6bUP^H7Fjn`wH+@NYv^15U`$ZvxNlE!*F8>bc8c~c zGG;L?8zUPp8x*}@DuPNM%d;7>18-rcj~JetlV!d!zN$1z82kM14a95hV~&QW|8qF? zy{w%{+WU1HbYHpbRJPugfqk8DUL?$adE$4}=E(jtTx!{()HzFhgR6UEa&+StJDZf- z8oMmeFmu26!C?;Z6prg(ZfMOWS{?hgo}I0!K=Hwytsjy`m}RsHoNy1Bh`o2GCtv7I zhjPB5JYPwZq-xP07vab<ZIOr)m-XSf1n5-Y#S_djpH*75k79mSbTkU({$_H^p7qFS zD|y1GC0-EMx}F1&bc(dNYg!>WWbo%DU&JUxMT#pj6~JIHPZ2P8&b^z;i29Ty@3pql zIN%-43N-Y*y@c5MKJDYqjty6{6B(4AsC9~AIRy9qhiNd4fx$-M{r$k7PxmRF81>Tr z+SogNJ?%Z3jdzH<gdqbF7Q)&f7b6-h7)C6!jg?cb(U3*%m|N?-tCrDb0zJxUw@$`! z)&3HE94ndLy5a%qrU(HG`&#DtxZ4n|F<z9MQCEPGPaIUXd-U}NW@<jCZjgb%R$<De zZq~G?rDW=bANL-VW0xM?*S`$~aLjf4i2l@Oj>J;p0QQ>ZMtv=cE$+K#Inn22o}V#? zP=m9a0ozU=5s>KgJHfw2i|sRw74OMeN(<L~P=oGmJW6lGVgD4H(1Myy4u{+mAM$VP zcFRSWg4v)7TAcHTKo&g**Zz96-Kl!@WHSD_VZY;mUS>uPy;b(|0FNExx0IADn!!=y zTs?%;YBcK#!&cMspn<|j>w^r5jy@v!CX8wOv#st1)1<5{O|T_muxN^J-||9#>LF`u zo7{+Tb%?pzMoBhy$k8>MlC6@nJLcHi+NyFfE7&s#%{z59BDM)Lu4%wiv>#%CUH|4= z(a$K`D5Y^H{xl$4UtiTeaz=9;ShdZN<XSM@-&?GSa|DpZeDQX5J(6Zb^O1m!$6RW{ z%f1bNGx$0Kifz9T_$_!9zH8Qw1^g)92WXX6sM4QFBO+u8UdsN#8zI|UNYHVl*6x=H zHX_~1h={|OiZp>}TyU#wq2u>ZUuK^=o!c1a*0@Z?cRebkPS^n3g5gu!<gY<uLA)f^ zN$q6ygSE6qMi?bVT%0`8&Z*tXv%9yoP3<Q1mWuDnjItr2?X^>bopHPBKA<$~A>Zi9 z(>G{yBz2s4CV;STLp0V*GF!kH7zD|g3}2xzHrJdJTVyRR%S3#?aF!XU+9M~qevXn8 zflwMKcp*N77g2a23#2)_hZSG^6BKr%U-%eU;Y8hn3*!@BgwRT`3PCO&ZznPjEQd>q zpQnyMEjr(!?N%0Gtz<*sc8N9mD+ERYvIEXVgyn{#IHSOnhG^N+fjvj_M|c=S3h{+M z#Dn=5^eAddSb-bDjoD{q?x-cS_-N#1o3L;`^oy0IkXu6G&n$H<zl8OWp5L+Jt*peK zp(^XT-H$i6Qu<P67ML^lGrk-Tm|iUMhQbLg`cF&o+PN>?*B=rJm%%+`_HSx(0EEvB z`o;d2T|(@IuvGA59L#v6=osqGe}a0<+|Px9CeyF+URo{fXwWymc{VQ#cX!MWbjb6^ z>mn$taBP7nlwLO&OU1R&Zh)<a9m{`)=@3!$y9^6wg5rWCS#BtRVAv8bf$}qZ<|uO8 z3w3k0elvnCX+MXvKaU2ZL`BLJ%D@dH1;n|`cs*e$PK3gGOyE-ip5myMX>Ek8QZP7s zvX^w@BFpcLp>|1mMKZ%^Zv$jwB73Fl_>a&O^Mb#oG=WEGm~ibxy2YR>@n2UUgOlrX zIbdXp^vrlEf<806gr8zZt;t36?1YL?q2wn*m2TmT;>}4jjAJ1L(-6(!2C^&2R4n3v zl127h+IEF~B3Ol0&Jm(shG{R}f7jJgk|~#d*+y+qxZdO~8kd9|Q47wz<Jk?1G15T7 zmxGv^xR*wJ6ePq2FX;%pVYSYV-Prjc&7r8_CRXRmBAj!+lLAO^x&TLM9g3#G!i21# zAgw4O<nvTPl4w&LcfOZ#FM#g}l~>0Ug_$F>Op;cnsosb7!LjX-vtti$iQ|}I*{PS) zO6bX;HZ6(qcA*0;!4${d#j=yDOE!7*w%VwO0l>7x?Nl0KbUK;>hv^>ep23`PSgf!( z#p^6YWd}9+G70gM61;a~VUPNB&LSk`eH%6Ba-k{HaXAnkUcHM<ZlyRl(ow<BsM=0Y z3&RMOIL%qzB%sZS8r><%{LYQ}uSU7*sZa@YmzhA&>`IQIbRt?E;rUF~q7N>LO%a=@ z&0Jsw8kCUme-wGTElwA|gP7w$>w&a~ncEigKxVEujOrZNt@?{0-4=b{y*wB0KKesz z<suYXjS={6>YS*D^DnI;J8cs1!U;#W9hinV&gmTu70Bp?>=k}w4rjD^Ghmg<oJ{v@ zKnqHd0@1HxKP@NL?9EC7?e%%!9+teLiLo-D`eA`?TE|GVftDpS&*QaVf?F|q0GW0( z3LZ<Ue2I&_QLc?7_8VSDXPk)nRCNE`tA;G!mt20BgZw;!<<LwBr?wCcTO5n!(?@VH z4ua~SM(vo6v+&EBoscy|0!i}KCc`orv5!eOG2NGfFf-DNx!D^D{66W*geT+(y2Fn6 zSJ8@<)_va)Jy)*M5Tc*#p2$u}ffz}0>mrbjyPV(I<w(f63N!KPT1*&3&jA$cR)Aqy zsH5U@B+xcK60a4Tpd$RhT}ngy*bJVki3okib*qt^{QWmra)sNa85*hsIazV0hK+W+ zqFrn74}jQIN>hbqseiXtWE3t2uq4g!m^lBSTnmauw(uq#iYAni_yFE_NuO<sjv$L~ zbp&QOlR`o{m@eDnrthr0KeEqJMRwv9z9j0P`BdU3D2*9gEvpe1#XA<i?_`Re3T@%t z5dad>tZf;sPCqwc4~o{AK}d)$=o!Ds0zIBefdVcCyUD8t9+8by%w#*Vq)njDO6^C4 z;raJO&Y6r<7lkN{8qu9Nfk9@$0l-s{<jPd`1^LCoV$F>cIx|`Fx6xOI%JeuC)Unpc z%|)|@tXyuRV2Q%sh%O*^n8gBcc8AO5e&fzk?+qFZ1Iq=@`D#}8fnG5WH!~2Id`@0B zt{QbYa;z-cP)|i5{lx=Inq@(hRkQL`*#KP)=aE>%18eL`)0<nUl;}+s&I{sH9H>Lw z!8zWNi_#U>O|yfezmyFpzOsB_ral4U5G-QjM!kJ9m($*QNU25NDB_`96~B0+%(J%& zUlO^!NGTKrbU6+!oYw|d(W(7+n<nQ{9|He&I<R0$DUJB#Uh)0Cw%S6yq#^L3j=BU( zhBO?Rb-yfZVn7)24mm$ac>n$U;^vDXLDG=m)M6+nDi=Zm7#tMJC6Q9PN8Xki4bKZx zHXFjsAIci79W<pu>-F*mh#$n>aE;9`APJNWgCHVB3J|#oiBtRqr+Xk6BTBl~A~FM$ zZSy^bQXlwXCI$<mWt2EUZ6m(yF7m|(!mPsv_)XhJMn@gr*XpIY$71SWavzuyVC-l_ zVqB}zZ3G9^#&swf!tz`()N60&4Jn98*@k5Fm3z%dYy?M<)PFORa>$G4=N$SbXfd%P z%2#oyh*{t0MY(C9W$-#B2rsY7=ccHdyk9+u!bYfit!jYXO|k8@P}&oO>tvK$WT;mi zImvOKR<fMQq=Xz@vYX$Sl#vc^L^}zUw;%<3#j<#~#_GUe1V?`-1H4Y!n*WHNcyf>! zjNkj{r%tJlVGeMaY|Mfw;hL#}&+>O+-+>l{A7{HM4ov(}i0uQ{%95||?7L`1j{1$h zj=u4`53;Z)-x^z)T#m;R`H9(H2SzrjiN^d@s%gZmXLjb%*^A-^;at!D_Z=v7W|hJ} z>?TZUCDLYR-y6w4T=|OEDF`6JmHees7?9qX#*+dgdJp?h+OOImKmbO`T!{8x>A>G2 z%VyJJ+ww@#D@I1OG~s*sG%V;se5D;yI%)L%Af&LIjI9$<ej1zkPT}opnPHxxb{V4` zUeCXykO78f5{T$09ip@W*-q<a$VblqWRFCYPc3J0Zc+;yU0UJv+xTFOxFrG>gM}zU zg-07}_USHBReRuvePxP`9<YyIAcP{#u2Do#WMD(_2)BwbE{thnU)c5)<*~=ZIS>&$ zBQg=rP{veD9a3LUyW*!7ON;q)mPIe+p0WgN9O9FrQz1mBR@l|KMeDxFLo0_JM2(fE z#&hE2WBU<{x1Xu8@v0A{dc;n!mHjJa$e;oxXgQ+S8&~0nMCAxPN~h|l58aR^h1#WB z*H*Fx(S)pc01c*e_z<)0A?w~V>>a#Gp>SSZh%BEX6vc*ZFPjvaHq|yk8z*}<3To^% z8nK@GsiG>2sAzsOW3*tn11-X%`lZ-TtXYLkqM{<zj}j=LB3D$QA0YFiXiSNj??Pgr zyct%$S3%T1738%D!B_1ksE+C<xDQekdxNe>h_GBu-&PQzmESL%x_dQv6gF!-BCB1= z$=mNJHYK3q^%8RU<lNJGdjm$1DnVY8j899IH@$O&&+e(S#ZFTwiBA3{=U`nMSB)|r z%1!l+*j}B)R*s41b%tL*_vg^2$-T85f7K_Ml*lc(il`qjsFqcu4F?$0gcPh*&=KlD z+KJ%Yk)+<NDDUfHktvoYVBCI?CM$DI$om_2qIWf}sR+@;LsYHlLE)S}7>E~=K+#r% z5aW^lLm?qx4-&gS*|tU?2oZ(hPq*@okmc?l238*0-*}G+1|Pt>uK)sI!s+T1(DMWs z^h31S{lxYez@9CC1Y8K-i#uISSsj}K9!<Xk>#lb-JRIq|+tYTorf%)c-`bjdbT@iy z{~zsd`_10kpV~vg`fFhNNPvU?e^2p`MQaw&eG7=;rvohg1WvB5HhmGboaMd$tsQ&C zyav{$eeX^E_=p4h3%)&{a^h-l(!SrKf0#;v8knDo=0JqdfRGE|n1?Hz_n^krWXgY2 ztdEGxMpAxQ>jI^b>pg<Cy(L;`Off3|U|29+SSZk3j^IVwDdpDG*p2duY(EnP#l_X+ z-G++|Z}6I&5?zMyLX&A%7x)g051X2~wNoAbo<JMCKhoNPGEA$?Q#N*5qS9r^_)9(C zq%92>Q6kd@n0pKVRytLPMowi2Y#hDY<ozuAWWvnsCR!@%x{T&8f#@lp|J8os(U>Yd z$}L{XEHXpc6Bhv6p>t5%(w?#gnKEkrJ`gd#<3Ne>)l|yBSE)*!8z-<Q!sanH5pc=n ztkPyP1$#u09D{OZ!e5=88NE5G_gEV}X{lK&J7o@2gjbBNocgyKDeZ@F^)^ZFLF^d3 z6V%JjD>S~pHaxXgH@`XwjRQT4O)Z~_bzqc`F!qra0-7%k(6ggpG!uaD52o5}1A%aY zQW!-n`<DzYN$J1Lf;{c&nc>OA+`JTMPC%_+)57z4$YL0Vf)p&dB*iY>o~INkS?E5E z@Z5M7TOk;3#IoXfDrjSd-s_amsE8cjEyz#OE%BcW{I~K3gx-b)>=Ma9jOB9`K6KRM zhf}T?;{xY@;_14)BKU`vJ=E5A)tPyVJaGZW3$h7f-%H=a)ALF7i~``&@)N0a>RO{T z$BA}Jd5n~~=`y;@wEmk1sWNiyyi&9$V-b*}p`fWsVbG-^bBjMPk=+qchc%rNVYDb0 z<P!hxP!tkrgac30W;)d7fhDw;f9LyTUc-R*t!H+@ziMys&dV&mgUtgzG1ISxCEIDM zU$azNCTC0m!2aNvHDl(x2^bB5@!(tO7dE<9!N32oukd{0<l61P^IMtpnh+7+ZT?B? zJhvQhB_y@r7N?e4@W@VK;vJ)-8-ydcP%CNtxCmm!L&9S9c~)a0AzWexyu+WH%<OK8 z&7JfuMhQH~L8VIQyjMEIG#X7diYg5?1De6fdw9^M#7iUT97MMLJM=iB)c(o5x0yg` zr)OyE`T$})A-RG_dQ%7Cyi@4sF!s{s%9kRW(*9u{TOlFKeT3^=o5cM7_V#e=l>g<L z#v(=R%S4M~;T5%Z=OrJf#%bX&7o@eabi?BHI*dNSNt8i|n+bX{MyE0Ac$TwY)P;i; zeeQx*04YhN?LKuM=8L=|cqBGD(=U_dm?GEeK#gQMnUYw_1}5pc{D%ua+A9{zG(=~P zRFPB49~FMZBpnK|g8aG=!<ld4l(MM?C$qH!+#FQAuGa37n)U&sAwE?-=7yLzb6EW! z3hS^U-66a}UKEH$3v4^0PfUA#NJU62xD3dj5E(lH*a&GH&EoC!YlRJ+IF~I0JOQ_% zLMXP~`=Xp=*}jS$PIL8&SgTtlQri95a&W$QY{nVaN97a3P)B5{Jye`f9T&jXE`pkl z;}*r%DTYC|%#piE;=eJ6tR$(;9K0{;%IHlf9r;GYZd#?W^2MG_%zHll+wFC7<VSP( z7`}4h(2^@`%PpnSvU}Mk+i{6WyV<q$m0~B#JjkSO3%GzS?<M^J82cR0`~5F=kXjil z+p7&yt)rkaV}`Ssa=gQ+T|^zJ6bVx<J|BdS%(fnUH_46*IH-R(h^1$X)M96HX#FdM z>iH+wmrjZV)^Wk8m<#@3bb*?pFNxPn^92je5TZH7@05w2KldeWqzR?mnni`MyyMr3 z3^l)b@Cwlp13&Ma<Vgk1+~hu*hN@vKeA+tjbV}tuq95drzTtJrGv}BeTn9#Wcp?{5 zbFL(5q;VUDo9(@1pc+|@M6=+n16e2Kbc7m96e)UBXzKPE%=Jb*a~m(oU^&AdRKHi< zBp46JjyKVz`h6K?W#O)fIeja6{$|V<>}>oGYe1C0O!@oTdM)mOor+yoYoP1CUQ|hs z_N7lCwqm<aiVE8ot*fk)@QVOY&A0}#jiYc4qO^yg;mpXjP&<n%BfvJ9k)g(Dz|A1h zBKtfT?7K;PlfluMG&EBda~Xbwz^Z1b<tTG(W`S)90Um&YtcTfR2{?w7OqEz#!wlo3 z9JChzD3a8Jz}(z3OY2808~<ua)go71?o~+$nXOPV8W%zv-Cp0)@aX=Fxp&iMr|^5K zMx=ndQ$#|lsw-Ve=bX!s0Ix%@J96<A5zvepXSK^qH1xhgCQ*Iq8^RP?Zu%(Ox!jWZ z?)k&=0mzhi1w-I34;Tc~fZP!1_0j=wTD*Ms^!~QaQwy~cKLiH!d_KXOu7f0rlZwN| z4a=`5$jn2}u#KEOT_Dl6#RvKIACixrC_7D+FH}1+by`hjMXPaIGS8H+W^r<f#HuSe zXNUztEUqk$Gw^c-OyB`J_NS85n)8WaYs0kYIKdX-T|2|Eqx#AtXVpsCQeaE14eJWf z`DKb=`YMH^0vh=oT9N(GhjTNXg?(5y+|n?(`5;;_+r}1&%H3Yc6Q76ESVm8B2h{-x zM8<!!ACG(C1h7)7B9*UZU>twZG8DbW*uqg!T1E{H*pg`W0*&CAeamYo*x5_^f9~8? zv{ED`)QXtIs!hLTGsT2^8qE`*bm?iC1RUT=WreDECYrRRg`6BY1VMMGH$^_f`za1h zaqZBBs#_xTX1fmy0|LO7w)^`?fc?Nj`lu14Y_($a>Fk(T`Jl)2v1;EMkp;J8oP4K= zoa-#o8aS<C5rtz}50m_{jQ{aGkAHNXhB8+7Xfw@5?pl8j6_GnwqIIcyPIH$ryDanr z=4mA)Yuu)FIv4xQk#`$N6Gjnd`52g&fGhoXB*^b<)HLJw$@jlyU7wD^F)I>)i(*4- z4l1J!#c82^@l)LUEHohFE}%UGG+V1Y2EswHmWqf4ly#X}HAm$h(D0<t%PgvH*6@;& z5j+q4RAzG5t^@4wUPmi!A~X7y5bcIpCJV+>5GG0QaKp?{fbc_$?G$BvayHSpt0S*e z=4hiF_^49^Nnf=h6)Y~BxMcH|vkn(*-_D*jF!!Yw+1i!D;CZ<h==)0PRUz!i9|kKB z7O4(c1lvdg#coXcJF%JwXt9RTAcVESMB~th3mCqLv-gRGtha5Kmf9|sNTwIrMzx#^ z$|u0MUw~})TGYI|%stoErd{RbcicCAs+Rj(9BC4;=FBcLvq^k;L`ME_ih4-EGWxFB zs7g9NETh6bpz`MPtY!+Yr%Yivy}Tt1J38w;H({-pABBE;%N5OSYm^@Wt<ONW{w?Z< z^9`#|WWN?L1<HV$eH1A_aE1k`8Orh<@CS6IUZtD34#>`(PMfZ56{5dkU|BcAa<t`4 zx9YX&SiQ0Dbk)1!(^h@8@JYSWN<R7Gkxkn9^s2l=_8Zp_7FiqIkXQQ*xa`1xM~555 z&Z?FQXr|MBcGIbkxz&abZ&yZvEB}v`{qNtq{V&ELUD^Mx?0=Wq|7J9X_pt-M-Tt?+ z^<?Xbw*TE|p#AUW)<$z>|NEuvf7Nw`(!nBov6S5|l`a#1l44{E6Zu89uzmrsj4&+g z<5We1Sx<r#m<-@j`is7du>kycX*y2=VboI-{Tna}ZMr~YBJIO4gi3g=0n$JZ)m&<{ zcvY2p_c#12HsMpodRax8jI1*cBgp~I-p@J!7-HsX)<<dOhlaA&TX_}Tc|VT$HMie^ zvK<K+3}TZphOu<&nX4{(Aobc3KA--6A0`|ZZ_~cg%3nfr1RP(1vQFykLH3@j;GXDG zU3uYMk#$eVvYH&er&dT^CROvdN!BHj&HLl@q-COG>cRGNm5jd8Q8c;=g#2x*9GqVI zvqK6zm()Oh<@JCcjH!hcJ%z^_MJNXDCCHCXJ*go-q%w5ZkkgUhbseEDQ}rbTUom08 zSit|T98g!8en>}bkhHUR5z2)dHN<UUd-&fTkJa2zFbH7uj1qFScZ6Ab{_s0_+ih^H zLN?K5DZXJ`RyO~`9blD`o1tx10dF@u698+~Rurf62rVk}+sFkS#ha90ym=CNWXS9k zLD{H7kz#bg5i!3~Y{c(%`i`3Aa@DO36W>AMGt;Yumpeteai_S(Ta0Rz*O}L>3nKL^ z94Z*(?oBPdfq&zNGXp>c+-lZnKq0IPJE_Ck;f~&v(O?T>ZP{hm{JMhyY;`$)mn}IC z1|geJ>4LHYdYLUQmq3=~m5}dX89sch*0R@TMBxw@^;TAwv%lj{+=$l1m(gp0=iMQ5 z)}7o2t{N*<P4kmD*6}}yz5`Th5)RP$k`tnGPo&}asO2w>P7)7t0I1lr<5lM0g^>MV zY?1K)KK@EjXHA<vE6nw;zfI5^C#Z+Pn(I}n?R$(T!`_f(L*Za7ySuX0mwcVwJbD2w z9;x!zKx4DSQPD$Q7>k~jVQ^8%8q9T`wA9xf9-p0_U+$h<wvBg|q*JgoGYpQqeAlR? z7_zN&<PYK-I<D%LO`>G%qVQcH*5R~XPh)@pnh<%`5$$mhn1B_RNrnGZODp})O8;}K z{-^n*wbK8r^gp-ge{6%b`+0%iq5s)zZf<M+PivF(Kg}nbEB((G)BkW-ykD;U!TNV< ze1xO%DP=W2yC9WPLv_p&6b{3_Op_5}`W?Km{X5h3C=<>vqv;{Yekwf=Hs&$b`~`J9 ztexReNY7e{cr}HJ_taYS0$A-pEtcV6GrEduJ8O>rW<Ei;s5(Er{gwKPhwCa#RO`Pv zT?Kx)pI+i_eZ*a=2;gr%qas3K5p6^ehn`B_UUK=y*GLLS+47duETeI!J0HrrKDtko zKmKc%mkY&YDIwR)3YRGs^%RBK@{;ATMCbbm#<$DE59|8xR8W=zvIaz6JYMnHEBlX? z{Qoy$|M5+8CI7GF|K;+(@in@42)Ntj|K>&mgncFdZ*FXW{J*ie{bVKoe<}GtleYU7 z;s3laL$C?Nup~(^>b-UPj*?2>f%!Q&oht^6<6Nf$J2bnAu7G(5MDQN^#(*R`&+QB& zxlmFCJLNIdnGEW)B%Ds!FPj@NdUlNNR>Fw?Fr$;x%L5R!Q;tH9-Y!WvBX1WSz^ual zwCO0E+KF<>06GLVXwRc)_rZJg32<E8@D6|MFT@}m4pFm$0;^0qg1U_XsWrakEUqej zBgQmh&tUYRMKyo4pgH1&z*GwQGEqc73Vbw_A^$26r^uNY4f3x;;2A}XE<Ab~FLy-* zbsu6flL?A-TM(>ex)pLhjDUa`H?w<2ymGW9jvJ$;HOVMSoJa`t_mb03>)V*+cuRn? z!#!v(8FFthytxXk-~(g=ywzb-Y>DdZXrQiZYBJeZj4lT^p=DcAF=6`27g2}o3-J!f zN=kz+B{P#;a)Pn*BBN|U`)`$U?<p>HMoWT_L%Ww9A&tO0MAy;7Q#<FWGC6tO_2kq; zM5_}$z;D@;6DQ)N>a%x3IVU_2SW0<Y9f>yB)e>`>_AO0GN5f8-62?dm0QMG;ldLYA z9S&Yv)TqEuM1riS4%SrfJv)`D5f%XO97EMq1{A`u>?Cpo;h+6&fB?(TVg`#kn8b0% zZWZY?2agFSx(n~xkLH0R#8UhY8MuXY8KhEx-q*{H#zqDD$V-6joRLU4nOlJ<IJ(bH zey7VIf`zW4G$3aH2zP4g&i=3^8Lq+=hbskL(WKd5hag*JC{Vbas#9A*^tJ-nP=P>f z1?c%TgR-Ok<hmx8)6DsZSnxr^<73XVoT|RVwSjqQ?{0T|a$D@kzxU7}&XaIwSe9AB z$nDjO(3x#odA$CZX7o73+;ERSX6#xh^Doz=b2vMEx3mR~9XnrTq0JIuPG0NRu{1Nv z5wW~PXBofC>M1kZk22BOZdz`M&)~hP39gPwOQ*l#25`spK39yk{CSae29&Xebbv7& zs^nt;pwj1va-xy*HWIiy;^8Rzk1feKw%Bzp49;CgLoQN+b*?OJ@UBLSwAb=kwW~pw zJAfp^BDdKRmgRYn&g#K%h(qm<0*v2=9?J4)0{(K2IjaPA$;T7BjN`ZI)VTg5xtK7G z1d?7s$1>v#SGER*kM2;**5NUnScjIP52|H(UfDYc@e&)U3@23=YPsdGK!*T;8q&PT zE+E$e^9&ZO#L{*P+Rik5dtju(<L6;joobIT%-u~O(<Nhiy&C3u0y-`hz|Wgd&QfY% zfri|bhrnZr)E@?zsLYxdlOjg7JZWF6*_@vYW~lG>^b^qWT$n}u=)?omZzZ|4-e@W- z-z{OocW1L;3^21<ao_NY7>tahEDUR5OOPl*F{LBvFO@v`B}z${4h&A4L7)+%>8VMZ zP%5eqW&-i-@;pywp{HN=IfE}s;_iP^%Grthac|(a6<li8p#x1Rq-)(atWPu|br9Y@ zk_|HwbZymxu!?MYL`$Gp!C-YcwXPBnD9pK_pj^}OAK}HplZ~c~GX{mj0htc$h&OLb z#l$MtD-tPtw4aAWnZbE5e~jc*Df3xY#s-z;BYdOt!}Lmcg+#S%_lNSKELs?$@z+f| zH+9+9(y8A${beA4AI|($C@x)enK*S4=cCZq9XdChPx_LLolge03Q_FV-BH;lwa+$_ z*W(yyz=Y{U8^K;5h6%b7DC|_zHVk{%pV7{P|H++~ON{O?oqEU1zxMvpzpSfaipPxm zpzf!2j`YCe`xQgDWs4UN;W(UxV?VlY$C>tJQ`R;GPIEx2F+ja=Qiuasj28<_WR~q7 zJOPFb<6bCanB0KHXEXB*CIUji86RcENvrPiYW5-fFn;7->_TD8tYUqHJ}ZgkM{XeC zkYrz_GHw<vA_dP{I+jwt?SuCtf1aX8k+nzd*j%h?<es<}CqM;n&DHJ6>i&0i|ND1# z|GTlVy8m6>|1Q7(b;5Oi8vF0f4a@(36Z1cAwpRZCU+(^wf)wA^{+kLvPWf&#L^deZ z2H@zPjJhcF_VvUC$~KAx#{~9QoSVewi!8blQ@#G3Ir8i1v|q%yo0jBL8FzD#T1JV# zDhK{Q@{pEUdVeb4d!Bi*=RFPK)BD|1v%kjczQBHcxySvlcB@~Rsjtk`Z#Pr7kZ)zI z{%MWXEztgjOxCRttPIyz^8ZTy|9g@Dw_Dqrjjx-l{NF42f4TgRETT@&bWaQLJLLcE zjZKvQn~jYpo6YU*2Fm{pD7KRSzmWX@9E2H@a%(;dqi_~V^?xW6U!kzQd#H1^sg&Q@ z6vXOI&xa<+@Rr+Uvn7m9gE_R=92zf)DTZGu9-?5IiVAd~(jeEcH%<dw!<RZ^pG*zR z$+}Z1Dxm-(NC0sZ39ga=Lq3-%Q!3zeFv4s_*8!!uK;v%=F*w0aQO35~EA1Y3F3)!l zPYzFBcAlSJUYLN<SJN3327XvP5~tH(Vhvx0kDj3M`84d;{g8|8syCUE0Gs(BsNV#= zJIeKSk1&lfEY}{ch#XHGUxCC8JRPPOA8@gk^isSG#?VZrwRn65Yb_^0zwP&CZq}#X zVg}q3taZZQp2PD#>Il{^!*`eQJ1&K}-FtETPB(FkNh59eye%PMFAjFk_g-bdirLcv zv~^qrIaPS`^6XOdFln?Iy&u*Y8?vjwZ*9mLsL`V=vEC0^tHed8K{Abk_kg*&_?dpC z8hwi>gy}iPAaV=J_Xw+mNHe8G$&<7M=(2x!d3buVdz8f(S`2QzjD~yiXBy2Dyk{>D z=KXj0KYA}A&PC+TqtXig<rLmd6_j4evFLH|{O3u8MQ=bv#J|(UY!pxGQch1LRE`eG znIgsMsf2@8QgYM`RE(6rB=sQu-6OL#60WHSl&)zr`V$)g6eTHCQ`tSe)>~0#OyJg3 z>r&>u!&D!2XJ$`x(lww~de7@oAsuq2Gxs|YX840OG^6t9RmHgy^(Tu;kF-Lj4qck_ zyDSx{I&fy(`gBmvp!Z)FuvK#R&j@OZu2_J!j*(9S>gDGW4&|=^*ahSJY*5b<JsZI% zi%)~v3+fEn1T=d!ldJwkVU6Qrc*E!(2wM!*NxaWajzWmvW-u9EWP$vE^-(>kb-~1; z$jnp5&!UyF)1T5`odXqHq~xR--s|(O!YOR4c-R(?6|sI?6OS3I@t1`Tk0}Gz<N1VE z<#9Fv<*i3sUYk}{CCetQ;Vo3VpaCxDR$oqwibtRdJ1Kh0a*AbZP31awkgt{L<<R2G zT}nz{97VK}RFE(w35YFU?)ip}emII`L02189kY{M#pJapZ>hqB+jM$Vsbft_84cEU z4)tqx;u(TnJF^#RPCFVn?c5IGf*)6c{!0J1(*NDV{-?RwSn2;(`oE?6KPzV6gZBS& z{a<TqyR~8BKT`gWjmE|*{^J+Z|DDZ~pa!g%KMro<<Xv5*%ryZTQQH@!fmZLafPq#J zoV%P8b8xz2nY@5_Ffyi~yow7k^WOy}x@#0?q=Nvibcz`j$rDyGglSEf`1|IaPPN|k zr_*jJ?)?<>Wm<K~SOg)N6LI^x9&$b@jf8v;OQi$f%8afoo^BF<nsVk<<dj1g6LRzF znvi*2e@3G?Tt6-K&|d+Vpod3NNEhj?Q50&Vq^#*wj5TpNpGJYQZE}?Fs<O?<*DP^M z){(crq^R;|vCgn<XRNCU`8lvIi)DRvhns6aSFvt+KZ6hKnSaI66{0z5>OPC7D+g5w z{}gnz=|I+CAuAG{s4Bu|=lMP$(;N+-q;lZ(`4K9>5ov(AX7^Ul@%cwoPd!UAAs=|% zZB7hWFD~dI1)HVFkyp^Izo;U}j=H?fkDHeg62ovZV1tW-`Rfd!h^v@Av4*Jo_N@lW zQ5?S$^C^MkDo|-VGqdh32w-mFP~53{pB5T{{es94WW4h$qcGez(gLhXHp)U3eONRY zGXVyYAfk{ror0o;mPk~$l$#wdTQ2rO$+3vB95x+`incH-nORe-H1*tGy86=T(@7ue ziks&=I*tNN;UdUPgi?`eOkwj<lJwE16Ypd&`DHLbiPZA&T$03^gH7lx)R-$9pqc`~ z;#9S600!fkd2E|0nusufAz^Pm3pfS{r+1aNU7m5K#3c|Fbk4!hGGjbBurO!yhPQaq zWaF{mO~{TYiU%PV%f>#K3KYh2j5TV0W$k4M4>`Qo+1x3xhg!j6M?{{J3aDX9bAQqS z%dwiXYv2iNKjY!MNIia)arlzucuHy)TBYAu4ZW=ionpPb#F^2wx74@X6e%s)Ik#oG z{{{QSHcDz^-d?#mbh_DW>;x)_xQ-#4dMb}FyZx)Y^O;=ppNu>z7hE~<Oj6vpUx;u% zI7E#D<I=6}cj0hpSen9sG{vT%5<bc)miDNPPV)O_V1BgG<>z60kWOVRG))+Q?CFsU z36NunUPy{3X*`9sve7rRBV%bS#%4PaUYhKPVfmT(VD<Cy$H|YAGLbne#0~`$arKJE zyl_~4WCxX@2CR=Cbax-^*PWACbk#t+)-VZ;yC!GL$FA4Ows{$gX*``{P<#%?p`!HE zlvo0Uz%&o@{IQJxfg_54bcNj<?0jifk@n*$(Nui`VKzjPXUHMcuGL*~F8)}y2LEH( zIwIu&s$EY_N8JtFYJ=+rk@)p2#xjzr`3Vw%xLP=wz0L3z&vC5MIRbbJprq?gfFV4g zaX_w4TR5h<RSLo(O^{oS1|It9yx$K}5FR%ho9gn1DNt$+8<#>V;SE1aT*2wd(GP^U z6xC*y2GLN4b~ABtN*o|6yuu4QDJv+U6dt!4jSTZ(n8}?xgqEty0NhSH)g~&Fu;oN| zD-!@@YZfoDQz$A_i@6S$q^jPmNKj6fR$M4TT4xB%JrogjW%8Y+>}Dvp@=O(YS;NJb z9X*UsvxAZuZjFP8ao{kQugZMUVwoFB%(Uc$2E%F@^0$nXTU6X3;8iu%Pk&??ll9MX zXcgJC8)qu}I4YnFW^7VQpH4m17JD{<piD1&ej0Qzfuz2`a!O^xf4Gg<+>otjk(a)z z?R+ch3vxf0J`*FX1@HYa5J0aVkIN3*QJ}M_Wc;*toMD+uGo`YDu6E!|RNa1b%>7Mq z^?gVEsOjV4lcSF{g3pLQInRWGQ|(uuV0R#+HB%D+&DE9sdRCu~pB+AuvN6woIfJhc zHe$sr8kkBUA_FHQPy97V1-FoPm#XVoDc0X<_d`zVEK5hIyz3EtC8FOhJRh=01I!c8 z;;gG2HDjLz?ImYKftwxGWhg;4is0cE_?Yz=`_y!*&>e{2yTdL!1%$?R^Fe97V!x?= zHbV5=b+sJ?eGt$;gZ>#Mg3kHr>&t`A#p@R@4*zg)(H0iV3p_e*AJ+jdlK?d9rq$WK zxH!1%9Pgh0{@}d0Ii^cqKTVaLsrQrlIh|aY*Him<U>>f*q5hp-oA+Tq*1vD!;m~<# zsV536sUMOciv2--WW8G-`q$7D#_OzFVHN!p2&`guZRNDFB(n^nFz6?GHnXCIsE>K& zg30d03A4&MH1E?JskMPlur5BG4~OCVDs{@gsnh&=tDcv6;jXDe$&s=$He0pNc8uMr z^{2o4ut5eS^pnI3;!8S$<EY*blm0xMQM5mH4PIhgL`M|LVTxWWiHPMKzW<XqlAdFd zBtt05SfnU_he^<%MGMseN1XT2Gku!T?GzAk>7Cm~X|sTYl7FuSa_6Jtvb(I1^3!e8 ztw#|Nw(f)qaGp+#+t9Rn%T0*9Jt{QIyse(PV&uc1$aJup=aa2V1Dg+idr$sZkJxm+ zV;PR|{jbB9=iYd|DDJ<r4gPYzs+j-)n~e?eB2IcN-`8{I;R25X5?CWNvK%0i`J^jg z<dZ1i**YR>m>g!1PzxGUnr|6enkK<DUVYCe{(J@-2*mpVZgu1sRcOUbyF}FDK@jQI za(xfW#>XcZw8aOrYH!-jM&s?r+-P4=s}y7cuP=R$L6-)BEk%`=JK4G$%WNtDuZ!_& zLy<zJblYyS-IX&X&6fJ`(R})tM<9x|D2)nhuJNG5eHuLrGnkUm{0G3lvQ$8>mrE`q zdZ(UcDR{CV+FVX|%BYVzfz^D0RtSKfMLL^13Da^=-U3bwq;y`)#u4jcCQ!J8!w>r% zd`lWbBrTuZY5%_d;P%6k;14wXJ3~K|G65H0!j^D=R_ec;{#ebvDgU9)6taHlUzL$S zmM5_vmhZc*T8&2Ww!&%NXIo*p<-1D$%5AN}tLWR&VXgL;Q6pz=-*AxfvK9v_UR@p^ z37xr?ucoEj475F)k)4y`MMxL_`uymYXyzWx{1&Sjh7U~=i$2_@;V*3+kyi=pU@4!> zXri5`1*$V+524TVB=Fyr9-x9Y5cn(C_72P6g~5%R>p}aE@Qv}qH7uR`>sUI!K+B?s z_E6<X=XUi;rC^ad_sa0GB+JJVT}w_Kf-#o0`qy$~kmGV0+F3ZG%abyRExRVLh}}(D z>rvVd*04y&2DuAw$-#1;dyzan$?0w~<f`&(PVo;*7uQ@|+@<$gni9lS#1)Q)ifB`s zwkXIRl3{x^GVkbLxgb^&Id;s?Ea$O2aez&bR{kF=|Bt_z|HtOW=F0zL<^QqV|HI*G zKSli4*2WVn|L68ri{ig-w^sfiU&{aE!jgdG(yHuYD&7klBo1P<UrFW@@lXD>e?jN3 zS1KKn@h)q>RQe~3|Bpf@$zIVyq#!m$d|M@EKKf>0td5t7KZUdTqCX18z85D~f^vHv z?PFqs>+niyomBW!Z9&ES4ojNBK=`S2ETJi+aVAI%X{|`qLzZ1>(R?wQkNt_biRaM( zGl9nN3B;udW^I@yfodNGKb3<~r1J!0o4_=$S@WmUYaZ{NJ=`CJbP#@umUx3G?6Dvy zzx|ZP6ZJa@irhwuJVr87xJr7~8FMa(3d;Jo_;^dX*yr_v>GsfcEgp(v*$~c|po}01 zCX`tf5k)PH)b76`Jv|8GkHo8HO+11>E&Kz2H<0yA{3~2~w8M)0$-6q)|D^$bm<0pL z+;;1tH;<xV)@6s{n&>`b-RU3a@hs>vVuTZ_+{KKlT@O_P?39E`I+g`f5e35;g@R4{ z{uCDupnx%1@y0?AhVW7)7(!e|vGMd0fH8zo7zjXxG)TS`A%;QrF|u*kBPLn=G{^K^ z1QeAn={iWznhS99CXoAQimjnXK2$})D46sYGLcuHRStBOl)Vc;Egvml&cj2BgAt+o z4i)k^CtuY|LH3x@7ioVI&u4|Uz8VsRU&9Icl)HH-5!Z&%91aRyxsr)$ti^HFxWhO9 z6o;6~Y)6#wdJ!HfQ#Ejc$&~Nz)DmGs>U+*0oZHG9gTs843_2`7oj&`}VVtROh3dzr z>(gf$Sy6ZCVUk@8*P!RykAV0PEQ+Q&i6?-eex%@K!$7`rM`(?%{B(UDWk<3U?rIik z!G0zq9~1~J!s0RZSFDUDSR@HN*yfd_+^xL%x81kDt#(1?Ov+DjKRx@g`E;Frz`JGj zeq8%;4XUm|Rs6}dVI=Y7it5XsZVM7|Q<Gf=5Fgi?5Y<X5#D>A}(M#mIXS0T4kxXi& zEJnJT3TyrD$Td3Rc~YbgnCZW*Jo?bAZGWu(nEtlntyTXEG^Y(SDW*oBWGw8DvIBo7 zm63Oq#PeyTnL&9MuSXxK&PRjZs$Q$Aw+x`VE?2&5_Ti9b=lGXB6S+K8zifi;;0;wb z!^i)7(`vu92XB?T&+zTFdsAO~3+twq>>-m-ccw+#H@AiJJJ{XDxwJxPx?%4pYoz5I zg5^OMg$88U6oLuf-3L5{6DnLWLk?xfJgU-i*yWm0N7auLN$6o3CK%1FYNmVM4%A$g zsAY=wwwBT0sS3ApK}&B3h!xbVF>sfKk#DR~Un=AAUckwt$r1w2y-MI+d7``yFTyEa z<(I8k`vp_vxGOsIIIGQw4RX|D-(uSN%qfD|#sf?3B`Rah(GWYWSP;70z}q8hC>Bt6 zfqQ{Nt}YGWS^JFK;5=oPm@F(U{@p9(m1J%4L8<)cBFEN*!i$f~j6^VYBQS&kFNm^# z-~{gM^_@v0fNI!f=in?U&?Q^SdZ`w!7U=39&|ZP*wro-@Md8Im*4584#xr2#lD4i` z1?h$&@`7U7P_wOA^Umw6<yMD9?I4ZGTsJ5ePJ<=+TL$vMSbE8D=V(oJS7&b>iTwzN z^_b&~?qJ|Uj4@h%Y~5fu{<yXqkuy0>Tpt5*{Q%8=eD)Ni#UvQ+ls`<RQ^K<kJZ7M_ z{xhPuk0p>`xbr@_f_HE=-OGaCk@)$3hWD;Yub*o1*Sdf$|4v=cejoJgwW#H89tu}d zUOn_;KN&c84!p^1t8d5GqO?Tcem~5%s$0R-_c%rrnJ+w_r^w-@`6(G|4TbuysZJ+j zaFCO2RW+$>cas0v4P*>{Kq4S<kFXe*#|O!f)E9~0M;C3aG9bE-#5;tez}A6~0Fk{f zqT#?f`Hmdh43HHgi`mjY8mms%h6D{w*0rUHF67+04}r=({Ra@bFMl{YAYH<<(o>ov z$kbOm<zQ0A7lA)`M%A8@_N6~U`E|Baetr3({&m^@M9Cn_*I{sj`h~L22wA=f2eZ-6 zAh-_uL7g7Z7b~2FepH7&8U;H|uTjvHjUlEr$HT9n78_7l6)2s24M+`ITtNk{L7+{7 zXs7H)81NL3tSpKWzN@XP7vy7^4~8A|F|H4j5D+R_2*;dGcS8e%6LJcY{9>mZU$tpt zTEGc<Xw~IR#4S&Ef!6%##mD6p9tt+6GVX7yQsFLFbEAPgljC{1&X4jN_a*X~5u(9w zQ8xvRe89inU_PFvl?>HG{J?mDJFO~Tq=Fns4eI7+3+&6W#ryC9)_5|j5B+f%E!v`v z-3Ik^0ld<<CZ6Nk9sB(YdVUe3gXQB3pe%uSefSu}OMjBq(;x|l-)8ymvHza&wk^JH zG^X#7K}xQ|Nn138KcB_l!qyuM$O*c&iJy_bt&f86YBXz$rnmjA`1mnn3xvb%QU2*V z;Oi_NL&52Lk;YLt5RZZe{ztcKifo(S^-J#4>H*FoF^{kZ<e=*WtTwV;fi+TSeGsP8 z$OljjqX1gC@~5f?d{M{9Hf@S;lWX0_#&Mt22SGn(m9OfdA4hT07LOW@?d^U)SJjh8 zE4M)_b|WFxi=%;Ezu{Ci(whZ4)XlZUhJl>wRY8smG+Q_;)$-QXmeVroD5y=p{|<%T z$p8usx9~sq(n2Q$Y1uUz|IJhC+-c48!}>&x(rNK){EyWl!}^Yy6lS267%+=rfi`Gv z1jsb}6D)MY`(`T`J7XHg@r-fKuDMCLtRO|NoFVa>99EW!5{NTox3{;mL$OAJ+8o-q zPuKZed5RlX(jwj#W=}sIH4SZn-{!;gnM2I*_>|47Hu#YcH3|KC<oA%!AET1rNET(Q zNf5g~l%-^;IXRSt;e%`&UTdNb4VlUxG<RT`H$F{eoF&OmN}RCzlv7c<t`o!<WQTVT zW$gI2R(@%PvXLokXzQ!5F!0btJ-a_~I1iPlO%Y$t1vUUVvhSl+Fe;T*iZY+XvVXd; zBeIGYsBC8W4vse*(KIsw1s~@nu(O8cwa(3F)&nxWB={{qM2RoHy>-WR<(d7Y8S6V5 zu*{L4Sr5h44L(S8=0#R0!g#?CyyG0KJ+zkQ8f1T5k!Ad#U2l(d1#qzSQU14Y+Hf%! zLeECY1k-R@mr3L59I~Cvex4O2ki(gJ)*ey=f4a__^C{ihKBLPiSKUI4RR<tG#oz^% zoPH$d)AzPmVWMuI;AD(|6CsP5!Mu;Lv2@rrk2_;2y(?6w#8j6o6$RSG*Wq02!wi#! zxiKUy2jaM7OjLXw=bn;<eq_`4Pet%P=+9?-^+%mc)yAA1&T(XqVc9P9oe%0h`tPvJ zAP!QQ=pObD-E2x9eyQn5QgJhi#f=ZgV2H&qtv7n|%Mk>MNhiZQREy+c;HoNqsmNYv zV^%e4fV&kJRszR-9~rMgdj|}Zd}&iCrQCRs)}q*lP^%m?Z~3cb=?fq)C;I$2hyv2N z<wa^fX-rAG$jDF6`~-V_bC*e@EyI((V!2u4^q$_IMdCYEeT=L<M#4t1vV5og-1J^f zqaR%@xw()7vY<b`b!`z*%%HGJN>ikcWy8xnb`O|oPBDZh%~DlRu^x!eqsLY!b#Yf4 zx!G5x_S|YFKj-RSxfD)qefaPdww8YN@uMs3efWxg!268A_fUD-QeE6fn$Gkg5Bjnw zPQ6#i9eh5CToK=g3*{LSYh>&D$j?kN?nlV(PzY+uWz9u?aW{U!kYzb0Ef!@_A0DjA zD<j-|^qF8;9ZT;{7Uj~%CCY$@=^C6f;Vw-BAiVS>{z~=^Z~7^1j3OyUF&GvDHwdo< z$vrz|BTGsx!d-d=N1<V9D6(<{%1V0WTyaT>OxbnI^YTU*A$h|V9E#agSvud+sPzn^ zHe$Rv6dK_1fl`B^4$p3r5AMg}J5=C;AAX5=aQ-0aKmp>6nBZa{e8?PkAF~1m;Et9* z<1Aw0ijoPwq0(8Y1Cf=urmrkz0KDX;(#%^aPbOdKjdqJLu(JPN*?&9vKbx)1#y6|@ z|110N<@Vpxg@>o~;Gz5fmi(Wz=P~~$pkQP33EF?RHa1uB|5yG$EBgQC{ePZ(y`ujs z`oEO^XVXdC#{=kg`rq8#YPGcg&l98ttxfo`qW@pY|L3K=4iHv&OtLd%!DF6KR92Z9 zc^ZRA83y;y0DV=^I)*V$sgKeSFWRp#HbyWYwMr640#*OnG|@t*i8eW+3lc<EZ%+X2 zc*@Yto)e){Uu*2CscTm#Yxu@ViUL3wi~J6%<2oHnqaH-VntT84!~&r>V$vwMW?Ngv zHzvd2t);A~FDXZNBb`A&b^<ya28L3WAseisup8oWC!yf|rmXe`$=4W!sf>f9LT}tv z%d)&KTh@1ntjNTKDi);s_A+?pa@Mu9T>{(Z_{xd0MD}?7IEv)euFi(K6!N?H!pd4p ziOf}6-6hqXCE*5c%@pgl;Vc(j9141%+zJ5zWB^-$HdGXjL)5WlEWMpI+#TqC`GcSj zxH08@n^QTzoM)7v05iGEPaGSClSih7ONmIIk9z}1kbCD=$p9bkjNCUx#cjy$<QKrL zV!;*)TThu{76`GN{Roqnman>a7HCi<_lm1!u3xi(d)3{mo14iB)+?>0m4cQYm)Niu z5p`w9i1h~;<h*Emxm(K}QhrYsg%obH)qzZaWC!%k1{8)p3csji%puk-mE~O~;Q5JZ z065NY=9aGf$est{aqi}{W*2^GU(pxcyt~EkxVyK?y7l&hp+Ar0(Yg?I#$wuI&<Lg) z8|VveyXI@1DXlHm><>h9+G4$+OPTV6Q`j3Um3c^VTRR-e<<22_+r1%^@nP;PtQW?3 zu<XmiZH#Y&)``_pVac+(66V48ZPGXt=``qv|9^Ymy4*IBr28LFfkT}MOKM(pwcVPL zdu&<m){JdwEzS6J*a{LPAqp#!-~gax?({^QU*`dKA7=mWqwJHM{4%QwRUjx)mhIk| z0V8aYKvkhom%LTxmlsjkFZA0cr-gRIPZ`?%a8YA2+fX$3uk$tk#;1el=K1rSg(Va7 zRJcJF`f&>mnA00)q(01_;;#7nOMl8vfvwJ;>CV3dTRbpqvAo(tA1fIId7Kmn7IqAb zPILr4Vi?1;c}u_1U7`~s4V0Mrvv`^q%EnS32icUj!7(b)*p&#<FcV=ESqvv(!uebv z+m$p?cFo?0Kc1Yuh_kX%`7&>PPQ$@CyG-Iq)N2IMS7`oV7?3Q`cprAZM&k!xXH0&K z<H0a&9P-Wy`(NP+uYz7kLiN?x>HqO)5Dla5S8V$$H2h+gg{KqJ^^%7-eqM~3SSbqJ zEl1eCmBJQf_g{;?nm0JjRfYro7B3Ll@U`hHyzrEh8j`fQBobs~I=EcW_oK#y*fu;; z3m6*geMfW=5=oYR7HvGZ3^JmR4O}ZL`~1Q5Yr!^sNW&*#LgMD9D4TtS#*b;dWtDsp z0<&;Cm8hR$N|~lphGz+eH^D5`kj87JJIhvUf33ZBX1$2oUWc+kzs{yQ)$;ee(#|;0 zYQV}XLupW=J)6^@-#9Wm>*C0sd>t;mp;i>vqb}6_7bL>)moV!!NpWDGSy5NkKXbi6 zvbGEbMQPeLF8o@H;6VEK4xRWK(_V6Iz2yBrb3gJ%)8W`kIrfu~O`W~aTRfibSU%(} zv9RUALf2nvZ|nJTpZ$!BntB8&RF-X^=$UE{*||5j6v4?ZrbCR#Rq6&;e5;Wn68%a$ zFTHep8tY&3F|X`*<5_wA`b}C#gom=NTY<&%)g8AgXgDJxJJCe4sf~gx-J7d3H(@Kj zl?lq^W^1_d9VV7!;Xo7`veO(ja_f!u|GcAD)YhAWlSaTvSR{`_D&F?PH1;ou?p;D< zYfQvzzehut&Nq>0S2q7T3Jhk~cW7E7YJdvcpTtp#XtQvI&H-BRVqB}v|Eu%=zf=FO zt(|Qe|LXj|I{#mI{;yg2eH;MpIRD?;*xh3PudVIvjmJ+maQ^>fd%HUS|K{iaa~TP( zJjl#61<!rilYcnCBXLZRRm?%*DXARMn|AXo1gtC}3U)Y*AP&(ZqBudL5Q{DtJqehJ z(O3!1_K|;|9sz=uXGD<S_W;low*V!+9*zwzI_Hg;kSrl0nvbO4Lpi-tIhyqV-peas z821X9qUiY<jqaYCykh>e{xTR3LX5|J$=XdAUJY%5UJs&G_F@<Z>;<sV++Fr?J}^3q z;OO6WCeLqX&I02L125&4(r^13kXH09y3j!jm^^>=XZkeWylK3ASvcvo-v1{YOv}pP z#9tc6O3Jt=?D<HX=!KPp!+>KNY1zh{z)WzhR*4WcHk%u3ix0Yo4B$ln7cR?N;g<SF z0={01&2fCQ%BXx7__<p9&CiYBj2ge`TW4Q#5^Y`)=g{VdTgYsWee-Jh>dRuzw}^uC z5RvxF90*vc${j)D@PFRCR?34l$#ciC_@Jc3v?>rWmFUW>lF|o$VlbY9u7;?JWcX}O zrI5IexcBU@de9N5N52=8lrh((<riwG>yAuszOMMkV;I9=1IY&-KzV?A1rja@5W<2@ zrW0izDNa_Dnquxy(M#tipWM~Fmg;SOfjVs6)yJQOo|@TTx}SNC<$I~?s6Lu4)ZDy4 z9Fo3k_t9#k#-TOI(78XSKT!n@2*{*e<uzAr=Ls0=z6*-S>zZkq>jH6vM)L77UJpzd z_{18+WH7CyXNDwjM5Q#?@QDO~#*9Kky&6EqU<xt{l35-LowhE*07`mliap))PuXz? z1@kac+<LO-+7!%<T_V#t9V&+x#BiMGcX6`Y%GmHd{d0jgg?U|xQ}2cuF^(~HV1oyT z-rE_{6*CChWPBM7E<*)#tFxr-GkDb;N--K!tsGp2DsulSoZZAUY&u7$O6D}UG!x%8 zMTlC|%s}Hve#H69{2Gi`2$<zqa_V61TxIp?N7K=QhLVuOYpF&+yl_ThN{SyCEBxi= zq!}2$%i9RL@syi@or-J6(n>Ii@Q1b{9JJEfxo1*%wqY?&RARX%|5(j49U_hB)r}qu zRhGx;M)L2J4a|JrMp~N+1nurN7mZR`t5271wRF(Rntb9|Q)uNoBtYn2+X#JkP=Pr& zD4_w;iX}R_v;h941;k0UyzBmDOmu5jrwtzAkBC+D?0B4A;>#=y`2IMgHTd=R=|S-g zgx@;vddKQop;m)ogN0-EyvRw>-P2jvctetv@Hf#d>L2|5e14v5JbtyjCxhuQNF2wl zWjb-&rY(D_l7jVP=V|RyZ|-htz1Ig*QhQ3DsuqWNtV*zOzwtJ-g&_%h{FPL(5qE`l z)^*UEl|Efoqze_84@3cPx0sT90dlV6aVVG6Q3&L_Xx>}c)}9Iuz;33#+uVik@NB$I zUDcXuIV`VwL#QMZd-J)?v>nV#3k`WW_r-!kt{JF#mt1wL%qiC$ti038DL4Ei=SbXd zH6C~QP1?g&>NsgXljg$tnY+L0PBRj$b!4Njv(J2CLgo--i)gWnuwq@=_w*{7_y&KN zy5%MsSUOc*u}OJFP7n@f2h~I|$*c5C?or<um4EH7C+Mt&_P$sxD$Dx?R8|*|)mB~i z7YWD$*;GJr$(4xxTe#|6)itO0QSOOpXN_}?j8!>vXzZ^1x#rZlom<SbdkPaxca{tA zt4h}NFQOz>>85p4DHUENF=KxijJo~65BL1gXeo6c&VorA?jtfH_u^!rYEoXkGIjLP z?|#4~1@pCE1GWl1t``IULF2ak@a$3DszLJx?ThM-Q^E4uYqf4}ZkpQW1w0Q0?O|-G zEfUshb~^=MT_>UA+*n##mKbD|!fyd1+lrXpNcJ^W&8Xi-J1f=9DqHzK;^%+F`QP@= z{Q2Kjb^iBF&i|g;@xR*}J5RQon_HVtA8$UXP64a)zv8WCI2bfYhKO7D-2YE@ckjS| z*xK0L*?6+OxoPkpcB}Kh%KxLH|KH00!_fcA|D&S+chdipKmOP_di&~l$^Cyz{@2~z zttSQgzrC|t;s1P-&l_dkYW!LB+&zD*x#PVJMx;QOMZ9`eIe3blPDeQZQjzLm(mFjn z<~*vwSOX_$4D)o)H(sT6-@@giAC^t3&M*^#YR=hT1unh8pxFj8U2=a0V|L-}CQ*M7 zHvRW;awU;`{;Oe-Ucoq%X3tNKr1ZZ`16UM--c`s!^vVx(^SiaC_k5aN#z})Z5e@hJ zlW5`}Nd&Kd!V$dw>(>YV?`V;zz+Q>#{rv#t5#9UD17a{z$Ak}R<#p5x$0=gk;AkQv z{pRS*J4xbyr2%RD>D}x6AhLc($gx|?F@EP&2Q*yME{d15(kfd6D+vh;qtI>rT{wwp z7UN|0kfz->UrYyx_@Mbp9@1zlO4DgrX!~Rs!%>8;S)<6;npD~QqdKvYT~L=hb+lFw zqWY*esXH#vb+fQ1!|5Oz*DvGvs!j{JkuPLf@C_7F%e|h4as4LjHgt41wT+x0Y5juM zZ7_-If5DRV4&ac4;O2y85y=~4&K1Y!3e(iz+w*t*241B<<wv#XMt2xG^<E{kr|Ffh zP#i1YxeHitgi!j=r~L>nRa{CQ1z2^v?6Jmn^#$A&MUPLZ37yW??J#v~K+hhb!s}o> zn8Nf+Rn(54Z`=1R-+X%S8sFc$#^%QTt8CuC%9c~*3=zIO_RdLFX%U8EABP#fzkmO} z_0!qe30IwsgAo-uP`3Tj%BS%~#y<7-dfLMYLpKT7exG;r4Lka|i{MNg>Gt?r*!SKk zc-e;3+4G<6W13#(aJ3E9p9U)I`3|JCA$zYP<hgl$ba43g^e}JqC9+iVPDHcdJ15HP z5W&Amfc!T^?~4`q;<J6`RKN8@lw{uozFwPeLpI%9D{}eS{sv93+m76+6>C7G7=~FE zqR#f?(kjJ=%T6ye#25L&-`kDw<@qLv3@$qYRJ6AIdzO{H<sHk4FL)C!T6~XwcwMYc z)ICh8{*&U1P}y2};YKgMezw1}Ooi@{cnpow_A-TONUy@D&-NcLQ+PC+%$@<3eTh!s zG=fKHiNe_p2^vej9kawyfD@^(VN%?uC97h=>z1yd(y|LzP+93)R!~`SFzHVyy7lC) zq6-!q7gf}8&mSt111vJnTPc@zz4dh^*!nI17SXn@60^eh(UwW`QiwNduCIIEhyV5A zWOj0-50=hXwe%5<2F>&`3Wxo)8O5z`K=oUyl&EBl?r<75)9b-nUTZ>xm`{}^BHffr zKx^_?Cg((#zq{k9B1|<<vh0~S(Na<-o(u{;jDx;<48QJn^OOHy|H;zz9na$aQt{tx zZT#1N(toH@_E3~-DhUn3A3sa+4VIDbc#fWLD%lt$VK`RpD`vCid5uPc7Q%}E9{FQv z!2O68z;izxL4enpVK}+WC8-mPqQ!2;NygxGwNb$EBphw8SBCfe$i&XoRAw67QrTpX zXJ-5;+oOm3>+2m$DeA1RbFLZ4km8UY^m?Qb7yv$hwOd4?!LecB;wMOG@S1AgQnPgX zc^V@2A?V03<6K$$<9B?LV5Zh-xE$q6i@(E<XGX8nt%gBQy!s!dJXnpJB%+<JQw`H7 z1ZXG;`%#Z&RX9;_lc#0cUOpDomp%<Wi!L0wm*$C>c{b2KHO=|7pc{~?qVj5mqe(WC z(f`A#pI(N<F7d>Cx2nfzuZ7fk4b^iv{>vbd63{V`h4e_;T4twv-ccq=gx1%`aYhX* zr|Jj*hrlYzWStBH`jfF=MNcI(N}HygN2zCpC~|wegvRWwK9qonE@)`d<fV%oM%g8; zZa+|hJT2j0a;e_={K8)IG-~jF$D1k-7Q2Mm3u>?#duP$-7w?xw`DfAf`;>5t(_3L^ zbV#V(=RcetziqrbIS?4h(~Mqj#A}QtWR&Q<e*NaO{qp#rW4ox(+?LEN-pYR;cJp;+ zJ?dl#<RY|tTBl`(6+Vu!yi5saPuG2S57wRh;yi%<2{F--)Y>d=^f35><ME4sOx!!Y zq#eL-A(5}{Y<BW(hzAw7Cf?7a{H8~F$~Z!6yVHV?TSq0i?$SK-LlRn=A@Mey2#Z%I zma1B{O-zAD40Nd0<sg^{hL~P&E1ONT_)>pmix=$5He)AD$Kr+pxB@SX*xMP~4@G!U zUIy18hErC%Y>E^Xh9<4^0Iu#>uy`gS4m?evxj(WUl=a2)P9ma|C@s<ecXkxe5QeEm zua#+tsBx#$=|V@IL=#_G82nlpXZ^tP(Rod|5gFdMs*oSnmT5x7CT?WKH&&@7YO<i? zJ{&b^rf1{c67}hhs*U=R>Wqj7ULQeTRz5VgVj$;P)HCBGDb0j9br4K|d@uu^KjbBq z;q`#;g>-005b6j0U;<+0|16L+{m>uA@s-Mpi0o&yAA<zURZZc)Ofhwk6*Ha|kvnv( z7dWYk<${^Ub=}Jg70uYXQqb@7@3vm)F7hIFOIxu$4}@`_AG6x#EG_MJ9h*}!o-5BH z3`pBbdS=r3jApn67(gkbpdSTRf(qIX7Qe7Lz&L(HU8YK4#_EEsRd>L_{Qv%c|L*T> zY<nemrg;<Wgs(Ak>JBsyH=uw`yi!zCrzdl0Bu;%2tE^F6t+j$aNfR|1DR=0RcaF+N z2$z$=Ws$wzhKql@t%3<Kbjfr~o2xq=s3GUIddRr~#g|jU5@|sZ%m0LFwj=|lP7(Mm z(Ljq{?%8W=MI@XSlnOSCkgz+y;E+b8xZphJr?pPtU$<Y&TddVpny*8B#XksWqs9aH zU}^5exzlPNKT?n8%6Z<4B)&-{yP;{9v>MoNR176-EH-d$KvZ1PH~D>9E?@-BT;k14 z5_AX}UbCsfD&a6J1b<bzIV%4!POA1Yx?cT2WzW|%)i9L#<}x0#(>v@`O_oh8#;XFx zj!wBO=YNhbyiPtwHaF{%O5dQlYv2p@`G_Ps>FZ^HASSEfItcnBU}uJ59;Dg9%6=at zV@^I9WL~GZ0M|O05`{15GX@}i=ao>`JjtL$s3AzbK&uDCpcm5nA}@5BO}l;?3rbL$ z5j!F&8`+Y#Ha4vB9sqVw^0`7rdxvgli7PTspeuj|5z)&0^Biu^lH4fNlBzYx^Wub5 zos$iIVV1f~3w0o(C_D}=5lN$#phMMO#0Jr{sAJf~4n+^#c5DfW?!F~W)HwShC{r3K z=qPzB^&)f`T3rpsGj`M#U~{F@|LOS}RXnw1Fay*yKN2Qauhn4|Bzgg<a6Zu`2!142 zoeZbc30oc5!vvpBlZ&8drg-7JVp51>$Q(65IiBJ5Anh8Nv==1FOxEgxSrg*!zYNo> zES}T_Sccy6=;a}G&K8}2;U#%8?b2NNBoCId*+m>wc-0&q%|9zXD7bQ9<-Nl-&{fT5 z3!fD~o@5PRaguB`5NBeSFBgjEDzes%6_qM;<5z48)VJ<i+0^PjzW~X>w0=zPJrX8i zMetO{Zq3K)b6wVs`0Radd*iEJ(SoGRZqez2Hqgpnro_fPMM+m^Ryz4Ob?kY`FRv;$ zXec;+o4=Pd58q^VSBEA#jvMhrEp-<1xFOot<F+DxZ9O7|W><6;>m-{_e2cKU!%kXM z+W_ylO%%G4!udW|!<_+eXoWolOG`|P1)<xd8?S)HzQ4IqUpTCS%C3Va*{eQP2vs&> z*#3v}dU+F~mRN|^j3wliL9*|E&_dLCJs&A1x4a3U@t-jVGlr6$KDbE*f9|<}Oo5~; zYe9EP5`C5`JCubDyuNN!nLQccu)oG?nifHA*%PCdBgq=^w1CrEw_#Q53aPYi0gLKR z2*RJ!1&vV1U9hFrx+Tt1FC5s$x(l?(&09!<iyu%1wfB;S3jfrDeh!e*nIt?S`oicq z(u-vtnu$Ln*`pH2dI%ZHb<33;fSILcdLD`GBsI|zDqqSTTJRgs{o0%O-$<+oTD#2+ zf0b?0SwsZjw`x{efGnu_bIL~xhVD}X0Ljm^v(Q`Ch-IFoN2j&b+$?{bUY%Hw)&}?9 z<0UO)3zAh{2hottG^;s4*SiB2y^tt8S*x=l%2?+-wpoo`>A+=!u-1(o&Z$=TpWYp< zukS73wX0!s(9G`{OInM%+E84xBPP{RGzxK^$&EQjnjOBc;;V4GRH!IOwtm!SE*+2} z9@FBQ7t}m&9u95wHeSERXlWfoh+D{2+3_Ty1Ec=Yier&Ip8yQGRRiuG9Yo^LsDWIw z?TG~0<8f~9AW>$gx!KxjZebBoBXtq$<rE|mxRfC@6yZBqdGUAw$r(20IP*}7jZLYD zM@l4SEH@FB-$VoDZ@_$Yv-ybzA(lWm)K<a0^o%4N#n-{G>A#zfZO%pm62K55rXDEr z^oE|z#9Z~@1|mD)XHY@eJVf*yhp-dElC3f(Y&Jov`h9CoiJSzPRzqosCn01(V@g(c z_BhlgXJ<+#a@0O%4ICYOhJ?jj<MfhIZF0dyf*cnpadZcITpm5i8<PGWBL*);R(poT z>nw<Ql(;Y>2h^ys+FFMmxrO(Bhw&!eiX|fv2#Fg&lj0S`m(78rHUZFG*b-A5hEYd| zGRz(&urLuJQm`+)L>LiZOW_dkjC4^7A&h;wwMqThw)!C;kyzQpk0w+~q*30REsoqn z4&e^7_D%~#FoIQUnuNw?>Ryad+9+E11wDc_!6-p126^y0NFv}OudxwL>Bl=8JM=0y z)XN?8QoDk&dI{qgQ+{PiV*!ABsw|3lu(1r%kC-3WQ6|5RsMB4LflireuVXBKq#O@p z+8{LHQyO-(!p?CnJX2GI26rd2azVeYBhpd*)q;K5wrhK?*0yF8W><czt3@G80oBUa zT?cxIAnY=I%(;$mQlbGu8xB7Oh-&4NHbJFIj2{{ZEf~>cCj7;R_Y-6O({gG0uRu%! zBBG3bQfl#Sgnq3FBWb-KUZ2-I*{Z%YN}N<#U{stRvFu=YNrY+d>G!+ew{jzD$6_Jt z9YslQg5j0M;uhkd$XVg|hC0KPiquOM73kr06(!6+eIhWk26XdbG~xJsem^#J5#8)| z#UwlP>|-n$JlDsF_|*px-PY+Jk6yn%ZI1fqtM2bLB`*X$VNo0a&kr(&U(YxA?Anr| zY49o|cItCLK1VaCw;I`1f-7-~X^_UjXFnYL^!)9Qhp&%+<X+joq)!)9-gUze;n=ha zF#XmbG0UJAR;R_pK90_sBnO552X*?J9|P0SATE?6Pd}7<a9W4&rEZthMiu{2#eY=s zAJyj{H~!=F_)qT+4o|`U9~S?yv58<mH~wR1YkRAT|M(Uko0odp@Al2}w@0rIPtTep zd%Qb*{_@Qs?oMXP#f(JZ(a=l8=MDly+93G|E5W(Q7fL~7H6kXYsPY0z@NMh!;>86a z%HCZJwn!Bvvak$G)^|2V(rnxK^e-$W4q{2VxIi`<Iv~2<t?AaiWs~uGOQZIB%f)wj zOOt^+O6ur<9^HVVwnP=RnwBY=#gq0BuIy6Qky|S&U&()!{8!0;)#nS!e`VzS^W;B> zfCc&Q@y=!?|9z8Bwbd*BU-AEn|5yCK;{W&J|F&-SF#FHO?(S~U{_|vav*Q2XYW{Uh zwa4)Qo*nV&xgniiA!gIFA}y&pPRTqcRM(q}#r2$EThEE6^{jAN&xwci?0{GA_K4Pd zy?_-}T6h_K_Ig(fo;t8~AM2@uTBp&9|5yCK;{Vm>AA$cn2G@u2|BbC8|KFuA761RW z=D*thmHz)t`G1A~{Oj@ma{TA5r(2IJGVo8%|8a==rS|{5@Sit#w;w;Q@SiLFucH6o zR{z_2`u+CPO8=|qzoGwM!inZ~{cn47d-t)X|2x|x_-$-HezN(b(*M52ryTc=o$61o z7})1Wc=-bdEqDBP{r1KAe?b%qmXiNoIsH><?{Yc{#(;QK(6W-#+jjrAoc~Q|+d<q9 z>;AzsN#msM{TO9GO}lh)5)BcO$q;7>84CegS?o^{(TGO+9Ny+cA~22?f)y?Se--=b zbTB|#sVJi!BuUuII37mB!JWPS?aOxpYcxhLP4`q7W55tieu`|U>$M~QhHjzRQE(Od zqnUw%GXZxTV@Cz3tyYeq(6WQ_YwH}Sc&d7K%ivNe#F(TZ!q_6<jm6{8<YMPgD-J6v z!&~X-+WZ10k-Ld%637(9hXpEXt-&Urc^D7GR2{$jtWYxPfipK6GtB}^E5k|SRcb+{ z`Tnh7X-)rS44?)*-I;#zT0f+D53;bv;Vb$$0bM)FIBF=B^|S=4c+)pfQ#!_r8r1<s z9OWhOCFbcgXEaai>zmC_>+5w!E%~5A9)S+IGSc502!CvBep*B53YO8(qdF2PwOWY5 zGm%!s@H^Z%J3fA^1G2mh;tLVNilD6|^aofzG|C)<_o#2}gEt5j8e$=Y!@YTwIcpXl zr7E2;Eg+7@!b*(Pbkr<FM6)+)z*;2oGDR$!YWrW~F2iWh1@6;@ip112?(=3!&HV1& zhIDt5#97>nhYO+Wh?-n;40Ly9BQ*Zt-a$O#U7xRmf_G1RyoVy>{S1IfgkY}~$LR&T zQSaF_0Dw<r$a!Ww9)O?sHeNJg_d?ctD7M~h-MAffZ*FziyZ@02DP|%Nst~|b1p(G| zG_R1xD9wS?ykMN(07uQHBsa`5k(xKBVipZ$kP|^KVid<9^UPMlLg`0ytZ%ca@YkqP zsK}7ua<Fi)2V~G_6bu#nS=|-finTkD+U^a_wk-Zy8LF5H#H8^Pm=uAzu<?^tlQ_;K zXtiVpS0^eD`x;lXRvrJgmmOVrVT1nLC>*OA%K;GofO^nCMf}^qFyJ8$){nwClF(=y zRmfj;Lh556DBeUV5?oqSG%;xb8VKZ{$y|N;8G0yq9*xFy!bvaMn!~rlPrZ<X-0#HK zLu7wH2GkIP?78SF(^Nvn)lB){DWsJLLh*e$V3|9BUg|!5n?$X3fqW@P)Vqr<0pBr= z_xzSlN?-R|5vLF!L1OW~(WGEYBF+s)fr2<u8%xn95kAL&-tC70OK_qA92U?I3^HHf zIfA7Eg~JN5Ar%DhQ{Pn&8`5l&5X8`N9#PKuo!bQ27Riz0ts$s_zpxnAQ{V~KRzYyG z^@=R=`vUCucZUx6%>T;xfGqI!<Z%ic4KdwAm7+R-BsQJO$|I;-`XMYo!=EOblH7cD z6La3=BqpWvA{x>-scD9422>@WqC_KsaCz=u5Ql8oZxD?q)69i-)wmyM2i@QfaP7Gl z-SeLhX~xcCdVJk~6F_ti(Z@fBBy}SFg*6b0;R0EuAEP@EpwUUj6w&xPpBQE<NN64) zJL1{UDNbo9=)UPe#_ydnZ9zFkYeK<;c+{m%0IBCv!rXaOQvdnemsD#Ig5WpZewq34 z-yWZF=k)#z6z;(h#z6)Z-~x>iT?M2rZ58O_SfC_7%RV8>)#}l}XGFHfe80iNNc=5` zh77X(Ss;<tp6gx4P%>}mRahyOIn+Sj5FPmr{~g<Kc@S?G=%l~+F9pu2>HjedCmOqZ zjK!khXr-@BK^(l7#;UuLV~Wx^Lf#_6*{`epub~cuF>__iTnG#g3koq{$UrP;^uj^g z6-ZnXsEA4e&@OXj08W2h7lhLbK&i0ysozWySR&6!)SYIbOX8@JDWjX%gZ!MdzSyR> zK-Jt+;5MBVL7&mk?s{*T)h6qj0bx4NSd@kk=x4zIe|5FLOk=z?vr_)<s}-BYlcvD9 zbjm4>ZUH+<kf0s(o1H>cXK(7d%;<#Vr*%#|&x(fv!`Pi`qPUF=TK*IO8#Y;?F{9BM z4yV0nEGR|2U=nmA;!em*PUJcq53<WWe|ux&zyI%lY;A08_?%ga+1P9XgPO3`@Dp{= zXY7nnCkDW1Q_p{kM;U<Ya0CR~fU)`%w=__tOlQIGWNFd@pk+@=o=5XO2FXd?^&o+& z2JTd^fLjq(nOES-f_+2##M(A%9YwH9kytO_LyV<RhQ|sj#RkFQkVuLH$;yf0X@53Z z1fLVx1$9+JsBU4*B|nFtwK760HkZO*yNqw>0knar6M9iJ3ZP|-QkWW+?tpL7n4Uru z@5#2(6T{E6ARJfA(G?j7kx`YjutnPecz&Z`OpSwyI&)UQPbIA_nt(sqG79PRQBMHg zBuxZf`#DTjoF9U%Dwb%fnAQV975PPO7k;6e_%DKCKx5U<QPQoBnq(HmR2DuFLMDLe zuYvt2J*UkKYl;Bj2x2OZNpxSa(`FeP{g&zC+<4umk0q>BU>;|*%yXDW#yo>1YbjXQ zrW4+-g;|m`+PHyGbkEb@NdB~Mtb**e8G5cQg8CW_*gLfa#k#TQ*YwLnsgZZZH|zEA zb2`2nlT22dd&O&kQ|#v0!UkFKR$xWi>#!n!1$;#p_-SKzqYPtFJ$?byq9j-_IY~Yb zc(J@6?;tdHSrL%r3KK>MHNaCu@>tm~e<n%6u$85ki=W}>h{TG2iu#5|yNm`{QHrDR z@-yZ@a1)^8-UoKrF)ow?%)3{$rrRPeMU*kEY2f&a3nVsR7Ii2Xz8a<4G3<aJJn#4A zaLI+beyQ|!W>+Yu*F5mwAlxgkX$=bt8;+4N{`Bs3NtKSgg`K;D2FaYu5XmvEu|`3h z33zwBv~31u+mTX%cuPV#B^t-Mkx)s{moj&vv#+l=7abvZN}CYCzOXO$ClX>}nPmlf zDZ`lS+I5luMib&YeH_DhqHIT*hM_G%$Fw*iiD++#QA7<5m<MA~oVbi}qK{rA*@ScI z^6;D<bwyx%3O`Tv<nt4Js7$qTm~@ZkZq523jXH-?_f7<&%N7!XSR<`x!D1C@4k+k( z<;RU^c*1!^oXjDs*HPff`GGk`180%@%v?H_;dAS|I;%YzJ`qr<9p*rJqiaoVT~Szs zc|sDSCus;qjrih`1`Nb;QGLhPQ4){YfWhF73~9=nrf(oeRSaC;6{)-7WpEwEe6pA0 zxduHFD^qh$C<>p3iNT)h+yx}l;q$o(v;%#-OM99vYw8t5&F2(!N3CQ3CZPerAwlQI z!!zHZSvq|Iqbuf})H|0539GF-Ar!S+Jo=>f<3(oe(Z`$*XyI9b7~dD$wvjXI5mQH! z?fY7RCq2ZVw#rdyZvSR`y$vGlsRK}+EEdLY#|O?ceF2Zq`{E$Mkl;*_4jUAiJmIwA zbMS-b&fT2>jwhK9)lUIQ+IY+NV68SX|NJ4${I;%JHC7jZzl(;mmP2B?IHOl#IML{w z?p_l5!mpy>iJ@4}prdhWT@7DqzhRcl!~!*El%-B#qWSIVyP*10M|0%keV^q(Id|}n zxY}Wo#K~T1VSX=pt2@Dv#R}KqDjk-^Y@d|ejss|B3{Qh~G@Q0uTkJ^_R>2V;EK$=} zIHk>fTw-FaI_aG{1bQRI_SkEJ{dDHQdR@g4E(PdZ&fe?ld`aYjC1o@70I%>o*B)3W z3b|iXcFmezA?xd}qEA@!IBwUL5C%-uZXlU4;%l1K^#3qTGiAbuwIm!(E`yYYT%T)- zpuxn%+D9fM8uS<cl15I>M!NB^U-xozRl3&n70xj4#CgnPMm7Ge*qUV|pzfz0O%|HI z6~@?^D&VQGc_DUii?OUqV2iP#VCvDSX;S|NLLOsb>qp=OMiQ*ala*n8e3de=a1wI* z8aWnLh7#P>tP;qo*YIl66x2Q(1yK__A~fMO^ipXR;+Dgk*W}IN;>HNsw+^adI$A3Z zg(yzEZY>mMp&@W%p@zYb6CPby#mYxP3~Zw~i>}2+H;99wx0=Poi)m?R(J1;i=0R)B zLTQBQeX+%L21(*bSXpe|i^shPyFOn-Vlh&zN)Gf#a)8jVURAP>U@7q6(6AKWmd2Tr zx&ULCWT{4OELMhEy&sH+lv7NnxWWcC8TwSGrW2x<eYweQL)uPA6rG2+$XQa&Kw0Cs z$<1jnqGi*rccBhx?JS#oMq@T4V;>jtE*ZpiNN1_1#s1Xt-m~G=o#D|2K;B{HvVBg! z0Cr7{l|WrP;&6G^-xa1jY?Fe_r3))dsFLBDPzZfSk6v1(aP{S<P2YHWS>X1!qSuF? zv{6)G?Co4E-fb}UY+fcRcnh4pf0~7pwC)kjh!fgX`Uqed<Z^#?N#yc1bynbl<}*bv z91=IFRaw3Oh=+|Nh48C*9U5h7Usppg?fPa-4x($x>}V^NSaPBa<mU%y1umc%K%N4c z)o8?$+MK~&yMZ(v)cLQ4et#Rk*!drZdjGZ1<Jq_Ib0OsKK#$j(@cX9!66pj7MRA%P zLXwdhPj2o8+MchxXS%uJEL~t8({Jqm!jgsG*uA5Il>tas+1$9Jjx}_4rJ~Ay5vf6i zHRd`r#)13j2Ff(tHiiY_6xnLwD(m`dY)GgvMW|7?YKkE6ccujM#$C9++SCanZVr8f z0kVvT4Ya_anO6?noJ2^o$sta@71t5Qb{(a>CKQ7cc4$$gXq=}H#7U;BnLzl2L9<}p z!<o&rsF5r-x90``<u<~<*`}@<gx5$)nlNb_^Ec&SLAj6A<h&p^!|yL=#;)tsn)}e^ zREyS5+W+g{<f?2r<(!m;MCxz~vEr)^lH~LjX8u(O0MU3FuE8Zd@R8!%|Esup)Y)67 zu4M$a?bLbA(jffJ^3-EXhGXkc9wf1_^p-Z8<v4^*oO)bLha6@w9Y@3@#6X(6Ga?p2 zI~wpR8O2G+nGX!i@%gIxx@H~oG%jEZAF#tL=N4yyQ}|-@3#2H3#^STo(WQ>D_%B8# zHt>GvEHE(SsR#x%I@2y^U7F8I&?=Kj)-bD1%Qs=Sq0RDNxM{lD;7KQX|DcvJnAG@C z`~XI=q7};bCd~7J)cMQ_JX`moS;e(g@t;-v=PmJ{o8RwlKd$0GtN2gEf4X@8UoHMq zV*WY)bNlhu#uoPflkE!s@7sJnFw9;foskALI@kFdQj#`5)HqNegG21I{l_FK!ZYLM zG7N{cb3x}bhq3#<Rk+FbSbVH`-Uqda&OKJY_si`gH4mX&kn*SiFTa{+Y3aDCaxS+{ z50BYu7>wC!LW;T$B1`vtqjA;k^Dg>fDM@v9%P=RGI#Q^?kwV5rLxTHM_DGdF!hg@P zfO2emXDFb_W4Za=TC?Us-jo3_0%pw{N=7PNeRFhXemCGRDwCjca?p?mQ<91jzRKeG zU-f{NXQ`suqBo8>N`e-*lC4Cv`uzZRI8x$o-noaci7bG>^VewoDx8V^L^sVVK&c(I z$uQ1_GyRL#g8Cjr`Ws2S`fK0LS!UP5Jm+mr2a&mZ8OK-pd)E%m(HCW*G^_^HYB4{< zSbw!e<h-MZ;4we7rmKF6vRkKtFll(LVXnQDNN7H2K4l%r-`n$d{RTo7Rp3tRluwa# zi?0%z8XT9Q<V$NTkH(T<H;;lu0TXJiiycowl~D7Pw>?T7pVB02UCNBZi8^Lu*HF?% zrcjlsv|0!BZTlWYn@{gk`1|`5-rTrX>CJnU-qNMdkmi`jv}_fcyGQJ66lVDT{{8zF zo5fIT22b6de;~^5T)oryBI8Igdri>w*BrBf?9F-4#P!`w>Dg?8SD^biP44q@)3jWv zQ`o6MdVLDYs&wWkEbK}J1<Umf>2Agoam{Pk6&2tq6Db?|v}O=f<(7k<%3gmifND)) zq;hEsEfo}RIGk_3?k~}1-7hrN53ln#bs%aD(I_I-8k%7P)|yRj<JKBFmBZJX$~KCv zzG#El8p3ufrY*gYzv92b*;**(e`Z3Kx@)>+jg&)=%xEc^Rva-!EOR_uc_tXFYN3f| zi{-&0ZEA?!6*EnSv_O7}M<H9+tU$f;l!-OZ*;00e``ZXsgw@u(cP1C;!y2r4wHMO? zyh@3)C$)z)){4?}8lue;W__UZPLskBn^Xzn6GW<JE?k}KC;*WT%EWhC?P6DguL_rK zz>G)bGx#>lHQBUFotNfW;%DhxRJC*62Jeh>5602Pki#6P;O54LM{8>kW{q5?`|xNo z+kX0}?&I(G>hI=;{<5jRY&|lar&^CbHYc;_hyVQu4jKB|qeos#?4BQ+H2NN5us=4h z!|}EH8V&}j`kKX`_#5v+{??CDsnTvwX1$<y8MfQrTFXPT>aBzjG^26U7Q#n^jw@{U z<dI;zV(nbzgKg)+8g8`LsfGL|GktaYjBc-6^|Tk4RTosR->2tVgt-Btv|l>ab*n@J zsc(~PpP0|6q3q_R1>k~_-=InA#%ZWFFpmJ}nCYb@m^1U>7zQ~CZU^I;URHd0I!36i z3Z+f;EgjfOw|N1z`{4y{Ua<F!xl8jNgPLWbTY%=McU7#*4Uc0C2uDb@HIH)olZ5^0 zxKBj2-3!tzE$eGE7{{XU<hQ6@b=Iw}rW{StCWacY`;ohq1k{D}gJe2B_mpSbExR)w zMOi+(>n&bRt#v&mazU1nxnwO@E_puxaGu<Ay;a&AiEr^dDl`iA#D$Tn7`_u;&|aX* zNxN+X;vgcO<T<U|1cS;BQ0~3Aadw2c0>uvdPJsyRiSMPqzwbBOZKxORc5}}varX1c zVf)~x!-GE_z5UVL;JxBE*FS#jYP^n*AJ@$7->(MU-p7y4wI70R%FaKeV_wE0?Np|m z%Klr~e;;E1eY~~#{nq2n3je*b|FZqJEWzv7u>aEb2mT*6{o}{mJ9K|*V|Sy%|NBPx zf3~r~o^r2|_;cxe5nCq;=$(09s3=hTd?hn2o%aRtp)9W7k^rXKw-x`d`2QE@|BrWo z#b52OivJh+|7Y|5rT9Oe|88z<KiQ$n!2f;nWOJwD|KEoHzY`D|-#HY3)wk3&-p&{2 zBs{yte!Z=47aC*BGu<0cN0V8#75{npf0h5`*W>@C`Cqo4>}>5+Qouhq|K}5;X76I~ zCHDWV`QLUP7xKS6-rBA7|8Mg75Do@yB=kG?vS83=o!j5{`9~iyh5J6K<kdc@KGmoC sRG;coeX39OsXo=G`c$9lQ+=vW^{GD9r}|W%zqil-2foln!2tLI0Qscq9{>OV