From 89537d417a0779e64e82f368efb4ecb79c3a1b52 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Thu, 7 May 2026 23:56:02 +0100 Subject: [PATCH 01/14] =?UTF-8?q?P5:=20OSS=20readiness=20=E2=80=94=20docs?= =?UTF-8?q?=20site,=20contributor=20onboarding,=20e2e=20harness?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P5-01 — Documentation site under docs/book/ rendered with mdBook (downloaded via Makefile, same static-binary pattern as Tailwind). Structured chapters: getting started, concepts, operations, security, reference. `make docs` / `make docs-watch`. Generated output gitignored. P5-02 — CONTRIBUTING.md rewritten from placeholder to a full guide. CODE_OF_CONDUCT.md adapted from Contributor Covenant for a single-maintainer project. .gitea/issue_template/{bug,feature}.md and PULL_REQUEST_TEMPLATE.md. P5-04 — Six README screenshots captured live from a fresh server bootstrap (login, empty dashboard, add-host, alerts, settings, audit log). README rewritten to centre the screenshot grid and link out to the docs site. P5-05 — SECURITY.md with disclosure policy (3-day ack, 30-day default window), scope in/out, threat-model summary, operator hardening checklist. Mirrored as a docs-site chapter. P5-06 — End-to-end test harness. e2e/compose.e2e.yml brings up server + sibling Linux agent (alpine + restic) + restic/rest-server. Agent uses announce-and-approve so Playwright can drive the full operator flow: bootstrap → login → accept pending → backup → verify terminal status. Second spec scrapes /metrics to assert the P6-04 endpoint surface. .gitea/workflows/e2e.yml runs on every PR; local how-to in docs/e2e.md. --- .gitea/PULL_REQUEST_TEMPLATE.md | 32 ++++ .gitea/issue_template/bug_report.md | 52 +++++ .gitea/issue_template/feature_request.md | 34 ++++ .gitea/workflows/e2e.yml | 97 ++++++++++ .gitignore | 4 + CODE_OF_CONDUCT.md | 69 +++++++ CONTRIBUTING.md | 180 ++++++++++++++++-- Makefile | 27 ++- README.md | 124 ++++++++---- SECURITY.md | 137 +++++++++++++ docs/book/book.toml | 19 ++ docs/book/src/SUMMARY.md | 40 ++++ docs/book/src/concepts/architecture.md | 121 ++++++++++++ docs/book/src/concepts/credentials.md | 98 ++++++++++ docs/book/src/concepts/repo-maintenance.md | 85 +++++++++ .../concepts/schedules-and-source-groups.md | 105 ++++++++++ docs/book/src/contributing.md | 17 ++ .../src/getting-started/enrolling-hosts.md | 113 +++++++++++ docs/book/src/getting-started/install.md | 92 +++++++++ .../book/src/getting-started/reverse-proxy.md | 95 +++++++++ docs/book/src/intro.md | 86 +++++++++ docs/book/src/license.md | 39 ++++ docs/book/src/operations/alerts.md | 73 +++++++ .../src/operations/backups-and-restores.md | 73 +++++++ docs/book/src/operations/observability.md | 61 ++++++ docs/book/src/operations/updates.md | 50 +++++ docs/book/src/reference/env-vars.md | 58 ++++++ docs/book/src/reference/http-endpoints.md | 82 ++++++++ docs/book/src/roadmap.md | 32 ++++ docs/book/src/security/disclosure.md | 35 ++++ docs/book/src/security/hardening.md | 72 +++++++ docs/book/src/security/threat-model.md | 110 +++++++++++ docs/e2e.md | 120 ++++++++++++ docs/screenshots/01-login.png | Bin 0 -> 27454 bytes docs/screenshots/02-dashboard-empty.png | Bin 0 -> 100791 bytes docs/screenshots/03-add-host.png | Bin 0 -> 182104 bytes docs/screenshots/04-alerts.png | Bin 0 -> 49142 bytes docs/screenshots/05-settings.png | Bin 0 -> 94151 bytes docs/screenshots/06-audit.png | Bin 0 -> 48383 bytes e2e/Dockerfile.agent | 42 ++++ e2e/agent-entrypoint.sh | 27 +++ e2e/compose.e2e.yml | 87 +++++++++ e2e/playwright/package.json | 14 ++ e2e/playwright/playwright.config.ts | 31 +++ e2e/playwright/tests/lib/server.ts | 114 +++++++++++ e2e/playwright/tests/smoke.spec.ts | 80 ++++++++ tasks.md | 52 ++++- 47 files changed, 2818 insertions(+), 61 deletions(-) create mode 100644 .gitea/PULL_REQUEST_TEMPLATE.md create mode 100644 .gitea/issue_template/bug_report.md create mode 100644 .gitea/issue_template/feature_request.md create mode 100644 .gitea/workflows/e2e.yml create mode 100644 CODE_OF_CONDUCT.md create mode 100644 SECURITY.md create mode 100644 docs/book/book.toml create mode 100644 docs/book/src/SUMMARY.md create mode 100644 docs/book/src/concepts/architecture.md create mode 100644 docs/book/src/concepts/credentials.md create mode 100644 docs/book/src/concepts/repo-maintenance.md create mode 100644 docs/book/src/concepts/schedules-and-source-groups.md create mode 100644 docs/book/src/contributing.md create mode 100644 docs/book/src/getting-started/enrolling-hosts.md create mode 100644 docs/book/src/getting-started/install.md create mode 100644 docs/book/src/getting-started/reverse-proxy.md create mode 100644 docs/book/src/intro.md create mode 100644 docs/book/src/license.md create mode 100644 docs/book/src/operations/alerts.md create mode 100644 docs/book/src/operations/backups-and-restores.md create mode 100644 docs/book/src/operations/observability.md create mode 100644 docs/book/src/operations/updates.md create mode 100644 docs/book/src/reference/env-vars.md create mode 100644 docs/book/src/reference/http-endpoints.md create mode 100644 docs/book/src/roadmap.md create mode 100644 docs/book/src/security/disclosure.md create mode 100644 docs/book/src/security/hardening.md create mode 100644 docs/book/src/security/threat-model.md create mode 100644 docs/e2e.md create mode 100644 docs/screenshots/01-login.png create mode 100644 docs/screenshots/02-dashboard-empty.png create mode 100644 docs/screenshots/03-add-host.png create mode 100644 docs/screenshots/04-alerts.png create mode 100644 docs/screenshots/05-settings.png create mode 100644 docs/screenshots/06-audit.png create mode 100644 e2e/Dockerfile.agent create mode 100755 e2e/agent-entrypoint.sh create mode 100644 e2e/compose.e2e.yml create mode 100644 e2e/playwright/package.json create mode 100644 e2e/playwright/playwright.config.ts create mode 100644 e2e/playwright/tests/lib/server.ts create mode 100644 e2e/playwright/tests/smoke.spec.ts diff --git a/.gitea/PULL_REQUEST_TEMPLATE.md b/.gitea/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..19a774b --- /dev/null +++ b/.gitea/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,32 @@ + + +## Summary + + + +## Test plan + + + +## Notes for the reviewer + + + +## Linked issues + + diff --git a/.gitea/issue_template/bug_report.md b/.gitea/issue_template/bug_report.md new file mode 100644 index 0000000..d73ce40 --- /dev/null +++ b/.gitea/issue_template/bug_report.md @@ -0,0 +1,52 @@ +--- +name: Bug report +about: Something isn't behaving the way the docs / code suggest it should +title: "[bug] " +labels: bug +--- + +## What happened + + + +## What you expected + + + +## Steps to reproduce + +1. +2. +3. + +## Environment + +- restic-manager server version: +- Agent version (if relevant): +- restic version on affected host: +- Host OS: +- How was the server installed: + +## Logs / output + +
Server log (sanitised) + +``` + +``` + +
+ +
Agent log (sanitised) + +``` +``` + +
+ +## Anything else + + diff --git a/.gitea/issue_template/feature_request.md b/.gitea/issue_template/feature_request.md new file mode 100644 index 0000000..5d0a297 --- /dev/null +++ b/.gitea/issue_template/feature_request.md @@ -0,0 +1,34 @@ +--- +name: Feature request +about: Suggest a new capability or change to existing behaviour +title: "[feature] " +labels: enhancement +--- + +## What you're trying to do + + + +## Why the current behaviour falls short + + + +## Proposed direction (optional) + + + +## Scope check + +- [ ] I've read [`spec.md`](../spec.md) §2 (Goals & Non-Goals). +- [ ] This isn't already on the roadmap in [`tasks.md`](../tasks.md). +- [ ] This fits the project's "small fleet, one person operating" + target rather than enterprise / multi-tenant / SaaS use cases. + +## Anything else + + diff --git a/.gitea/workflows/e2e.yml b/.gitea/workflows/e2e.yml new file mode 100644 index 0000000..39ad37f --- /dev/null +++ b/.gitea/workflows/e2e.yml @@ -0,0 +1,97 @@ +# P5-06 — End-to-end test suite. +# +# Spec : docs/superpowers/specs/2026-05-07-p5-oss-readiness-design.md +# Stack: e2e/compose.e2e.yml (server + agent + rest-server) +# Tests: e2e/playwright/tests/*.spec.ts +# +# Triggered on every PR into main and on workflow_dispatch. Runs +# longer than the unit-test workflow (~3-4 minutes for a clean run); +# kept separate so a slow e2e doesn't block the fast lint/test loop. + +name: e2e + +on: + pull_request: + branches: [main] + workflow_dispatch: + +jobs: + e2e: + name: Playwright vs docker-compose + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + + - name: Build the e2e stack + run: docker compose -f e2e/compose.e2e.yml build + + - name: Bring up the stack + run: docker compose -f e2e/compose.e2e.yml up -d server rest-server source-fixture + + - name: Wait for server health + run: | + set -eu + for i in $(seq 1 30); do + if curl -fsS http://127.0.0.1:8080/api/version >/dev/null 2>&1; then + echo "server up"; exit 0 + fi + sleep 2 + done + echo "server didn't come up"; docker compose -f e2e/compose.e2e.yml logs server; exit 1 + + - name: Capture bootstrap token from server logs + id: bootstrap + run: | + set -eu + for i in $(seq 1 15); do + line=$(docker compose -f e2e/compose.e2e.yml logs server 2>&1 | grep -E 'bootstrap token' -A2 | grep -Eo '[a-zA-Z0-9_-]{40,}' | head -1 || true) + if [ -n "$line" ]; then + echo "RM_BOOTSTRAP_TOKEN=$line" >> "$GITHUB_ENV" + echo "got bootstrap token (${#line} chars)" + exit 0 + fi + sleep 1 + done + echo "bootstrap token not found in logs" + docker compose -f e2e/compose.e2e.yml logs server + exit 1 + + - name: Start the agent + run: docker compose -f e2e/compose.e2e.yml up -d agent + + - uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install Playwright + working-directory: e2e/playwright + run: | + npm install --no-audit --no-fund + npx playwright install --with-deps chromium + + - name: Run Playwright tests + working-directory: e2e/playwright + env: + RM_BASE_URL: http://127.0.0.1:8080 + RM_BOOTSTRAP_TOKEN: ${{ env.RM_BOOTSTRAP_TOKEN }} + run: npx playwright test + + - name: Compose logs (on failure) + if: failure() + run: | + docker compose -f e2e/compose.e2e.yml logs --tail=200 server + docker compose -f e2e/compose.e2e.yml logs --tail=200 agent + docker compose -f e2e/compose.e2e.yml logs --tail=200 rest-server + + - name: Upload Playwright report (on failure) + if: failure() + uses: actions/upload-artifact@v3 + with: + name: playwright-report + path: e2e/playwright/playwright-report + retention-days: 7 + + - name: Tear down + if: always() + run: docker compose -f e2e/compose.e2e.yml down -v diff --git a/.gitignore b/.gitignore index 289d6ef..9e71078 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,10 @@ /bin/ /dist/ +# Generated mdBook output (source under docs/book/src is committed, +# the rendered book/ directory is not). +/docs/book/book/ + # Local data / runtime state /data/ /certs/ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..14c1e21 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,69 @@ +# Code of Conduct + +restic-manager is a small project run by one person. This Code of +Conduct sets out the basic expectations for participating in the +project's issue tracker, pull requests, and any other community +spaces (chat, mailing lists) we may run in future. + +## Expected behaviour + +- **Be civil.** Disagreement is fine; rudeness is not. The same + comment can usually be made without making it personal. +- **Assume good faith.** People asking what feels like a basic + question may be new to the project. People proposing what feels + like a duplicate idea may not have seen the prior discussion. + Point them to the right place politely. +- **Stay on topic.** Issue threads are for the issue. Tangential + conversations belong in their own thread. +- **Acknowledge the project's scope.** restic-manager is + intentionally small in scope (see `spec.md` §2). Reasonable + feature suggestions may still be declined for fit reasons. + +## Unacceptable behaviour + +- Harassment, threats, or insults — public or private. +- Discriminatory comments based on age, body size, disability, + ethnicity, gender identity or expression, level of experience, + nationality, personal appearance, race, religion, sexual identity + or orientation. +- Sustained disruption — derailing threads, ignoring repeated + requests to take a discussion elsewhere, brigading. +- Publishing other people's private information without permission. + +## Reporting + +If someone in the project's spaces is behaving in a way that +breaches this Code of Conduct, contact the maintainer directly +through the contact details on their Gitea profile, or via the +private security disclosure path documented in +[SECURITY.md](./SECURITY.md). Reports stay confidential. + +The maintainer will review the report, gather context if needed, +and respond. Possible outcomes include a private warning, a public +clarification of expectations, a temporary or permanent ban from +project spaces, or no action if the report doesn't hold up. + +There is no formal appeals process — this is a one-person project, +not a foundation. If you think a decision was wrong you can say +so, in writing, to the maintainer; that's it. + +## Scope + +This Code of Conduct applies to interactions in any space the +project owns or operates: the Gitea repository (issues, pull +requests, discussions, wiki), any chat channels we publish, and +any conferences or events the project is officially represented at. + +It does not apply to: + +- Forks of the project that aren't being submitted back upstream. +- Conversations between contributors that don't reference the + project. +- Public criticism of the project itself. + +## Acknowledgement + +This document borrows shape and language from the +[Contributor Covenant](https://www.contributor-covenant.org/) v2.1 +but is intentionally shorter and adapted to the project's +single-maintainer reality. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ccc9d39..4e7647e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,30 +1,168 @@ -# Contributing +# Contributing to restic-manager -Thanks for your interest in contributing to restic-manager. +Thanks for your interest in restic-manager. This document covers how +to set up a development environment, the conventions the project +follows, and how patches make it from your machine into `main`. -> This is a placeholder. The project is in pre-alpha (Phase 1 / MVP). A -> full contributor guide will land alongside the Phase 5 OSS-readiness -> work — see [`tasks.md`](./tasks.md) P5-02. Until then the notes below -> apply. +## Project status and scope -## Before opening a PR +restic-manager is in pre-1.0. Core functionality (Phases 0–4) is +landed; OSS-readiness polish is in progress. The top of +[`tasks.md`](./tasks.md) tracks what's next; [`spec.md`](./spec.md) +is the canonical design doc and the source of truth for any +"why is it built this way" question. -1. Open an issue first for non-trivial changes — the design is still - moving (see [`spec.md`](./spec.md)) and unsolicited large PRs may - conflict with in-flight work. -2. `make lint test` should pass. -3. Match the existing code style — `gofumpt`, `goimports`, no comments - that just restate what the code does. -4. Keep commits focused; one logical change per commit. +The project is **single-maintainer, hobbyist-scale, and licensed +under [PolyForm Noncommercial 1.0.0](./LICENSE)**. That has two +practical implications: -## Reporting security issues +1. Big PRs without prior discussion may be declined for fit + reasons even when they're correct — opening an issue first lets + us check alignment cheaply. +2. Commercial use is not permitted by the license. Bug reports and + patches from operators of personal/community deployments are + very welcome. -Please do **not** open a public issue for security problems. A -`SECURITY.md` with a private disclosure path will be added in Phase 5 -(P5-05). Until then, contact the repository owner directly via the -contact details on their gitea profile. +## Getting started + +### Prerequisites + +- Go 1.25 or newer (`go.mod` is the source of truth) +- `make` +- For the front-end CSS bundle: nothing extra — `make build` + downloads a pinned `tailwindcss` standalone binary into `bin/`. +- For the docs site: nothing extra — `make docs` does the same trick + with `mdbook`. +- For end-to-end tests: Docker + Docker Compose, plus `npx` for + Playwright. + +### One-time setup + +```sh +git clone https://gitea.dcglab.co.uk/steve/restic-manager.git +cd restic-manager +make build # compiles bin/restic-manager-{server,agent} +make test # full unit + integration test sweep +make lint # gofumpt + goimports + golangci-lint +``` + +### Running locally + +For most development, the [smoke environment](./docs/e2e-smoke.md) +is the path of least resistance: + +```sh +make smoke-restart # rebuilds, launches as a systemd --user unit +make smoke-logs # tail of the server log +``` + +Then point a browser at `http://127.0.0.1:8080`. The first run +prints a one-time bootstrap token to the log; use it to create the +admin user. + +## Code conventions + +### Style + +- `gofumpt` for formatting; `goimports` for import grouping. + Both run via the pre-commit hook in this repo. +- `golangci-lint` with `.golangci.yml` defaults; CI rejects on lint + errors. +- UK English in identifiers, comments, log messages, and UI strings + (the misspell linter is configured for the UK locale — see + P3-X5 for the original sweep). +- Comments explain **why**, not what; avoid restating the code. + A surprising invariant or an external constraint is worth + writing down. "Adds 1 to x" is not. +- `slog` for structured logs. Never log secrets — and especially + never the merged-creds rest-server URL (see [`CLAUDE.md`](./CLAUDE.md)). + +### File and package layout + +- `cmd/server` and `cmd/agent` are the two binary entry points. +- `internal/` holds everything that's not part of the public Go + API (which is none of it — restic-manager isn't a library). +- Per-feature packages live under `internal/server/...` for the + control plane and `internal/agent/...` for the agent. +- `web/templates/` are HTML templates rendered with the standard + library; embedded via `web.FS`. + +### Tests + +- Unit tests live alongside the code as `*_test.go`. Use the + in-process sqlite store (`store.Open(":memory:")`) when you need + state — there is no test mock layer to maintain. +- HTTP handlers test through `httptest.NewServer` against the real + router; see `internal/server/http/auth_test.go` for the canonical + fixture pattern. +- End-to-end tests live in `e2e/` and run against a Docker Compose + stack. See [`docs/e2e.md`](./docs/e2e.md). + +### Database migrations + +- Migrations are hand-rolled SQL in `internal/store/migrations/` + and embedded via `embed.FS`. +- Prefer column-level `ALTER TABLE` over rebuilds — see + [`CLAUDE.md`](./CLAUDE.md) "Migrations" section for the FK-cascade + trap that bit migration 0007's first draft. + +## Workflow + +### Before opening a PR + +1. **Open an issue first** for non-trivial changes. The design is + still moving; an issue lets us agree on direction cheaply. +2. Run `make lint test` locally — both must pass. +3. Match existing code style (see above). +4. Keep commits focused: one logical change per commit. Imperative + subject lines, body explaining why if it isn't obvious. +5. Don't add `Co-Authored-By` trailers — repo policy. If you used + AI assistance in writing the patch, that's fine; we just don't + pollute every commit message with attribution boilerplate. + +### Pull requests + +PRs target `main`. CI runs lint + tests on Linux amd64/arm64 and +Windows amd64; all three must be green to merge. Squash-merge is +the default; the PR title becomes the merge-commit subject, so +keep it short and informative. + +The PR template asks for: + +- A short description of what changed and why. +- A test plan (commands run, scenarios verified). +- Anything reviewers need to know to assess the change (related + issue, follow-up work, deferred concerns). + +### Reporting bugs + +Open an issue with: + +- restic-manager version (`server --version`) and agent version. +- restic version on the affected host. +- Steps to reproduce. +- Server and agent logs (sanitise any tokens before pasting). + +Security-sensitive bugs go through the [SECURITY.md](./SECURITY.md) +disclosure path instead — please don't open a public issue for +them. + +### Suggesting features + +Open an issue describing the use case (not just the proposed +solution). The roadmap in `tasks.md` shows where the project is +heading; if the suggestion fits a future phase we'll wire it in +there. If it falls outside the project's scope (multi-tenancy, SaaS, +non-restic backends — see `spec.md` §2 non-goals) we'll say so +early to save your time. + +## Code of conduct + +Project participation is governed by [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md). +The short version: be civil; assume good faith; harassment is not +tolerated. ## License -By contributing you agree that your contributions are licensed under -the [PolyForm Noncommercial 1.0.0](./LICENSE) license. +By contributing you agree that your contributions are licensed +under the [PolyForm Noncommercial 1.0.0](./LICENSE) license. diff --git a/Makefile b/Makefile index 767a534..b258757 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,18 @@ TAILWIND_URL := https://github.com/tailwindlabs/tailwindcss/releases/downlo TAILWIND_INPUT := web/styles/input.css TAILWIND_OUTPUT := web/static/css/styles.css -.PHONY: help build server agent test test-race lint fmt tidy clean run-server run-agent docker release tailwind tailwind-watch setup hooks smoke-restart smoke-stop smoke-status smoke-logs smoke-deploy +# mdBook for the docs site (P5-01). Single static binary, no +# Rust toolchain — same pattern as Tailwind. +MDBOOK_VERSION ?= v0.4.51 +MDBOOK_OS := $(shell uname -s | tr A-Z a-z) +MDBOOK_TRIPLE := $(shell uname -m)-unknown-$(if $(filter darwin,$(MDBOOK_OS)),apple-darwin,linux-gnu) +MDBOOK_BIN := $(BIN_DIR)/mdbook +MDBOOK_TARBALL := mdbook-$(MDBOOK_VERSION)-$(MDBOOK_TRIPLE).tar.gz +MDBOOK_URL := https://github.com/rust-lang/mdBook/releases/download/$(MDBOOK_VERSION)/$(MDBOOK_TARBALL) +DOCS_BOOK_DIR := docs/book +DOCS_BOOK_OUT := $(DOCS_BOOK_DIR)/book + +.PHONY: help build server agent test test-race lint fmt tidy clean run-server run-agent docker release tailwind tailwind-watch docs docs-watch setup hooks smoke-restart smoke-stop smoke-status smoke-logs smoke-deploy # ---- smoke-env tooling ------------------------------------------------- # The smoke server runs as a transient user-systemd unit so it survives @@ -60,6 +71,18 @@ tailwind-watch: $(TAILWIND_BIN) ## Watch and rebuild on every save @mkdir -p $$(dirname $(TAILWIND_OUTPUT)) $(TAILWIND_BIN) -c tailwind.config.js -i $(TAILWIND_INPUT) -o $(TAILWIND_OUTPUT) --watch +$(MDBOOK_BIN): + @mkdir -p $(BIN_DIR) + @echo "==> downloading mdbook $(MDBOOK_VERSION) ($(MDBOOK_TRIPLE))" + curl -fsSL "$(MDBOOK_URL)" | tar -xz -C $(BIN_DIR) mdbook + @chmod +x $@ + +docs: $(MDBOOK_BIN) ## Build the docs/book/ mdBook site into docs/book/book/ + $(MDBOOK_BIN) build $(DOCS_BOOK_DIR) + +docs-watch: $(MDBOOK_BIN) ## Serve the docs site at http://127.0.0.1:3000 with live reload + $(MDBOOK_BIN) serve $(DOCS_BOOK_DIR) -n 127.0.0.1 -p 3000 + agent: ## Build the agent binary @mkdir -p $(BIN_DIR) CGO_ENABLED=0 go build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(AGENT_BIN) ./cmd/agent @@ -90,7 +113,7 @@ tidy: ## go mod tidy go mod tidy clean: ## Remove build artifacts - rm -rf $(BIN_DIR) coverage.out coverage.html $(TAILWIND_OUTPUT) + rm -rf $(BIN_DIR) coverage.out coverage.html $(TAILWIND_OUTPUT) $(DOCS_BOOK_OUT) run-server: server ## Build and run the server $(SERVER_BIN) diff --git a/README.md b/README.md index 56419ed..b421d6d 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,62 @@ # restic-manager Self-hosted, browser-based, single-pane-of-glass for managing -[restic](https://restic.net) backups across a fleet of Linux and Windows -endpoints. +[restic](https://restic.net) backups across a fleet of Linux and +Windows endpoints. -> Status: pre-alpha. Phase 0 (project bootstrap) complete; Phase 1 (MVP) in -> progress. See [`spec.md`](./spec.md) for the design and -> [`tasks.md`](./tasks.md) for the roadmap. +> **Status:** pre-1.0, feature-complete for the original use +> case. Phases 0–4 + 6 are landed (MVP, scheduling, restore, +> RBAC + OIDC, observability); Phase 5 (OSS readiness — docs site, +> contributor onboarding, end-to-end CI) is in flight. See +> [`spec.md`](./spec.md) for the design and [`tasks.md`](./tasks.md) +> for the live roadmap. -## What it does (target) +## What it does -- Central visibility into backup state for every endpoint -- Trigger any restic operation remotely (`backup`, `forget`, `prune`, - `check`, `unlock`, `snapshots`, `stats`, `diff`, `restore`) -- Manage per-host backup schedules from the UI -- Live job progress streamed back to the UI -- Restore wizard (browse snapshots, pick paths, restore to original or - alternate host) -- Repo health surfacing (size, dedup ratio, last check, lock state) -- Alerting on failure or staleness -- Cross-platform agent (Linux + Windows) -- Ransomware-resistant repo access via append-only credentials +- Central visibility into backup state for every endpoint. +- Trigger any restic operation remotely (`backup`, `forget`, + `prune`, `check`, `unlock`, `snapshots`, `stats`, `diff`, + `restore`). +- Per-host schedules with named source groups + retention. +- Live job log streamed to the browser; downloadable as + text/NDJSON afterwards. +- Restore wizard: browse a snapshot's tree, pick paths, restore + in-place or to a new directory. +- Repo health surfacing (size, raw size, last check, lock state), + plus a 30/90-day repo-size trend. +- Alerting over webhook, ntfy, or SMTP. +- Cross-platform agent (Linux systemd + Windows SCM). +- Append-only-friendly: separate admin credential for prune. +- Optional Prometheus `/metrics` endpoint + sample Grafana + dashboard. +- Optional OIDC SSO (Authelia, Authentik, etc.). -## Architecture (one-line summary) +## Screenshots -A small Go control-plane on the Proxmox host, lightweight Go agents on each -endpoint that hold an outbound WebSocket to the control-plane, and a -`restic/rest-server` on Unraid that holds the actual backup data. The -control-plane never touches backup bytes. +| Sign in | Empty dashboard | Add host | +|:-------:|:---------------:|:--------:| +| ![Sign in](docs/screenshots/01-login.png) | ![Dashboard, fresh](docs/screenshots/02-dashboard-empty.png) | ![Add host](docs/screenshots/03-add-host.png) | + +| Alerts | Settings | Audit log | +|:------:|:--------:|:---------:| +| ![Alerts](docs/screenshots/04-alerts.png) | ![Settings](docs/screenshots/05-settings.png) | ![Audit log](docs/screenshots/06-audit.png) | + +(Screenshots from a fresh smoke install with no hosts. A populated +fleet view and the live-log + restore wizard surfaces are part of +the docs site under [`docs/book/`](./docs/book) — `make docs` to +render locally.) + +## Architecture (one-line) + +A small Go control-plane in Docker, lightweight Go agents on each +endpoint holding an outbound WebSocket to the control-plane, and +a restic repository (rest-server, S3, B2, SFTP — anything restic +speaks) that holds the actual backup data. **The control-plane +never touches backup bytes.** Full architecture diagram and component breakdown: -[`spec.md` §3](./spec.md). +[`spec.md` §3](./spec.md), or the rendered version in the +[docs site](./docs/book/src/concepts/architecture.md). ## Repository layout @@ -38,31 +64,63 @@ Full architecture diagram and component breakdown: cmd/server/ control-plane binary cmd/agent/ endpoint agent binary internal/api shared API types (REST + WS envelopes) -internal/server/ HTTP, WS, UI handlers +internal/server/ HTTP, WS, UI handlers, alert engine internal/agent/ service integration, restic runner, local scheduler internal/restic restic CLI wrapper internal/store SQLite persistence -internal/crypto secret encryption +internal/crypto secret encryption (AEAD) internal/auth passwords, sessions, agent tokens web/ server-rendered templates + static assets -deploy/ Dockerfile, docker-compose.yml, install scripts -design/ UI wireframes (Phase 0 design pass) +deploy/ Dockerfile, docker-compose.yml, install scripts, Grafana dashboard +docs/ prose docs + the mdBook site under docs/book +e2e/ compose stack + Playwright tests for end-to-end CI ``` +## Quickstart + +The reference deployment is a single Docker container fronted by +your existing reverse proxy. See the [installation guide](docs/book/src/getting-started/install.md) +for the full path; the very short version: + +```sh +export RM_VERSION=v0.9.0 # pin a real tag +export RM_BASE_URL=https://restic.example.com +export RM_TRUSTED_PROXY=10.0.0.0/8 +docker compose -f deploy/docker-compose.yml up -d +``` + +The server prints a one-time bootstrap token to the log on first +start. POST it to `/api/bootstrap` (or open `/bootstrap` in a +browser) to create the admin user. + ## Local development -Requires Go 1.25+ (built and tested on 1.26). The floor is set by -`modernc.org/sqlite` v1.50. +Requires Go 1.25+. The floor is set by `modernc.org/sqlite` v1.50. ```sh make build # builds cmd/server and cmd/agent into ./bin make test # runs go test ./... make lint # runs golangci-lint -make run-server # runs the server (dev defaults) +make smoke-restart # systemd --user smoke server (see CLAUDE.md) +make docs # renders the mdBook site to docs/book/book/ ``` +End-to-end test harness against a Docker Compose stack with a +sibling Linux agent: see [`docs/e2e.md`](docs/e2e.md). Runs in CI +on every PR. + +## Documentation + +- **Concepts and operator guides**: [docs site](docs/book/src/intro.md), + rendered with `make docs`. +- **Reverse-proxy setup**: [docs/reverse-proxy.md](docs/reverse-proxy.md). +- **Prometheus + Grafana**: [docs/prometheus.md](docs/prometheus.md). +- **End-to-end test harness**: [docs/e2e.md](docs/e2e.md). +- **Security policy**: [SECURITY.md](SECURITY.md). +- **Contributing**: [CONTRIBUTING.md](CONTRIBUTING.md). + ## License -PolyForm Noncommercial 1.0.0 — see [`LICENSE`](./LICENSE). Free for personal, -hobby, research, educational, governmental, and other noncommercial use. -Commercial use requires a separate license. +[PolyForm Noncommercial 1.0.0](./LICENSE). Free for personal, +hobby, research, educational, governmental, and other noncommercial +use. Commercial use requires a separate license. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..41a8bf3 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,137 @@ +# Security policy + +restic-manager handles credentials that grant access to backup +repositories — losing them means an attacker can read or destroy a +fleet's backups. We take security reports seriously even at this +project's small scale. + +## Supported versions + +Pre-1.0, only the latest tagged release on `main` is supported. +Backporting fixes to older tags is not currently offered. + +| Version | Supported | +|--------------------|----------------| +| `main` HEAD | Yes | +| Latest released tag| Yes | +| Anything older | No | + +## Reporting a vulnerability + +**Please don't open a public issue for security problems.** + +Instead, use one of these private channels: + +1. **Gitea private message** to the repository owner. The + instance is at and the owner's + profile (`steve`) has direct-message contact set up. +2. **Email** to the address on the maintainer's Gitea profile. + Use a subject like `[SECURITY] restic-manager: ` + so it doesn't get lost. PGP optional — if you want to encrypt, + ask for a key first. + +If you don't get an acknowledgement within **3 working days**, +please escalate through the other channel — solo maintainers do +miss things, and the goal here is to fix the problem, not to +preserve protocol. + +### What to include + +- A description of the issue and the impact (what does an attacker + gain? confidentiality, integrity, availability?). +- Affected component (server, agent, install script, docs). +- Affected version (`restic-manager-server --version`). +- Reproduction steps if you have them. A working PoC is welcome + but not required — a credible threat model is enough. +- Whether you intend to publish a writeup, and any timing + preferences. + +### What we'll do + +1. Acknowledge receipt within 3 working days. +2. Confirm or refute the issue, and agree a rough severity (CVSS + or just "this is bad / this isn't"). Asking clarifying + questions is normal at this stage — please don't read it as + foot-dragging. +3. Develop a fix on a private branch, test it, and prepare a + release. +4. Coordinate disclosure timing with you. The default is **30 + days from confirmed report to public disclosure**, with a + patched release published before the disclosure date. Faster + if a workable PoC is already circulating; slower only by + mutual agreement. +5. Credit the reporter in the release notes (or omit the credit + if you'd rather stay anonymous — your choice). + +## Scope + +In scope: + +- The server binary (`cmd/server`) and any HTTP, WebSocket, or CLI + surface it exposes. +- The agent binary (`cmd/agent`) and the way it consumes commands + from the server. +- The install scripts (`deploy/install/install.sh`, `install.ps1`) + and the systemd unit shipped with them. +- The docker-compose reference deployment and the docker image we + publish. +- Any cryptographic primitive choice or implementation detail + (AEAD, token hashing, session handling, OIDC handshake). +- Documentation that, if followed, leads operators into an + insecure configuration. + +Out of scope (not because they aren't real problems, just not ones +this report channel can act on): + +- Vulnerabilities in restic itself — report those upstream at + . +- Vulnerabilities in third-party dependencies that haven't yet been + patched upstream — report upstream first. +- Issues that require pre-authenticated admin access on the control + plane (admins can already do everything; that's not a privilege + escalation, that's the design). +- DoS via resource exhaustion on a deployment without the + recommended reverse proxy / rate limiting in front (see + `docs/reverse-proxy.md`). +- Social-engineering scenarios that don't have a technical hook + into the project's own surfaces. + +## Threat model summary + +For context (longer version in [`spec.md`](./spec.md) §11): + +- The server is **HTTP-only**; TLS termination, ACME, HSTS, and + edge rate-limiting are the reverse proxy's job. +- Credentials are encrypted at rest with an AEAD key loaded from + `RM_SECRET_KEY_FILE`. The same key encrypts agent secrets that + travel to the agent over the WS channel. +- Agents authenticate with bearer tokens issued at enrolment and + hashed at rest. Compromise of the server DB does **not** leak + bearer tokens in plaintext, but does leak the hashes (which is + enough to log in *as* the agent until the operator revokes — + see [NS-01 / NS-02](./tasks.md) for the revoke + regenerate + flows). +- The control plane intentionally **never touches backup bytes** — + the agent runs `restic` directly against the repo. A + compromised control plane can dispatch new jobs but cannot + exfiltrate snapshot contents in-band. +- Append-only credentials are first-class. Forget/prune jobs use a + separate, admin-marked credential that the server only pushes + for the duration of a maintenance dispatch. + +## Hardening checklist for operators + +- Run behind a TLS-terminating reverse proxy (Caddy/nginx/Traefik). +- Set `RM_TRUSTED_PROXY` to the proxy's CIDR so request IPs aren't + spoofable. +- Back up `RM_SECRET_KEY_FILE` separately from the database. + Without it the encrypted creds are unrecoverable. +- Use append-only credentials for the everyday backup path; only + the optional admin credential should have write/forget/prune + power. +- Disable users (don't delete) when staff change roles — bearer + tokens stay valid until rotated. +- Watch the alert and audit-log views during enrolment of new + hosts. + +Thanks for helping keep restic-manager users safe. diff --git a/docs/book/book.toml b/docs/book/book.toml new file mode 100644 index 0000000..a4ef953 --- /dev/null +++ b/docs/book/book.toml @@ -0,0 +1,19 @@ +[book] +title = "restic-manager" +description = "Self-hosted control plane for restic backups across a fleet of Linux and Windows endpoints." +authors = ["Steve Cliff"] +language = "en-GB" +multilingual = false +src = "src" + +[output.html] +default-theme = "ayu" +preferred-dark-theme = "ayu" +git-repository-url = "https://gitea.dcglab.co.uk/steve/restic-manager" +git-repository-icon = "fa-code-fork" +edit-url-template = "https://gitea.dcglab.co.uk/steve/restic-manager/_edit/main/docs/book/{path}" +no-section-label = false + +[output.html.fold] +enable = true +level = 2 diff --git a/docs/book/src/SUMMARY.md b/docs/book/src/SUMMARY.md new file mode 100644 index 0000000..558e792 --- /dev/null +++ b/docs/book/src/SUMMARY.md @@ -0,0 +1,40 @@ +# Summary + +[Introduction](./intro.md) + +# Getting started + +- [Installing the server](./getting-started/install.md) +- [Enrolling your first host](./getting-started/enrolling-hosts.md) +- [Running behind a reverse proxy](./getting-started/reverse-proxy.md) + +# Concepts + +- [Architecture](./concepts/architecture.md) +- [Credentials and how they flow](./concepts/credentials.md) +- [Schedules and source groups](./concepts/schedules-and-source-groups.md) +- [Repo maintenance](./concepts/repo-maintenance.md) + +# Operations + +- [Backups and restores](./operations/backups-and-restores.md) +- [Alerts and notifications](./operations/alerts.md) +- [Observability with Prometheus](./operations/observability.md) +- [Updating agents](./operations/updates.md) + +# Security + +- [Threat model](./security/threat-model.md) +- [Hardening checklist](./security/hardening.md) +- [Reporting vulnerabilities](./security/disclosure.md) + +# Reference + +- [Environment variables](./reference/env-vars.md) +- [HTTP endpoints](./reference/http-endpoints.md) + +--- + +[Contributing](./contributing.md) +[Roadmap](./roadmap.md) +[License](./license.md) diff --git a/docs/book/src/concepts/architecture.md b/docs/book/src/concepts/architecture.md new file mode 100644 index 0000000..f1706da --- /dev/null +++ b/docs/book/src/concepts/architecture.md @@ -0,0 +1,121 @@ +# Architecture + +## Components + +``` +┌────────────────────────────────────────────────────────────┐ +│ Server (control plane, single process) │ +│ * chi-based HTTP API + HTMX server-rendered UI │ +│ * WebSocket hub for agent fan-out + browser fan-out │ +│ * SQLite store (modernc.org/sqlite, pure Go) │ +│ * AEAD encryption helpers │ +│ * Alert engine + notification hub │ +└────────────┬───────────────────────────────────┬───────────┘ + │ outbound WS only │ HTTP(S) + │ │ +┌────────────▼─────────────┐ ┌────────────▼─────────────┐ +│ Agent (per host) │ │ Browser (operator) │ +│ * coder/websocket │ │ * htmx + a tiny bit │ +│ * cron for schedules │ │ of vanilla JS for │ +│ * restic wrapper │ │ live job updates │ +│ * sysinfo collector │ └──────────────────────────┘ +└────────────┬─────────────┘ + │ subprocess: restic ... + │ +┌────────────▼─────────────────────────────────────────────────┐ +│ restic repository (rest-server, S3, B2, SFTP, local …) │ +│ Backup data flows directly here. Server never touches it. │ +└──────────────────────────────────────────────────────────────┘ +``` + +## Why outbound-only WebSockets? + +The agent dials the server on `/ws/agent` with a bearer token. The +server doesn't initiate connections to the agent. Three reasons: + +1. **Firewall friendliness.** Nothing on the endpoint needs an + inbound port; this works behind the typical "branch office NAT" + without router config. +2. **Single auth point.** The bearer token is the only credential + that crosses the boundary; the agent never accepts an + incoming socket. +3. **Reconnect semantics are simpler.** When the connection drops + (NAT timeout, server restart, transient network glitch) the + agent backs off and re-dials; the server marks the host + offline after 90s and lets the alert engine raise a stale-host + alert. + +## Why SQLite? + +SQLite covers the project's HA non-goal: there isn't one. A small +control plane managing twelve endpoints does not need replication +or a separate database tier. SQLite gives us: + +- A single file to back up (plus the secret key). +- Hand-rolled migrations under `internal/store/migrations/` — + no migration framework lock-in. +- `WAL` mode plus per-connection foreign-key enforcement. + +The migrations file the entire schema; there's no ORM or +query-builder layer between Go code and SQL. + +## Why the agent runs `restic` itself, not via the server + +The control plane never holds backup bytes in flight. That's +deliberate: + +- A compromised control plane cannot exfiltrate snapshot + contents in-band — at worst it can dispatch new backup or + forget jobs (audit-logged) but the data path is between the + agent and the repository. +- The same agent process can target whichever transport restic + natively supports (rest-server, S3, B2, SFTP, local), no + separate mux on the server side. + +## Job lifecycle + +``` + ┌──────────────────────┐ +operator → │ POST /hosts/{id}/ │ + │ run-backup │ + └──────────┬───────────┘ + │ 1. INSERT INTO jobs (status='queued') + │ 2. dispatch command.run over WS + ▼ + ┌──────────────────────┐ + │ Agent dispatches │ + │ restic subprocess │ + └──────────┬───────────┘ + │ + │ 3. job.started ───▶ store.MarkJobStarted + │ 4. job.progress ───▶ JobHub broadcast (live UI) + │ 5. log.stream ───▶ append to job_logs + │ 6. job.finished ───▶ store.MarkJobFinished + │ + alert engine eval + │ + (P6) metrics histogram + ▼ + terminal: succeeded | failed | cancelled +``` + +Operators see live updates because the browser subscribes to +`/api/jobs/{id}/stream`, and the WS handler broadcasts each +agent-emitted envelope to all live subscribers in addition to +persisting it. + +## What scheduling looks like + +- The agent runs a local `robfig/cron/v3` instance. +- The server pushes the desired schedule set to the agent on + hello + after every CRUD change. +- When the agent's cron fires, it sends `schedule.fire` to the + server. The server creates a job row, sends `command.run` back, + and the agent dispatches a normal backup. +- If the WS drops between fire and run, the server queues the + schedule firing into `pending_runs` and drains on agent + reconnect — no missed scheduled backups due to network blips. + +For everything that isn't a backup (forget, prune, check), the +server runs a 60-second maintenance ticker against +`host_repo_maintenance` rows and dispatches the relevant command +when a cadence is due. The agent's local cron only handles +backups. diff --git a/docs/book/src/concepts/credentials.md b/docs/book/src/concepts/credentials.md new file mode 100644 index 0000000..58e1ed4 --- /dev/null +++ b/docs/book/src/concepts/credentials.md @@ -0,0 +1,98 @@ +# Credentials and how they flow + +restic-manager handles three credential surfaces: + +1. **Operator credentials** — the username + password (or OIDC + identity) that logs into the UI. +2. **Agent bearer tokens** — issued at enrolment, used by the + agent to authenticate its WebSocket to the server. +3. **Repo credentials** — the rest-server / S3 / B2 / SFTP + credentials the agent passes to `restic` itself. + +Each has a different threat model and storage strategy. + +## Operator credentials + +- Local users are stored in `users` with a bcrypt password hash. +- Sessions are random tokens minted at login, stored hashed in + the `sessions` table, expired after 24h. Cookie is HttpOnly, + SameSite=Lax, and Secure (when `RM_COOKIE_SECURE=true`, + default). +- OIDC users carry `auth_source='oidc'` and an `oidc_subject` + pinning their IdP identity. Local password login is rejected + for OIDC users. +- Disabling a user soft-deletes them via `disabled_at` — + pre-existing sessions are invalidated on the next request. + +## Agent bearer tokens + +- Minted at enrolment, hashed at rest with `auth.HashToken`. +- The plaintext token only exists in memory at enrolment time + and on the agent's filesystem (`/etc/restic-manager/agent.yaml`, + mode `0600`, owned by the service user). +- Compromise of the server DB leaks the hashes, which is enough + to *log in as that agent* until you revoke. Compromise of the + agent host leaks the plaintext (via the config file) — same + end result. +- Rotation: re-enrol the host. Today there's no in-place rotate; + the operator deletes the host (which cascades, including + revoking the bearer hash) and re-runs the install command. + +## Repo credentials + +This is the credential that ultimately matters for backup +integrity. restic-manager keeps two slots per host: + +- **The everyday credential** (`host_credentials.kind = ''`). + Append-only-friendly: this is the one your backup schedule + uses. It can write but not delete or forget. +- **The admin credential** (`host_credentials.kind = 'admin'`). + Has full delete rights. Only pushed to the agent transiently + while a `prune` or `forget` job is dispatching, and discarded + by the agent after the job ends. + +### Encryption flow + +1. Operator types the credential into the UI or the install form. +2. Server AEAD-encrypts the cred (`crypto.AEAD.Encrypt`) using the + key in `RM_SECRET_KEY_FILE`. The plaintext is dropped from + memory. +3. Encrypted blob is stored in `host_credentials.cred_blob`. +4. When the agent connects, the server decrypts the blob and + sends the **plaintext** down the WebSocket inside a + `config.update` envelope. +5. The agent stores the plaintext in its in-memory secrets store + for the lifetime of the process; it's reloaded fresh on every + server-side push. +6. When a job runs, the agent merges the credential into the + restic environment (`restic.Env.RepoURL` stays bare; the + `user:pass@…` form is built only inside `envSlice()` at the + moment of `exec.Command`). + +The merged form is **never logged**. The slog package's structured +output gets `restic.RedactURL()` for any URL it has cause to +mention. + +### Why push plaintext over the wire? + +The transport itself is the trust boundary: the WebSocket runs +inside the same TLS-terminated reverse-proxy connection your +browser uses, and the agent has already authenticated with its +bearer token. Re-encrypting the payload on top of that would just +move the key-management problem somewhere else. + +If your reverse proxy isn't TLS-terminated, the deployment is +already broken — see [Hardening](../security/hardening.md). + +## Setup tokens (admin-driven) + +When an admin creates a new user, the server mints a one-time +setup link valid for 1 hour. The hash is stored; the raw token +is shown to the admin once. The user opens the link, sets a +password, and is dropped into a session. Expired tokens are +swept on the alert engine's 60s tick. + +Same pattern for enrolment tokens: the raw token only exists in +memory at mint time, and the install snippet is the operator's +only chance to capture it. If you lose it, regenerate via the +**Add host** page (NS-02). diff --git a/docs/book/src/concepts/repo-maintenance.md b/docs/book/src/concepts/repo-maintenance.md new file mode 100644 index 0000000..d4a3995 --- /dev/null +++ b/docs/book/src/concepts/repo-maintenance.md @@ -0,0 +1,85 @@ +# Repo maintenance + +Backups go in; without maintenance, repos grow forever and +eventually fall over. restic-manager runs three maintenance +operations on a per-host cadence: + +| Command | What it does | Default cadence | +|----------|-------------------------------------------------------------|-----------------| +| `forget` | Marks snapshots eligible for removal per the retention policy attached to each source group. Cheap; runs append-only. | Daily after the last backup of the day | +| `prune` | Reclaims space from the repo. Requires the **admin** credential (write+delete). | Weekly, off-peak | +| `check` | Verifies repo integrity. Sub-options surface lock state. | Weekly, with `--read-data-subset N%` to sample pack files | + +A new field on each host row, `host_repo_maintenance`, holds the +cron expressions and last-fire anchors. The maintenance ticker on +the server runs every 60s, finds hosts whose next-fire is due, +and dispatches the right command. The agent's local cron is +**only** for backups. + +## Why server-side and not agent-side? + +The agent's cron knows about backups because backups are +per-source-group. Maintenance is per-repo, not per-source-group, +so doing it server-side keeps the per-host wiring simple: + +- One ticker, not N agent crons to keep in sync. +- Cancelling a maintenance dispatch is just "don't dispatch the + next one" — no agent-side state to clean up. +- Skipping offline hosts is trivial (no queue; only scheduled + *backups* queue into `pending_runs`). + +## Forget and the multi-group payload + +A single `forget` job can target several source groups at once. +The wire envelope (`ForgetGroups`) carries one entry per group, +each with its retention policy. The agent runs N +`restic forget --tag --keep-...` invocations in sequence, +streams their output, and reports a single terminal status. + +## Prune and the admin credential + +Prune mutates the repo. The everyday append-only credential +**cannot** prune — that's the whole point of append-only. +restic-manager keeps a second slot per host (`kind = 'admin'`) +for the credential that can. + +When a prune is dispatched (cadence-driven or operator-driven): + +1. Server pushes the admin credential to the agent in a fresh + `config.update`. +2. Agent runs `restic prune` with the merged credential. +3. Job finishes; agent discards the admin credential from its + in-memory secrets store. + +The server never logs the merged URL (see +[Credentials](./credentials.md)). + +## Check and lock state + +`restic check` warns about stale locks when it finds them. The +agent ships every check's output back as a `repo.stats` envelope +and a stream of log lines; if a stale lock is detected, the +**Repo** page surfaces a banner with an **Unlock** button. The +operator-only `unlock` command runs `restic unlock` and clears +the banner. + +`unlock` has no cadence — it's a manual action, never automatic. +Auto-unlocking would mask the cause (probably a previously +crashed long-running operation) and risk corrupting an +operation the operator has merely lost track of. + +## Repo stats + +After every backup, check, prune, and unlock, the agent runs +`restic stats --json --mode raw-data` and ships the result as a +`repo.stats` envelope. The server stores this in +`host_repo_stats` (latest only) and `host_repo_stats_history` +(one row per host per day, last-write-wins per column — a +prune-only patch never nulls a backup-time size). + +The host detail page surfaces: + +- Total size + raw size in the vitals strip. +- Last-check timestamp + colour-coded status. +- Last-prune timestamp. +- 30/90-day repo size trend chart. diff --git a/docs/book/src/concepts/schedules-and-source-groups.md b/docs/book/src/concepts/schedules-and-source-groups.md new file mode 100644 index 0000000..0a74bf5 --- /dev/null +++ b/docs/book/src/concepts/schedules-and-source-groups.md @@ -0,0 +1,105 @@ +# Schedules and source groups + +Two related but separable ideas: + +- A **source group** is a named bundle of "what to back up": + include paths, exclude patterns, retention policy, retry + configuration, optional pre/post hooks. The group's name is + used as the restic snapshot tag, so retention can target it + with `restic forget --tag `. +- A **schedule** is a cron expression that, when it fires, + triggers a backup of one or more source groups on a host. + +Decoupling them means you can have one schedule covering several +groups (e.g. `0 1 * * *` running both `system` and `data`), and +each group has its own retention without duplicating policy +across schedules. + +## Source group anatomy + +```yaml +name: data +includes: + - /var/lib/postgresql + - /home +excludes: + - /home/*/.cache + - /home/*/Downloads +retention: + keep_last: 7 + keep_daily: 14 + keep_weekly: 4 + keep_monthly: 6 +retry_max: 3 +retry_backoff_seconds: 600 +pre_hook: | + pg_dump -U postgres -F c -f /var/lib/postgresql/dumps/all.dump +post_hook: | + rm -f /var/lib/postgresql/dumps/all.dump +``` + +### Conflict detection + +If your retention policy says `keep_hourly: 24` but no schedule +points at this group sub-daily, the UI surfaces a +**conflict-dimension banner** ("`hourly` won't be honoured — +no schedule fires more often than once a day"). The flag is +stored on the source group (`conflict_dimension`) and refreshed +whenever a schedule or group changes. + +### Hooks + +`pre_hook` and `post_hook` run on the agent host inside +`/bin/sh -c` (`cmd.exe /C` on Windows). Output is streamed back +to the live job log as `hook(): …` lines. + +- A non-zero `pre_hook` exit aborts the backup. +- `post_hook` always runs, with `RM_JOB_STATUS=succeeded|failed` + in the environment. Use this for cleanup that must happen + whether the backup worked or not. +- Hooks only run for `kind=backup` jobs. They do not run for + `forget`, `prune`, `check`, etc. +- AEAD-encrypted at rest at the HTTP layer; the agent receives + plaintext over the WS channel. + +A "host default" pair of hooks lives on the host itself; a +source group's own hooks override them when set. + +## Schedule anatomy + +```yaml +cron: "0 2 * * *" +enabled: true +source_group_ids: + - + - +``` + +Slim by design: a schedule says **when** and **which groups**. +Everything else (paths, retention, hooks) lives on the groups. + +The agent's local cron fires the schedule. If the WebSocket is +down at fire time, the server queues the firing into +`pending_runs` and drains it on the next agent reconnect — a +short network blip won't lose the backup. + +### Last / next run + +The schedules tab shows "next" (computed by parsing the cron +expression with `robfig/cron/v3`) and "last" (the latest +`actor_kind=schedule` job in the `jobs` table) for every +schedule. The dashboard host row also surfaces `next 12h ago/from +now` when a single covering schedule is the run-now candidate. + +## Bandwidth limits + +Two places set restic's `--limit-upload` / `--limit-download`: + +1. **Host-wide caps** on the host row (`bandwidth_up_kbps`, + `bandwidth_down_kbps`). Pushed to the agent on hello and + after `PUT /api/hosts/{id}/bandwidth`. Apply to every restic + invocation on the host. +2. **Per-job overrides** on the per-source-group Run-now form. + Win over host caps for the lifetime of that one job. + +If neither is set, restic runs unthrottled. diff --git a/docs/book/src/contributing.md b/docs/book/src/contributing.md new file mode 100644 index 0000000..67f0b16 --- /dev/null +++ b/docs/book/src/contributing.md @@ -0,0 +1,17 @@ +# Contributing + +Full contributor guide: +[`CONTRIBUTING.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/CONTRIBUTING.md) +in the repository root. + +The short version: + +- Open an issue first for non-trivial changes; the design is + still moving and unsolicited large PRs may conflict with + in-flight work. +- `make lint test` must pass. +- One logical change per commit, no `Co-Authored-By` trailers. +- UK English in identifiers and comments; comments explain the + **why** not the **what**. + +Code of conduct: [`CODE_OF_CONDUCT.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/CODE_OF_CONDUCT.md). diff --git a/docs/book/src/getting-started/enrolling-hosts.md b/docs/book/src/getting-started/enrolling-hosts.md new file mode 100644 index 0000000..8889d0b --- /dev/null +++ b/docs/book/src/getting-started/enrolling-hosts.md @@ -0,0 +1,113 @@ +# Enrolling your first host + +The control plane only knows about hosts you've explicitly +enrolled. Two paths exist: + +1. **Token-based enrolment** — admin generates a token, pastes it + into an install command on the host. The host appears immediately, + already mapped to the desired repo. +2. **Announce-and-approve** — the agent runs without a token, + "announces" itself to the server, and a human in the UI accepts + the announcement. + +Token-based is the default and what most operators want; the +announce flow exists for the case where you can't easily paste a +secret onto the host (auto-imaged endpoints, scripted bring-ups +from a config repo). + +## Token-based enrolment + +### From the UI + +1. Click **+ Add host** on the dashboard. +2. Fill in the hostname, the restic repo URL, and the repo + credentials. The credentials are AEAD-encrypted at the server + immediately; what you paste is what the agent receives. +3. Optionally pick the initial source paths — these become the + first source group on the host. +4. Submit. The server mints a one-time token and shows you a copy- + pasteable install snippet. + +### On the host (Linux) + +```sh +curl -fsSL https://restic.example.com/install/install.sh | \ + sudo RM_SERVER=https://restic.example.com \ + RM_ENROL_TOKEN= \ + bash +``` + +The script: + +1. Detects architecture (`amd64` or `arm64`). +2. Downloads the agent binary from `/agent/binary?os=…&arch=…`. +3. Drops the systemd unit at + `/etc/systemd/system/restic-manager-agent.service`. +4. Runs the agent in `-enrol` mode, which posts the token and + stores the persistent bearer it gets back. +5. Enables and starts the unit. + +Within seconds the host should appear on the dashboard as +**online**. + +### On the host (Windows) + +```pwsh +$env:RM_SERVER = "https://restic.example.com" +$env:RM_ENROL_TOKEN = "" +iwr -useb $env:RM_SERVER/install/install.ps1 | iex +``` + +Equivalent shape: registers a Windows service via the SCM +(see P2-16 for details), runs `-enrol`, starts the service. + +## Recovering a lost token + +Tokens are single-use and short-lived (1h). If you closed the tab +before pasting the install command, head to the **Add host** page — +outstanding tokens are listed there with a **Regenerate** button. +Regenerating revokes the old token's hash and mints a fresh raw +token while preserving the original repo credentials and initial +paths. (NS-02 in `tasks.md` if you want the design rationale.) + +## Announce-and-approve + +If the host can reach the server but you don't want to paste a +secret on it, run the agent in `-announce` mode: + +```sh +restic-manager-agent -announce \ + -server https://restic.example.com \ + -hostname myhost +``` + +The host appears in the **Pending hosts** panel on the dashboard +with its hostname, OS, arch, and the source IP that announced it. +Click **Accept**, fill in the repo URL + credentials, and the +server pushes the bearer over the still-open WebSocket. No +back-and-forth round trip. + +If you don't accept within an hour the announcement is swept. + +## What happens on the agent + +After enrolment, the agent: + +1. Connects via WebSocket to `/ws/agent` with its bearer token. +2. Sends a `hello` envelope with its OS, arch, agent version, + restic version, and protocol version. +3. Receives a `config.update` carrying its encrypted repo + credentials and any source-group paths. +4. Sits idle, sending a heartbeat every 30s. Operator-driven + "Run now" actions arrive as `command.run` envelopes; scheduled + jobs are driven by the agent's local cron. + +## Auto-init of the repository + +The first time a backup runs, the agent invokes `restic init` +against the repo you configured at enrolment. If the repo already +exists (`config file already exists`) the agent treats it as a +success and proceeds. The host's repo status (`unknown` → +`ready` / `init_failed`) is surfaced under the vitals strip on +the host detail page; if init fails, save fresh credentials in +the **Repo** tab to retry. diff --git a/docs/book/src/getting-started/install.md b/docs/book/src/getting-started/install.md new file mode 100644 index 0000000..106107b --- /dev/null +++ b/docs/book/src/getting-started/install.md @@ -0,0 +1,92 @@ +# Installing the server + +The reference deployment is a single Docker container fronted by +your existing reverse proxy. The image bundles the server binary, +the cross-compiled agent binaries, and the install scripts. + +## Prerequisites + +- A Linux host with Docker and Docker Compose. +- A reverse proxy in front (Caddy, nginx, Traefik) terminating + TLS on a public hostname. The server itself is HTTP-only by + design — see [Reverse proxy](./reverse-proxy.md) for why. +- A persistent volume for the server's data directory. + +## Quick start + +The reference compose file lives at +[`deploy/docker-compose.yml`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/deploy/docker-compose.yml): + +```yaml +services: + restic-manager: + image: gitea.dcglab.co.uk/steve/restic-manager:${RM_VERSION:-latest} + restart: unless-stopped + environment: + RM_LISTEN: ":8080" + RM_DATA_DIR: "/data" + RM_BASE_URL: "https://restic.example.com" + # Trust your reverse proxy's CIDR so X-Forwarded-* are honoured. + RM_TRUSTED_PROXY: "10.0.0.0/8" + volumes: + - rm-data:/data + ports: + # Bind localhost only — your reverse proxy is the public face. + - "127.0.0.1:8080:8080" + +volumes: + rm-data: +``` + +Bring it up: + +```sh +docker compose up -d +docker compose logs -f restic-manager +``` + +The first run prints a one-time **bootstrap token** to the log. Use +it within an hour or it expires; if you miss the window the +container print it again on next start as long as no admin user +exists. + +## First-run admin setup + +Open `https://restic.example.com/bootstrap` (or whatever your +public URL is). Paste the bootstrap token, pick a username and a +password (≥ 12 characters), and submit. You'll land in the +dashboard logged in as the new admin. + +If you'd rather curl it, the equivalent is: + +```sh +curl -X POST https://restic.example.com/api/bootstrap \ + -H 'Content-Type: application/json' \ + -d '{"token":"","username":"admin","password":"<≥12 chars>"}' +``` + +## Backing up the secret key + +Inside the data volume, `secret.key` holds the AEAD key used to +encrypt every credential at rest. **Back it up separately from +the database.** Without it, encrypted credentials in the database +are unrecoverable; you'd have to re-enrol every host. + +A simple working approach: copy `secret.key` to your password +manager or to a separately-backed-up secrets vault the day you +install. It doesn't change. + +## Updating the server + +```sh +# Pin a new version in your compose file (.env or docker-compose.yml), +# then: +docker compose pull +docker compose up -d +``` + +Migrations run automatically on startup; the server will refuse to +start if a migration fails (better to bail than to half-migrate). + +For the agent self-update story, see +[Updating agents](../operations/updates.md). diff --git a/docs/book/src/getting-started/reverse-proxy.md b/docs/book/src/getting-started/reverse-proxy.md new file mode 100644 index 0000000..e0f55a4 --- /dev/null +++ b/docs/book/src/getting-started/reverse-proxy.md @@ -0,0 +1,95 @@ +# Running behind a reverse proxy + +The restic-manager server is HTTP-only by design. TLS termination, +public hostname, ACME, HSTS, and edge-level rate limiting all +belong to a reverse proxy you already operate outside this project. + +## What the proxy must forward + +The server reads four headers when (and only when) the immediate +peer matches `RM_TRUSTED_PROXY`: + +| Header | Value | Why | +|------------------------|----------------------------------------------------|-----| +| `X-Forwarded-For` | The original client IP | Rate-limit keys, audit log entries, OIDC redirect-URI checks. | +| `X-Forwarded-Proto` | `https` | Used for absolute URLs (e.g. OIDC redirect URIs). | +| `Host` | The public hostname clients use | Cookies are scoped to this; `RM_BASE_URL` must match. | +| `Connection` / `Upgrade` | Pass through unchanged | `/ws/agent` and `/api/jobs/{id}/stream` are WebSockets; without `Upgrade: websocket` they fail. | + +Set `RM_TRUSTED_PROXY` to the CIDR (or comma-separated list of +CIDRs) the proxy connects from. Anything outside that range has +its `X-Forwarded-*` headers ignored, so a stray request that +bypasses the proxy can't spoof the client IP. + +## Caddy + +```caddyfile +restic.example.com { + encode zstd gzip + reverse_proxy 127.0.0.1:8080 { + header_up X-Real-IP {remote_host} + } +} +``` + +Caddy adds `X-Forwarded-For` / `X-Forwarded-Proto` automatically +and passes WebSocket headers through by default, so this is the +whole config. + +## nginx + +```nginx +server { + listen 443 ssl http2; + server_name restic.example.com; + + ssl_certificate /etc/letsencrypt/live/restic.example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/restic.example.com/privkey.pem; + + location / { + proxy_pass http://127.0.0.1:8080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + + # WebSocket upgrade + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # Long-lived agent WS — disable read timeout for this surface. + proxy_read_timeout 86400s; + } +} +``` + +## Traefik + +```yaml +http: + routers: + restic-manager: + rule: "Host(`restic.example.com`)" + entryPoints: [websecure] + tls: + certResolver: letsencrypt + service: restic-manager + + services: + restic-manager: + loadBalancer: + servers: + - url: "http://restic-manager:8080" + passHostHeader: true +``` + +Traefik forwards WebSocket upgrades and the standard +`X-Forwarded-*` set out of the box. + +## Verification + +After bringing the proxy up, the audit log should show your real +client IP for an interactive login (not the proxy's local +address). If you see `127.0.0.1` or the proxy's container IP, your +`RM_TRUSTED_PROXY` is wrong or `X-Forwarded-For` isn't being +forwarded. diff --git a/docs/book/src/intro.md b/docs/book/src/intro.md new file mode 100644 index 0000000..5f265a9 --- /dev/null +++ b/docs/book/src/intro.md @@ -0,0 +1,86 @@ +# restic-manager + +restic-manager is a self-hosted, browser-based, single-pane-of-glass +for managing [restic](https://restic.net) backups across a fleet of +Linux and Windows endpoints. It's designed for **small fleets** — +the original target was twelve endpoints — and **one operator**. + +## What it does + +- Centralised view of every endpoint's last backup, repo size, + snapshot count, and recent jobs. +- Trigger any restic operation remotely (`backup`, `forget`, `prune`, + `check`, `unlock`, `snapshots`, `stats`, `diff`, `restore`). +- Per-host backup schedules with source groups (named bundles of + paths + retention policy). +- Live job log streamed to the browser; downloadable as text or NDJSON. +- Restore wizard with snapshot tree browse + path selection. +- Repo-level health surfacing (size, raw size, last-check, lock + state) plus a 30/90-day size trend. +- Alerting over webhook, ntfy, or SMTP. +- Cross-platform agent (Linux + Windows). +- Append-only-credential-friendly with a separate admin credential + for forget/prune. + +## What it isn't + +- **Not a SaaS.** Single-instance, single-tenant, by design. +- **Not a replacement for restic** — it's a control plane. The agent + shells out to a real `restic` binary. +- **Not highly available.** SQLite, single process; if you need + HA backups, you're shopping in the wrong aisle. +- **Not a multi-protocol backup tool.** restic only. + +## How it fits together + +``` +┌──────────────────────────────────────────────┐ +│ Server (control plane, Docker) │ +│ - REST + WebSocket API │ +│ - SQLite store │ +│ - Embedded HTMX UI │ +└──────────┬─────────────────────────┬─────────┘ + │ outbound WS │ HTTP(S) + │ │ +┌──────────▼──────────┐ ┌──────────▼─────────┐ +│ Agent (per host) │ │ Browser (operator) │ +│ - restic wrapper │ └─────────────────────┘ +│ - cron for sched. │ +└──────────┬──────────┘ + │ restic +┌──────────▼──────────────────────────────────┐ +│ rest-server / S3 / SFTP / local repo │ +│ (the actual backup data — server never │ +│ touches it) │ +└─────────────────────────────────────────────┘ +``` + +The control plane is a Go binary that runs in Docker. Each endpoint +runs a small Go agent that holds an outbound WebSocket to the +control plane. Backup data flows directly between the agent and the +restic repository — the control plane never sees a snapshot byte. + +## Where to start + +- [Installing the server](./getting-started/install.md) walks + through the Docker-based reference deployment. +- [Enrolling your first host](./getting-started/enrolling-hosts.md) + covers the install scripts and the announce-and-approve flow. +- [Architecture](./concepts/architecture.md) is the right read if + you want to know why something is the way it is before running + the install. + +## Project status + +Pre-1.0 but feature-complete for the original use case. Phases +0–4 are landed (MVP, scheduling, restore, RBAC + OIDC); Phase 5 +(this docs site, contributor onboarding, end-to-end CI) is in +flight. See [`tasks.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/tasks.md) +for the live roadmap and [`spec.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/spec.md) +for the canonical design doc. + +## License + +[PolyForm Noncommercial 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0/). +Personal and community deployments welcome; commercial use +requires a separate license. diff --git a/docs/book/src/license.md b/docs/book/src/license.md new file mode 100644 index 0000000..a627198 --- /dev/null +++ b/docs/book/src/license.md @@ -0,0 +1,39 @@ +# License + +restic-manager is licensed under +[**PolyForm Noncommercial 1.0.0**](https://polyformproject.org/licenses/noncommercial/1.0.0/). +The full text lives at +[`LICENSE`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/LICENSE) +in the repository root. + +## What this means + +- **Personal, hobbyist, educational, charitable, and similar + noncommercial use** is fully permitted, including modification + and redistribution. +- **Commercial use is not permitted** without a separate + license. The maintainer is not currently offering one — if + you need commercial rights, open an issue to start the + conversation. +- The license is permissive about everything except commercial + use: you can fork, modify, deploy in your home/lab, and + contribute back. + +## Why this license + +The PolyForm Noncommercial license was chosen because: + +- It's a real, legal, plainly-worded license (not a custom + half-written variant). +- It permits the realistic uses for a hobby project (the + maintainer's homelab, a friend's fleet, a charity's IT + closet) without inviting commercial vendors to repackage + the work. +- It's compatible with the project staying small and + maintainable — the maintainer doesn't want to be on the hook + for SLA-grade commercial support. + +## Contributions + +By contributing, you agree your contributions are licensed +under the same PolyForm Noncommercial 1.0.0 license. diff --git a/docs/book/src/operations/alerts.md b/docs/book/src/operations/alerts.md new file mode 100644 index 0000000..cb73f8f --- /dev/null +++ b/docs/book/src/operations/alerts.md @@ -0,0 +1,73 @@ +# Alerts and notifications + +restic-manager raises alerts on conditions that need human +attention. The alert engine evaluates rules on a 60s tick and +on every job-finished / host-online event. + +## Built-in alert kinds + +| Kind | Trigger | Severity | +|---------------------|---------|----------| +| `backup_failed` | A backup job ends in `failed` or `cancelled` | warning | +| `forget_failed` | A forget job ends in `failed` | warning | +| `prune_failed` | A prune job ends in `failed` | critical | +| `check_failed` | A check job ends in `failed` | critical | +| `agent_offline` | A host has been offline more than 90s past its heartbeat cadence | warning | +| `stale_schedule` | A schedule's "last run" is more than 1.5 × its interval ago | warning | +| `update_failed` | An agent self-update returned a fail or didn't reconnect within 90s | warning | +| `fleet_update_halted`| The rolling fleet-update worker stopped on a failure | critical | + +Each alert has a `dedup_key` so re-firing the same condition +just bumps `last_seen_at` — the operator gets one row per +condition, not a thousand. + +## Lifecycle + +``` +raised ──acknowledge──▶ acknowledged ──resolve──▶ resolved + │ │ + └────────auto-resolve──────┘ + (e.g. agent_offline auto-resolves on agent_online) +``` + +- **Acknowledge** says "I've seen this, stop notifying about it". +- **Resolve** says "the underlying condition is gone". +- Some alerts auto-resolve when the condition clears + (`agent_offline` is the canonical example). + +## Notification channels + +Configure under **Settings → Notifications**. Each channel can +subscribe to all alerts or filter by severity. + +### Webhook + +Posts a JSON envelope to a URL of your choice. Useful for +piping into Slack via an Incoming Webhook URL or into your own +alerting tooling. + +### ntfy + +Pushes a plain-text alert to an [ntfy.sh](https://ntfy.sh/) +topic. Configure the topic URL; optional bearer token if you +self-host with auth. + +### SMTP + +Plain SMTP (with optional TLS). Configure host, port, +username, password, and the recipient list. + +## Test fire + +Each channel exposes a **Test fire** button that dispatches a +single synthetic alert through the channel without touching the +alert engine. Use this when you've added a channel and want to +verify connectivity before the next real failure happens. + +## What gets logged + +Every alert raise / acknowledge / resolve writes an audit log +entry. The audit log UI at **Settings → Audit log** filters by +user, action, target, and time range — useful for the +post-incident "who clicked acknowledge on the prune-failure +alert" question. diff --git a/docs/book/src/operations/backups-and-restores.md b/docs/book/src/operations/backups-and-restores.md new file mode 100644 index 0000000..31c1a29 --- /dev/null +++ b/docs/book/src/operations/backups-and-restores.md @@ -0,0 +1,73 @@ +# Backups and restores + +## Running a backup + +Three ways to trigger one: + +1. **Scheduled** — the agent's local cron fires at the time set + on the schedule. +2. **Run-now** — operator clicks **Run now** on the host detail + right rail. Posts to `/hosts/{id}/run-backup` (defaults to all + source groups) or to a per-group form for finer control. +3. **API** — `POST /api/hosts/{id}/jobs` with the appropriate + payload. Same audit + dispatch path. + +In every case the server creates a `jobs` row, broadcasts a +`command.run` to the host, and lands the operator on the live +job log page (HTMX `HX-Redirect`). + +## Cancelling a job + +Any running job — backup, forget, prune, restore, anything — +exposes a **Cancel** button on its detail page. The server +broadcasts `command.cancel`, and the agent kills the running +restic subprocess via context cancel: SIGTERM first, SIGKILL +after a 5s grace (`cmd.Cancel` + `cmd.WaitDelay`). On Windows the +SIGTERM step is replaced with `os.Kill` because Windows can't +deliver SIGTERM. Result: a cancelled job lands as `cancelled` +within a couple of hundred milliseconds. + +## Restore wizard + +Restoring a file or path goes through a four-step wizard at +`/hosts/{id}/restore`: + +1. **Pick a snapshot.** Search by id or by date; the page is + pre-populated when you launched the wizard from a snapshot row. +2. **Browse the snapshot tree.** Lazy-loaded children via the + `MsgTreeList` synchronous WS RPC; results are cached + per-wizard-session for 30 minutes. Pick the absolute paths + you want. +3. **Choose a target.** Either **In place** (overwrites the + live filesystem; requires you to type the hostname to + confirm) or **New directory** (default + `$HOME/rm-restore//`; agent expands `$HOME` / + `${HOME}` / `~/` and creates the directory chain). +4. **Review and submit.** Server mints a job, dispatches + `command.run` with a `RestorePayload`, and `HX-Redirect`s to + the live job log. + +`--no-ownership` is gated on restic ≥ 0.17 (the flag was added +in that release). Hosts running 0.16 don't get the flag and +restore as the running user instead. + +## Snapshot diff + +Two snapshot ids in the **Diff** form on the host detail page → +a `JobDiff` job that runs `restic diff `. Output streams +to the standard live job log. Useful when investigating a +suspiciously-sized backup. + +## Job log artefacts + +Every job's log is persisted in `job_logs` (one row per line), +not just streamed in-memory. That gives you: + +- A live view at `/jobs/{id}` while the job runs. +- Two download formats from the same page header dropdown: + - **txt** — one line per row, `HH:MM:SS.mmm TAG payload`. + - **ndjson** — one self-contained JSON object per line + (`{seq, ts, stream, payload}`), perfect for `jq`. + +Downloads work whether the job is running or finished — +the source is the DB, not the live socket. diff --git a/docs/book/src/operations/observability.md b/docs/book/src/operations/observability.md new file mode 100644 index 0000000..f660d06 --- /dev/null +++ b/docs/book/src/operations/observability.md @@ -0,0 +1,61 @@ +# Observability with Prometheus + +restic-manager can expose a Prometheus scrape endpoint at +`GET /metrics`. The endpoint is **opt-in** — without an explicit +auth gate it isn't even mounted, so a forgotten config can't +accidentally publish fleet state. + +The full reference lives at +[`docs/prometheus.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/docs/prometheus.md); +the short version follows. + +## Enable the endpoint + +Set at least one of: + +- `RM_METRICS_TOKEN` — `Authorization: Bearer ` required. +- `RM_METRICS_TRUSTED_CIDR` — restricts source IPs (comma-CIDR). + +Both ANDed when both set. Constant-time token compare; CIDR +honours `X-Forwarded-For` only when the immediate hop matches +`RM_TRUSTED_PROXY`. + +## Metrics emitted + +- **Server gauges**: `rm_hosts_total`, `rm_hosts_online`, + `rm_active_alerts{severity}`, `rm_build_info{...}`. +- **Per-host gauges**: `rm_host_agent_online`, + `rm_host_last_backup_timestamp_seconds`, + `rm_host_last_backup_success`, `rm_host_repo_size_bytes`, + `rm_host_snapshot_count`, `rm_host_open_alerts`, + `rm_host_repo_status`. +- **Histogram**: + `rm_job_duration_seconds{kind,status,le=…}` (buckets + `1, 5, 30, 60, 300, 1800, 3600, 21600, 86400, +Inf`). + +In-memory histogram only. Prometheus persists the scrapes; if +you need durable history at hourly resolution that's +Prometheus's job. + +## Sample Grafana dashboard + +[`deploy/grafana/restic-manager-dashboard.json`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/deploy/grafana/restic-manager-dashboard.json) +imports through Grafana's **+ → Import → Upload JSON file**. +Six panels: + +1. Fleet status (online / total). +2. Open alerts by severity. +3. Backups failing on most-recent run. +4. Hosts table — last backup, repo size, snapshots, open alerts. +5. Repo size over time, one line per host. +6. Job-duration p95 over a 1h window per kind. + +## Alerting + +restic-manager already has a built-in alert engine +([Alerts](./alerts.md)). The dashboard intentionally doesn't +duplicate it as Prometheus alert rules. If you want +Prometheus-side alerts on top, write your own based on the +metrics above — `rm_host_last_backup_success == 0`, +`time() - rm_host_last_backup_timestamp_seconds > `, +or whatever suits your environment. diff --git a/docs/book/src/operations/updates.md b/docs/book/src/operations/updates.md new file mode 100644 index 0000000..3b571be --- /dev/null +++ b/docs/book/src/operations/updates.md @@ -0,0 +1,50 @@ +# Updating agents + +Server updates are a `docker compose pull && up -d` away. +Agents update via the control plane. + +## Single-host update + +Each host's detail page shows an **Update agent** button when +the agent's reported version is older than the server's. The +button: + +1. Dispatches a `command.update` to that host. +2. The agent fetches the appropriate binary from + `$RM_SERVER/agent/binary?os=…&arch=…` to + `.new`. +3. Copies the running binary to `.old` (one + revision back, in case rollback is needed). +4. Atomic-renames `.new` over the running binary. +5. Exits cleanly. systemd's `Restart=always` (or Windows SCM) + brings the process back on the new binary. + +A 90-second timer on the server side waits for a hello at the +target version and marks the update succeeded — or, if the +agent doesn't reconnect at the expected version in time, marks +the update **failed** and raises an `update_failed` alert. + +## Fleet update + +The admin-only **Settings → Fleet update** page drives a rolling +update across every host in the fleet: + +- One host at a time. +- Wait for hello-with-target-version (max 95s). +- On any host failing, **halt** the rollout, raise a + `fleet_update_halted` alert, leave the rest of the fleet on + the old version. No surprise mass-failures. + +You can cancel an in-progress fleet update; the worker stops +after the current host finishes. + +## TLS and corruption + +Updates rely on the reverse proxy's TLS to detect corruption in +transit. There's no separate sha256 verification step — we +chose the simpler model on the basis that the same TLS already +gates every other byte the server hands to the agent. + +If you'd like a separate signature step before applying updates, +that's a future-phase enhancement (see `tasks.md` Phase 6 +candidates). diff --git a/docs/book/src/reference/env-vars.md b/docs/book/src/reference/env-vars.md new file mode 100644 index 0000000..e193c95 --- /dev/null +++ b/docs/book/src/reference/env-vars.md @@ -0,0 +1,58 @@ +# Environment variables + +The server reads its configuration from environment variables +(canonical) with an optional YAML overlay. Env wins over YAML so +operators can tweak a single setting without rewriting the file. + +## Server + +| Variable | Default | Meaning | +|---------------------------|----------------------------------|---------| +| `RM_LISTEN` | `:8080` | TCP listener for the HTTP server. | +| `RM_DATA_DIR` | `/data` | Persistent state directory (SQLite, secret key, agent assets). | +| `RM_BASE_URL` | (none) | Public URL clients use; required for OIDC redirects + cookie scope. | +| `RM_SECRET_KEY_FILE` | `${RM_DATA_DIR}/secret.key` | Path to the AEAD key file. Auto-generated on first run. | +| `RM_COOKIE_SECURE` | `true` | Set `false` only for local HTTP testing. Controls `Secure` on session cookies. | +| `RM_TRUSTED_PROXY` | (none) | Comma-separated CIDRs trusted for `X-Forwarded-*`. | +| `RM_BUNDLED_ASSETS_DIR` | `/opt/restic-manager/dist` | Read-only path with bundled agent binaries + install scripts (the docker image bakes them here). | +| `RM_METRICS_TOKEN` | (off) | When set, `GET /metrics` requires `Authorization: Bearer `. | +| `RM_METRICS_TRUSTED_CIDR` | (off) | When set, `GET /metrics` restricts source IPs (comma-CIDR). | + +OIDC variables (all optional; empty issuer disables OIDC): + +| Variable | Meaning | +|--------------------------------|---------| +| `RM_OIDC_ISSUER` | OIDC discovery URL (e.g. `https://auth.example.com`). | +| `RM_OIDC_CLIENT_ID` | Client ID registered with the IdP. | +| `RM_OIDC_CLIENT_SECRET` | Client secret (or use `RM_OIDC_CLIENT_SECRET_FILE`). | +| `RM_OIDC_CLIENT_SECRET_FILE` | Path to a file holding the client secret. | +| `RM_OIDC_DISPLAY_NAME` | Button label on the login page (e.g. "Authelia"). | +| `RM_OIDC_ROLE_CLAIM` | Token claim that carries roles (default `groups`). | +| `RM_OIDC_ROLE_MAPPING` | `idp-group=role` entries, comma-separated (e.g. `rm-admin=admin,rm-ops=operator`). | +| `RM_OIDC_REDIRECT_URL` | Override for the redirect URL; defaults to `${RM_BASE_URL}/auth/oidc/callback`. | + +## Agent + +| Variable | Default | Meaning | +|----------------------|---------|---------| +| `RM_AGENT_CONFIG` | `/etc/restic-manager/agent.yaml` (Linux) | Config file path. | + +The agent's other settings live in the YAML file (server URL, +bearer token, optional cert pin). The install script writes that +file for you at enrolment. + +## Build-time + +The Makefile threads `-ldflags` from `git describe` into the +`internal/version` package so `--version` and the dashboard +footer show the right values: + +``` +-X gitea.dcglab.co.uk/steve/restic-manager/internal/version.Version=$(VERSION) +-X gitea.dcglab.co.uk/steve/restic-manager/internal/version.Commit=$(COMMIT) +``` + +If you build with `go build` directly (no Makefile), `Version` +falls back to `dev` and the agent-update comparison falls back +to "always equal". Source-build deployments can still run; they +just don't participate in the self-update flow. diff --git a/docs/book/src/reference/http-endpoints.md b/docs/book/src/reference/http-endpoints.md new file mode 100644 index 0000000..9866066 --- /dev/null +++ b/docs/book/src/reference/http-endpoints.md @@ -0,0 +1,82 @@ +# HTTP endpoints + +A non-exhaustive map of the surfaces the control plane exposes. +All `/api/*` routes return JSON; all other paths render HTML +(server-rendered with HTMX in the loop). + +The canonical wiring lives at +[`internal/server/http/server.go`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/internal/server/http/server.go); +when in doubt, read the routes block there. + +## Public (no auth) + +| Method | Path | Purpose | +|--------|----------------------------|---------| +| GET | `/healthz` | Liveness probe. Returns 204. | +| POST | `/api/auth/login` | Local-user login. JSON body: `{username, password}`. | +| POST | `/api/auth/logout` | Invalidate the session cookie. | +| POST | `/api/bootstrap` | First-run admin creation. Accepts the token printed at first start. | +| POST | `/api/agents/enroll` | Token-based agent enrolment. | +| POST | `/api/agents/announce` | Announce-and-approve agent enrolment. | +| GET | `/agent/binary?os=&arch=` | Serves the agent binary for the install scripts. | +| GET | `/install/*` | Serves the Linux + Windows install scripts and the systemd unit. | +| GET | `/api/version` | Build version + commit JSON. | +| GET | `/metrics` | Prometheus exposition (only when opted-in via `RM_METRICS_TOKEN` / `RM_METRICS_TRUSTED_CIDR`). | +| GET | `/login`, `/setup`, `/bootstrap` | UI pages. | + +## Authenticated (any role) + +| Method | Path | Purpose | +|--------|------------------------------------------|---------| +| GET | `/` | Dashboard. | +| GET | `/hosts/{id}` | Host detail. | +| GET | `/hosts/{id}/repo` | Repo tab. | +| GET | `/hosts/{id}/jobs` | Jobs tab. | +| GET | `/hosts/{id}/sources` | Source groups list. | +| GET | `/hosts/{id}/schedules` | Schedules list. | +| GET | `/jobs/{id}` | Live job log. | +| GET | `/api/hosts`, `/api/fleet/summary` | JSON list + summary. | +| GET | `/api/jobs/{id}/stream` | WebSocket subscription to a job's live log. | +| GET | `/api/jobs/{id}/log.{txt,ndjson}` | Persisted log download. | + +## Operator role and above + +| Method | Path | Purpose | +|--------|---------------------------------------|---------| +| POST | `/hosts/{id}/run-backup` | Run-now (HTMX form-post). | +| POST | `/hosts/{id}/sources/{gid}/run-now` | Per-source-group run-now. | +| POST | `/hosts/{id}/repo/{prune,check,unlock,reinit,probe}` | Maintenance actions. | +| POST | `/api/hosts/{id}/snapshots/diff` | Snapshot-diff job. | +| POST | `/hosts/{id}/restore` | Restore wizard submit. | +| POST | `/api/jobs/{id}/cancel` | Cancel a running job. | +| POST | `/hosts/{id}/tags` | Update host tags. | +| POST | `/hosts/{id}/sources` and friends | Source-group CRUD. | +| POST | `/hosts/{id}/schedules` and friends | Schedule CRUD. | +| POST | `/hosts/{id}/repo/credentials`, `/admin-credentials` | Credential update. | + +## Admin role only + +| Method | Path | Purpose | +|--------|---------------------------------------|---------| +| POST | `/hosts/new` | Mint enrolment token (Add host). | +| POST | `/hosts/{id}/delete` | Delete + cascade. | +| POST | `/hosts/{id}/update` | Dispatch a single agent update. | +| GET/POST | `/settings/users/...` | User management. | +| POST | `/settings/notifications/...` | Notification channel CRUD + test fire. | +| POST | `/settings/fleet-update/...` | Fleet-update worker. | + +## WebSocket + +| Path | Who connects | Auth | +|--------------------------------|--------------|------| +| `/ws/agent` | Agent | Bearer token issued at enrolment. | +| `/ws/agent/pending` | Agent (announce flow) | Pending-id query param. | +| `/api/jobs/{id}/stream` | Browser | Session cookie. | + +## RBAC enforcement + +Routes are grouped into chi route-groups by required role +(`viewer < operator < admin`); the `requireRole` middleware in +`internal/server/http/middleware.go` is the bouncer. Sessions +re-validate `disabled_at` on every request, so a disabled user's +cookie stops working immediately. diff --git a/docs/book/src/roadmap.md b/docs/book/src/roadmap.md new file mode 100644 index 0000000..c6fdb24 --- /dev/null +++ b/docs/book/src/roadmap.md @@ -0,0 +1,32 @@ +# Roadmap + +The live roadmap is in +[`tasks.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/tasks.md). +Phases ship in order; items inside a phase ship as the +opportunity arises. + +## Status snapshot + +| Phase | Theme | Status | +|-------|--------------------------------------------------|--------| +| 0 | Project bootstrap | ✅ done | +| 1 | MVP: enrolment, visibility, on-demand backup | ✅ done | +| 2 | Scheduling, retention, repo operations | ✅ done | +| 3 | Restore, alerts, audit | ✅ done | +| 4 | RBAC, OIDC, host tags | ✅ done | +| 5 | OSS readiness | 🚧 in flight (this docs site is part of it) | +| 6 | Update delivery + observability polish | ✅ done | + +## What's not on the roadmap + +The non-goals list in [`spec.md` §2](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/spec.md): + +- Replacing restic itself or providing custom repo formats +- Managing non-restic backup tools +- Multi-tenancy / SaaS deployment +- High availability of the control plane (SQLite, single-instance) +- Mobile-native apps (responsive web only) + +If something there is critical to your use case, restic-manager +isn't the right tool. That's not a closed door — it's a +deliberate scope decision so the project stays maintainable. diff --git a/docs/book/src/security/disclosure.md b/docs/book/src/security/disclosure.md new file mode 100644 index 0000000..d03a04f --- /dev/null +++ b/docs/book/src/security/disclosure.md @@ -0,0 +1,35 @@ +# Reporting vulnerabilities + +The full disclosure policy lives in +[`SECURITY.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/SECURITY.md) +at the repo root. The short version: + +- **Don't open a public issue.** +- Send a Gitea private message to `steve` on + , or email the address on the + maintainer's profile, with a subject like + `[SECURITY] restic-manager: `. +- Expect an acknowledgement within 3 working days; escalate + through the other channel if you don't get one. +- Default disclosure window is **30 days from confirmed report + to public disclosure**, faster if a PoC is already + circulating, slower only by mutual agreement. + +## What to include + +A description of the issue and the impact, the affected +component (server / agent / install script / docs), the version, +and reproduction steps. A working PoC is welcome but not +required — a credible threat model is enough. + +## In scope vs. out of scope + +See the full policy. Quick highlights: + +- **In scope:** server, agent, install scripts, docker image, + docker-compose reference, crypto choices, docs that lead to + insecure configs. +- **Out of scope:** restic itself (report upstream), unpatched + third-party deps (report upstream first), pre-authenticated + admin abuse (admins are designed to have full power), DoS on + deployments without the recommended reverse proxy. diff --git a/docs/book/src/security/hardening.md b/docs/book/src/security/hardening.md new file mode 100644 index 0000000..52e3efc --- /dev/null +++ b/docs/book/src/security/hardening.md @@ -0,0 +1,72 @@ +# Hardening checklist + +A baseline for new deployments. Most of these are defaults; the +list is here to make audit easy. + +## Server + +- [ ] Reverse proxy in front, TLS terminating at the proxy + (Caddy/nginx/Traefik). +- [ ] `RM_TRUSTED_PROXY` set to the proxy's CIDR. +- [ ] `RM_BASE_URL` matches the public hostname and the cookie + scope you want. +- [ ] `RM_COOKIE_SECURE=true` (the default; only set `false` + for local HTTP testing). +- [ ] HTTP listener bound to **localhost** in the compose file, + not `0.0.0.0`. The reverse proxy is the only thing that + should reach it. +- [ ] `secret.key` backed up separately from the database. +- [ ] Bootstrap token consumed and the printed log line scrubbed + from any log archive. + +## Authentication + +- [ ] Admin user has a password ≥ 12 characters (the floor). +- [ ] OIDC enabled if you have an IdP — local password auth + stays as a break-glass. +- [ ] Disabled (not deleted) any users who change roles or leave + so their session is invalidated immediately. +- [ ] The last-admin guard isn't tripped — there's always at + least one enabled admin user. + +## Repo credentials + +- [ ] Append-only credential set as the everyday cred for every + host. +- [ ] Admin credential set only where prune cadence is enabled. +- [ ] No credentials reused across hosts. Each host should have + its own credential pair so a single host compromise has a + single blast radius. +- [ ] If using rest-server, `--append-only` flag is on for the + everyday user; the prune user is a separate identity. + +## Agent + +- [ ] Agent runs as `root` (Linux) or `LocalSystem` (Windows) + **only when** the source paths require it. Otherwise pin + a service user that has read access to what's backed up + and nothing else. +- [ ] systemd unit's sandboxing flags are intact + (`NoNewPrivileges`, `Protect*`, `MemoryDenyWriteExecute`). +- [ ] Agent's config file `/etc/restic-manager/agent.yaml` is + mode `0600` and owned by the service user. The bearer + token lives in there. + +## Operations + +- [ ] Alerts wired to a real channel (webhook into Slack, + ntfy topic, SMTP) — not just sitting in the UI. +- [ ] Test-fire each notification channel after configuring. +- [ ] Audit-log retention is long enough to cover the operator's + incident-response window. +- [ ] Prometheus endpoint, if enabled, gated by token AND CIDR + where practical (default is opt-in / off). + +## Recovery + +- [ ] A documented procedure for rotating a leaked agent bearer + (delete + re-enrol the host). +- [ ] A test-restore done at least once, end-to-end, before + relying on the system in anger. +- [ ] `secret.key` and the SQLite database covered by separate + backup paths so neither alone reconstitutes the other. diff --git a/docs/book/src/security/threat-model.md b/docs/book/src/security/threat-model.md new file mode 100644 index 0000000..8af091e --- /dev/null +++ b/docs/book/src/security/threat-model.md @@ -0,0 +1,110 @@ +# Threat model + +This page documents what restic-manager defends against, what it +doesn't, and the trust assumptions a deployment is making. The +canonical version lives in [`spec.md`](https://gitea.dcglab.co.uk/steve/restic-manager/src/branch/main/spec.md) +§11; the summary here is shaped for operators rather than +implementers. + +## Trust boundaries + +``` +┌──────────────────────────────────────────┐ +│ TRUSTED zone │ +│ ┌─────────────┐ ┌──────────────┐ │ +│ │ Operator's │ │ Reverse │ │ +│ │ browser │◄──►│ proxy │ │ TLS terminates here +│ └─────────────┘ └──────┬───────┘ │ +└────────────────────────────┼─────────────┘ + │ HTTP, plaintext + │ (loopback or trusted LAN) +┌────────────────────────────▼─────────────┐ +│ Server (control plane) │ +└────────────┬─────────────────────────────┘ + │ outbound WebSocket (TLS to clients via proxy) + │ — bearer-authenticated +┌────────────▼──────────────┐ +│ Agent (per host) │ ◄── attacker model: assume one +└────────────┬──────────────┘ endpoint can be compromised + │ subprocess + ▼ + restic ──▶ repository (rest-server / S3 / SFTP / …) +``` + +## What we defend against + +### Network attacker between operator and server + +- HTTPS via the reverse proxy is the only operator-facing surface + on a sane deployment. +- `RM_COOKIE_SECURE=true` (default) means the session cookie + refuses to ride a non-HTTPS connection. +- `RM_TRUSTED_PROXY` gates whether `X-Forwarded-*` is honoured; + a bypassing request can't spoof the client IP. + +### Compromised agent host + +- The agent's bearer token can dispatch commands **only on its + own host**. It can't read other hosts' state, dispatch jobs + on other hosts, or escalate within the control plane. +- If you suspect a host compromise: + 1. Disable the agent's host row from **Hosts → Delete** + (cascades the bearer hash). + 2. Rotate the repo credential at the rest-server / object + store side. + 3. Audit-log lists every action that bearer ever drove. + +### DB compromise without the secret key + +- Repo credentials are AEAD-encrypted at rest. A DB dump alone + doesn't expose them. +- Agent bearer **hashes** are leaked; that's enough to + authenticate as any agent until you revoke. A rotation + procedure is just "delete + re-enrol" today. +- Operator passwords are bcrypt-hashed; OIDC users have no + password to leak. +- Session tokens are hashed; an attacker can't replay a + session from a DB dump. + +### DB compromise WITH the secret key + +The attacker can decrypt every credential. Treat +`secret.key` with the same care as a password manager database. +Back it up to a separate vault, not to the same Docker volume +as the database. + +### Forget/prune as a DoS vector + +- The everyday backup credential cannot prune (append-only). +- The admin credential is only pushed to the agent at the + moment of dispatch and discarded after the job ends. +- Compromise of a single agent host does **not** grant prune + rights — at worst the attacker gets fresh write access until + the credential is rotated. + +### Operator-side typo or bad copy-paste + +- Repo credentials are stored encrypted; mis-typed creds fail + fast on the next `restic` invocation rather than silently + corrupting state. +- NS-03 added auto-init: the first dispatched job after creds + change runs `restic init`, surfaces the error eagerly under + the host's vitals strip if the creds are bad, and resets the + host's `repo_status` so the operator can retry without + hunting through job logs. + +## What we don't defend against + +- **Insider threat at the maintainer level.** A malicious + maintainer can publish a backdoored container; SBOM / + signing infrastructure (Phase 6 candidate) would help here + but isn't shipped today. +- **Supply chain.** We pin module versions (`go.sum`) and + pin the Tailwind binary's release tag, but a compromise in + one of those upstreams would land here. +- **Side-channel via restic itself.** A bug in restic that + enables snapshot-content disclosure is restic's problem; the + control plane doesn't see snapshot bytes either way. +- **DoS via resource exhaustion** without the recommended + reverse-proxy / rate-limit in front. Don't expose the + server's HTTP port to the public internet directly. diff --git a/docs/e2e.md b/docs/e2e.md new file mode 100644 index 0000000..7d66739 --- /dev/null +++ b/docs/e2e.md @@ -0,0 +1,120 @@ +# End-to-end test harness + +The e2e harness stands up the full production-shaped stack +(server + agent + rest-server) in Docker Compose and drives it +through Playwright. CI runs it on every PR; operators can run it +locally too. + +## Files + +``` +e2e/ +├── compose.e2e.yml compose stack: server + rest-server + agent +├── Dockerfile.agent Linux container for the agent (alpine + restic) +├── agent-entrypoint.sh decides between announce / token-enrol / run +└── playwright/ + ├── package.json + ├── playwright.config.ts + └── tests/ + ├── lib/server.ts bootstrap, login, accept, poll helpers + └── smoke.spec.ts happy-path: enrol → backup → succeeded +``` + +## Local run + +Prerequisites: Docker + Docker Compose, and `npx` for Playwright. + +```sh +# 1. Build + bring up the stack (server, rest-server, source data). +docker compose -f e2e/compose.e2e.yml up --build -d server rest-server source-fixture + +# 2. Wait for the server, then scrape the bootstrap token from the log. +until curl -fsS http://127.0.0.1:8080/api/version >/dev/null; do sleep 1; done +RM_BOOTSTRAP_TOKEN=$(docker compose -f e2e/compose.e2e.yml logs server \ + | grep -Eo '[a-zA-Z0-9_-]{40,}' | head -1) +export RM_BOOTSTRAP_TOKEN + +# 3. Start the agent (it announces against the running server). +docker compose -f e2e/compose.e2e.yml up -d agent + +# 4. Install + run Playwright. +cd e2e/playwright +npm install +npx playwright install --with-deps chromium +npx playwright test +``` + +When the test passes you'll see: + +``` +Running 2 tests using 1 worker + ✓ smoke: enrol-via-announce → backup › happy path completes in under a minute (47s) + ✓ smoke: scrape /metrics › metrics endpoint exposes the host gauge (180ms) + + 2 passed (47.5s) +``` + +Tear-down: + +```sh +docker compose -f e2e/compose.e2e.yml down -v +``` + +`-v` removes the named volumes too — important between runs because +the rest-server volume holds an initialised repo and the +agent-config volume holds a stale bearer. + +## What the test exercises + +1. **Bootstrap.** Posts the admin-creation request to + `/api/bootstrap` with the token scraped from the server log. +2. **Login (UI).** Drives the login form via Playwright; verifies + the dashboard loads with a session cookie set. +3. **Pending host appears.** Polls the dashboard for the inline + accept form generated by the announcing agent; reads the + pending-id out of its action URL. +4. **Accept.** POSTs `/api/pending-hosts/{id}/accept` with the + rest-server URL + repo password. The server mints a Host row + + bearer + AEAD-encrypted creds and pushes the bearer down + the still-open pending WebSocket. +5. **Online + auto-init.** Polls `/api/hosts` until the new host + is `status=online`. Auto-init runs as part of this — the + first dispatched job after creds save is `restic init`. +6. **Run backup.** Submits the host detail page's `Run now` + form; expects `HX-Redirect` to the live job page. +7. **Verify.** Polls `/api/hosts` until the host's + `last_backup_status` flips to `succeeded`. +8. **Metrics.** Scrapes `/metrics` and asserts the + server-gauge + build-info lines are present (the compose + stack opens the endpoint via `RM_METRICS_TRUSTED_CIDR=0.0.0.0/0`). + +## CI workflow + +[`.gitea/workflows/e2e.yml`](../.gitea/workflows/e2e.yml) runs the +suite on every PR into `main`. On failure it dumps the last 200 +lines of each container log as a workflow annotation and uploads +the Playwright HTML report as an artefact. + +## When tests fail + +- **Pending host never appears.** Agent container probably + couldn't reach the server. Check `docker compose logs agent` + for connection errors and `docker compose logs server` for + any 4xx on `/api/agents/announce`. +- **Backup hangs in `running`.** The agent shells out to + `restic`; check the live job log at + `http://127.0.0.1:8080/jobs/` (still up after a + failed test as long as you didn't `down -v`). +- **`RM_BOOTSTRAP_TOKEN not set`.** The server log scrape + matched the wrong line or the token regex is too tight. The + server prints the token on a line starting with ` ` (four + spaces) inside a banner; widen the regex if your server log + format changes. + +## Adding new tests + +The harness is intentionally flat — one `*.spec.ts` per +scenario. Reuse the helpers in `lib/server.ts` and avoid +duplicating bootstrap / login boilerplate. Heavy fixtures +(custom users, OIDC IdP) belong in their own compose override +file rather than complicating `compose.e2e.yml`. diff --git a/docs/screenshots/01-login.png b/docs/screenshots/01-login.png new file mode 100644 index 0000000000000000000000000000000000000000..30cffbfc120cd4755cf4bc35708b9ff4a9f710bb GIT binary patch literal 27454 zcmeFZcT`hp`!<>x3!?})g9u1-Mv+mFs7RAGj0Kf8iV%pN%t{@U3)yFB}O?&rR*`?{}Z z$NgnxCUNxCQ2+oSap(4p`vAZp(a!^?fBI3hp>yoZ0f6IxJ2y-pz;d?v5|IxW&)0=2 zy&dy^{8oOnLp&P7ff@QkS@ znuaf*xR#ngmo5_UK)exeZY3YH)d#*P7*8SP>)twWpp}~pIQ-1Csy!3rgy`~IeZQuR zgXRIZV>wY4OVg0{zLR>E07 zDZ|Dv1bu>m7xo-LJ8Sb>KN1?p(Y*Tbt<7j%BI{)=2t}Ia@pi@hGfgfs=YJk*5s2aL zlC)VT=3rF%arGQQBgKdl=}PB#DmSgX2}kqHg6Uc$OarwJZW27uZkF$$qRCpuW1&Oa zpxBhCQ&9?JfnPpm6`oY-@9XcvU2fkhQ<9Ku<=(yJI~n)`pc&{E;|}f0NuF(Qe=cDy z2%%A~n0q);X%5mlCNz6Q&mVsq@Hr}TLa565c(pud2NHr;OV@00Tg@oy$+IUJ{cRl0 z#PKOAh@}@POv{fW-5JT!v3|}~tg0;AI-dzc z?t>v|#!T{owm*)GUop@@v7OB#cV8`G2!^atwfdHb;~@>-qfNwhvq&wEr)mrmO$w{4 zHyiwsRN1STpphy1ns6#(`He7`88f-m8NS#bRY? z8sZKf0tW@@oN zzdK`tgD(@!Ce%7Oxrik^nLV9v`PvU$R~_|eaB7XuR`XCqJ_5&B=g~{di*nvO>iGr_ zStF~?Y42}~8}C-_&JCnhPA~i&03fO<{wUGPwdT+1Mk4OX!KI8940$!`rE4H-m+Ftk z(COKD_1I9O(2l}<9Q68y-rTUAb}|19#Q1EVIpvEKF4xd+xA(&a8Fi60(NEs9@MPES zUN-%WcV(UUl{Jh4O3F3_PUoCA<-bHrR&upVB+SVyPIBA%ZyQ?Xl1g_LwsamwjY}yv zl$1vJhd;Kox!Zy#lYRxjP|_k-LOEOSx21fn`oR6l?n8Az&|{d-Z@2x*NcC&U{o%TEX_$igu&x^Qd_;Ybz&WE)arWtx>!X5% z2@+z;3#t+Vl}im?9hT>AGM!C_l;ZPtqUK_3#Q0FKda;fMXHhlY1@Q+nCUj_Frjvax*9wn0K@e_cGm1^(?inhfkGds6ruLeDH~yfJtctR#>oRu^w9ppdk! z_|2q^ZFlHU=vpF16UG&JbyS0(3}g#RRAO)X!6gyB?{7I=BXQNttD@voSSx=x@L&*;;-HPsD>T5u5F>+EPNE2KRqGSX_Z4C zhu~F$ug0Go#tOJ3+>^nkE+~m=@2BUG?HJBTAlNB2=%xyODt^3B%fQ~5v-e-v0#4R> z&f&44J+5(tqmA(EEoX9mU_BFI%E-S$C>Hs%3TN{w9InAGe`(*{7(L2VCC$Iuv<*H= zFoN|Ic%qFkdqj?3mDjk;(liRLa52Z}zMSJ!?p^S+O))8irw0>n4BrTS zxdy;pkACT?0cl|xpaqu@-9djFv}~4{q20(C{a&i3gg0;;caE!b%;gt#W({gC+t^=U zapHYEDkB`iUnK7~f-Frg{}hIefIy*_G}5NO25t1WNoRC`W!|q9MQ&dPsL1`(o3C&1 z7Ynym!P?AjN>}L?#?`gI%)?4QaH|F6)D(2R$~@H!?Ztwb4;tR@p>LYb^PI z(NP-Z>RzMIBpK_Q%nmPaq`Jl)vNS(Q5GpgWiRlt}|MjNN-b85B@ma3D&Eu8X%+Vxo zjxNG2$PdvVYfC^w^IkpEAw=&AQb5W8Nw`Wu4@#l1r;#U@xrJK?AFB2F{?<% zkuT0pHKD^iHW~qhuEbFFv+f%O-}Rki0x{cD%=xqWfaU}Ly#1Tbeu@h-Iv0cpBkwhW zUdf*dsen^sw*2Qze$KX!*pkJa#O!oi4`-UF^6GuIntI5r;R>cwh*J4jeIc4i-I=r` z46~PIHYm_lW5#^4gsBF!e-j8_p>C@5L|NGSM%N;0$I~ zRaVr+r$-7g&@o;VU*Yp6rG?xynE-An<-AcSePOhv%p(_!)e)==vQ(wbag1nGp+9T0 zE4Z@B%jzq=1Vf3^V8&Qu!-O$nD2(si;#6>1QD;~s%=h{@nv#_a|E5Ka2A-{KD2Q0? z0)4hVO>A7uLm~N?O4_kjvF^WfnwJg$PQN)?27$Bk*lhyqn?F92x+cO%$In;w)u5WZ zJvgs7?a7l~H9d!&tt%!UCCmORcM|=5Sqs&$_y(b3+3e}F)1f;Tv6U<_OgnV?7f}%U zCxgoP;lFaL|E|>X%9D;nalky{H#@zZ0&4_syM4}4=j{D9%yvd4ujSl*191RX)VcFU zMPGS~WtCYbE#42=lkeJwi#VPjP3#((>#g%y{i2;QrD(?gi{gZBYSZ54O$Fjy0GDr< z=NLuvto(AVDvG8gRT(LDa%C$PYLR~j089Es6wYEr$QbLsFh@5Z0aG@nr(_JOJ_lK` z@Y|WX7g>vQjJXmCby;9Vg3JUkYJVts?-+ zJ<+_fq^0frhYMgP&U%3&FP4*xESZskZRj+A@eU2>?zXyr^GZyn7A}I{WsMMECFbx% zewR5#GBLrmX_uLGdq)GXt#ws|-Cx@;EPJ`OmykRuEohG!tXCgd!ki+QAm9*`7O6_P zoG%(Vh?&jRiY=9vdc%5T=H+oh6y>?lz9q_s&Jkhx`LysF6ykRt2aO)mv`|@t4_!|f z8WIK$bk(35cRZ~{Sl2~3_(>chdRyk#856e^i0jnkGM?wl-^Hxu$sO#t0AbnM&^h@C zk04)?vZZkFqIiC!2cltmTu5v616is_!&B5wqa*hjBsdF=hxqyXJMowC{#++Un^cmF zRW@|VIVt9h7m>q*s0fJKHEJqy=Dvfx=!N@bI9{$Fp}Sg_?E&Vt#HN{$3|S8iBk&3I{@?=unAGJ1$6DdHN)4(i41Vgi z$~Hi9MjWNC26%Uj7+|q`RP$vk;igm+HTrzVVW|wV_M|+ATe=Wx~zfm3}#Z4G2-gDi2kckU3%$_$6)bVy0_s=(zE|JwL{C3uE(GY8bPV zM;TNy&}+yw^}jRD%PuV~^S7tgaW^rfhQjvEEhM!C_#pAvi^^O_bkV+1};u?SBkd;BFCZaJILMm;Y*^K(Q)h&fT9$ag`vQ_ zJ@u@^8Aek4Z87vLY{=6iT~;}~|LWWJvej4yhS3JhflrUs3};2`X3}K~&*if?Jre2` zv;01(T=>QdYnO-(TPdAGZE@rDGPRyW@7rc|zKc^LP&fzAleiv&kLkg387NW&r6%qY z64De%o;2DbbCxp;i*rL)z0|DP%Sv@{tDImyBUq|tr+tG!l$)Ro_h5Bu_G-0E_C5yV zh1*OY=0R0Dq~StNj0AI!likkoi=dVUn|Bx)(U(ht{bAl~y`?A@jd~OcBVWEYdYg9h#MQ{<0m%cN|Z`w!>#^bhY(w$kJNaaMJ zUf?hYRiSwdFmLoH-~d%QxfI8wr@PR0y6Oyq)z_Q?84@Hc7lbcI1T9?5*Ps2^QPp0m zKWcSse~bucx^g|^rSYO4{gnihuRbd+Qe<=NSbeJ0#H+`;z7}^Dz8|6*IP2&XMUeLb zuGOxRK|VF`l@=1XNlQ*2A=uWv;r^ICJEdy+)t@$J&cvsm^Tu-7;%fqSK4Nzwb*`$t zzj3rjlDtvY6GH$ta;u7{&_gwA*svU0-n5vMqG28^jJC)zTKG&}zHEk++ck(P2vWmm zI_PWIqu042jBI=fO937MU8=A4u3q}^0}K`L(^UZFVu_zNG^%QK*q)rxw=!CU&qa34 zW{OOFXTv54$lcDxD+etHXuQP))I)tnO;y~o@A^8TFJ|cPezOfLb}?Gkm6=X)(F+Ut zfoGLIq@?9O`1SPU*M)iODG9OkNiAk4wQ}}@VE)de$U7wm6ojnRbNo<7*HS0H;&Ov~ z-s2uycc_&bf0ucGBJJ(@w?-J@Q`(qmtWGRgDoR>hD62SU+G{pDg|;_LGYAig$b~$*gPk7c!j?D zSV-I+MmIL`pL2<@U)t|&J3uLDvdDBk*5yp^`$7Q#iiF4^Gv7>ROz9H$>%2^Nln4l) zzA~+kFN2%lt4Tvj!B6y3VFBjR%=t5wF zjG}8vh~HYbOZHI0O5%_u_^XeQD!oyb-gVzn+Z?p%3?SCz{NuoGX55>r>a!_b1;e{) zL1%Q(k>om%ZS;7<&Qww7*4jxQl`@j_v9jjH(gP~8?;Tx?aGRa;Nxy1myzY2%hN=C8 z8PnsfBVuAU%UtF%XE#8RkHhpDLe=vkI&42k<24asp2saR;p5NgFI`vYB0|R%$4QEX zlxte}If{4-!q)!YV%ciiD?VnoiqkoxLY$dvBFvfc})I`4}Y$awa!)r81S|RMPn&9VC z4RFVum`b*5u@m~>~?&Vfk{rGL{QILqszzGMPfKOQ$gye zl^=W?Lqd3S(4NEWVVg2smK7g?!7|z$DfXE^t)=zq72=?w6uA@jpQ=>{-?F-p2Kk!@E28FigkJO(nOaQ&IG+X zoqrM65ay034R|>Io@)E_p#$#YO!4U-s4kBWi%c$21d+kG?U6Dpf8M6fvZOsZIl29T z&5lhxg*C039);*zFt*gW7reEGWAOua11Bf@GquW|s6#{~fVJxWLFB;_iFm9a+CbS6 zt))}{xwP~`PLJhSq)!_UVlpwNz1>-*s`{8u_KMg}#7BiuT@g|>k$eQWVcUmUJ}Lk9 zn2HiPg84=ahv;$#gPSSeMF@k&9`J{K4I}lpbLMJ7yPOw(G~@n?fhZDZMwKKfbX~sh zO&d@IEIO`G7qNp8gGPGKBySmqGnA~gckbX$1h;c`9->)AY*eBOfG8fbysV@GXcfCj z-cwNFOpU8LQrO#tV3dBA>&qXW^r&mflk!!ABvr_0|2O|tH+-{Gf6C`jpt*ZhVY#U!j*I^|7kU^ zz2=suyXZdQmZ5*qah1Z6P^e}SIB00xGeI$Oz4!Z60u-@?s&t$jlXY`nNllYAh7yKI z4SZVV5f$v`f=j&@${UsoMmj&C5gX=6DAH%6c>sSwaki7%zBn8U5ll0nI%%2>kBL+> zh@cGD9Dc7llBgK9aav#}g9%&X}xw`o&3{BtFv^`Kvn`OxCH<1dbOCcC#0kjGw+n}JoF;cN(&OXJL$ zew&)oZ4PMfZ3}+O{RKacK9>^LJ)V%8o4utAWrS)^RCr6=T6OnS@^S>vO-vxw%Y~DMb2JVNb6cxZRE=ofOU7Ou%8iG|q@t z^(V76_i;6`16S1{k&o?yY&|*Im7Fd#!j<+28^uPUu+3YJOtou{d6=#G8D)sk?{-V7 zkh+Ay@8cks`wg5KWGK?+3Sw#lGAvGfxEnC@BY^cs@K0A;tKR!MJChuYDVySVZx!KJ zDl(u9)lbr8o9&x#(}66mBhJa_n)K)b7>V}^|Lv9<4q=pUFR zHAQ|$;W_=fNZ7rvaC&fPg|ivs*N(W3f7ylaZ7U*8R4fHVe#`tH&+-!+m%5V_m?Xgr z&34rF(4ik%Ki=Qj0rJDb=}7|0z)bxifTH>Jpxs0%fSyN;r5ut2#mxkaqW67grn!se zqSLFb^#l!7OID5SB5g2lByY9i2SCqT(TK(@F7;UR^GV?x*ZiLV#QuCkUVM`euA#V4 zRpc&uUrQKhinbYh<0xMaL1m9T`7@w7HLs{>(Rvt3GZAWu{**ff2pCi}L2&XaB%dBk z>>tQR=LGoM0$MLG{bmp7`K$cH2TGUhfoGq-5s1p_8plL!{Qpup`Iv;L!J_VVP|Ge2r@#4X6Ka1Y@r$^6R*Sl8KV-gf(MaNkz8c?v0{!h2o3#eu*q^8RNy`%2Ba}6u8 zCPziL`8RQ)r^CTuz`UK^{%9e(*sFs`B)0Uq0Rq14$>%QrhYJurCui5Dn4gcVz^qO` zF!vGlr`B0D3JdVe)yqDRHd$s2`b*o$&R$Lw?ow~R!kwSl?NBLth!zvs!oLf$)XTU3 zr$#irv|D+hb0z}DRQO9U#XsDi{VAS|6a|T9UAF|Rh$_60Mv9nOio*f`^9LYL0j*VI zXw1sHY!haQHDWWEKyprp_JJx(GzUep308;Jfn!v$WQ#F^VN)q5tLE;acAVSeuIO}d z)b~c|-3Z4tU^Bn62YvQsd3()Cr{I;wm1u|D1oe}1j3sJ)xyajqgTrmTT#jq0t{oN2pg8BLcJRwI?2(n|YzkH|vC^_4>k`hs>6w7{c6P408Giuq^AnMGNqXeQj!w@} z8k=R;0r@+*jOcVH2a(5W_9L!%Zbz|Zz?^|Cinm5N_DiJOUoi3t{q92~F9F9Jfbh;< zUg#Jvbf^eTz=*4N_jEkeR5CG?f2*1Qx1i}P0-sh1>uUyr9rEl$=;_!Hdcnl5I;yex zY#!06`KunAWrEy5`B!Xc7&13~jB{-1cmiUB!_~F^^81iD08r3=>{6@B-AG=eY@Sgh zy`aeLn=P8U+C(iXf43wqjd{6yB-){kTwcCizChb1x{ZoTrYI}mJ-Jutu2@e|#HnbY zE2xj?CX~vm$8+;CgN+fE#t7KX{-XL| z+}ej|l$)?d@X>27f{l?OG;(9LsS?{phca!wx87hNlEvYpYd?aajPZ0|Z205Rw0|JM z(#DoH$T@f}6{J=_%X_+&)-(ZQG_D;+BqX8zr*h?@$PS(|=M+@#fO{K#py1|9K;@{P zk0~=1DLb39N{W&1gRfK>U_^)2e=2_2A(5c0ZzxjX92KEq-U4GkCZ%<1L;SA%%soG5zz2}#rm46N}mwhn~}jb zzfCn3MnSzo!zWgoCN6zV$@bYyE=>Q7SC(8{8Bc%D93Q_bD#4f|;+kZ#>Bf z!0s@jJu$y&1CIad@$3fywaLz;d3_s*WP>SvWWR8K#_A2o-~OYvQYJ2ej8I`jAN7MS zZMMKb#p`aE>Pa9Fx0-Fze8oVn*?w<#BIHN4Q~Bn5307mGxs1hjb8dhG3o6~e2B%oY z`wMB!hr|Ve3-h)gkdfSifJOG-t~uOa1}IIz%csRrBWA2`wlyLS6VE*@J-tNGHRD$R^w?xmmo|)-jwRs@% zK5OZ>f1j==CO0o9YT1`F`OiO{5Htjo7(R2o`yU+t{~Zli%wd3{7Mw{|y5e>l5OAVh zMfQL9)_gwVdJOB1xMC``=O*j=8Nhr7jd10e>lZYd*{~!k10=Qw_H@DFHloODamzOY zm-&OD0qPZ9zautDPEPJ8fTZVbJ-WfwGs-GeaAqYn_SS!Z$%HzpIoaY|O-+rKR!xj# z=&S@aLevTgq)nPdDfpSI|NpBP?!Q|&7ci)#8|Ab?;#rctY_wvfqyUoRI5-qEmsN!1 zAi>1?i-39iQ^_gNNYRU>I6624a)pC(IvN1I>gVa;O75<3J!*gIKSs1LOUYzv48H9- z@C^Nn4z<)85n*j^E(*n$Md@KiCeK6=%Q=*IzdNue)rmPSx~f~hRfOS)wOT(u`;-Q9 zkpFMU=l9^w*CIU<`{NG*7Dpb5V8;KA5-?Ko5`bsyvd!BdRbcm;iv`QpY0eQt9B?JY znzU~*x@O$CTD-+POzEXG>Hz`{id@RPlDR4}+=tIpSW;pC>99iM*WsQDdT`=a4fN&y zltkfrk6BJ+y8%y|{+a{{1kC>=f|Sj!nEf%G!#1)xyz!(SSJS_YLOc6}jcNuzMWAte z5ECMUwxMQa^lQ$rA78*kkNX}eigMe#wppeU?StnehfB4g~j@-i(PtwC z_&YY>=|*btoRQh&pOpAH^@$`F&m@;7rPAlbg$!wDE6GX#C>emm&!GO3X1H(;$xg}{ z6R_hh%U_EIjS2TMiDN!YGNP)!<#O@7I9Q4Ked<#sul@68N{j~u=d*sq#tgYP$adr{f8(!C`>zjN&M~@r`%sISJtA!X zTTWX~*Ne6u=3zjqfhYq55KG45b8$ScEiGUXE-_)4PknLE=B3+?PfG1|vz+(x+tc*L z$~HNj1#nVr?!NXe)`1hLNKL_yf$fS zEe&ig2|wg;oWvU)(w<@Fod5uk8X_nx8ka=jrb+4{U0uWy@@g!}Jqg&bpFctfCQqrf znr<(DC-FRl&L*Pqb#EIR=teYz;5nig;wt~|Sygp8m@)dpHer;{_n9!Jf7c@O9&of$ z=6}k&wv{8AA|0YB5-|ALCarx>2O#{ z$YweQI_|QUw6SH3T!swDS}@Fj0A3Z#Mh=kpaWKUsVmDXCNMA(Bu>LQyq=utcTQ85{ zd_aJJG2SmyRNJ3?zZ5bhw zX5MF+eE^VH_^W<+kCpq2@u z%WUAVj*hQ2*4)~$*==7<7_z+IjkbS$i}*e%ig#UYd$z%k`3KcF<(*b#n)T})f6^Ru{XQ)axw{r@as{*ds*@v;i)h2B`GhdQJQF0p z3)dV(JS6ieLT3W9u?epc1GAv$!GVW-utEx4s;SPc?V=F3IV|L$CdPi1Qiiw5qA&#o zD1Y{JI&tXd1Ju~1f2h7>;*Gfxu!avp_Y?ED{!)=eoSLpS^X!3mBGzs|zj3OEg)(MN+NeC7+jR z*->zm5+wXt+7dXVmFc&T4Yd0!?3RPM`O-&RKyPoRy~8OVr`?X!3d*iR$g%@{HMffU z4ubRw{mYn=HGs-YZwPU%DZoCd%5Ivny(iuVr4X8 z;eCMB)Xj7|kB~jt6FoCNQCK(E@^bHP{lc47ZuIGdw$F?8J<6qiDzJ_hN^INw45-KB z<4!!;rBms%=-O~F>aT?x|KS2a?n!yHDhK^K6J+h>xdXJoHE@K>*F{-t9kE!Fzr#SX zYH02O(_8n(3m2Y9UG!6d_C7ilu`gv9N$s*pRxmi)e^>m)enOpkTE!iZkw;lJQYRnd}I0eWw#k9&xAfmW6NWt6?}a19*)`= zaz}!bt$9xz93gr(f<6bfkMhG4WOu8nu5>G}@T;>6Z(p3ZU9)|EvdhL#!6zN%L`WOd z%nIDdDagyS54`t{8ZVYsxAy)Oezc^E_Q2eA=?{-@(#Q6$qF}X!moh720Z* z_P+_%f}#!S%dTZvqnYW>SKV)oXQqq*N5zNaxyqocON-(`59{6D=Uwyuu(IKfKdY8! z@TpucZMJ$dPR-jfrRrX>T});}iIE-Wq@x9@WpkE~0W$|nLx&cES>2Bh9+Hv8E2BUC zs_%W56}90N#i6N9C@L}*2831ejY=gsf$Tn+c;$x*Zw-n!x2pr$nMOlCAPx96e!C*M z>!@zX@Lq8HM+Vfl+_~P@87_EhJ!qt@`_n3)85b%gaC4Xu^bhrBhHx^c`gW$YjP*V5 zYh;9Ufl~#m*w_(BaoYyDF?~owQh4+}uL^G&vD$Xi@{?xM*K*t$Ia@^%YaL-t?nUso z4D_Zq+Pdp!t4ErbyKM(fy{MM=Oh4(d?;FXf616vI`^G*M_RRr|R(-c##_r2)YmCN> zqCFDI8+hs<@Lw(&Ef{w;A5CJg(w2K`u)HKB!rz5M+(kC7ZJwUw&*lS*%Os;tiG$oV*--5O==G@ z{2KTC0WxZ%M2$TCb)gV@n)}&n?X9^nb1>%D!q_=~F9%aRhv5fzITDj7=cseOzUA@t zpk>pSQ}k)#tKi5{D;1O44HF^1PeuXWV>^_ww_B9pT=n(KT}~d72O8KkNXn0xm^51O zh_y6EPAoeQs5tCq$5bv2SeXb46J|I^hjT*x{YOV)mBB53>z!}zwACm0p>nQ@t2iB*Xf4#i-xnJwe^p>|HI5SdUh97idcB1lNMd6SBv}JUr>-ul@pE6+V zRiS)YNvcU2KAXcAvIOrkKcR)I={NyOq9oAM+Q94S69hj^79K{Cmot3C%#pXbwfzMV zHt1 zwqo!4THaV4hhUDJX()zG%d3Uy_)9{YIR(K>TyRmJr=^niw}+&!!RwQw#ff((j5!qC z+@(ui-Giew`N-vuS#>*&#r!*ct*hPjAgf8?D_l@}HsrEPkicvNBczz8L)O*VqnX8f zqV)k@_I(O5-=!67qo&U{I)~y)!Xq3ndE8~wfZ9rtUjiq3<7|pgsBS3>S4N7n#jJ7! zYsiOR{n)P7mE{z@g}3rHt`!M0TIa9}T@i(_?wsI6N8vKc+s<#+#!36rXLJcUGjt}n zTam z=D6>)l3?>=q_>wZcURRs5B5>rZnvAjECdCqSzW{u3*!gaKzH|bjaEs^P6j^t7!2vAFbc}`P&(F6DA>jxk9uMfb2B=kmpGs z9)LwnQKswp1fZ-@b0pNkol0dO>DJ=Nde~IjGI6=v9cRBs4W{+m`~u|z)96eD!32hCzWwpT$F52Vw2pf0E;E5hQZnpr&uO@}AJaFN6iSP3k z>mfq7n}k>NQnj-n6E?V_E&8MP7NwxDG-hRl(macHUDmmZ< zbuy{J+t1wk%GAVPm`WpUz1*TAY4-NLd?s{U1WHnHUsV{Ak7yPCc z5G8pN(`HfF+KO1@9X3-FzSO4^kr&&1jLx_34MkNI#WjT={avpZU(gMsMnQEnoc9LY6O
    %KyMZ!83kKja0ih(Xwt-q$EqSeN$i^5#>jPe6N6Le>5 zs4EmpA*NAn+?cgjrwj2`dA+90*<;ihM{!Mno7b2FBsNJHG&fswbQDzHe?dcuM7;S-X}E}82`${S=kZS+qZ8xBWyq*A6FRZInx20 z@tyWvRBdEv8%3>Eh^oQY;zca`KXrQKS(Jg89tP&r{YNz%sUdOJ;J*B)#i^Ib8Wp*9 zYoS_sr~R#JcVuKt(vG~7&Y84ekqy;+PwZY5IHbG@dMGx+#{`){ZY_wcsIIL!aHx-u zmfG7tEA~Xc>a>B5`)W>U+*CQyCdMap>Y4R~ zO5fh>C}Ls$@a@prt7Db+gi|`}X>JaIrY?WI&$K5@{*1by`TK2|gF9vIf4=E)Z6oI$ z!2cQHO5@qzg0n1zf{*Uqu9+odH*X;xC^1yx%tZTJaolMv+%< zGKt)3%{J_doqDo8KWDv0Ze572LedUo%dbljSlysH9P$xKD=o#qdxVDvHAk5BB-(c? zxRfXGX$$&YYlv0UFg%p4lpt>wg=&^SNoa>n5}>2=kGNpOxtF>v59~z+>|6p+cqg2Z z3Ua0o9f1nwc0x_<>}ZW(HX#^SP5GgPp=~PHO}YDGAKR3L-F^v_YJu<_#QZl)F+w$w z%zb$jiC6$F_HlYBO?1Kdkt4^bv1-qLASxWbZ*)NZ=7JmP(J!8_kQ-8KmT)P7kKhl; zWC)EH;15Lj`cH~V0lJQt!X}6I>LK1%Ll-V8&nfIvs+C&IoDAp8<+*~tdwXF6y?woM ziuP;st?e5<56rd~Qg-OZ6c>#n_kqh548vd(H?=&@N}ErFoXZCB zs>5$`W+(cSob+l+=^xdyFpkrQ@2aJGbYs9zDeGQaCgD%+{QbSL-U#6l$kI4wjSn~{ zPn#Ay(9<@AS zRcUeoj9!GE+$ne?FC$+k#Sd_n8`F1JX<>~afTOKGKpR8mP*g5;zfh9M4`Aq5J+LmF zPw0R-a#D=u;+ov0F8b()JmfKe6H7)I_`@`y^L=#NDhp>ER0(2mR-e@F!jE zjv$R=)wj}|0vI68d=LRvT=NgtFA}d)iI=`rRek(4zo#`C3-^$HZ=2RF$|dF)fi^os zO0q_8&l)iNo7> z3d8$Wl}bW7baZQbitViW2X2F(mQ??SQmDDAu}LATN^ zFRH)6MM16vy)hTRUy&fD*`DL;GyU_4bSz_`Wg$h;&Er_*<0m(}zO>1x&72BzvzlgJ zSxL3CI1p@B9RG{W|`ByEhFlnmRqxF;72 z$J4=x@o1S(OAgVhGF=Y2j!hg+lMeduC-u8#9*1bOageicMZ8BPBXeg>k@j)Tq)zPODk+f8>1^N$6ooa_hdZ z#kjZfw&_uVc6)2{j#2Y`E0t&2!PGMmr+o6><|6iQA_HCgg9d`L!_LMhHb46I-G0Up z%NZ5F>wS`6z3^c`Nh;*3w$y_hB}eoV(o~$8ee+JHyF{1l5NGUjVuBAr2fEx6jyv`_ z>?%5`X&yK{V68eqFs41Qv4(tOh0HbRt8jVprWdNJ8jbYjwstJ*EW5N!Xl(kGmx3Eh zkUZaQ#r2(%GM{`~#0uE?#K8@9IiW{@WIeh@|2sG<+jvw<@v*rXa_SFyV%r`3bGK2O zq@L2@78cN>YXo#8s=Vl<=V|WW_c#3D5gTtxGeu>~U!flg$(fc)gs@-nKx^`eP|#L z=F$CDG?BFuhKxSFfa1$ANJh@=;858JwEf*26`#d8!%j($%s_ z)aTdx(wgerYgPqa#bDUe@6~8QKuHG{+x9*EDR}e@)5KV?8Lk_-HoBnTP2c5GoKlU) zV2mURkiX?4VB{^dh;&9cms(D%e1oXm7wa=DvM6NB?*_NWBDoMsxjE$zu+Pw$vVIh= zM$3k<$Jb zW8JoW=-eE6{ZHoflx*)AQX%J%qztNI)j;=w)G+T{8Yx_Ok|9nd{wfMNCZbtM2z>xT zZqgewO_640a8t{g*08Haj`NW{OdfB4t85JU@s z{-25l|1GLH9kI9~E)a13&4fKTj%wJP5PC+;RFC^1+Ei{wE^gzUXlp9h)*i{+oJ(-j z8fLQ!RgG{nW7@}g#Kk2Kg!eFOzkA4t(%%2u1Z@~rOo zZ=b)QAWQLbs`s^N4(irV*?rk5j&pc88ZaMjjH(WK;P1igCK>K`X4OBRT`ZC5^2yd^ z9K@yX{j`?rAa_t!*wxUjDx5ejkU5KP*lf>Su$dqczxr-KvLX&Y`D9h0;o~(mW_&!~ zUVE##dU5vcoWUuOvF+$L!L*C}vc)z2;P!I&YTk3!dOzJWPv6+Y75c>0Z^*`HTGDE* zqh%2iDZ7KD2CB-s{KK5_HVY0dx!4DhQidqqdshGyBhkkbjQ_5_l?aqqk|GwplSy~F zpJ%_9fJf{Dg>0G|yV3LQ@KKO9meU`;u>7ci>LMqJVtM|eX0kMDe@4oX;SaM;obZR=VW-c)z2 zp3e+4oobynQ?X~I6aqUh05dLM#!}v~tCR+mSqs)_b?zr}waQ9A_^klRjcaW(MqOGS zwkO;U9>~p}sPNlR{;6hntn|(7L{`4w>B3?YadFgqS4(or?N*p+pec9M{NzQ4?|C+M z`j>%cwu|3Pji*G|MXU3=`V;SIdE`nw&w4_zm?xI^R6Q%4HboO%!24cMoYJ-S;AGEepHq;BgRkq*0TV3bj%)d1 zbAQ3xdFLzN>KE7I^QPXx9`_|h)z&rwTgq;JYT8nU&wnJxB%j@VmozA?H4C30Bve$k%> z%+A>fmuZ{{?EE{kVIv=x@W9AWP=t%_)P2$kE9!pTM8y}Nl96Gai*b&EvWvZwQ^wQs zMs9u9{LYqjePx*s+2XJfzWlrb$nH3vEN`1es3Lz)*jd=~uwH6f)$*{===HyIh;K9$ z8aiau@-iiN>BVaCgbp-@bQOj8xVD&Lwl-D=t-pG;5R~~&-p#GETIzSs)_=%P% z5fPx2;B#uGeO!0UPa|9Zg6@PI@M1z;`Ios9iD#ZxBAUWy2dnSlYn7639rza=V6>59 zCRM|bt(GePwYkb~d@;Y`Nb&)8sylnfC(qkkijd`mF0Bfg82esjmZboFV0U88vo>`3 zL{dETst&XB&G31$AMEo-zksAI9jnHtPwq8WY5jEnqK~(35kbzsrLL;@$^Ag9>z-HU zaDJf%lExvrE)Vv*wQFC&r$gwtU)mx_y5ce+*8ObayJ~lo#LonQ>Yj4zq z(ii9Yo{#Wy?7xM-NzX$#TXAh0oWK-MXRfNor^oS{7Y&IyxxuDq_Y zuEK+`y8ie(Q@(SN)_zAMX4KkhJ#$~dwd!=PCRas%_|V#NV%Ak5T?SS8+0{%#qltf0 z@0*~#db&VP@+V@s+;`6tQ+h1Qx z`ZWp!&(HW98ASD-ib#2U!@Vcy%HiZWF@N*0&sT1B)o3MGBPnXYp(lTlmfS{$W1KoLV0wiHJ+|P^l1(l5Xm+w2S7|x!G0MCpD zX!B9oVp1K@S^b(})bDcZ8{|8Or{s;=-g!O~yGG#g;65*)l_qtRDFws75CL?tv)Mi% z-z*1xy0nc}@=o@Ik79-%ubPYuI%gPrcbHkNu$Wm9HV6vW6BgvnP1}k zqJEOt^yKm1+SSW1%5XvK=B93gtrtY>aCiP}Bz^Is80x|nwQNURfm7ea9bJLA_zs^54=@tBkWd0C)FcoH`*rr-Yn`*spYxsH^Y{JvtmnPgbzkj46+oxCC7`ct zP}+gR)o5(4Sycjg*P)SJlEj?{Mlf>wH}_uA)_Wy?vmM{63xUd-grIPb^Yrq_^Mr{; zh4)1t8e7j3hlfTq)qjRDnXc9?&+jsBfLetmg(zYK58c@5Db0Wd?yz20H5>j&%(YX! zQLHv5uV#J_n1&Fi2Y!SwsN0FyY{Xude|!`)DH7M66Du`}A8IU1MnP*^DH2LEL~gt2 zg}(`puKA2Is2_Qt3>S;ieOAWasp6_-ViwUWg@4AjRt;eU=ay?i#F^1YQ)QGMP7>G^(0IpBpr{E^Mw< z+WT0LPdDh-IJN~$+S*;!P`VQ+D)$L&6%t&miL1(ayCn*{EMipk4#L^4HQA~ey{knL zFZlL_9FptN4uKmR-tdvCebRTUfZv%gd^Eo%7t*vk0vk}p_8${|@M-&k_o0pL zvJR&G;f7vmDeOH?H75ku7?~&n4k1z7yr=fs+>d$h_ks*Va4QK(i6XK>r3HGbGU0(Y ztesswdZycaOzXA3I>XBHq*%{n@_J3{E8MY$J9Ncc1j#7*o7=SHe7h9ix1bW|Fhq0R zXI-b;l(pqM$zCE=_T=jk#>RUH3Lra_we1i@d* zC5YPOG9i0Dt~9FCUmMzj4Bm4ajN2QxDXZeg%G+g!-&`(3dsV`!-qSYFa;gVw5vRQ8 z<~C%*2m;sDlSD`9vIY^UY*!1u5TPNW?jxR8qqQML#m z-a4t;3n;_Q>$y3Jol8!BQw-NAcix+(Ky8PtC;&qqJFXSx&>w3enns`NQ- z@U1VwUerz~gdh%U*lD3fk-qFiZYR>TL*J=4`%=tJ3cN%>NNH5i?@q?!K+%r+#OTQS z_DCrw`GVvn4`V_nprXL2muxJQ!}jvZvQOfa5{mVu3V^gx9#$pjAh5$;#N!?ctPnwY z?`>er1%Sonpsg_CeRSDwyR{{M{4<}KnaGg+G;gc@zflq4yDmLuV%r{{ZNQa#MXkD; zziuPEAMbQdvpX=JZ&U&T7`0_p`{nWNh)4aJF#b}7-9}_XsKk-=NS(i3_X0uoeR2?r zlV+`@vfrX3;Oqb4>EV|d)Yw)TZvJO~rzu)%- zQno;S-V?yf^zRmhNme`b{D`k)mft$XFF-1XgvK&Gqsi5GJ-Gw623u^(Gz7`0stzduwrQe-t*pKoN=!mU|dAn&GK zxe^~TQRR(S&haDCp#|EtZhbFP1=Z>=1d4sws^-=~bN$Ie5h2~w{rL>?t~GelJIGU5 zSD|&gS$__2ky~3XXG9b~zSZV^SGO~)-W#>d(_uGS@jr~hlvbWSlk_EmpbxIH zskQL1k9FRZJ+^~*$sysE1a5cKU#Ytb-QXRjm}i9RRpQkqhd*cU%I8>E$gsTbo~p`0 z(9$Wf$ycDY%Js#+S^I5(Trv}K_evuI&FmaUzh`ePond%P)q^opw5;%EjXN+?vBYFU z1`LjGnTO%^c0O>4mF%nCdy@Dzu>o&PWf(@!--dEyE_44M9nNwJYHc*!Ln3Nxh4; zs+Ub52P=Zf#S7x_ftDx6n}E**o^FB9(O(~U&+)jol<_CtP>pf6^0&KTNncp=vkv%b5bmR-XT* zud1E{Z-bZwA=&neHHzz`?T=k>UWLTWvZ1|rt0Vt+Ke0b7lnXr zYFjxtwsulr-3~Ap0cR%s;BSN+qHiO$dhHVBy`R&K=4bbOzxa+%XQH0gU}&`I`XJZ4 z;l?g0si*sK#~wgD*D_W27ITbhRP$&m{cBd1=xPjzFgnp#sdrAhdcILz^JK^bpb}n8 zgH*V?=j!hz8ze;PoT4Nq)1H;NKVuwk01wrET6$+crd3zmz5zN~vvp!YlFTaZIMNL$ zlQo#D%?M{3)|zFCo3%N*x|VaysJFM^VJ4|%iB`ge*zafe$ck4y=y%K>4Ozc{Utk^F;0*>lGfbn+4sdo_E)$W`0Qe+0B#F|Qgw~?S zr-&Mz<&{`p-Gc+((F|Ml|5G3HZM=@}K3i^FVChRPy>j%8r}UbeyY!5GYqXE}ZB*jm ztHq};qyAtV*6Zk5wcgIE;vLPD#A9W(UHQvOc9{17o_!pp_(Z_)hl5w%KoEl+yKVr@ zGdG3R3s>g_xs-vmf8MUIu-@C!j@r;$E82o@@9z&MR;i@_HyBHeK}|ZUDZuYtaSAeP zETYcSzVB|(5%6nT3RU#xKJH1A@Q2d4&F-GTrfqs#Zinj(D56?53_<%G?=o=bQl^%y zt4LIZZ2#$Zd+W;EKC5!6(^4;5e_>q!j zgQFq5D4!gi=8Dp9{|$45v$8kh@Q*?BjTn&A^IKhwc|m5rUFjWi5F)?6rrhhXk7OK$LMl>N26mk@ni(Wx)Dh8EI~$#>%CQ0EVET zr2E<<)sOrEZU1%}QP#a6q)1N^hq^ZDrJTJJ*LvA@V@PenV8`n7YIFRrk5lAL7(rwm zZE2*i@QdyoPz`*5+i5=-7x1~t-K~G{I8j6pk_ekj%-yQS7o7g^i*)WxTGYWb@!`xv zgDvp_sG8;qOpCvS?Z!nCQ8C(JT$SBAAuidVZYf3k`L+F$z*#`Vq-&nFnV8USNbVyc zDB`fE10S2VwudpSMV~fH8MJoSPm%Y z{XA$N()>EccR&a){#=QK7_afSp2SLBe?KPQ-j?NBQ4Zh@V>A8tj(>!bOp##eg5dBT za;)FmaS?fNh2O#}%T`h?Wp{cfKYLf)En$Hf%C-qyN^hr!DM>e99M1BklAWmuDr&MVVYWud)e2)NC4+!_BLN=P>fCGz{>Yq%bXGFe(mWaaY6wiaUI)J zDP&L*V0W8o`m+K%@WR|o+H&7)n4FPiQ(!ZZW9NO})is>Mwk12Y6WDy5=~uk> zTv$2*`HIh+X!=ScS#+N0D>)N*k>f)B6=o3r#C>km6SI+Krjn~$_TI~9P*UNwS)bY1 z!4e_rn&t&NpOIJ07?NQ_#AoX^B9TpkprPjWGu;lcSy%n`sqJGE0p7N)-a{P6jxq_- z=6$2s#e#=p4NAk~95d880mCmpsbANM_V+(q+{0KUf;~FFyu;RuBvwEKX=jx3ALpUs zW@l!;1sufO)D_Q8^&g?e-RjWnAYg4hbFbAg`{cr=v(vUlwo-)t1Tk|bZO~!(FKK4w z%BG|ok8t+4K}eM88P!LRe!->1xX*kIbD~Ui;JTy5Q_W$6EK-`Js1qV0(1OJ-@j>5E zju_~?3hLC1WzLO$3)m|0DbrIpq`F?*fFNJc=>r&ujkHc3L-cm&>~RX{%(6(o%yhvY z9y4FQDq!M1?;kJCOpvN?Xoa5BuPfak__S*@e|qY8!$8LVu#yo4Mth^f<_@eC7K}J` z+B!@d_Kst;^WrU8k+tb|TKDJuw9=$G41agxJn~rtqNlQDKBJJ=WsAHGhl?I3o_k~z zD}raTLKL&ZRRaU)s|6{V$_m4r?i$&g;MpOFtSy;hC%F=QRWk2q!^5`JlA)t(oR`!R z5@QO(`i<HXQaAUI= zw>{=oQ|pAk+vCiX?*qKdkXSGH%22|3SPf@hTC{eqLsU&EVu6~9RdE;p)NpP?Q5<%z zzCni|eTo4irC+U~4!ll_VdOrk^p+3B5V`t+$-3V*>+W}qAW(Wvjv%RV;Uz@E+^&D`&rxK`D*%p=avZLXwk+Z z!#x}gQGk!Qrip%zxI^#s1**%MzqoBx(t-aY|6jAgozxYE*W8e~ZZI`IcY4zVCY7Ck z=ckP?FDEAhieHeO%#m5C+?moZ^jS z`gCh37maqGQss3M+8-{*t0k*Q>3J;otHG0W9d5GXZPKcKit5>RS<1@0Kh|2zcm-Pr zCL#yEyxe7DPn1pQ#Sao^CL*X0W%cQuHE+a2a!8I|{=Kh?7Q~I8%2^texf_|l?Df?( zWAh&dvO9wUStd5&4dH92MRy1F!|78&lPAmTFHpM7OU?jIVC08h4uPEcH`X+8Om{pC zqP^Uu0-;q!O~skx4HvoFj9c&monTVxNN!A~obL2)f>`2A#CL!AUgKZYrKV~k;OEOF zJBfgwolTC(3TW><{%vj$-&)6M6gN(sO1nchoJIehmmmlB!b~u|74&BzSgw#UjfauMM@*nRAtmnAYVd^;P?aiN)B%)@w z`?+Y_Rf+R&e%u?z+zc8H3vsMy@JE{bTu(?DpwsEx<4zzElJu!T(GbolGg5INrzai+ zlSBQ%ZhrfW6t+!J*V4=+%*>^trb54A-qnYZDrj|vo}peYA#ZkzP2D3VC(z#Nyx4R; zYv`Sk9gQK|Yv@X+inE!6GKR`%HGk601tKvE*>U)i!xmEL*zK9m;1e-DXA{*FXQiJm zyTAiW<+JpZ4Yj_7S(22hwh@6BVD}2B`dUaU_7`#&1+)WHg0to@Y62WKi)I2n5;iwu zqoKhQYn2YmXJD&u1$RvE#YU6IhHI9uU*I4-cjuUe5mQ_R$dRh%+3CiM7LWKK@mQwF zVKc)clxAx7NY)^$(Vs<}O>H}k`q;Mh!k$KWjCOR_WrX#8*ud_UBw-HJSZ2a%o`mUY z9ko0)6=ta6fk}+d^j;lymln6rXI8AO+5{dYY*?jun20uOq|jH1{_SlxxLy@~hi5%8 z%$CWR8h;9Fnjd=62e*Dvq)X9Tp?5E&cIUUvG-LA4zh1y3Hhf zE!U}bcIOPWkC=BSu736o)(fJnzftH;mLINN+?C+jVf&QyKdBF&7G8G<418wcl0siG z!))IBQtocaI^LElJGiF%MJaU!@>N}}Ug@$75z2KxB~WxnK=39}=~GfZEqLHJUS(*V zGv&9Q|HbjJHAg#fH-v71k|19%M|4bgcO_(Xw#Rr7;1v-RmHV&WQ^Q4>jsi@q29|4!aXw)H8DClTCb`5 zrUfN2DwH<^HaJz<#-D3lA+}`Mi)zGRu*-@s7h8Qzc_lu-@WxW(OyhK*q_5Dk6VCKP zXM4^~A)}h4csQFG9{gl}5tn4^)ZJYh`<%{nb+tmXn7AzVnS!73r`qLAFG^W}M6I8% zOPu1}4q3U6wGIX)&hi%a4#bO)9ER1Ev%=hRl6-z-<=~DjuYO{D*hVYV%4OY;BpurT z0=rMW0zxVv#thLUu7gDfZ@N@bl(0#isG={8oNmsAYmDJmfzyjXrfrIq!G~aO7(h`O zsBnYo4^PL|f1{l|Ba#0+)Mc}aAq_B1im#SWAsI$VF`{9k(3@;_>0YhB|AJ&&id7pn zUn9RfkY5zXEih#>p&Eu4LW}&&ULD0?V)3|v z(@ro*fMW=qOib#f&yD698X@V}G_yN!e+vVI)z3-PFYzrS1%C)_q|zpT2iulZC8}md zjJzV=OAgQ-apq>{YDXPc5L)xYlHjR#DQisCLe5nMFuf# z-F1NNEFpQWN$LBwE2bsMX9B}TS$8Laf<$7#@C|vW;=oIWx~{}00)i+e=+4rs{TD9=_?Z=ICBh>Tcp{-0a!7qG zmMAYppBta9`-Gf7)^V(WUt@mw;mUqfL)hraD4V%){>X8P36MGYU5D7Zg>VNaugh>S zbph_&N1-dtg_^^=kDiOh6<5=Xd)l%hhvAJ*aN~z9>t*{hbHQA}?fukgpcNW{b7d(N6xA|G>aN6D)@xsQ4%Y z;LqLY#QfV<2HDS$!HzV^j2i$BFy$GRmR0$~5fR+Y=gkKuFv0a3SO1GbH~cH+gIZw* zW^p%BemnVMI9S6t^I?L?ffobJoBzQ1y3He}b0?N35nP`qfA#+G867n>=40V7*^K;_ zrtKutHT1amBMb6atr^5na|&Hr8{l-I>PSY*w51DY$!q82&(45u@?#VG|FC8K^WM$B zYh?T9#Qr(4f9riH?jb;x9UdOJu>&;M2?+myt%3ptQVEf;;HiG#i@@DmW;ZMUS5D^fih*A^?kuDH=ZwZL> z-a-ihB(wk_v=9hMc-i~e&)(#(zF#$$;`13C2#DG?IY z?iT79k5knz-9B?VoJk-|W0WaNP~zx@%ncbFQ{SsWG3N(auh<;~qbLJRUoR!A2}BJs z(KBD&VZZg`?zs=;XNS*tSNN!^l77)pmNSJ7sKbI)6S>g?K{zg7hXf&GXX}>TO|Sxq z%8--qZl3wqmA0P1@SnRYCu$iqE;2p->-xxO&A|WnA8)Fkka&CP@21b03>?k>ZqhP% z%ktvyriQcb|q=<`}R4tHX;-!sp(ci2nD>ubldy{knL^0JDd}KY0~*Qgr&? z!}tj9?#zEr)8`8U!(N-;!|LVuoSk#tdb8IzpH+9AZwjGr76GkgwJ6D}W#fHyL?i^9 zYR+?t3Gb~|zgMs^BF^~Nw0B17FK*rdrppv}E7ge>aza}w^Djpj`>u1BR#K+9kmQk$ z5Zvaze#o1V>=QXr<-&f-yCV$}+WQ%^ABbco@9iT+Jps#%JPg5nnte(;B(^ zw6SP$u!GN)vY^#Ku>(ab76L6++qS||O;HVsdi5}cy|i1{5sYMHO;Nxhjz0-wmovuS z9`|#5es8};9Nbh>n3FlXDWy-aNcy=&cjF6`5wt0E?nm6XC>mBBK{i7H;r=sPi_KE~ z+=h$B4FMgBU^jq@R`Ju_gdyC(I!r>b+J%tP7dfr@$#g7sHNEP`e0*}w`0%U_Fx;gv!p`vwRfFQ<4A9Sns0w;<+UioT>?3j(_0E9L)P7{ z2dsHXPAeBHZAtP0d}xbgu|oY>1=&4OHl>FU%1@(iHn(8HL4enCQ)Pw$a3H=$<#1ZJ z^d*RN)BIpN>9J9sF*tyl-oWRzdZj3RKM}HQE$6dP>WHH_uq@BWfxlPu#>T>SB0(rd zoutw6XWz|Fa$W0hf^7U+U>zmu8#^u_H`tX?7th+aF03|JQ zqse(VUwLk@qeK}>R?g=-pK?&a!OL0qr%im!NGSH>Mi3#tj@)bYg~kYA=X#j!ci7=# zMsUhs0c84Wp-#Fa_Vf=Iq};-C0?c%hZ?lhO^!BVxQ-|nyi$kLPagW_TQyO? z`ftZ;$*Jqsd&|!>f@qNZPxn3-LtXU53uhbih2K=+<6*?cvJtYI0JiXu{4N5jsi^At z=%02aY%5IxVviPcg4@PTel;5H7g>fc9}m zGzBAao7q=djrqLTWEFLBQ8A_G^s^>P_t5=iR!tS_-RUoGeNirZN{}UoRxUqjlU;(< zDTpcUpo+vQe(^yLR*%mXTmQ1fK2C_^DcE)2vAxbgJj#A@N3t$^ckrVFCKYyh$^~5O z+ugak#9D$JQlMw1e?lJ8%tT+)=2Got#Vs*j-RkxQR(?hP^BD)CtCPacPNZ))#{292 zd!4Q_%c1J_zk_VCK|j5lqZ>lrbhUIKcfQK8J#Onv4fY@3lv`3B-*K5$LUGP5MII6B zc9xZPouQfoUM#zpR(NG(Hn*X2({GN-R}vcdQl!ch%C1wpPm*n~SxJ#812(|}J296* zfP0XSM(bkVBvX|kf!=M?7;ybTaX`20B9@7D^jr*Ikeej8)y_UlZZ>G7 zuV$Jyd=1ogb@pHwS~DFq0*fo2fJ8TeT<6!Bi7;O1A^va!Nz50Q8CTvNT>lMaRfD-G z`wY-Z+5|6Hc^zR{aFl=VX==6qE9uP3aBxhj`pf&_Qo1eCEM6 zA8)!8^fM%E+sH-F;y!VSYa{5s%GMt9228$l_3}*i_O4g|jVb&6BwP6_ax| z+TA|_jvj-=F*8A%&1Dip>^YR|Muh&q%UN zRboQoMQFG-BrSMpZY8}Bv)3l2gU8M3WP3JudJUvL{9}Y`kAdIYzOwwsYE7=#BH8-0 zrX3XW3#lB5dHU2Mxw`$NUW}6q4%ynFgDvpJvwQTvKfv7iH1!rZxC6em8vM9^k1No* zD_vYMrUwXu0k(}U3&jG+h!IFqc1ZEjBpkWQj~elnG56CpR! zm#f@PIx{OA4VSM~3Gp3F9@*@hDx-eKn5yj|EO)0XB;AVlM-zrj{^%1d+1vv`9MNgt z&Hr3jF<2FI00wzXE-m$PX-D?el46CGYf$xbTj~v`(*U_shtIv+@XOIkwfh;wqlGcb z>eGtXY3;!gb-R@}{H8q)-csa(Y5OI!N)NUpz%xoYmIqF&_C)197$3?Y#!ny^xbPocsZ7QRk{7rjoxk(MgdJO%m%$%az#(f=ufDj2P&n zGcPr?3_Z5*K>wEO)kVnSh6K2LXQX8eR;}-Pl-KXa50JE)z{F2AN7!+oHZP};=}5m4=>a?%IkWg7kybG72sj0 zyPGp=KrD+(?hBbZh;+mmNr7gpq=qdRtkO=5EJ2xHI>I;NRU>1Q$?GP=wW4L|x`@?! zI1g@cC|&ikSvL^kpY#e>A46&{s(a2 z^a+ke4a@ZDa=XYdNC@W#UYb z!5a?ScTPOzPvZ$|vYMH#9M6A%M~Cb`+Fzh4_X#Ld_9AGI1UR42P{Ctb&mID3Gj4r< z6JY@T${M)))$fQBRS~T0a(CAEjq5;eQDm$i&%?mq`Ay`I+BNKALnc%+de!7;rafY} ztqZ9v4lRUea_v?6loYRfZf0pvS;2n=h8ZK3PF+%|hVIy0W$~{N6ScV)PfKivPI4u? zP5YGcpbgqjN$EcbP9KmhK_k-H`o~ixNdWB`_9NHu7hQFJM!xheyTh^8} zlJqUrB4E1w;*@;ytflWlmfW@e5WB4<)eS)Mh3g^6idd*4y+lr06(4~<;Z;IdqQ9a= zw1HhGe9l~xobsmkozx?qp7~WbUny*Kn)}(&l}4{pN@R_#w>xRI>J8)bQX+$5k9J4< zZ1DQF6t7NWEc)T6o^205R4v|}ES~x`GIfiUg;*!0aJYwALak7HGWtYqQ~YLWl5U+# zVJHJ~^_*BPJf-1*4R=Y1+XkzdGOrKth6)Glj_h`UJb6YIx?XBDtXU12?dNW7HhTMv{P9%E7hnBg})Q4+h2W z5@cL=zvm?=7WU%$;D``On#m-ZLN=34Fx}&lRU(BtJ1S012km$EyFsk#;lAxod3&zY zK|f>+16F@d88sx|5v@CD>N~X5>264@&Di|%E`%~ z-AY^}`23gfss$I^99M?HS|R(daK-$D=aYpYM-qJyHhIwO(CSo$bD#h+a2mb8MPc>P ztWQvDsFaqKsTtW@Qe}=K-G}~~_wN}>!gc9;6Diq?-zX2K4?2|lP8LEEiE(D+_q5at zI10x<^S?VmBBx_hl@8YbjNz+Z;OgHmqN@mmy1t$?^*0%4yP`;0v0&HM`QOPN9nb3a zmRwK)J1s<&%3HL!t7HADvP5ktM=eQB>Eg za8JGOY`mc(1(5XXDBFUQE_ksUY()W^I%WVt33sj{`-x|GY{M@VrkHHS5(Oqi`{ z^Hct06Tp_3#yP+(@AQgPo>*39q_KCmguEKyx`UImmQZ@7hw86y3IJXnH6};PkVWJT z$G=7QEpV>+7mjRZ7m_XI1zINl<^oQ{@J-bH>8n4EDm6)NQ`MOLwfxu`ULOfFynnv^ zJo;qntZm(QsOFuiBC7vRyy;Zn{#`P+@ zESy7ZdT7*E)_)Zd)n(@{_*!Y1pq6mqAvyCHJ|zQvT5o~c>i5O~jUGeTATLg?S@LJj?_?Y447s0VCK5ghVVgz=ZqW;p&ljYS8aj5fH?iSyA zJOZwF*VZNd5U!!khcENiA_SKKOKNOH472j-bW0mgf8eTDMF+<6N2Z^ccG{x-fbF8& zR`uw)Z)%5WwvhJxrhSH(J$b@tISm8o3i^}iUBqh&(Ky;2H+Qmf(Mfi1s#gSD#m`if zXBXw@(i$>*3Z0z?){i*?mjFa^#T6BF(!Q(L(aR`FqyoTd1}iT$Ms>xMWw|*h*C$_^ z_x|xf(3HOn3DxE#XOq($t$Mb;n9qj^Kj&NnVF?DaS@#L3#>Tiz2BmdFy%(@KtW4uWcoc+O3w1P zPwuriv`b!^;?lIR+%#z*navejb!*4Q8f4H|7ci$TXRYWk;ndFsie7(R;p{epbe-J$ zxC5^BXs=t=O9{Xs?w9@;N3rGEO86bQQuJL+nZK>?J&^Z$59dXs8 z1I8eSq^;PHjRD@oumKzTTt?iu7-VZG?+c2nKDf1CK&g{4E)h4+Ypn~6-o zS=k2f=Bx$#juF`Oedzc_MbI>|6uDFmS`SlkC`}afR zdf%(20wJr#bvvf7JuEq9>lTJILG*QGqmhBl_DLB(7$CmQGh8Eio#WlW|aJ1bhd7tN&fK$8xT6SA#5Z*3VU|Zzc3< z*|`an11;3FZ(w7pdb#(~vhACtveSEJ3yFKrf>`9dcsaonrsFQZSDyAKUFOC#IN*X0 z!Q)0Iy7Q5%ap&dTjAu8n4awXy^cmYjfVLWrwSkio#|^P1(P^5odA`@#Q4Fq*#O*KJ zA3d*o=n<3n;jWaq%YBkm7x`Mh5Yk*lKhFf(8bt_$buEG25P(s`t3|VMf4ih7gEN&* zeYsOQ#neNudFE;`7Mqs7R4s?FLKZkrovJ{x=ZAzC88!StNDupM%T%=QYB$v`5C<3@ zmiqo7q96Zp!je|?dBvJYXcsVTX|ca2seVkKYBo=nCtptrR^6Eb(OrUj5I5wgn6@IW zYvNXr&CGP!WGr%D2oUN5vhnQTxf&^ps+;Q=5YrJWkP{2Co7_~Cs3W1{Oi}f&>R5p; zNg>{;$`v+Iy;Pr8p0S)+8hze|hXyItau}F-d*!1esk6+Uxs4sQzp7IK(x3J`TC7oO zI(77>3~*;EWZ@@o!z`w@WS_2b5r2I9!Ircpx8A1pFN*a^c1N8bbrYS=f;yZl&%U&N55nmy}XH>t&ma5PS6g|hPbmHG^v9O_bp=N*WUPR9T zpoyzFJ}#;6sEc}4h`1&B-w0s#P5#0EC63Shzox|>KXq_m`-@!q$C7{k3j30qtNQle zocc{6#r;cvdEb99Q2&1<)N{o_l6z6+fhRYZ4s93Kz1?((ll zjpx%>ew_NhE^j>EXPH~YABU3rCV9EG$A0pFP?M}ALmc9elRjN{=69~r zW@O}PA@jRI_8a zWGa^XCuW}lHzPW_M_&H&@zw~+8^4+4g97eP6(<=RWD^%$a?Oejx%+igj@%jVeldsLJh|GEYDW+xfHIj1YzxhrwnUjWx`}&4XRJDrk zHKOV=PCdy)IFBym<04GkG6meW+9Qg<;#Nr85V_))Jp~ctdof^4ZC1Xrp?q(V*T`8; z-+!%`oz7$WdBY&$$3qplpv}@DcpaU-3@A<~4Zee8r5~Kudbh`qNmkhkIVNuSQU3Gc zihc5jLig6p)%`gb&YY%_2=JV zjD$XjY_Uy)M_fhdAB3D{On%YF2tfynS&tDx*60#o`KB2v(0S`)edpj#UUc#BY^=+K z$#4c6ihn?CBONfyVAq`Hd&VPIThGOvKU@8Ja=Qw` z2y;Ds+vB(S)maLq{^O3&*agJIExv;!lQF$-{(GCDV*-6XR^tfsvYC9{?Bz)_Yk38v z(2UC)lfxyM$cSeTu}(ytqhKwp%K)-AKihXZL7$b#5w;)7<6;Y}mhG+BItRjDXfP{s zxgj^^gmqi{N=QM>4CYz}LCzAzt-xKleSW&`(XL^-!@30jo}Ky_Shj*H)&;wF3AFjf&w`k0$y?GCyw zixY)&rMOR+fLm&JPAe#fpvC#Ck<{Jcq*t&S!Ur>fOcz4?UPjjO%w)Qce9Y;Q6|~Ag z5P$9n#XMyi-_Uhg6VYIE_dlo+C0BAhsQ+h4;PL0Tm12kV6fiB{Z5|bS7$<4msgts= z*?{y|>;H2kyV0+I-{sf-A5Hf_a?z)O;Pv*6jX3V3%_u*5fW=rGFPD-+VYoriI2}OC zaof$wOEWkNd;2bpVMiKCo8RGjv5@`v{s-Mg!p5XMn=*+s06X%N6MvuYwbaXfC45!5 zrms${exdjnrH^!WWYYq%x<)SSx;!y4+-6Nnf4GWkSLqJ-wsKSR?&!eg4MsY~0KqiS zz){1YS-R(lDqFC_t1FpfBSh%JOcaCxBx%uX@A zcT^IK%3Z2HbmvS}h>A@&lyY3g)r9OJP^k?L>uHg^--h=`#{r5P9~*3=b-#N$XIv=c zPlPg?B}yL~sA}6>7d+Lv3PRFh3Et|>B;A{@7-_$wPre;*3yS{e2BfS@!l}5Fr52++ zeNOWv^V}H9`mVmox<6?WNZYRI@!RDN>8i9`z9=EZxNa6Zk{*>)4-WanBy!RP=!80Z` zPG(*MQyD5XB5R7l?dqyH7yAA}2%y5-X!1FoCa#wXI5M^EdLr^S7XY=NcRi}RXo~v$ zu(k+OnfGdcR2Ub*_EVdCQQ=Ss!pVMkvcNYMY@6mZF$Sj7zbDtoqEQu_94Pa~?=}@0 zw-Zk?C%f6ue~qAk24?qnjqE8&k5}K}AOv%IDp0xZ4XGuxDldnk`Z$Z_FW5WViEMXR zdolX+3!#LYdM6wFY0AU@aAsDijNB@?!tLED+2V`__hBXh7g6(#p>eko9F(AL4raoyxbZ(QP8rrjK^SivMrSY z0(u7vTG~iemmzrzTu!%T4u0ED*u&_{bNKbg7IyTf8PfK$fFUYdcFQ|Eyl{C3+4ox6 z7^i;uKb51O{Asx+J!qLqv-5m17iGn5YH&ZiVlj98F!y9_mO~)nbGI(>!7R?FKT?zIVoRQHw~11a1zR`R@9w^&iO32l zJP9IGWVpz8k)f9C!or_4_y?yeT?q5b=qLVafftGi7{i)ZeqK6%WEada>dmg_8z6PpeF1P{@+qcIs7vAN< z*eo5CK^9GPtXov1CF(V8vnS%A&YJR2OBQpxoP=dfR+m#O&zh+lFB<%4zA2tjgX1sV z#%)j6F25O??$Ojyy>hOSIkv`~Sf4Z@1H5~H<%gIB4-REmEGDFTR57)7|<|p&=ah(GlX6Wi>Ms^rNgv z*7TCoWYrSMC-HK7U+wGLzqx!}tt(z*i$4bs8CZ;MW{hD2O@OpG_e2-XUCROPU=5K# zli#Op-(Uf@pARyyQE_&a0?yOu+}hWNEj~SFCc4EidYi{ZfO*XUOva^^GG-ocn>V&c zK)cK()OJPYoTpqw+JQr6$0AMvuj!$JfH6rRrcD?M#wSjc#Ca0uA**W>+^56-U zxrvGIW--xVe`g(g((mIk!4(LeqCa3|!50@xjTGXrP7Kn-MTC=sggrLb5N3S-3!%)J ziY2u`KuDaanWB!>PyPDV0$4cMUdf}Kn@jrcX|NEwd1yj7%&uSIU}CUmssH=_*0g9b zur}jTL7vj?dh6KySQ;OeOTTeeJ}Opdyfx2MlV$6BXp%Cx2&?>xTKmU^i~u`3xjGlj z?o1JriStP>9Kv8EEyS?JS)pntuA#AoWzgxiSv-d|p*3vR`s?J)gIipZ)34~`8iQvjdG%b9>X|f`IVv>wi z48Lp$3dHY52I0i}2t(#}Hs42u@}IsO4~|c7)qtUq_BM7pKbjWjVtqu>=jrp4VWRvl zV}$b#pLqyd?bogkR@`RHA9Jhxb$I%zS7_$HK0}LjUQAsG7VL@zD4NM5p?x!P zB85mf$Y!<*16%}yeBG)!tlXogxVRU>qm<7ssLocLhS?uN;v7W%P$o^_7y$xKaL*GKkvA8)eRU`)c}AxF~hl4+H~z@AT% z?v4`&Q%0h=%isn#%FX3xb+0MwllELdNN|qVk7et8%`5CEkPAh(MxQTtpVNWuF^UcAe>awQEx&R6-vH zUCtpK=W%=0d;VPSpQz7Hg~msa{c4%t5{{WPC3D&LG>1WguAXjI)nyG*kro=d&4CJ9 zoGbuZPA_r4O*Xls*U)oXk3MhqI=Vn4>{a%|j^Bh^JV0_G52s>jz{rUjimneAxw(1j zL}GtE?S-mN$&^PGRJ2Eg8BP%U_|?RHl14}GH=o5t-a$Iq$iJdao@_Wf?g|Dw#i@xt zp`LOcYQg2&JRq#MDEHis?>>C}=mW1LfEKCU~lDt*8kM z9WLLFER;|p#(-(~i9aM(QCXhI{jJu>jBDCr8DvU4xjjC?mYK2$6^$H)=PfXk;p4995qhcaAYkR81wUI!PlW3glBOYzN z0Ua!XBaXv&P5tlQvpuOBI+P9-+p^6Kt|evE0}tuLJ=~5h_d&A}7`t$##G?A84(?{& zJ>+7JW;&2rQx11egA%P! z3v^6Y1u>oWtNx&jLh3nIv#iBQcRBZ;(-RK9=m)o!gFG9OvclBtk!<%;Fr z;Flw<%6rBB&VPDRB}E5?#$YE0WEvv%eJ_Nrp^4^5$AkT+xRTn%a`UH+^j4Xk@jEJ< z1cWB1pQ~GO(>fo3ouh6Yb=-hY}*rzLb(=hnLwauiK`GmqXduXsH- z`V@H3F(40iLO@(5S9xA?52}m6s_b43Z1a3)Yp&*-F7p`J-#Rvy)kZ~Gw_vxk&#nU& zSD%hywPV+VLr7~}FxBo4qouveSFsBIP5Sk09ZdR zM<0=rlZ1|f%F1CGFsF%d(KR$;Qp&BHR1bU>wC(pct|%a<%whBg-?ZUaheZ{y3N@}lS3n!v~fZF&@v4V-{BXJOudZ4ovQaH0vRLY2#V*UBqMpwtsKb`ytT7!|7H^q`f51lV$Gh`%IZdV69; z=Oxh(Sy4D3&JWVZmv6-Tp-9?oWL`e`jjTR7sLRpHBxw3x&N7}Jau#3ZCG_ZSRH4lZQVq96f5Z{3D*SA8 z$ikO}o!fq`Q&z@PhXHo92`Ah>EX zZ3&pNw;kV4Zsoa%Pd#Yr8*HOlisCNueoph{xyxsdd3c4lziZO+^mx525qGu>)_h8u z8iRHo|1IENfISjw77~34XTbeOjh&5aId$(nieck3>g0b!**C-gD{1=wMB2Sc{EuAR zTgfewP1VEb?X~|R2G{EFdeet_KFw`T6MTREzsSiI(#6>ZTmXSrK3-j(gk5|4`FLP| zE69%@@?P$*@}o+*fg|U`cmed|OgnJ>tNzVbw}-Zi|HFKHOK)Kt$YS&m8-2whgjtD% zgTr&CN*K8Io`Fkag$u z&eVAvET8$O%I*?vrRBSfYmfPx{_EO^5% z>+b=RzO`jTkV*86uUg>KdhaMwXQRd811NCAAz8vkWJD5kK~9F!810=OEkMMeebs^| z1q>&%G&hrrG*eREC&x>~Z>*#0<=6}UAft`jzllO5tuV3NuYuLP^3zvV9PY5=`sVcVhcp!1TDfuBxObVq6` z&GsW%oRHKQPsur~5EtLd>WxW|gx$})O?to!m=Z&Y6|T%+18&51#0fZ?pv4a!kV@uz z%FErchLUkSZth98Nxo}IjoW4WLs`#chLh)Q1IaQdZxJ6vU0o#tk!iJ=+z~53CL;dH z)O&5INlf&UuY+wM*xkdHCo#ly$MAUKG?oq@NX9A1T?1-l*@&`B!fM)CCF6L#q$`30 zM(g~Yq%Grv@YWr5DI3U?RQ?dKPA_F2#>q?Tvi=G1Lc zT3^tBCx3_QHhNzX5jCS0jzJG}CQWghFF}rP7>Cd5%qDBbN>^1?t^#@8y?8S+GsOZN z{^US}dy;kg_uGuaAo%k?-1a0>Q_?a}E;Snt4h|oa^W~TW@C%;}mo#R2T6J{^Zbf=C zUgdD=@b`s>Mm&E6j0zbfVfe37QJ$yEN6&R`IQW6ghmh;&rb@BpR&z21QI1hMRjzpNWz4hq{{qqnFOdhAcd)O;k9v`D-#Jf3ZpfsmX z{W;wyX{2jkWc1bqF!wHrasn&+*#u1IIA@1NN?gHxKAS~x5FRZRCyC%G!9STp;`-Pj zH`jU6({S(*UC>4hBV^)G&Ep*$ySMLQ1Z_5sG|qZe#By~szQ_u0EqzWdf|YRji^FPj zyOb3?T4K_fso;*s75>7caY#Pqvb6wO={wdXL5PvZl@n zsE0$Vc4)1UIK#(c{UM&|Miy-%@8KZVrLus6IJ;+R<+sP)-npb?b2~?%e~;09fT;E22Rwba-n(t|r zv3ug$*RK-PUKJB&Q5&Y&rWdmHE2WN?2P>c6bzE&-{jycz7y=ETY=6j)IwCnc^}8t3ZE?@6ud~V{k;B`q*g7m6 z$Oq>ZMcklDZ##u>0cU~d(1P3>(sD-3vlOQKMnS&U-B^8vvffxBuIO`qo2p&GxDKc?*&2KuqKX1K0+mP4dCAH= z@kd)p22@Doum!oZ2j$4r1Z)G|38bG>01kh!Tv3OTJgw46!WEXKV{K-V3}|MZm~WFrd4`# z#bNN*FXkAHALLL2rmjn0tVOEZacWJ%@kC5Gl+oJKl5=gS5I^`hI<7H;8|$RE%w}t9 zNLjVW66AAOdS&Ib^X4$JYKYzU zb+2uEE{!0~82q}oSRnh`S)ChY(CrkfUq9Ijb>@O!f=1#*_j%Gm)Z0mgAi8DPYWo=r zj(n9azMIp%4XT*Pkhk{=niot|P{I_5R(+=%V=%$!?uQ(W13|2$65m@`;mY=#Sk4^2 z$p_O^Ty+I0OKDWIza~urzxsS6&8WnnK1F_Y-t<=<->rkzp~|YFm|@&S!3;PuIc4)ICczXPE`p3~Cy1^1<%TP}!cJ-MSn%K5f2R5&_<4+R zpois3P?&^v%=G=}mC--qV~)S^ncUE`_Yc&dNuBs#Q{Fv=yTgu50b_Tw&fqR<#`yj9Q2wqS6pxXnAjK5pv3l=R@1~#Dhszf(8l1kC1q0i-;9TG}&tY9j#C- zU8X4maZZ>8>g+$Eswo5RdNa=MC8~_`O%y^Z}vD(e5hx*I~t$(MeJ^eBrxW^MGfLp_9fPW`0QgS zpN;M}CS2<<9_{u;?!#;S(M*;1pSgVu%x(EMH8@|NA8}qV zRpAo%o~SzO5Y(x7Lgw}}X!%HIM|Zusvs&vxr3q+7Glg>T_32!+zy}TORAh7uTc*Lx z)W-vhwx$V%>vm5`)=5cjazk=1w;Y#|Z#Q!pJyS`RZ?Cg0^33 z-686{SNJB=U9GZ;Tu(KVfqooT3PKs@#S3@%e%AOi)*(Cly1;%|>)WT?!mmOx-?TAR zXTNBk!CM-5+&dT#_{G0_c@CZQFhX<2VEqc?H>&Z577a1iP}kngv4{CNFJ`bNRJ0;> zLvvGJlqktg@H1$nextq|VjeKFw9oP)5R*C~m1>(YoI?niVZt*V&J*{cenT4kqJ@Uc z<~9tYQoLboEz-BYX#D>1$$;M(t%cSZ{y=eJnsicI?++D7MZX&h-?}x+dC8Omc2#`_`SdrLvY%Z6O#hqr%VTf74vNEJiKR`b5%BbezK&Cqw?z^?1jvwFHwA6 zjl#IET89rCCCTB@q(1-dG<;z)T;sht%;Ch_z{XPancjovIhXGGynMOib%E2ME3ZZ7 zwuMXfu+DSl>oIDxW|B|&f3#NwCTcXV-gbI*`voBLUCF3=e*9w&U`%h|ea=g^{O~=t zpO=`%&UEqZ?t6@xs-+)W$ir)EmjJ%!KPzQ&%RB0U9@v^Prq*3j6!|9pt>1h*DnoaB zNae)poE7{Eh0L8=zD+{=^b>)&ShhEkKt4-5Gn>#V* zP5?7v@tPkg-^6a+IjU#)>BSM>zfr!5Ybot?{r;_M)=0EyqQ4hmY*WLC!XI!F+NLsGQlskWYQpJXU6!QQF8`)0N5KJ|*8SMvPddj0jm3 z7S>{BnW>D*+*Z)W=UEO^^g^ZF)~e!IYL3JYyP+1oexJwhVz&`&jn_uKFQgefUbb@l z-QWIbxKo?MH#ylN^e*)#XDH%Q2}kI(w4Hd#rFa=eJ^nVja@Hl%n3j`p9>?`#$8lW5 zU0KZf^o0NUirwgk>(b>TpP0rvt!N_N8JQ9avwD&@bG=@K>*miD!g6G0KmF`SFuC+| z-RzSgAtyM#Rn<%tB#gDay{#97(=Mgd_N|w6ZL$4G1Bn041^n1)3(oG1$#mEjF@RYZ z2m(NP$pMW&3ZyiEF%w%XwQ2a0}ooZzF3STSoZ_8OAJ)M}+?C zGCPqBoG0$eFwW$0#yDQ%6!saiFyqhM6_$gX|8dC?RC@CuZOnycs@bY=hBq@IPHw%n z41#(NpQ@cy^5_3pB2hjNt%3K{vGJb3XS#lUJ~$dVrcSV`Mj@4;Pg|BrjIZ0*ONPBY^_- z(;Eyg=wCJo3|M6-Q#Lz46^9VpQiL;i{%obR$PBOkno2mQ-E=+X=Q_qwEywFcj)Wn- ztHkzmr03X;l9+*UI7H(4z*5^pZo!T%Y+!Xhl`HZ7kEk1N+26g+#P7NPeh8Wec;Rj? zn>CWU3e}4E%La8mSoM#`@MttWt9L|L9{Ua|iE-rNg+>iTqW3M%m=FDC&Ue;+k%e2F zeNH$qT=H~o)BSK0huh(cJ1i?SYlCVHcQu*kKYxpd!H>% z4l)Aw_DiWvNiB&JlsFCW(FXfNKL{n`r>3tWets%|KH+l^pUVCL?f&tpK;=n)7ZUZ> z33{d+JlK<~9AgUQkq_P_^=3I>jHQT?053YV{pW?)5JsOf_hK)&b~?ed%SRD)}!rGmFSFH2Mk`DMh}X(g%F2 z>p$%>V!G=4y6WCM231P>5#uz$@-Bc=fgfe^*-Q+eZDfHxK6y zv|VQDpLw6F!?8v+gC9hs8AW3jnm}O^2P0Z8iL0gcT1dNBeY*U&owBR1aT-);jH37q zH24dK&y}i^<4~uN{}}i z(hq?4DV#ISH@FZejDXuVQ#PPg$7X?HNvQj9E@{C2v<{;q6O!}nDnnNM3iDWxQpkuS zlSa(VpBjNpKMnW`Mmv9A=(6B{GP=VpS!nL`GUF1{(3vhptiAHFDG(Xpr5A6<-To|o z9HMM~=V5-nOS`Dm95M#*k?w zywFi-WaZWJt9|joS_ag(0es3|b({l92ZomOJ(bto4O>wc+ug1z*GNkw4Id;aI8%5o_ISO}t)o^HE0hmd zcqu3;)r6>}L2#Sc*h%_nEr3y&z z2}SKKoCN?mEKF}pmY*CgpyF+`0V}c`Oo{A$qaMNb*^=+P|Z3J$I1_=i8V?cHrk8IMj3_2Y*J(vX%NUijkmFJsHWSX}pn@fGzy@tfqS@18kEj zz~_$2uA<}4J#o;8a}&+DkX%*A4KsR+LZTK**0K|lCHtOP!pyZ*P+u*iyiH@;3*sWm zChyy<1aXZzkaaDv_3^t_RnforKmzG{JgBArwn8L*(1MF5w%dw8%|G?N2P%vpE-O20xBCV`o{atK0472)Py$mBrtnB0 zPlOFT##}8fVAd(=gPfOJt||$(FdhSrNKY>lJDP|=^dFtr#;#u@E8%VMAMw{naqL;N zxmRGFtJ^4ysMH$h9&BtBXs#tYc`{)T?ubP+Y^zeO@gp?bd4Hb%d1n^mnES@44-AFi ztZe?IZg1SF`MJWBND)`!3$su>r(ttirO)Vs$6_RY}b}aDa3DSWL8Q zqKZaasrS>$NzHyuDfTO@fLO2S&I#HBus=DmauMNMw^S#XIb01Y52qzrIC-#Cbc`Op^ z-^R#Vdy%rWDb5<#p~9sL+&wR-saDAwqcK?qz(6?2@NnTvOK+q$Alto+;jjFNyKR;R zGjetkgBL{WllToj`CzG?NiN)9L$jPQRt7&GkB;~ z-`yleomB$CSQ+Pbw2)2nTe2$veA8}|Lh%uh)efv~J3Ax)onA$NDc3ZGon7|@d3a!r z_GroXmNHD@pyXbbw7x_J?%F8_TUWo$x@G~g%B+l7o@Eryp}9|_Up3BNmWNe0*4U}H zK-wBR%xlv%1xoU4>H^Y-N88sfqTQiKp5~TIi5m$|o%3U2 z+l4G%U(HeU@$>vkKmZ~yohxG)|5Izo>C2nG*3~8?X^lyHKZj6Hh8Z z;ei~l!^bH5bZ^DKGn4aY+Xr=+5si(AiVI&5ii`ry-&*nwWKhQNV}cj24DBwhFAz$~ z@YZ$uS#4&!JkhHMQ~{ z-@ro~raz?WyqxxKwZFbR&D%OT+T1paG!61-pzli4eO*>F3LUFk8*F~oUBZaVPL&C^lyNC=RuNhAFL*|ybapVInTPPlkE*~?DlvY&-+b<^W1ccT!uC7 zSz-JZ9!*}LB5MR=_$vCiQiZiGN)Kom{0@?UVn-bW_Adz@lyag%`L^=&BA)}~sr3B$^={rV!J)nzik43oNr5;N)kH{oS#>`Tj$1e+ zs+;(=@HEer!;Gj+0G&AYdULZh27e2oV!D+aDI`_5r_Vm#KJI3hVnnn%DTN+5Uf*=k z8gZU*8x(p|Jj5;7_3J_4$M1J4q`HxgThmOq;tG!5Y3J!jyZ<^VQ!0&>$~&=W(?xuNOfrPX6Oj{zTGo39aK*f$P^-cmCtMsSXSf zQ<0+ms@1+9^Z$|+mNTx$re9hA0`aa7mo)^9he;IF1fllJMX}aBcFai zj?d-K1Y;pV!HdRR8GtzNACnPsUU{GEm4oAK+Q=*+$psm&g8Ui(oS9Aqz}{}ZwuxiT zWfuK*QeXh3EuQKvHCAEhrU+MQ-b!|R*e&6(CjPcu8AWLW9wk`3eA!gT1l5q28tE%4 zy*qdnpNmBc^sXz*46H-mA3mHN8N%Dj{k|rHx%YhIa)&Lj{QJ5mEz#yN zw6muL8i$aDPBeWXB@)iz5AzV9EhyAk(%()-Mb_|b3!@43OSceY>Y(f$WE8;A6<3~6 zsL~4Jbhbg!j0+Fq66oSWoQ6YLEK7I7zo`8DO)(wy%;#{fCoj^JOC3mA!0^p4{()Oq zLg!y4(tE56=NQi#e%E@NJf)uhadlAhLJ_XaTkK+1N1OgiGI>FkyyNXBPApX=!Ql$g zAS^1s5q%OXs6=5 zf(I}UwA}wL+vjU|GHcVL%|t(7ne5UqF{wJCp|1%){I3`AW}H_IpFlgwpPn(kYStoE zpi*#09l)L~lA}~XR}wiqJ;X;ISBceNcmt>&&sND^;k+9y`swoi9HF0lt@*9WxPn#U z%emsK{L$5S9t-;hH_@s^W#t<%k;z@j$HE(qu3xoF^j+-DbYJw%e>hu#G#Q3Eax_of z$FC6l5(U7!_E9q~e|NpANIigb+zd-dyO2uTiP6S-GWWNK3O!Yp%G35B~8Sn ziLGGA(eKN?ws1INzY(;;*#sqZ0iZWPSHlG{fqtDdSBuKaZoCCtK@v~@KN2)>wVJBsXSV3_;Q>0MrKAgtpy~)Iv1G1L_Ejnvg4AA`EjvJ)Ln?rw;0$E=qv*X|ZhR9GEmIo}+$wdw)F-6u7xVv2NqksHL9 za}-peiGP~pSJ4sz&)UJ1R!9B=yBt6Kc|vp=mOJy3q)Wze>NHEwx<+ov*I7vZY4=*G zN;Qy8&3D*Xxb2O)>pRuI)B72Z*twQM$QlnSa;^BK^j4C+Tvp*CoN|7_9~5sGH$Pwh5CzfNV;0tYkcn+nEPLK8t=WU&TIV znjd@!)!NpdmDt*<;5E#pB3;!F-@9o1j5nJGpZxD5VXM>z7cVf2d}K~s9R<3He6{zt zgYAGfgyVNhkXL3kxN~Byopc{E8un0JHYw?|t5}uF+sd)@)vNfy>x-4SEc!0E!S4$Kt`3-H2Tl}ArRI^n1W9~K;C(Sor zE;TOxPdNW8RKp4%=!TuC1NnKOk=%3j;A}0+gcn@Tl2s=vg&RnxpY{bZaoW$Kc&LVs zDrG~&wiIDruXONB zuNTJx-r3z;?{+tOg?_~s=6{SV)qZME(ysmXWSRaX**OUpIIRekdZVfWd~eQy4PPe{ zDW+eNn1!GVcKwVFEow^l@~)H9-6^ZkRX#%j>y`l5*V3|^jBJM~FC)|mJ&+Ke6H!rg zjjWN$ebx6CPxh!h8*HfHUG3MXN$7uHhPacs+A*Y%weK7~<;VD%!-OLQK_rz+>FRc{ zc%_#3*VJfhZH1qh3f@LWs#r}@3P2SAO}a1R1hDVtlqU(ZiM$)@VZc{TR^C%A3&F|C z6xG9!tF(objs!umBr5P&At~_WKvDL4?GE$zqe9=~ot#H?ZOe4^HLgZNr8DVLma(>i z^>)WiF47eS2V=t$w`N{42(TGLT0MlRGP3?PP}{|CNG;V#-dnTaJF#f~g5UTj0Y&O& zUgksgG^fhPU{fjE*N&aLO>b8T(zE_1M|k@+Ik-lnZN@|ENJ~5q#OX+e4Cq^pu^XnB z=h6a`F4=F&8I02m287PEL%fBZ$p&TK_L?o>P4(Tx5AsQ^BqLl6lS`~YP%o52&p=P8GzYO@?s>a5^|R?im@igT0R_U@Ln zcV`}wG@Q8B_0w;}btjSRFUzI&r!Lg_ac@o;Aj5Za_lZa`n)r;olVlWpeF|T9c^yC$ z7d7Ia^o8k-%v;nED{<{L?ej-waTXi`VxIG=RSY2k%C%$sks83qgz@MYZgw0 zw_e-EeQ4vfZ<|ErrD{kUb3Na-Ez9n{+w0J?4Xf|;DXMcXD{~LNjSjB`Z=QinWeOK$ zkx=Ctf~M0FL4sY**N7kQHXq2Q+7rE8ZUWR?y_U2~$LG0&nOvlJo}tV*@um*!2CBXm zUi%f?(!27nn6|p(W5t|QJy9{wpz1)YlW`}TD!|+A2Qxar1W^(&p^p}X=`?r=hD-hY zJ>W$p*QQ)Csa6&l2OpyxWE~saqw);9i=+CdL4aEA!!vtQ(UN)q(427k4eg%U4wF<| zwObszCN9kJ++b^4W8;{_jo`ZIl>(u6MIU_EMw@j0bTd_Zgm2&f-cA^x)24s~&m!T2 z9n{C1J2$VxXBF*O!n-~q^GXgIKDqfIEd+P@=(e*Lm{2866Jg1~xkom-oAITY3lbAv z0l?)Ab-%>@WsPm>`=wRi&bU*2Xh`iW$@ZKyCZFj9z}!m@r)Ew&!_bClxPMyIWU(mN zhN-Puiv$0n;|m>+(f_|-q_gXOdcKsC(pCI|79*0v`d?==xn^YZ!VO6(A(8G{rx;`( zyZ5r^!Y#%YLNGYZnxOJw^MF+7`opR`f(7>tw1BM33mfJ^i>PFihpSX-eaa!o!c+sQ zufrfRLPPCvnT6Anv}Y&NW23HBUwrr}kw0!I80pk{q#0*ROenhBJN1*9RB1 zv(qJmp8-Wv@b8;WrxW}FLEz`uf2z6lqH8G98+VqTV5RZggVzmzhl^A!q!=1fK77|7 zToHp%akN~>i270FhPQ#R#o1V%o3f_~9!giFo{;=44@An#6R$T#G@^|P0WkEjXogqr z(Ijz!9R5x@V85bD1xS<#;>2(#hr{DpHRY>#zY3IamGGvC!RnA1GIkY#qcgo_GMl)X zk^4o^mtY4kQ$S~(6z*4u&N9#V(q~!PW|>6lXZ0|>AnTr|{}y={0i&F{_iiP?)buTgPu_(Qli~ z9cXe>-e2gI5`aWINt>QkM*G(t9N`hdp`0BH_hYX#UGK0y${%}$B2~O~LwGylJ?-R4 zbDKV}XqfIj@-w8s503E0p`v-w5^WdP~ucTPun&1=?xf4rm*H&c7ss zpgOh+5>(O=ZKEt5xpQRY-}bUysm7&(cH2*!tg>B#O+Tqbs8^QDe7IXlX#F$(Y2m-s zIn)DhsT4Mpkh zIQ4(W-9NoBq2b)?j9J&<-#%Nqm3fOB4L4f98xRSpaD1zEWP3?~HdB1}U zmnRiSwRL1Vs(+?L_Zp4!aYhD}&jXAt=WS46%_VVs{=kqr)d>!{i=rz^c1r6MMwgSO{ISF)J^;ZS9{C{RK@h(+)T z_|?tf6wM?wE=-qe`mWXuAvIxcdt+1>sR*FAZ){|37W{X+%Q+%K+1!~w;&u*EF5^Lc zgm?ZhAc%1iZ(}6;gN_FuA&0kxKGmN;Z=|==(LVj_LP$>X@L0;X+bbB_GY-BinHs2q z{N>8rawiXFSWX`Q+z-r=bXr3yRDFekGLR`cgRZ}Drt7fLvB~rgKLnAo^>d=XRDz(3 zQ1WGy;3^P%n51|qx|Mqn=iI~P1r|Bchw79xulYl>Oc3Tve-K=eTsDf~6JnM$Ge)KLM$8Bx$~c!W+XH|@K>4bp#_TE0uU zHk>eByrNmjfu(+Nf%W-u+s2*Coi0M%!;9t ztfpw#7%jmy@<}>7Hw@rysGl4&)(3&LRr`!hVErmpWo;uilKL)d)6 zGm|Rvid1;r#ti59L+X7m56X^<>sfU)O^e0m{4@k#X{E4me8gg}&@X~}scRxvH4#uN zyVaK%?@6osg;9mQep(Zj9Z+dA#|I8jc-ywn=-C6*1@`8Gl5{^$5RjR_CWB^!qIUg` zDpLS4HdF3ikR0G|AtiYf-cF7yl9%WvvKcdObAg@QPjMIt`jwTObn) zo^@j%r|?oZv~U!z%&F}#GTzkIW*RZ+==V1rUD$uIY6WtoM%kCApjG?Md_VeXF2&UN z@I#=K(l)}@>27x4s(iP9TsZxF{DnPR9^N&rnuGUuULCX$Hg6+@Ag|4J+fNk~S8dK| z4{8&F}v97^As7d3;Mw zy3GRYOl-4j6IVLhG^Pn>XGR=1vF=U=n4%pf8AUUwB{fclaCZ4(t6rN{dg>}3LJu$B z7m`+05BG1{&UYdgXM9hmUYC?vVLb|>xD(!gDJz{j8?t=LpRMJH%WmAvI2KWJCR(C6 zcvVuz3>Njs`GKTnH_Wgr;kthrBIRkF?jKYz)MB42qbFLhM+Kfq+Pg&@l?9EYgY-5|q7|qV_-k$&X(XQ?WHlPLQiea0JaL;XJsF95*MRFw-3UyS~b+Cn=1T-7Iy(qiL z3-mCz^d@uRn5zv?_p!!4{u^u%=n8*z>9M9UA-^`l-z08inZF?w#$;k7D)!daM;+}Q z?H0?>vD|~3<5-$pS=jcM9qN=eWPbZRt|ePHgZV#4E3eU7FVO2VFA; zHm%KY%!yD}IO(^BHe68(Y<&2pQYp5TTx|vtUEy<0O-&fxLbZ9`T;HNhBzR4Q>+2yA zcal%>$$@daa>-x|j?&#(_?+MVz;2&z5IC#PffN6i_Y*NyKakX9T;{cfT0!~t{KCeK z&0c+eWu`!r4Rll%JSjj1FlRBV!c^Sw%qM!Wq8F$bA~FJ)70-vDDFEC@ ztorh|G9@Cyvk>~`aq+)V%A-kB4Bk?9`DKyFh%$C*%;RrU+rt+c716{2VM$)d&VJYT z6FDrY`k$B$>L;_+0=aSD3kFHk>Jsc{U!GwAgo`94;3N~l7eTv;|0YZROz>J0{`L5w zd_3`6bf%lY*xA&ij;hcN4XTt&dXGLX{&bEZ&NmD(K42!DK=_Z0TkhN;n~b4G20gSL zjaf4UqMWdLPVbi639{BKd+OfusjBD3f3=}{s9P)X?@Ixp+beG@jdNHQ4KHFci9=rQ zQxKTX{*=BdEh!}^35GyIPmaIz~(@hRNygJb^7IC(0NZ$K7yKTes|5%EO z9X7sJDz+XRnvRQxTHW@QFLa{o|3PJlr1ppXCT#*c*hU^dL)m+#Y$*i@mK--fDCzgx zK`Z{@KXdbsd+9u?Hm>=ws#8C7ia@VrgRDlQ5ZfF1W|kko`MR8KX){LVLCHe6TWv{m z+rGica}0{ECwjvTb*N#i!VGZJ=cI|6UF380+%`l(Ra;*d{0kEHGI~bn zVkeE&nepsO!kb;+=DAr9U^`)%a=qV>Z5U9SLEWNXPuFeHDHAg1XKlhTUk7idB-!JxUcSFRzp7=*&5#$yspY5$4-Ue$KE|%k3QTGZ=(+rTUdlRHNkNES5}r6yZD8k2@48EQ2!q^%^F8_dp0tYvoLYD?P> zF~pC;gDK9Rg!N@oc_R;$@|JiA)PrMi{DFP6R4$8$E5v+8=GREeLW~(gXNl5;Ls2cr zTQ`n+l8tbe6$p5y;5ilbdQ5h^9|qrT)Nv}kZ7E$adxLUF9pg9OB|zgx8oPB942s=# zccfe0neG~W$UM47%f?=|XsVy)rL}8fy(j%KsHCOXYT`>W0zM$ZKKYTrJLk*VLFr!uPr$p-Ykx!d zNfa12b)9mX7OuJFQ;?p)@p9n=3z1+Ke7sAr3kncP)W}qwL^%Q6U%-K%MBVujekVxA zFqflFHd(A+5%^w8j_ljWK9Msails4$d)d~?kQ&9h4H*eDlKyKL)PYoX9fs$kjr8u^ zo?9<2oWqs(Ia8}>DV+M$Q?o%`EAtQtcnvSsRL)tGG{xM^@|7)z%lxC&`rYmMBXOy_ zLrWC_4SB`Yc372>|)Eu9dZ$CScDf^|QhLB;0Z_d6;Q76`(xzOfk^1{5@9pTamjBFbS2&E2oasMNwb?E8m?k}+*ZZk{V_!;F60;VF zvB{lP`=9AQiBIGI&71X@7jo3oKpC^}@m(KcW(ZK{Vx)c7xZMD|NH?M*_qp5HY+2-) z-{l0Z47Dm~>y?GM*Xj4?baL?rKcr113p){`H*pp!@>jj1w1EjHVVnWB-nEkhI?@H> zn(s)re>tWeMyp7#l(54x>cK`pgl{vNQVLv_hbYb)GuWjV1Bja0djeMLQ=UOh{gyw3 zRIdE&;_>Gj38(A0P?+yu*a)-5j$G_J@ZN97v8pQdf*8Z9!nZ{^JZ!cI8hE z=eE1Q?wq{W#r$eWuC&|>xG*sW7Mxtn=H0mbTqrTIWX`Q`-cIgwQR`KH%s?3F1xI<< zpWu)0k)W?c_;VL?6QNzX+`z}|H*KiJaW238hjUNXIa&0Cgm`KKm#6Qvz$tk(!_N(=H zuey<31%{#K_ucjcNWfX}PkXlFuX=I%ESP8$@mGebJV-scd-hW$oSxQt@R zZ?!S!IyHzmDBlkHr!C6cw`-eRa>)46cTmT($gBtdOE&7MC3(^EWy4HBx8DRhQfpqy zc6Mz5(ZRG?{K%@#M)iYJstVbl0CLo?N`j;L+y3^>%cRb1+mGW;%5#A!0=uPS&#VO2 zwcx)q>ZCk_N*-f^bbnvRgp?1}*YK)+$}Jr|(O8n$7j72%B2JE}_u=Zuz4Aq#J~{On zkl6N6MISA+c0H%-YX@a`&R-WaJ1kL61|NSgcZ}~DCY6-??!+6mT~JjD#&eSA|Nr1c zz2|AKUZae&^a<=DT_OZ%&wC|c+@6F-QWQbl!3m4NH%me@ER21GS47!|_IBR!f8;q$ zU<;DR(gsqw-SHMm!W&$f4UZ241?*C;6|*}-u`3AuEV}1& zy0diUg&_S=2R=+`BdgYg7EL95dRoufTF!7#@wTjW^myv(BQWypJNdz}d9bB9m64lQ z<^%q7POQgoYc9*?Fv$M&)BWv$tmfP>(dkWsP8`#)Z@)DV4=i6;7timW{`pZ6YA9pk zc&8D^SE&Im7)#1Dre76mZ7c2=3HCnbhQ%L!&&wf|-hWRD1Y)w0{1ox|#srDr3aN72_7!j|N5BZCJn zkQ?983)F6+gl8$;qbFZjc?G@>-!@&&V=ujV`cE~PBflBZE(uDoFm-rD7wEV{k?l)h ztu7U<+;mXJW@^S#Xao}>6l2pSh)5Yi) zx4OzQ189F|PKaiFK2DTz>cOPxbM#3guOymqrD8A6zk!ydOe+}f-CT^v5OV*vgfRMO zY!!tlAlUckkAkt)s!(8bs%G;(>|9X)g+q!T!h!1`EIvwP!6 z@9fT8idx{kR`~98N6#%bkyGK~XcM$d3}g>w9XT+RBB@9%Vn27XAN@KVLoGWtoL#CQ zt-xgpg!!_zQDQJBM^l8uSHw;>M#Ibee{`Yu*2ZI^tlVFb3JY?_waOM(p3Q>;-g#03 zdKb;_bJS^E4T%VgR;B57~DnAzF6^cj@ah1Eql znKYTOb)p;UYgO@4Az7fnKqDVB`DFZ1W8KIQDHKaEGK?kh1m70+IrD$w*{0FwTmjt_ zj=`Fa#LBs~21f|5;OMXK|LX;~9ixqBHZ?E$UnvH0j7>k~FPW)&lRALmhUHe0eLo{d zwFnA`N&SPz*nwv-Q@dhj7}(N1Zl+}&uAh3qgtIx8wpL$F=ltVWnu-_krHVi&sIUE~ zW*OlaBUXJ3vhF{Z(wmhyc>#;BE3T$f(F!FaI8t*)D6=YerWW%aqGzk2L!t5=4|s5% z!gf+6@QV8N;}@Yp!=T9QHM&!L^ zO?F}FSA)HO;_@Iu1a{_+2vp|E60y4}tY%7M1IU~`we9U>FuQ4mfDU-6)cv`Z;cj{bQlXFU;kWxko%X!{SgdF7 z%!N9S6m1wFZfWNqONSBF3ZBq-$(~g2Pjl2C4iUCn=1t4#j31iGIP^fD@|THWk238n z3PlI%e_D9&oL}Gdgf;|hLu{9e49biNXwR4$o~Rs>*5aeO*|73t>F%fJe>c8boyj@L zKQfQxMG;^#HGDQvima_sD`!>E9Xx_sE}QBCs{AyDDroNRFRFh6zT_UZ3BS0oE}+u@ zJ8C^nXke-v*rbV;1t)6=PpN7ITqXw|mWxR=N{uMdRL>Od4;7XYaWwm1x+2^M4r79tp^( z<|2?DQ+=+!yB&xUJ1nLorn1b;&uj2WC8Ko!8)xGksPgcqjx%8K^2L`gllwc|H87mk8 zLDJ}o)bdS&F^`xSy5kMiFHHR+bULToULVluCq`0K^M9g^_vcG+ZTs!gv%&A_O>x{S z8fin$MCgk)A_U7XR}KL=LRnWF)jT~eOD(c2XH@JOm2HJ(Td1=B76Cjmdz_s}SR&9d z!VHs0bA7#%7mw6x$8>zBj?lUaZ@l}1nglr{&2O>rLg!HrBmlIx-bNo_K|S{85?hKdgql;9&%>~d>VS5OFHi~bOKNTKi_s^p_5u> z=J}i+m!E~m@Fe+d{&4csgZ?V?h#VYxqt_rAf@&I@j6B{wj$ZQgaE|pC-scUBYlc%9 zq1%Z*iagsM9JQJ~RFo_($~0OPiK`q4CCd0d<*`#J97$p-jOQ{=6t!jl z*J0a!7KMJJv`HgJjfRTx=Q^AoL@k>>Hq7RqyZFoU5w@28gMw#mxX*{J%x4qU`)tT(oKBds5Eai<#jAWv73{e>Tc{Y>8K;C8hCa@ciG~1Vtm<^ z>GE{(%VsEF)hQ_=e+NLlYw|lYwRJ}PXS=0)0Rgt$$l_dUI-vuUU%}EIx%lUuQ+b;o zo9O6i-v1#Sb#_NOdYf-kT|YO7LJ!Yq)N_gIQ3cLQIN7I36j!A1w53thICB*J_Qrsk zgM&%`Lurg1dCE(X5W>=szB7Tp$G#J?`0ycCTJy=z8ZhN$6!&=+_hpk&tIyZ|vkjF# z4!gRCQ@OAYC=iVr-BQ8GJ_e8emGkHsL^ICfwF$TkkPx!Wj_npq_O(J0ywoj-yKk?_ zT{Y?Cc;!tI>d!_f-SH$opTSSX15?v;AU`iZ^(*uCO@i+I&3S9i3+teNI56GbHr$bbImm9g}1}szyQd?g= z^Q$^Sd^{q3lN3M9Anp?`d3|SXBCq9z24747(x$>ta(@o&LanManZ>8j z8(9mXMs5}N?%fSXnCATIxgWORWN1_Ov#FS~pi%qhE5#rk zhTDW4vf=o&~*djcXlHE|sDD-kio!kgyky%c(N=S16Mb6Q+j5$}v6HLF(r1cQM0 ziP`Nm)Bs2t29l~6|4N|iQ|4F#A236ok2qePtU!vmw*Kpc6@A=o>sok5jtTd@i4~;V zx#tFCY8_PD8NOQuHD42d2ermWDAHp4)B%plx=F_Y#3JF|6@_PuG#llBnC2>z<%%lv z{81m#=?QkNG7bH%$wc~Z!R(8Q=nD6}mWnw^D&c zkbPLpJN!$VRg}bVmFs6KWc8N;|2%7-ukXLrtcR`$j=G9nJkr;Wg5ECOWb+@>g~J14 z8(o@O6Rn|_=x)b%t9bP5%aPp)L(DUR2={t%$>d;h<@@CFx^`tD8moWNiw&I%x*1*5 z46KzG-PC>~PS*64I=AnA7`$dL{;550{qi=7V(s`Ik^6PhX)@}roneA*gsJ5}thTV! zmBCKM!Um={(3!gmz~>n5bKd(7jms1pRYpJ}tLeMSfwZ@cr1(U+rN9LJYf#2D<)D!q zL=P>?Maoaww5&dgCf zo14k=Zx@H_gi@sXh4Y#$XluVHiMv5pEgY|KfK3dpGN15JIueuyC3_OdFQ3~e%07*L zBx`v1@47v`b+=XY(}&~hOJ=>=e(y_w&-s*wabcZ+$_n0^xms}_@Cv*L7GF6M|0N3~ z1ujV)rdzUqjd9{RQRa`c0Y8)o-y&D*8AHuc6Ou48%#%-b>DrA%vZ&|px1n7&O7DBU zTNZd?b;@h|`}KBtlH?^{ly!f2JjkmcY&6^3!P_-I=&(lEpZ0YWe6qWi{-Bq2TcCDa zHy`k5j>TMl>hD@zblnqJYI{7jR@v}bCc;ZRp?HZlOa<)gTRo9FgW*5Z*TyuA42?N9 z9{VJ`?~r(CV8l*m;lJ;AgWL)C!N^)1&;JsX>DwBweAIlO z(+0*4FH{5?iK#0frX0vl142as)YSk^c2(jaDx)o$-$&K=L%bjS%))m7F^-Uan^&^{ zd$jn4c7FipdEP9KHX$Z`uh5Oy=&rqtLqfk6<7SWh<16H>IA1-k<3>vR$`Bs^Y2%e2DaZ3(ZwJq(#NW>5k& zL{}VZc_lT_RieJ_CG1vOGSGFu)a?oH*O4BZW3vZCePP#EAc0Uu<9^S5``NSJT0)zT z#n8RP9647baov3-J#|QA^R-larPEJtaLXwgX!)X{h4FIUXqVIh8d!xjVsOt$d(!Wz zlv2MB{20WO9CMYrzbb3=5D+pT=yvQ3DL(X(yd$4TH7m2t)|B^|zey3jAY`H>^SquU zWbj<^cFTajKmw{`#D35#pA$z?=t88WP{nm1D=n8F=G*CWGDdJVBSDo;-@=@nQQW}+ z#2C#0;&G4vk(=BmJd$&_DbxMGby4gI=>8Fz?OCI#;DX*Fvs=(R=d7Mp&K(KQ8wu%% z)uYZWMHRHt4W1XBlr3CKE&KgkL5OT8NBR=03eZC|cPS6Y#`03&l?U zBEC&BVfO6(n{!jI2X=o-a>Rhsw@+eQPHWGI8;~HdFb~;hZre8**33i^0`_C7L>=wR zRLE*z2~?JJ%Zr@SI>P;0{o>6k#?!2PtQnGaLM6SV8{|sld)VD`iviM!?k4}UGc9q; zphcf=w;ahx7?pTlvB5S!_Rfq1Z=qN+!gt=NN~|RCfUx}*K3ALxUNxV8a(D)4 zJJ6Q#U2^pUnX%o!k6oeY|M&)Z-3e}M2pGcAp#%c|Y%c#e+L5(gs-!$;)?{E8-7U^- zt#KKmaBoY21asqa`sW<|u6iakjVo`gu0F#?F4uTOV#iRR#L} z`UVKPhEIG{$v?X|6ZFS7OZO-fm&4Edz|(Lru1$w0sJ!8Zygr+)>Vsd~@pV%Q(0}7k z!|CDweMbN@Qk}HY?sRmPBIRy!n#gjc*>*H8;vOJ=sNCN22)i>D3b44@rvYhzoPO2) zYR8>9KQ%~xDtje^k4z434fedv>HCK?7~+2QS=G*f+|{)z*=J2~?Bdje`)85lN8%9X zkz0mLNvo{P_~O5B2G$=wH*Nk8rttN!W7zuf6NY|r8uS7N!DnB!8nO0}j&+edS>eHc z<>qrfXy@;H2xQ&~vHUnAL`=+N#p|Pv?QYnXTGAYgx2RJ|rhC!+ow^LK@&?kt-5rFy z_J1yVq~~Ky&<+ifsYkTXh&*Q7pl8wiIR)pXqh3vs`MB;9s)jF|MHnL0mW3BhHkzaI z-5f1VmZ44=2r&m$*s*+^FHt&He65t7kfwh&M8Owd@I^$tepPj1YvkZRF)ef}WNNM( zFex$b&9%j3>z^M}YFM;tQvy1w{qzU2}-6x~GXWgBGxMSnKkJc~)WodcP& zMcf}cbf`4O{vHEpvFn}9jmPyh8AAh3M>wudVTJf#dHL5?MK_}io7(LwVS5;m<&}q* zbQ1Prr~P`Z2h7TVLA7GtEBqSH*n_$cgaNmu4{+bG6mx`I!aJ4luUCBrz!t45*!5tj z^ZeI8;GDB#X(46<;vdu1kQ=L=*nFjtG?_B=6%6j~{2qgXCc)PFI-H~;KblrH=`o^4=Z0DXEfi4?0@tK=VL`xLC)mij|g9zyGkF4m#V>yIJ0GN zeXZN-_%m#YHWm!nSYE5$!y5kNM&M^RF}gF}i>k)+=(keVOcNw&MR;qGVy)`&;;^JG!}TniKl zIe~_%aWPRA0`8B5n#Prm89NtE@{cmBh}yTmk))jC^-036_(W6^l&$(`(u8J-wNOT# zkt9HOSlb(?cOw$44lYC?TaJZ^DpBIdyui2oJyeBXAIJ&lI+%&w{8@I5L_0PGdvzzg z;0@v%xgLL2&toi6eSPN4lk>{9e@%T=_6lL&^phg!-LNa*&a;W1Aa5(kp%x&XP0n`Q zH1}p>ADv~mzsAo)C+KwzbLtZGa+Bpj9iU(3%3<{N<#t>D)VW`m2}!Mdlmv4uQ>Zlr z9NkZ)jXdurp9YH`e}qFXjs}pY$FPc}Sz|-?Ds$Wb$2DZT@g-pg#GV7!Nq3DOnK$Ee z2DZHqt4|18&jAjf_scCE{E7kIoYn`MB7{MPEabA+bioJxxe`)M93s|ld_+w_rh#J( zbI(MtUB`}EQtBRw?6o?Z8A5h1F~FQ4>@?E%*NN$}i2+3|6}au9ehR+?dB0Q`BQ7rG z7j#4S1-g$vW`ZVM?{c{WqUUBSzoH~e#6Owzq@@)mjbZNHK;ZB2UnSuhSGtSA(7;!j z90rmU9`DQq6 zFcajl`9oz@lwE(Pd(e6Xz&Uz(P+_b6cm1tfeH7BW9V)=0!cK5l-rYJMo0lL)doLmN&}?!%x(i!Zts_EYC}K_6*qe9@N&i6aQTSoWf)t zhGIiaPW7n^kSdD`_eia_?Wf^}vLU#v(63ScbWur?{J)?TxoPbU56gvGt{P)-sf4di zN_x+6Zz{jrBz%N5K;qSccx8Ymp#%TS@V)GK;j<%ly*mp)?P-1xoKLw4+D85S_Cbwf z)5y^NdhxXqvA9q`mnrh;@^YQe_PvqnxPM1!gjn>~RS4fiIt{BIDfPZayu0|<@A67; zIqM8p&19R!!_@NDRK)*M@=7zi$sO_s-*kD!e)cNWBH#14xjRl1(8lq}$)0?H=P))| zso3&&WiVR`&}?y3Py8T^W!3uaS;+;B5qHI%!z#^9xeM);t3>A?&N#rc(}1Yvg;L{U z83&hMk9D?B{U1)FgWW!|bEfj)%d&FIoQ%~{Hw`6!CabNA6r8UKi|>z}%)$ePHZqNg z8Ie!j^MN zdVV)m)i69(qLdvmaHQzS_OCevI`=z9c#9H>N5ZAT)i7Q3vT0%hKJ0ul0Y6h|zp7ct z$}GZF`XbL$=AKC2TKHc^Y32L6+2g9AH?kt0y>nxg2rk^Qyk9HNn;#5Al|le^M9S7# zxh;EW<~>RrwFpr#fgZb?JyN}JR01sI&9|!(^e(a5DRHA25GG0q5<2X_=LzTx6dWq# z*MPWwm;Vry)Zl|C6r4s^D}`Fv{4b#nL^B{oB^ z(>U(SQ}#IjkSX2Nrd^*Wt-geNM?!?r5F`XagoW0_C-OL#fO zk+r=fR0?U+o>-sZ&`3|?9sx$O!g#{4&Dt@j+*t_>*$R|GL)3d@wlLE=(ZgrE$sdE9 ztk;n{xQ_0SwQ#prR*vgwUspawHn`vy|2+mu1`hj+xV8IkU%v70N(!ZSr0rXGHW0Fh zQ@OP^_b0v)c)q?ASfJj%y-4l{2^yQ7aBIbB0-(NKgkSky-(1Cw3}2TtYx)Tr>!^A{ zrgMWoU{5xM(mbxjjNc%w2G^W7U*5Q%4=e2A`z(sY; z(`gbHC{!1nCxw0H6PzKvujAvfC%kfp4PzE{U~!AT$-mL4mUi;zZCH6dva%`*bCNQU z+a1KS@lLa1;C5a=n@dOt2XfWG2|I9pYhc4ra``ig@%7w!{+?L^{jVi{W|i~@-W1Pw z(=tyGlXI>T^~meq)vqA^cde_qR9HOHpD4{gHLq}Oe(+vH0M!-4n`0fKT~ISrj$HF~ z!o6GqOh~wGl6YK_v->jb!zW3$7qU|}>Jt#f-j6})45C~tAs?6?rQprF{t`qY=or}p zu9P(|fBpZDtM`m*D(c#`K?GDpR76yoiULwadKXbqkRnJgL3)o6I!Qo45ov-HsX=-V zy^~0n8hVFF4L!6_Qcs@eJ?}TZaWY2!#Y(kwgGJ_e3xcuF=y{eR%WDw;ds>ML6ytLIa@dq;VCYs;>?BYY8xM zS=5_h9E^EwYEr!WyKVXN7TC(>`Jt+4^75l!iOb=;q1yiajABGTaRXENMG2r zuPO0bVCb`1ojj&B`Z|Y%8}U~!`&HWM2JlET;U?C}$Xbl7WgUO zZPNym1_N{g>0i>=!X1g10?8}76(vbpJEPePQ?J?~|K+S;PYg<^a zE+6cW0It$$kf1Gt-Sv?|JWx4IxnT@gI;LvX!|6B?KW#H0BGoFl5mBv%K-2wSxsloB2{nQW*edm4VR8Ra18pz|a z2t7as7Tz3m^?ImSDedZ={b*(a+5IowJD%g^o+H(CfOIQizJ-6XJI5wJLuOb=g-9Nq zP@rXioZvN4+G3wex&f3RzMlJtg9(Ep~Frs zy<<`Qy`y>U@d7@n?{aleEwM}{Gfhd^zdGNoB&mEM(KxkEHhgGEQ0e@mb75&zQa;qD zyF;wZ?{tlF*8ZbY+`AtU4HsK5hC%DI#cIYy010O&p1XNQ@3`+pBaz?(f>tkH#x2nM zTsru3@(=G+eLyXfiP);ofroRdc8` zVa{;Gp?dQDU5*ovuI}H!`96=KZX^(Wd7QDx8qVki;XEV4lE&K^y)8qcup52`^29|ub3)(F`Bpxub+N`sC0HCO|$_ zu+L_VbTeUgYH*67k?*Ms%gkxz6Jr3J{^^m*{cco%_hen)D7Q*^5y#`_o<(N5yLuGY zyi%&{J76k{P9xpQS90@0J!H6Yo8`P_uk_mJ(a=l(m03#W=_~sQoD&P0EB5}J{rM2#4OC6AMLN2bwjm#c(%NC3?o7K6O`HtVC zoBCg0fOhcjB~q>Tfs@Tp+L1~me7a#{2}t(a4d%d-PT`ZUSH}A4=4C0NldPH$K6ix) zS+>qpP~`*hw1w^T-6qo-r@a1R51Q3iF4F{69Sd#gX#esgf9ME3S3DEms>vJte ztFSEO<$}GKajk@~aR%-u_7$&^zgcB5tE{;@N~8cONt&c zksf!OuY*sN56&oy5@>6Olo!JqnBCV9Idv!0v{DbrRUY`1);=|D&bBP-wa>Qgbx_gl zg^Ly7fk)0c_r@j;e!O!1>p$Q|#d3=WFpQ)MNG2ZFnv!NWOEOC?K@sEQs2%~AqOR{# za8$^MkuhNRs{F%@uharcSZ}6UChV>7B%MyM0{cM2g;ep^!i@HS!5uTxv;jw_>OvL? z#0yzOeayo>V}Xbty>(XrIX8Y`E}lCJ0d4j0{`E~DtL>(|d)miT*M^|C?VQRN4M6)l zd+>4XaMLHqqsTj#q`2FwcaH3*l#8a{gg-A37E?GXp&V@kVN`K1J zG#52>Vp_ctIg28+(1+|?|1t}>F!5*(|I1rd{<2a4Zm}7|N=+}Y{}%<55&dD$2J)gt zE*UlhO8(eKM_9kn-#@as^;9|7NP+`>8{tVit6qy3l*q?F1##6Y7l}VFH`5OAD9Ks< zVlbPxm2$u=e+3bkWA1GmH>ZV>!1M9k2Wxp7kL#C-0WuGc3Y)1>4Ks1=T)#_Ob3L&z zRCZ)Z)>_7ozG`49Ma4IBtj6o47Hytz_Q5;k52}C7Oyhq23H$o|OjoE@i%Cye8GKv+ zJ5+t)iU}tD!u^S#LhP>OEhko>D{4R#8YZXK)aO59!9(}G))CJrZ;5W1ihfbim}H{v z!IoMc)3B$NjCreohFq*H`=PB?zn4fjm3jW_pIDoq#{B%tH|wm=oVH0qgJ8k0dN_=2 z%RKw^>0#E8Lsjm76I&)a`?X1zV9_5T2cT!>NnSlRC{%(_+1$F-BPCNmDh}kW*cYGi z7wY%ks6PakU-p{){Ex%yc!E6`=jQD-r&Y%L{IymzA}qzp#N=O%;Sf<#>vDyu#2Q1{ z$gh>l?0_2~IN)o-Ysz6UB(o1i@z=)qjF<=J@# z=H(LU6_X`;BA#^QNfO7LICu}pbNlrtN_cGW)Vrn=PM9oUddCU{o!OK=Wf;$&vb0g1 z2oXF(NxzflBJ1IUH|P2lR(-vlkKOa@N>*Ne=f4uqZzk$(Az8euPhsQ#VU754#c99#Z&!u?Pr>nS(8eF=bNL5{ z+;^5xH>(>S{W@8_Wtez(P}*Dd%9he!u(cx$Tw`GDt@+WY{!c)P_Xnpd#H+7|Z@zzqZ9SoSaUhnN(S3TnZeY50tst&Ytg z*luAd>mk`nZnNkY>f%PXo{sAM>R9x^>u^2ZuAFXYLoa)K`*XmlYcJX4Pz29Cw98^zx@NPfZicQ=d<=`MO zubeWPUzOQ?>X|)?g5b8RlhdKX-KVu-DiXF3f05i{eUZ(@bjuUvW9#NU6ckrLpXn9{+7etAJDyVJ6n#LOMWiE%d_Lw%m@6Z%>)$9r#FCiR@{ z7Vc!-!#$axQk^7jW&rPU^vRBxsHNY5{OH#oXS^=M*>&7Z+-&$C z0?1G~Zs_8rpv96S)%j3KLS2R2`;)Rc!CO~x?(cc$mrd42cXMh z7JY#UB{9PGS|$KzHPbf`Z{x|7y9;bh7zGAn6-}X@x4P)alIP+{>?&5|%UxmvM_aQd z`_*IO4rvcn5D2UQ-V`4$LJV0dYrCVO&s|71F;ZnO8Auf~ZYkf@-Mgo&Y+$UYvRtoodPxtT#9l zm&QnUwnrAIXMe+n2{To3dIjtKO6_RB#6f0c80L|i z%^)i|?GU`>fGxXC<5?e3-wOE@RpR2%hSF9KO|*Gy$0q)yr$TFhgAmg`d#q&;Yj_M9 z?pS9<4|J>sbxn810PviJe_=&wb0*%USE&7bEg2oFZ2DiapE+&RCY6k@3Us^Q=lc@6 zwSE3!-yh=iNh_j_B{PzWdKfW+2g`?0-K6TdtYiP}PV@hH#q!{A;}@Afb<96GSt$__ z&|TV}_Tn0S3F)u-gHi5cxX7KP|GT7}yx%Q8{g%J!d;yt!^#Q9cV0NZkv;WtJPW~y) zfu?QZwTeC0wdog)_2L1!H*6^&yxKR9$K@+I5%T$Hq!abu!@z zBZt=IIEXHOW^23l&Y7tt;HQ|Q+YP$T*S;V{8g`Zh({z%CvJ@dnJSU1L19yUa1j|sO zUN^)fN@w`IbRrSc?>Th}Ps=9zI|~I_T$Ofo4R%g)jZ$;Fswoa1`bh;fpD2LJPj**m z(t$%9@pj!AVKke*_;tx2o>^uNcI4a;7JPasl|Lwo@qbW0Af8m3uQd?ttr+}(Te2zC zlZppZaP(qaEYK(;^$1hbA6(v(+Uir!KoX&;Au)Z>LFa;z8@2$uw%6*p)&GkPWLJ9W z{n~a#?H|N&1{Gzz_(rDz0zUIk(CH^RU;;e~kH!Yo=z823 z@zOY%8nwFJqCKoM-n8d!IYM+DM|v?phai=!y_t-Ds%*w>N%HppHI`~}ME}i9%iM1L z@`IiT!TPZekL92H9)X1&AZ1?T=kYO4uR=C{HN*X%B7M~4#s5EMV4V4HB2+rK4A$on zf(RpBCTmgr2=>Z=jwiF~j%!^_AX5MK?IEZCcTc(-iOdFkm z^B1VF2D~3kkd!4~Mc97y_il!U{!8m?!5xM z?V(v?bH%umWtEdZYoBi8TB+7T@1xXfG_rX6q3)tB|>QU z5oZ*9YN3K3+2#bz#@lC==(j zcyDzRl1Z5KHIY7rG@cr=wL&gw)oitHOV@=JxZW`MXI%{qeQ;W&O`lV=TYZbc-r`D# zGnKZ^D-kaH{)2{o=5L7}wc8$P$#Yv?w*AcVeW2iU@0#)e%m&jN>d2)3#}ueCaMk!& zb=K&}RgkVP(9_+1Afe4IXi^9Rfs91i6^DmE3O+~xdoKh ztaZ3CD_bLgbye=oHXl(=CA(C~ZC@I_*DG2+?FpK<7fz$NHA?5(#+*~x@OuY?RA+D7evye|@V*IM=xXR|{m@ja@f(|~{~PvrediKVC+Wri z*hQQFD92H&My7$nO+)n+3Et>vV90`40;zOX5V+6GUg+MLc2EIT_WEF)t>AK{u!s;m zv*8$;H>o!_dSSb~!#rp*xm2FJJ&H90R;y*C|6NIZahPQb}ql6AkWrDQm(MI~& z$^8ZY8T0PR=ucvXguvdp8t5@`Cas7~Vl?h^Aqq{D z(vtaQ2oT!N4BV(;$bhH$KiYn~LyciQFRC44w+^oLyn5FCwH}X)W=6~QibMa@g!Bz$ zUxdj8UR(}3iG)fc+P1uCJ%BHYigXlpaWff6AUo=c3p&=XAE#wQVXH*3xx0ImzfQ1W zR^YyS_-jsIwtxM#4f$4&{sWd~k@P1r7$2=2agtG#%ypvqvU*H-a3!tl)i(!Lk(Mrb zI*-eqPurhMRuj`f;mIFq zOC6f1v`XQ1LtRwKf6&rEp-MM{f9aaJO8?Tg`CNMNCZ?hJQPlf4IReD}k`bO8tF6iL zs&9MdKIoAhRIa<6D`A!`R}c>}@*}@>b6eJU88ad5%HL_`LOVT){DX=wEeasN%NE!sS6Q;mz;nQ@EuC z*xLbOO?})@oeY%`j0D+{o~Y%hFA;ZBsl_+7>@qPcmMh4v`2>wIoVsRGSMXZw$NHd; zGKb3Sog64e<+kAtyVXGDSLI9hPfXN!j8=nQb-yuNZzO_lylLz&Lq5bFAlg$w!hrTQ zXX$W)JwbT+`kDV1|AB0%!`H8VS@Y)~hyAQZHZq-btW4PwK$igvkJFyiPbQDOKYV*% ziylJjb^8&ldR&&;vAYtVADk{*Q(O1q@4w4Wvp)~svy?9Im!T?d~-?O%GGntUO> zvZ^YJh1F!EY<1c&r4_JL)8FFC6>A^nleIABZAP;@R3r-aZ8hf3IOSceAVf!9gU-cS z7O;H!Rdt_kb33|L5JG3xu_$K%E2&s1DOIQ(QSwu~o`HH95~O%%CG3iLM-tsMzVGZH zLTHZjMYVuT<`dfYFx8^|nTFkgHEWU-N~k`fc%jNQC?iI4_%58U{Me)L8zu{)x~Kkv z5|7U+hh5mGHuC76`iJhXe6x1AGA^ePM{UoqE7?%FF~z@tV=Swn6Q&o746n%S-IsG``q7cV>W24)(oT zOOxyK`|EO_sYlc6&(6%UZZNkCXi7PxC9%_uEoR0(Ue3&(4e{aTdycD4`g2xyGx3C% ziD7Cu<9W~gvDU)33DFgY=7=9kNln$DWY&=TsJv*mz6?50a(xUeYt2!ipmt=0lmG5? z!YG0)&VPa$PFZ<5R6<|GUyw7tZrGB%Nh2S8a3VvE0YIbG1w+QFl+#`SVaS)-O6Hu&E(Eb!Wx7WXZw8{G$jw zvF|nDx@6v{KTsDiJmsc4a#}O=!nY3V=bTzr8hHC4>nPEq-PA7Zmq_rAzSgbx#c~8Y z2ThYig2T<@P^#$RLMio)IKdp7#6`b zTppgkoHWX*ibdexU5ID7jlU;JKgr$=xVZG60Ys*^=~rKd4c_a-4yd2K*TwGApG0^` z|HX%?aEzZ1INlnUQI#aX5pH?F`j$Agg-gBZmDla-5}Na`^t)VH+~|)wAmam|0d*V7 z-}7Qr#p^}3OJ-A^DgT8s#&>~=GT(EleC#$r{Kw&~w zF(EtR4rxXb)Uq4~G$*dEn5x-C01+Q`5=ji_bwmZ z*A1f&j&h$I(LmiEyL?aA{eNpN?U!dH&!GT{^CFVbg9X)JP^a7+D?nJ>3GZ#c!t;Eo zd5RHw%towvT#TLY+rGPISy~gzL``6cd^FTrCQGiJRM2hwg;nYnEC0Nl|6~M4ca$3P z&y0E+9rz~X$Q*)oN&LQD!=QilQWNW6X)4AhbOZcEd)zRF6@B);>n8K6&`Mvo(P|Rs zVU(@+T3u44zlHxbOy#5grWr*b4XhY7e*sTx^ZFzLA2o%ZGJA!l^`_j6Bb2rs`UgAq zb&0=%fh0{Ldz~ibp8iz%;xVSoUoB_;6Z7Q;?XO?#B=hATZ(v+jkjOJyY3W?qk3H6` zv@4%A#Q(&oUIA1f@Ts-=->V@RVo{s_&JnXS+nNRrXSY)?cv^d|eqs%~3T3<_{vx+k zvK@AA>+x3RND#vFAL|} z?5|s!laqpMRQO%exQ%j*5xPglsC!1J)ewd668ox;B>q;$eWB-5*17*HeX^LiOwcQ^igv@%!dA!Q~+b+ly0)xKnmYKDEm8XRJKsMML6N1!t z8N&w069#9?buOytbNy#(gR>8d+3@?x52HpkRWb2!LtS0{x>3uj(F<`y;dddb)09ak zkw?ZZLj|Rc0Wqu@@CY7jR+STvyjXE(>|D=BUBIuS z&$xFM^@Q6#{_PBMJg=l~6+lE8lE%X_{J@!ARPb_#OPxX7h`~Tqs3V>n= z!hPUZ%xfW1t8cLdAI>L(UM7K>t!UpV?;l;%3YuDDRWtwG#=^}n+~l`Edp#^2HN@;{ zb3X^cNk;{iBnv=P0h6ZAZUY~zjz8bS{1DXojC;%#$C^MLuzUSkoTIAwjAV0-0+-o`LOI@`wKGku}95Sc)IeEYBB zLsgmlE#l7o(Yqn<^_Qbd10WFMc-bRZ?RU?5W;Xn+%Whpx0nl!@M$B9?+pQ-bB4RFg zMm32KHdP~(8NNN>&Yd3aQB!>#AP4nQ&PllA1U5e>WC^j{3~%go^Eof3BL?G8z~;)P zi=#$E5-*6kLK%WO{PYyriyI#636Zapu`@H*Rj!?P=Br#m2=@4V#4DeU59rYE>(j@> z2W++uv}O2wHkW?_zYt6B}=CUeoqqvG6`2L4p5Z zBEfV+vwAeS&ql;$;pD@{c8T|CH5R`>JyJt_#>a##P1If=v* zL>hyH-Lb*+72jDQzCmkZ$p`695KV9N4TJ8Fy6Aop4ZvTOzQc56pzB)lu>!WKnQ~MK zP{fO|pI`&Y79eEc?r?eA)>~c@Dn*)<4$VXC{+n`F8fskYQ8`m_=n`Ipjh8HsAB>4{ zniyzYUE6dy`LXtIKu8xwo3Rn?M9nU2hl)v9?g{AN%} zK)?GHEiM$KcPAK%cMxsRb|C)pO&W+;+pb8PrjuY`<8(7sjnigEecrC^p>r56)E*ZtNZZ7f+A_{|^L`0KjV<{w_ z*F7K3(Gy+8fV1v0cVg9$&EcIZdc?DwfoXi@^K^+{UW{LACo}w-w%1=lo0x7-AIM`` z81HGdl|F%sdA|4`y^z`%tqiHUYx18o%QN01gk#Ekt>iDY{w7s4%lCr&k@A{F(ew{@ zR|HR={FGS->qganP7FCV79wQhCdReVR`SoPZ=1OcCyRJ^+hRnAF25dCAtn<<<*I#V zA^jZRYEF)f=CvWi=V522@!+d4zlzwOqs7(vL$W}}SC@Y+hh@-$)?A5>eG((_C+Dzd z>d9a1U~!Q$sd95SR)(|F-+1&7O$WnT&yz#TIS-93-%G50udE=dV4HT;gJyQ2S%St& zZ%q=b{nCcv7lIvU+vW}b9G6P+Srj@5F+{_l2Mxt~*N?T5lZOYSm=Esvq|GFKIF7B| z^TV#Ft^4_yJ=4GD9KV)l$#G@(M`e!>+<$k10&(z_ctet$=&?XsX*OLuALxRWN4yHY zj#gAlH_ccXFAn;W4i_$~8Pz-s`;?RGnPF2=WSTLBe7Gb7G$HrJPfc<;ugwAmj&>So zX2t1qWs~vEl2AJ~qyM=*HhM?GI5~cQr2;V zf<2vtr>*4jamaW|gsOrWSG9|pU0}e9UAGvACyrMKD%G?Fxg&4=#sIvM9nM1>DKRt4 z=;$1C029c~h^HT|BrPfA5|!ptGG@`qtNgA4sCySp#6QL`m&HiCljgDkiu?Oa*s*FP zX{TD|nwB!<8@k0e@(9*#gl##jdxcYj`>!?Wtb&n0|9dZ6Li@vAP z>``yb*Kla!*=Lx@!esV{e89<|&Or0ct>uXcW;jK}GO+EE->B_@*#Bw)q~Fav#>DrE z9(7=ph0Hqzhe8k)0wwBq_8Z+Y_OiG@X+Mn+UK-H)@!z)_YJ%Iz%3i3B$U14hnmy<` z`(D#_$r#_&=q_Ib1<%TYvZyHLZsF(BH>r2toEz!INGbb~G9tH3a|~bz$ez-a`9{l} z|0rNy#-VNNtE`9uCaC}#V7IbWR{4OJ!LSQ$vj2yUiEKKx-2J+1BMqCTG$WVZv=okP z@Ec))p1t0sx(ZjPEGlVx;LLwCE2LjMwM4 z@R{ghbtWWByFvobg(8z%TGJLncg68r&E${A{75qD94Kv=5r~Vf<{LLOkdy&efR}!v zkc|b2p3T~M3k*T)CG1+<3Jo<&p-2(v$vJXQHuY@kFtw< z0i4PiZA13B(5e0#$t=Rtvq$kk=NJ#OWXQAQ>?3EvYi|C5z1U2P_!iG8RrWNo;5Q&jM>HwrSZ()@Z@Mh<&l!$FN6I}aG zzF6(vgK;9d)W@*V9UYP3OJH&5N;3vo;Kf)nPNyiuMV@)(YZ3a*N1~MFJQ%l9L$-g< z99)?)XM~=cT2JU1YS=IC7rQ4@qaquP+>k-R9TkNjadQ-xok@p1%7{?&+%3}h5Z|7K z>3fBhIO#c*0cafh; zd3wZ@!f1Zh7f6`)@CMAo6xft#-B=z~LLp0@}&Z%82 zH7p7H6B$5m{ZIn~b=5{J8U;8m98O)!kg8q&!b5hQfcoMTR+-S0p~oaz=RL}~LlTOx z2%k*8*0^76!mbcIJiFhP`YOne9PKtZPLOnsy=+<5?dHF}7+(L5G{jX4+X+s6nLyr0 z!zj5()(1xKl=~xE)i?nD%LiXv?xojgSgRG}mS1M(pq%tAvnK_8`fIlG*x7F{+SgLS zFK29JlIL(7jz7*oH*NfcQ8rRUw2zank=m7f$At-P9sLxQK*|N4SBblkD<$#eimACA z@eDWbtKNL<@$PkR)W=))!RSjAx&gLZvUEiCv*_i*71sA)Ap{_2s4z;*>zX`I7n6V= zV@r_LwSSL>9%a%>dR&dVe4U#si*-YLL$T>6-pCtgV>Gd7(A?DgBAC>QDL-%0v#52! z)=tg3z>C}EfL$W~6K1BG1)cccwVb;`l?H4Q`D^ZrwHV`Z*bf_8xxJqaPqy>Eg}8`5`6&Ww<2k=)$BSTG-$mb!#P$ zQ(;$DurX`lZCA9Ix(Z^tGG^RTSM=e++93r0r)5(jsdSHgPRByDewX?Oupep1GB8jM zu^-v-X8~`On4kQM=lSkm`h(CxUvD8%b24L+n5ge=2C-d@auHI`^#vatM~%k!odbh> ztx*a`{TiB@qTE5-7;v(e%StQrXJIT~Z+`K8Qf!D&ZccHuTRoM{c1kz%!FU9 z5I6W=!9q#0xdf=U&va<*O>$W~ZY+=+rgGRk1#DPP&BIEvEi^2j^n*HbV0)gN{*?M7 zhXK=*BAbzwddfIkb@UL>sLan^v$}qdL~sY6{p{9uD$0cM6b4|I(8@&2*XN6!=b*k& zK$)orT1gDNE|P-$6mtB*VJ|kwyJx#u9_W`-26wWj*&pt_8Ur>$(;Zgk zN)XP>tLD-`_mrURzQCl#)6v&Do8u)K)l}K2^|QbK(r=wibLi>M?KCC~(dR(6pwKtT zqIJKxWgQh1ggWd2EM&;-8c|Bdhc4f>u}6E6UKT=EmK31P%Qn6vLh|nWhFx|0ZX-6r$ak)Qw6!(*?)tN}6Y!H-%zF|3x<; zY$K_+b}wXDTmkI|o>3Ab^ThfM5c|`Yza zr9Hn^Y%vJaAynUys0jrn`UTasz{DD%H$PA|M+iwujfkR8du5SgD=tQhlz6Y0MBl~3 z(gcz-=7~JqyK&ssXvWWhBzUkGLb+jwTy-upB;;sHXooCuv^Y6` z{8|I=IVuMuptvz#^!cO_dFeNy3_q3=Un!+=svyb^4m4CcBJ6Tcb)IL_g861Yj?-LR z!~gP4{2;q+gxvQ#Ys!ls#8^Tz6xpfw=&aZjIy)$%BeXwN+9Ea{4oCYRRhzx|;urWa zqU4}D*-)`Mz&FdQJL)jqaflb*p3!CZYR?U*f*(&aSX_QG*0XlR`E3$Pz_EQUgDZOx za)6W5{NM7-%*I(FpH0`0M;KL{k0r|?JNbd=5|*o!nfN(}Y2Tpz4U2vlp|DMAJO8oK z`o6e2whRI}*EHbP8Qk_=JRUGCGRRI`53EN(QDw1kmyqQrM-J?Sx|WmS3>HMyiMjJE6ZUGgr#k2v^(;9{Kg$(~hD4)d1%KT&gRM0W5KS1n=mBToorgJAVu} zT-6vVD&EGs&~(&Z?40BfzkK%Bu4QN`p%$=E%gQ(P%I8Y*jEN%yNr~X!n3tLbXU7Q7e;LBrv>%_4jhdcGqdUIExfJ5w!b!#$$MGNP! z5!0jupzLn*ex{i+#%-d@Q&V=|VC26GMP{93OifL3U;dy!S0I`kwx0y66;k8`N z18=fV0Jp$TMgXGcenA4s zytLM@We|7|qV#z$6)Ck)cUBcQ!-K_MmTW;fE;D*^#1MDkTFAyqN87sLKhaHIk0e_G zwFR3mbpm$Lh@%f0V&Y6O;>m#Y$r}5Ko*+UwM@(tUF$NgRqas))cnt6G<(WCEXVCGL z0h6Y5iUoTd911S;2k53nyjZ2JtT{88STroU!0I}KIE>qUSZTMe(8{d>c>k+^F3Z|8 z0_n4sAF#QpMM>sSY)n3__x^m0T0H=_t(w`J)0-KU@Mr?AdXGpA^-eCe3`Us(SoW)MJ9Opieo_kA2g#U)~;Cz>}#FUC2Sc5!%NjjKP_o0UpT zxtRdGXDnF7`b%cJ52P!9r+{PYz0m;b6itqTnjj$QUarz&u(5PhEk@HW@FM@k7UntW z@x4=qi-B)f?@(WHnatZ_PmoYOe{Bmcv4>-ieWL0cPf)1Iu=3?gLi9+i?jR#-yjWP` z-(uzA$nHbTu7Aw%r(56dYDX4lb0hSh@5$HOYTVrk2z1CWd-ok;kcLce@G|$`^FbW; z5!c;Hkn>`7DRb3s`fF=ULQI^^9IN^?O-6q)D8Kz)|1VY-g9f)_TPo)`wn0H-NvO_1 zYPt|mw%|9z3*t|7U!40k1mDlg_W5?8I6~h5e)p%@w;w|p6FxZ~qExpY4t;O`-4fW~ z6$;!fRGEBy2~mtfru$9Vt*O;Z!M;BK)4C0MD|XLgDQuWTwrB$U*sJ&aX!jfBTf+V# zU&z!sKZE5=F|fY%Z%eZN89iH0t0oda(Cxk8j3pzmKI@d$)`;|-q@A+bDE_WI5 za7B52^ve*@F4n5m%C?(yotH!G6fgfixhLj{Tz*tYZYgf#S~Zn+D=#$GUGAG-;!wSlfoLkAm8M>-1%@IGD7R+FCl{!@vV13zwxckiN!MRi#3(m6= z%)v{ z+i0jRYF-*9EBKv{x7o+dO8Z*6@;h6LkW;c6v ztmcjL+|Z^Dw`-i|+cq*}gVESqqt)S-xE;VYj2Zpj*Dck{9-Zl%3F-0PmO5>L&IzcW z`lcBv;nQ7nF0RoyxTrP-u^kpof1j;c}=fLc;CieIB>uF?ur<9swfY1b!_9FkdiA4 z&1Pk#Hc!Be8VpL(UG+pm=r=j1nB%Uo#%|6~Hbar;x30SKT_@zev|q|S*Yu|OeEom5 zfOW$rB6sW*`}KMgv)r4N{nsq(Wju8Y>T4z5?Vju3rh@&BlGM17=_P(XWec)CORIoI zl_euuow0H*7!ZH>1K{-j^Kjz}#eW`ztUpfdM+5Vk_5k078okBsg8*<##%V;Ya5HZ* zOHF`wxSR0s1fShA>$0eNcAeJpI~St2S>6I!9^M6x-&gA=5lT`(d&C8A>zoyL{&usA=0AZu_`hWwTe`_P~AP4KJHw4P?;a%MmYwZnJksjMARA?tN+T z7w=kPYg8*6@7GCeoYpX$nXBi%zQ-Lo%+h{x{knD}a_xaU_Mr(ROFeVpbC#ELZxd%s zVQpkUkV}cmKN>BFP7>#I#M=W*0MUfrQtP)pU})PUf-Z$*ok6vDGrv4ORQRPo`gozNb1Lk57}AI*%}n7KIb9xxErA+q^(`a3^l zqbvD#8(E2&zv=BR3+cAC-V6NSh)DNlLASBdP3#A*jenX+#Pf{1o&~)1Vf(+6MUuD| zEyZ0%>PTGkzbIf*C^}4gVR3dpo3uT6=%} z#WUuV*grR%nfj7mHyRIFD3)X`l@XLnPd)w>5(h)8Rr{Pey~-s4=BAnk)-fwwaw(q; zVaGH&fAo*`U|W4bt!Mb{Q~+FQeNy#M76)2LRbEq`m{4s8~wSkRdqx4 z-KM!-#&_Q}h0gdw7$^zV>JHvN;!oaF9PgUxHb45S)wLW4g(X-vFnA0kn8NUJAq`tnGh-B8dGL3C~xnNjBZ zkR^*gL$R~Ztrzv~U1%PY`o;)5mVN^JDP$kHm`M|+r>MLmG}?J9fpMa`>Ppbfv7Vc< z5$b!%O!(GOX2j`oc%T9sRG3lRc|TJ9?I{7DoSD^!ean6j$u{JW+lRE-37YpD!$s1e zT58I=tUf+QeNhaTWY2BA(=0T_?RY?cOOz%BFtWpxyL5Sb)xJOk6B_tgp1^s;{u8{MkW|GOXB<;os7XDJUFxf+NQ@^yFK zSv_m%)x^St$xAg;+n7kuuJn(gl=%3RpS*^_d8bUBck7iTSJuh)ANwOqeEi36XmS3N zOer`>Q55Kru`ki<_h7TSC`gHoD8qYnCUm7nLE_50Ksbv_XG%G?WwghWZ25*-z1uq1 z*v+)y%LDb{(49L&w8tIl6~aM`vbpp80t4~eWu!leG?i>FdfW8;1_h;tZK3Q0CCO%C&f-|D zQ?DxjR_8v=!gl7vE^?Z_wLdLn@!Fnz0!g;#E58cU!?xHz$j7P7INzA zVpuwzgxClQn$WFZ@BW?1>gioi_&cSw%Nr!`@lHB}hnZh%O!<{@NrU_9 z_Y&J?m#49Jw8GxJy4QTnXtvm}Dbb(Da{QvgZYrkrq)$%&1(vjKc~YWoI4_kaP@^U| zNia<r=X{1 z$Kp(QL*v#*pSW@I&5*7r=*%}C3qe_0r53m zGuU;yY#U{9_U~ss1sr8D|4eR|SxPc^)~!@2MqJ z=pkXB)OhBYAsz6p6KZ{Av08?k+y1>AL<*M;z96fCnI|mMQB0h%Ze-5_g&=&3P+oK0 znuUMAzRn`Kddb>SaIy7Q!>s=0BO?X)2u>zDx!heW)f2aNuISL;=yeiR^=B`Gc{d$B zwpy7ym=1M9jG25oNAcgDwId|p&09X@&!Vydyz(!NaOxr2N(z!Ov$<0x@K%g33%N>C zt+tz4+9-U__eGqa(%imKC!y6Qo(NZpuv@)3LbKPPQKdHWy@SE(lD}vaOlXkaY0P?P zpgn1KVzdC34f(cSe+Z5`Kl!E%X8#B|o6lhMm3dKQD<@sCX8z30v$DaBb@%6|sOznv zzq}Qmb!~w_6EW+=q9eYjn^=KrtHYMwp>8gzJuBBLkKgfPK;LhdMQ%Q@RpHy!m{z-; zX`(9!a&~O`)H*ov8>B6~s;~Ew$;1<_rpfmgOT*YABEmfPP@?6wUd(r%IMdpfL0aSG()R_NMV8!W|)Pit*Yh1z$f>I zPny4)o7Vy=s;+VR&TR}8A*Wnkq=u6bMYWJOBd}thuXg|b;2kUlAwFFc(z?mM)b9CQ z0USs+#f$cj0PD!RoofBkMAXWt4ppZ?w>JJZBfI&o)EU6Y$DbW2SQ#-o$udhx%BE5y zlOdFNrqiJ#03aU7oQ9E~VrOQ7hDzk)VTVk=^Ode;9_=0f?avc|v#LD|G?Hvq``}7E zZZ=U!xe%{)8m9yp4^TvSc^TvyKZt-V9^isns~Znz5-CbZLZ@#K!EEdXPuPlYV8=RJ zq)O1c7I*yLyQmhV@bR@zs1c;{(Ywull=~TsvCY?3XE*;8P0p7}eGhtG_v6nOc%^JbxI9+OgUFIydY;IglO0y)3akoS_bIdQc|5!YlV1yrn)-5RGEnxmLj{3;E zK>h2Uyep$KHA`hI=KXN9s;te%(-N5v>>`NWwG_R}HI4QQuzH>=-LCKUlJR0`k<_I^ ze@=^9OvM4=3nCEO=8r3>7BUu;PM4!Rox@2UPr`0Iz0WRse=?BVSiKjt%jcoBJ5vjt zNTnQH>ELB|hZ8n-SuA`9o1rm;F3N&#^?FBqbCNmb-&x72q1(d3zg9g&`EfjGR~aJ) zBf?*7R=1`tlKq;^-btj@ff0cR#6U{JbMwAH4&PFM!QA&2v+a)h0@k_A5A223t1JBGyQ zfzlz}wMlo!fDwP*_x#`MoDb*ou6=lR?Wz0u-S^GMYjn5`it=yS2o>m!!)@MwdV}+J z1lFiCzTf8beu({bHkK=JZOZ@33Sx+A5v1W{=w>MMvzzvRd5k8VKFw3V^|u2#W6l9T zhQq8!jHvHF{W_1o!S8>d$-_8&&c@0J12ud+Gqz~kKnT9mde_q2F*HI1l%5!=?^{G z1(sI%ZWVX-b-aq(Ls%24Jo@CVA> zx{j&gV3$quN<&h)^Ad><&%w3c>mb`o=`pLGyDygOvm@>Tf59f38}gN1^#|yM(8)_mM;EO?4?P1^+k4`&w#II!&{V!DUn_M+@Qn7 z&fWWw-lj2wtBaVeMOtn5qfg}I!-pE6RMFB-=d5L5{#WZyY0g?uVgA*%ysqdshrD5f z&mjgF3A4Cf);7gv*7R@d{57iyU(m>fx#H^*l_J(0<((HoTz@MH(x_fNzYvOM+O)_Z zWz>)xPENudW|V;uuXc%2E} zt@AYOtoXJNApW2&vJ#~zsOe$CH-7M`GJa@!l_wnmGDH<*8~s>P`p9NZ;0Kmax<3`} zf1QDVrsVJD{;k{3)#(Yio(8pn$JKt{N>;jZF-pYmS$`XPC`7^^ue`$+73y;$*~kg` z8tMCh6IQMMrh?)BXp&s-GN`M*Z^ld3A0YL^TxfsGh$Tv%y0b3elX^|dnR>4+)U+E> z#H}gflF-v`+Q9NRQqJUd$rZ}kB`24reVa}0nokSX zBIo1(N?iy-hW{4}uuir(pbWGrd0x>hyWXu$^QI$|GuvkgCZNVXGV=E?`_EraM}i$K z9Sihr+|>wm)T>n9&6=kIq(E}MlVUwb<<)MfoRYl1ZEx0tqsce4zeDaT*VFUCVM`Wv zrW%#wF6fp#d9k~^9tANZ*!+R@ICnnS&HF8V zs$s4~{|OR*MYoWrkk?O?><((?%pjKYEP-Zg&Y~&MOrr{KvtN~!&bkbVAK);R|4fVF z+&K#TEch9SHn7;`wXDrg+;VERh(>sUqTg&aWgx%=)jgXRuiXq~`+bIt-9Zs=l3+|a zi49tNyfN{)*_hppT?|XKKrxB?f5i|m5^NXWz%UVunU5iO=K0b9>NHVxIw>;wuN>60 zw=#x&TXPqU)F|t)s z>~hRat%V@@#L5)m*RC^6ulW)+?8gAy#CzlW4(4N%i{yiSrLudABN+tUT79yYOHqaagDsyhb)nv=Q=-pv2>tC6 z(T@Wo1uCN$dkRPrluMs2E1hQLLt%D(Us8fKh0>(ZSjx8YS5$SAwCjS_GyYfcVgwrx zF}~1O(7)f8a0#|Ko*qHRZao8apZOhia|tM&T(nm1ZJ4PHP@3f}zt>4aZlI?KN@`z`%Nq=e>M)h6c)x#mb`@~6~BM7E2v zyWrQ!1vFM<(hLo)?PowrV}5ONhS=w^@`?WDAysvbj9Pltr;7L~6m4&4aP``{b|*x$ z26hh$abl&QLE(gu<(oFIuCnvf7ObADFHJ)@UUEDDam!hU2v{&)4@o z2r-;-zy@!Mb4t;)vJY^$CV!8y-o1dwulmuJc5+s&y;oSzWn3>fIS)Sa?F^pq?R*tNAqcFa6&zq|!U>b$o1Fp0#VLSU%!DJ?;(y0^II1 zJSQJLVXkbzzZ8_~M=QY$xLna%k(iw}A=fgE{z`mY;p^QQNwMZMQ}d$y-x>xCLgS7s z{}u@{J!DNRuTP5N_}+8h%8Nkxi46kEyqgEjmLitDJ|6!0ki^Z=McGivgEcu6*| zrn(pI`T{d+`(iyMuzHSpe9Tz@!9~X)#Ike!v_?#wCI=#HiHy{NxvXky%{oy$)2f-5 zxG*u}if7GG&E`P`D%-AD%1f4R??5Tt1$%qCUoX;tfxW(HVdv=2N@hRznm<;qNy0iK zHidoX6*&PB$nb#~La%GRZ*hvMh3G_@=xMHi6pRY;X;ja*curPiYVAkiSJRTnUJc46 zZ<&v>RXIFVo>Bo-q!h@L4B4YkwMwxU^|RP$P;{`b`hsk8ha@ue&*qHLtM1`6AXrhl0qtl2 zJ=kn#FGH#;dNndBjs$brkZIO&e}6NqvRR=#PU`(5>4-MLJ;f|e(p}MPO~oDiUO1zv z+(vN8RV698;L2r);$Htd^?4pArnc@sMFxon;j^j@{Dr0fy`^#8?w!RDy|sfsUVbWZ zB8Gc$B3#+@f-4h5uR>rLe-pIIX7QeK8dLx6N;#^LFbcI=`eLf6=(zH;W6B#oHStAM z9gGFds!pxje%*^{bCHRF;$YFMCsItEuTq!Lzgs0(B*TynK-WBul@1%@x9WSZnFD)X(fOt4Zqr#FT(?a4xc!E(Yf!&qcM17t~zHdxZ z@r&826E`b&7624V#L}x@?}6oo;{HXbC2JSh{j^E^cl=K~H4u>L-0zf)`IC>S+dJe# zIO&J5O)_KO5?E6cImIZOQ!~};$Vz`I1A68}*Y7ZUyXyEJDOj%J*yV4Ms}P~H2j?PZ z-uoZCJ58iZ7WyJBJ5j`&uVO{4Jfxjy3fOQ}HCQ5flSldA{7fhl%LttuFYjmd>%LuQ zR$s`{_U!v@{0tMdabd5+RWUqqQiO=g2dw^W-;X{UUk0o|x{g=Dg|cCsIc|^`eC&0y z-Jl10a;zjPUSO3&>(h8O(&COAo^p5bk^~L1s4f<3Q_R!42IAhT(I1KS z%cG&qWIT@My`yb<1N|+oMj8!^_#a&EUlbbG6f6=&I8Y)`)uU(=jkw(x z&GY>e>=jIX{U)Gl?Z~45vCCl-kqXbR%NLUYFyvO9LQDHVO~8exQt8%`6aPDB&_i=& zN$l`Cx@AtFoIL$Qeyme_kG(e!z2ELb<(ZwHNa?>|3yygg|6eDNZMflOKg-t31-I=8 z_%gR^dtwf~&^@#w;J)&qGF@uWy0OkFuIu5=-+}lf;dheE z36H;1$C_*|V~BUZDjpWUSqtE7`=C-B4|*d6D6O-B>+-_*YKu2|{Q;K)H&uAT`oUsp>dZ=h;yAm%}CdP*?if`!j_bQ3uY9FG<^2iCMw#mKc}F zs77L8O~ykOuWhJ%E^#gIj^bchIVIf!A>eySO5Non1q-nI`^OlIIF_EKOT&p(&gBJx z+*b>32MUw|s!fu{GbpTZU1_lP%iN1DAZg5AcNyWouhtYI3@3lr2J6}K_BM-~I<9;3 zO)r-O9ILIb|M7nIM9Lv9JM zR#I)doKkR5mNV93W)jJBfurHtTI;iv_VW^+H~G=@YETJS{{w5U|?>W=ygP@IvIO6pLwg;GQ}9<{ z#4>={g=Z5lEojVFvp4yj#hl9g;D0X?uj5t5xMBUlGpb91@n`7y_Cp_Mll=lool~eG zBbh5=i%P&RjS<7c|KGdij?L@(e?u+j zC2?%*4ZhU20^kM*-(P=3Kv53PXfEx9&Oh>5{PB38=?ov(Fm{Y_!1 z(cO}vS8&HK|T#>*Inh0 zI*K;6NerwM+VDKr8^N|-Y3S`%XgU;AezdjXdoyGX7+a$jgG`!q9IeP97VT^Fe|b5W zmk%Eyd9|uh|1`(G%hBf~0@T~rM&7Lf5S7O<3o#iC7HO*2mj{EXy{ZAOBdr4P$GT!* zYkC)Mls~+6j)g8)XwNd5e58!kBM4#81Re>`rG4MATdrQ|fa-4U1JL_^+pjfDg@x9v zIYL~QlvvV*_ibVMA11W9Yv+yTh*?wOony1a*^%c4ZJ_I@EV>^UpbCuj&9^g)xcpq}=pC>g2lxuUNEM-gTJ~RqQY9{$-&>6Q(A9mbC*^uS zO1R%R3&qw5*>>eLYIpNrg(D4b|A7LIn5VW3#fqzRsGxh7wgN}aIQG5g^li+?!|c_} zn(v48|3Q|nOSP9W3v!EIe)Ruk);k&b1^mlv;XJhs?&s(3G|G5h*m&_*Nd$HSeBF4l z;4=|e{Nm!wmyJlf4gYP-7=Tx+WmXw6%-XKHTqS9CUh{?W?fe-q-`gf9+T@uJ(8u(GP|>++6blHw*gd zI!`OsE=XgI=oQrFvPq{O{y6Uz0L6b?*T1n^Y(JZ@lz3>REvmn}Xx#q3!~E%gu>iX3 z&9Nw&m5!3kr`_c70Z3Q-Gr>T3eb(23G>nPmZ{AyPhPQ+*n*2p_i~7J&4>~yZ5GUg!ntccB)?b z>JSgUN)X(nIIs71EmbVNJg8o1^_HG7bX5Ompcjw%X_Tx$?rfH~rB97@E30xAtlw<} zb($62jWZiVODe6lf_RXJ5kM7rr`vzvTYM+HT#5e_mZ{6@?O^tDZ?=Oi_SxW6l(rG@ zX4<>{E%2oXjBtjJu9t|GL6+4d%9z5|Z42w49d&HT?K0QsnhXEEVB8=E-#+HwTd9D< zAcH2WX2oaU*fA~U^osbX<*M$JW`p)l%>_9VH=S}Wje?F&yn|N#!ffct1JmS?FEt=p zAS%}xy3#cKmzQEe6>pWJUf~T=isEB3iM8@n=n|q)30*K#(tK0-y$it=B%7nPtsUv; z+Y=6WxTYuCWQG+s*Y&{l4LskxhKw9%fX3U8LVb_??6lb>4!5#O$mZR?@=Vl@R_nVB z6UeQ|aW2PzrcW}9*Z_Sw6vv( zcb;dQpY0!IfLIOOcGvTx;iB$ZHbwN!R#`#&Hjs+T=Ak}vGkM?`D}~X~h1MLu^u$3H zBzNG@Z@sn{*?#h))arp2zh5W;F1mKyHpKJG}{Qi;Xd0+;>b zGw$CX$hGS@*Vg-Ap0nkE=FDm`_zq2KQ`k0!?%N-FeUJ1Qkmu8%=)Q!j>2p<%*Pjk< zdPx^Py&iR#+lFH`$_o2x>(7K|r57|0D_TjL8 z(g--;cgw)n9{viUg$|ea@e)mt3Gt&nYi2RN0qvp#0Ut8Z|JbvSUCVqEJn06XW#g1v z>1w9E@Z1imaRlhMY%~fL|Bx3D=Ft5wN#?8Zzo_Qa zq=D|gZ(lMra7K#NJPGQyqqG)g7s>@)KVAQI%cp9z7MDkoyD__)E#Ih<$8QcRP!9es zuJxryA-)c+>oYZa#ZOg48!nEvJsQ8;D;(%7q&XxJ2wo`p`WtRv0gp(JyCjZE%w1_f zhRvuZ08HDmCR?CzKJF;-omAl%$L($}gmFpy{vw(YGR(oAl*_G3eR^&l&;I`QXp?%2 z)4vr@mdJeor|rEX_^44S-p_BTy%*rWM=h*48c23k{<*cVj2CuQEK~og^KPZMN!)F{ zcwvnjk_)e2OP5hOUgq+>n)J+!a?p47Empd%-kfXUHh|ZJ-DaZHugd_ z&$9$NUH+@VQ-uy&E0sR>uzmer(mgcb)?C4Rxa3Li>+@f}z9}Gnr;sct=GXyQoBnE@ zX9VA2?>tHqGUYM#pQ&tgaxTMD(pO=?m}jQ?O)!WiXt@xawMBMhgt~JXY%uOh$|@x@ zleMSPf^B`EOXtj4tu2+deEuWBYVd5MbsI9iktyE6rGCB$n=H09O#TaJf2pR+)i&R> zc^Q7}caq8;YxCB~CW$KFk&eEW@{l8w_VlPbBS`)}VCj|AxS zZ+GOv70FlHnwzhReI47jFZU#Gsunhhr1+=(9)XTubc96ybh7|&pbmV3W$QdEk)cEVn4n* zbVIyIR};OK=)-eawVPcCMvx08CB+&R>iMgXOJd$jN&D=)loXOrgF;L$P8;%hoahUd zGR&XNcM2+me+BVI5&uriMJIiJOpBh8;1g1!OPO~oudMA1ou)=6T+mlloNocs6plm8 z$zwS~!}fdt=|JIXpZfa=tv_~`y?|+~;BDnwXuN=`}jm#g-OAr=yn{c0$xzBmK zThOBU)-Z!|WP#ZCdE-I3v&e9N{HsSBdIMbtPvA_`i45?oAi!P^X|4%MZ!#YXyKKuh zb7^5a<0!cvPI+mL!Z7i+lvYWu0e+Ln!@NZV1^UieoN^Qmad4J&x3BE}`-522x`&&p z1*jimNbcb(av0hjr>Q{0^*~n+h~||M@>d&YUpzx^TSgD}?d+3KH$w%=yMNnP#3PPR z8;@457Nf}dkB^@TbrMpF%|6?Vk-4jH(ycmaej7&`o>EV)Z|LB-XvntRIl&ie7nJ`N z{2(z>%}yxt5IVx%?lrT~W?)@C_(&c8(m?4>Ms?@-T9IbDNwr}Uak!tbd{1uP~jZ2z=A%&v# zU96Eqh5cCr|BT)8!gKFli1N6ZAS)ASvAwi~=ebM&Y#2dvJ+#&bW~M|MCG8DG7#MNV zt&25y0_*3N8cG+)FPf&KH-+JewsNDn{3f?-Mt)7lZHrI=L(z*mbL!4lH{@gY%f+p% zlQ|8E>4w5}uy11z_fXW5+{49Fqd5XW@J4arzcxO$xx2&t8iCHo(Z;vAe!nUkSnmh6 znh-bpb4EaLgUz{TheNM7^dWx0_`mLZ6BV%3=DE~g z${K__6;sU`q+GLepg1ru9cVjXzjgm`BeJPlC67Eovc`oX-`)byTp)j~6)9h#77X-YRFc4;5vC+^&52f1qIVDlWz zvPR1U;{}*P-LMD0_wa0lE6e9Rfz5fkOnpuVo4uIBIt9amn%#49dcQ5TC8SRv{%tR6 znA7bICypG9<3;`#d=^y>H%Egu)7*ago#n?lfgHWlzBp5c_~~|Qd+0{ua+^REsn}%E z+48um$?vJ=$_erVH-Q6(3$GRTHvpfGO8DmLPY#iIiV8LU>AsbMe2>OyZ9XsWQnRv- zTRt`Mi?#3>6_ZHD@x4?zspl#f6H~Lawywu;2Jgi#QI>x4uc`y&SuF4`zP_#_VTA4s z;d!LAn0`tp<$v=T=!57|Qda;qA9)DeUe`*!b`_%>F%}AG(u^s-Ihb=> zQik$S1tm1fcoHU!lKEB&jxtp4?L2VjXvUOJT!&SZud@xGSKKl7k>gN(6}bMLwqF-A z2Yyd%liK|J!s}VPlJaHys>ho!GKcu(?e>*Tw^R*IFBU zPM1^k__#w6#4>9gv#IfoAhg5D4J zq`kxZhl{n|nwR;3E@I>>@qqi+#J81#Z}JCB$fLWi#@T%_>a;IB!fqD^agYv1=enzR z3QeM-2Kv|nvkptYz@AFvsZ|iNDGJxM zma(CVJlaIFhAm8Ty;b_mcfccj>W5L|K`L&o|M~2qeXzhs;Wcjbgb!gjn>125vRgrc zcD1WPwiOM*h14d?+L`B0wc1$KfUea#SW%6usw=aJlkH@LoGtQ+@hdYw;A?9OF+8 zF%iGHvq5I~$_mF%{+^{yf7B08{U!s~vHhl47q@_>-Ag(8$A7lDbq=q7l4O2(Q$UWY zm_m>~*h(U$W5{D(Go*QiC)?pddOU}I$!D<#+^Kxgp4K7Id3dP!nY zr`h<79WeG>1yW7jcJCg7VFn?CH#&;c%0F*mkq`D0a|#da{=)IA zevs6eT9|zcZ`&bYj-RF!|M-v4n~B9qoMQ_hZ9#DwtFa&9#j4g80&KFR z`mt!=^q!7;TlM>n9TQty{Mpz))^QSR&V~O2E&~rrKOLx=e*6bmspFX*dkxW)zW=b< z{WBJX@bjtkN-1>fV;3;!6g;_50>K78zgb`ySg^CbAMK-bEr~%cC_Qs`d}2t-SU-0L34hOz%_xqu5nqN^kxleK1Dv z@fLN)>KAOwUsixB;ZI?Tjm^2``n99* zG(T`R8=@h^WcthaU()rqo}ZZEO4*#^??~5+?YVQCSnB;&-PbX)a@%dU^PfP@mZ*#7 zPPNIO0IMf&jbO-|`etx#l$bKQg=`$cfGt((fC?X8wJ6+);^l~MUh+G7BSYh_Jc3`8 z0f7%v+%+=rr{tEA(x#^p_N+hrherfH5Q&~o@;mZ!IbBWum{Vy2K0b_&W%Zzjv)tzH zlPB;$zy0=?JaVnU3jXARSFquEMPq*lS7Fuujy;T_9-Cg41B?pkpG5gxI++j=aHa1; zL)+|0a``Q!*9AiH%lh9RzFb)(KJHxj^s=+2i)o)+MfnWoo|~9dMPaqpN{UIKu8gkdpb~!BS=G*5*)2Ge&bu|^o+3g+YfBih| zNxJZG_2k7+u6jwXDZYD-u?sd%kt?VQ#wcr9MpuL+WKSf2!i031sBeo3C%uSTR&M!< z*4r91wYsCDG^5p2?>BkvcMPcrnarw0M?z?Q57)Pq-!7s-(UTnsV@b z9dLFL$=vcoC|x;AZ*2oz{pmnFeP~sumcvv0`LC&c%R0n&E!5ZY)xx-Txk)G$Nb}j8 z?+3Su7R{mnqwiyt**x{XWZJD*lCqrTA90pCs;$3I;*v&V_*Pyi8d2}r-MOSU8E+j7 zEo({XFO6pN5M3RmIz5 z;-SQ?0k&FMRAHy{o>?K4e}b-0B{%Zw+h@h5oZW=X?eZlo<@=fwPL<&bt6bCC*$S)MVl=n&c{dioU3KvfG*MdnHAG z;m1B(*~S3mh=%jWqS))35XTyShlk#UPsm6{y7I~8QTJifm6;j%&m$`CPd=YSK6b|Z*y%1W$!vfl<5@MhBC0$W-AMK^?dK-X5w0A2M1m$}J)E+v+}x;|I99UKE*P5wo|4 z?&{pOVP-dLOu4Sd(SQ+7hE9wR2z>HG{zS{P?=0z7(LXy*HeOT@?U&j8POy`m7m2t z+hL+f4doHHHtGm=+Ah*B?Tm60DU|sdk{)=Ny+@$Dmc~VP{^Qb{_Jq9;S={x@%=Q)) zCg?H;zxy-i3CCB0W^>$&{Q2YhjJmxDhyJQFUVc=*zYLqulVR7krIRXnC4A{0U)+ z7`z(a8vxZ6mFkMOBrzIHYEw>7ra0f4?JPZH6}6(+zPRW#^S&5grO~G4SljCE0>>_6 zD+umq8-4L-^QzUIUTejFY7O_Z1 z#UQY3tP1@k9kb`s5xfWllK9h}+N4)VHo|7Ou z+^!x$C!%VygTuW3oJnvHr^DfWhx=b=^ zp=EdTajh5o(80+UU&_4OAQmJo;RilTBRAAXO$^OEL08b};>R|x>rw3*NBe}1-?WFW zMk|?35^gJe$6+l;F*%>X#CS_m}K;+^7s82l$6VdY>XpQC)2;E!XhBN$Qtq3R1>E!;_Rp4aXBaVc>A}W zT;kz(NI=Ki`xC^h-}bJ@cmMqxn@!W>X1Y%2P0L}`X}{alQW23%-BsqJRiJe7l{MOT9?jgg+kV>D&nM;%~R{no!v(aPE z(9I+;Wj}Mpf0to(G(?-aqW{B_j-Ge3dL{6EnJ>$BnEb!_nw~1qcsF0?I%CV_c%%}b^YYg1 zq6F|&8;TkHYjp&9=lZn7Z509qj;8&RTs{Sfw~N zFx<$+PF*o?I%c_Cd6D%b-uu5K7uceFmS=}bY#yBtd!wdOpE>W@%v~`ma|3ER#1uSa z>b%d|e|v3RZxyokf+0*kk%H}b#RwkvP79`qN7ug7Pk-D^6HM}@GUSM@J3GW!92~L1 zwq1}O9vus^k|J;4JbF)K;|OE*uO6T*od4?FXe8Rx*gwDd{9zC6zo|>gG1Lji7=@y4 z3|LPO^kn_=QW`buZ|+O_C!m~I@zn&+_0>=3(eQjkCo7|Bzq&B=*^d?s58w1v1mry5 ziScEc{jv~}|8u~eYpwNT;V+Z+VFQDi<#H&cy0hX_ms%Dur*PFwEi*GtFiZwV)*h$` z>*^!8EU`-p>$givfXW`E;jg?W-}~@`8YWjU8#4Q#a9ehteDS_Kn{#&WDImAyAKP3Z zG4T-Za(6nU%*Z>S2woij)b{iQK&rJQyK&`yfFtSL-cc<(Dl5Usm1F_W*Z1#Wyuk8u z^+&s;{yzVCT>1k&^;OUhFlT_-MeD+t0eO%pj%af#W#J?7`N zNuQR=@1O&mnyqxi2-fxGGN*373=galdifDKWM0$h|A={9!e`VPLXm||R@y+H%8p*w z#Z||~WeZHXDq-6k?V8W$z^N9uNRHC3%UO9Nnhn5kQdB($h4NNPfS5+Wx)V){&M8F} z%lCxG66bBzlOja#MS{4T8o$>|r-EM`P(ocJEaS?yX+0cVhJK1@x*F{ZJg<$+3)kT& zIx}_goV@O)V7bo`h74GpkQB8tG3tuBGqX2TEkOkmIP&fJcCPJLfpO5UWAA_rd8Pmh=AR?R2jRapo)h2e zOzYwwHWw~`c_*EfD)T^`^^?h01T<^IdpPGrG?RQM`=Xd2 zlu{N2$Z+e?Li5OkY{-A>3wASxKXK_jt+ z&Gx^;0)PZCzyME(zWv<&vv*v`&5PHB?wU==%7g}cDSwrxixbEnQoNyK{Sg(rfEyGt zlvYq!W2(eU!zQE*CQx>+0tZ8?gA-TYMq}g&VTaFamsLbMZPK83Eu(jd7EENNZjHv< zmfrgF>7Rm<5b|ryR`!8rEW%Fe z1or$q`ON;U8ga~?Z&60vW?&B%834eDg~Ju2o0rY`%%g+Js_9Hya;{H3vYzemHmCu@ zMQ*E=hSut=UM!$vOZnLhOpS&e#)J6;!otweR9hHXLwd9&ur>KwaP3curiC z;FMxfNi<~hl!birlIRY;0+|3>v#nT2h$d2F(=->8;$mfl*?)ML^Ii0>e291Bov>J| zXFk{e^)Fj*RM*E}5%+toJck4+*LJ0l3~a9FPG-9!E?^wVPDSaEQY@OJGPwMmUB>5t zAl`S`75#;c>zjRaAL=RHrtevHLH5KB^JR{d6mEaSgL|F)C0jTt;37=U#V;}aRye76 z)>eyP9)CU`s*15gfj)ICJPo4CCQ0NIhFs#0)!@13)lc0<;U2Sb_6DsPSU;@WbvTAxmf~pH?fqb zq*qp8Ww7MWUglKSXIlmfMXvjcYDpOn%9HcBw?4GxP#BW}G@x(v9g)#7A9uh+i`pvN zNrwz0!;o~7=^J=?a~x;vGPG9ht3q~efB!S}K738C7!xxTxt6~5V_CI{;J*XXlhdC( zwvN;MC8Y7n^C1c%f0PWC0tIE$Rz;r&2jLiiSq1HRY@L>8r;U!Z^lTS9D-B z51YoLanLp{0uxIhY!;bg;PLVIVoj%N#8zL4eL3Pl%9+OvJp4N^`UxKel+r(KIb_Dz z*m|Eu8Ni!Kf_O+JK}-G!PtHroVL+zyG^J;f{mv3uam?7m zCMtIM9XuERyI!_#f2@JclqC?Dua; z+-W6QMtVY=DO9G`(>xh*wXkt})?#Scqmgi7lgBMPT>EiSy+LA(;$kV@#Xw}WfXyNW zWX6(7hAm5P-8q}44t6^%?(c4rv2;vStsjC{VK3(6i9vtrj6iMMcq)$r;?|UFoUIQQ zGWxmae!0$Cb*!)B$4b=xjW2KUzvD9xx5Tt8yWcuc=`BB0F_%buTWSBUO6>*9@-Gbu z9xnBD{cAklVSmcMQd||siOnSqxqmjgdDb8P2@YK9Qerf zotOagw~3A+`skqZWq0LYf^90nkq)~rU@Km#Z!JNe3-L=wzdtqDqAE^t#u`|DzjINV zdY{d!v+O^OE$=hskrctSM8*o7-)Y5pb5*j*TCi{2{?Pu+vMwxg51P$5ome%y@0y7c z&JC0a%D()stM@eJ{5}M&%wdQu8+7@Av(?1pH8Ma`W!Zz-(AR!Jsc^7oB3nM zvNQM$M*G7Q=_6H3PawRkUa`l;I(Oho?fQIMo(U3RBNzvHOP2i$p;iGfwhR1C_9D;_ zk4c2&!lug$KYumsi>XE<_ni3YPzaA~@%yh!S8FW*apb`AnsT8Yx|O|}_8;~6qH3!L zO-{InIV4{tvrd~x6N!Nb&RB9`;RN5D3d!(mjfo7uHR8*E&C_#kDSB}R);zb%6Cs!6 z;k5H!rLVXsT6Y$$|K+k*q~zkg%)N8>WzRlT^Vt7kLS}Q+i5f!XKzh9PC;ccZ)3Hz@ zUYrG*TN3bVnQ!%ooDQU(f_u9zBi3QFG@kg$=IA>p*Za0)NIxqfla|(p!QIPkheV`d z(~we}LV2Onro*W@6Qre3`y#G(C@uMuv$r4ya$Il{F3V@gC{cB_ z^bx1n5s-xzgu&YEUo|1`_xIC!<~JJ5J3sDkm1R9Q3Wq*u^{NqLkih07bV8iidoZrp8>6|6`XF8RN2V(a6ZE(m|sWglf~UYe>jBQPskLG z5R+2;7!i9Df3#RTawxv2VC^XE5wVx}=i|5BGs#G53|%zfE?^mh!sYUok&iL-5z|z zm5YX)XT7qKkaqCWhuXtoHGhJ7V=}BS%!RWUmSt8Jad9tUB&c(Zc*{=c~idZvb zO&b9%y*wU6*DmDE`}_~qGqZiFy*Gz4$yFan$Y?JrOJIH3mY$Q5|?n{!Y6a zyPMEUzLBm5R9c#V!&6Jh3?0Mg@Y}=V&bFf^4~Ffir<4LHd3_tYEz&x{!(`I!wP{TXSU1KbR=15duhJKl$>p+=m7xw zWMM0}Rj7?J$9$5A&tB|n*a!2YYtz!BngSlM{;qn@*6b9Mj5T`ihwpyObx-;vGU>wcmM=@ptCsYIW- z>wP>p_EXbBe^b1nboFUX+I&p(cB}H9YhF07d6l)jaUUxpu5Y63+E-;O%IAf845QsjxyunAed{X zQ9~LQ+Yzg?fV8u9hv)FQT8%xPED-)>6Xw=8g8x?QW%PFW!$~z?n<%=*G3yUr$26}T zzXXm}3;RokPIkvF@G#45*8NR!XwY7I&TZa=A;106(+|aHTI<~Oq-cpjf2KEw-yVQ3 zZ!T4SHU?7;)BnJt&hhzno^Nb1$VuPQ;xv3-b1;<4(*TpmcS<%Y&sH7y$AB`t)&z9zgqr5 zI)r!luw?+6gCM?=-=>=W9ow)b%7O8L1RTrY+hpufWAvVvP@ewuXxNf|r)&2j`=veX zj7CfUb|l^-+J|9An?rB2D9WU?DZjOZ@2o1D9r(@QNoBZ~P3eE1>`Qz|(h?W7*|w-> zOiqk=`&1{Tbn7er7a7=N-tPuQsYH@3&I(0i$RU^Qdny{gvUapVie z&w{FX*~0N_DX5P3bT(*~I%-pjQh7-OaQ@O2{Oyym`k<)&0WWN!_F;!8`~kZ9JVzGi zC4$m&!2TjZu7LI6AfwzWn%+Ing0 zi9&NMZY=o!sYw|(p6dntuWkGLfn#NUw>29*;e7vvot3~qk{q4AEjnV`ef$et1 zI2|w2j68>*n4bD5{%Lq|Xd-eO6z0%&mq1w+9nYjI8 z_VIHSu5~`UkeDum!ab2ns-*oYoBlXo~Q17>Ab#U#L zoixh0*7%-PUn}=&(=C^g7!w@cKsqTa`6EC|P;T)u#zjOlTAZ%h9U&;5Pm z^6j-SH%ey7+LJ8(x)Kh)otWcqHAt;zA&XeZVn4267Elh`L(-*kENTfN8++GXir2k; z{r&UyR>J*J<2e6^thWrPD(c#H=}=0L-juXR2}qYT2uOE#v*}KyI|Vi&As}7SUD6@2 z>F!N;bCy2O`=0MR=N~`#G1uB_jydKS*SK%*@6seMS>F>l%N?-4L~kN>_s*m(V9DUQ z>7^|f=}^;t_bBD3RlL;N+=+)lQ9^RZqQD!}t787d5W7Q3Yy7O7aXuu+SF-HAJpmO? zoEK<}iv`{*j*$QQL&-}WVLb1HK&bo2xr@`h!=O05wv!*8$k8?i4acLX1}mfTnofVz zzPgQmc(7QrYP-1dUM>SB0S;3Jx;;nrKRnO$Zneo*FsEW2H98F(I&W!#nm8x*5?}UK zZM>xWt0-%5zl`Y4?C*-26w6eLNRjR?3rknp&J9xukmX!fy5lZ$n2Oh4u^9|yI#|T8 z%#AgArve`D5f`&!VW9?t2(PhEAHh9DWI;vj1;w3)RdF z5mD^Tc({=WVe9zA=WgUA>Ipfvq=ZydJg^*Il}Io3VW1`F8?aco4kCQddP>mCAo$oQ z1S_-Pa`Va(5Y`D3Io3cLCQm{}Z-a=>ujr(O{?_$ZQH^DeU8Z2nHn;ob8HMa-KiE9k z^7=sX?RSjX70uS-AH{Wc{v&;4(QyU`gPUvD&nKVh5A3W2AA~bL zL}pUrPjRq9bOEqWl&^8j-D50;Y-IFouxof0giiG!Huk;ZV=MjBXYvudGs|B&c>|G^ z%^oNBSkrzd!zK>Tv8YzTIje1bOQ9me0hw11)d>DeF(D$Nw`k3Il>)-!wIvgwa~$jA zm(H64ohf8Y6rKlVV=x_l&l9f)AHTrJ)EJB#Qf|M7g0{NWrB-hf%Ws2DodQ`I$6j)fn*K@XBAnHv5iG<#$`pC*SkoGo5-g@3nd`~P5gfe^VLN$0Ml+($x-EF_YbcbAw~ zU=HUVoZ|CAocK$Dls;0pinaHNiuJ1p6((cu;B=c_VUSp~rJqq4EH zROu;A`W2-IPYQ>Q%z!jL{VnIf3m*kUOI?65N%7Qx0>J$564K^6Fh$}BN%** zm{GTcs)V577Ms!`N1mjPnRQq(h*t7=Ye8p3riRGco6>U+IutF;L~RxUrSu_PS1^5l8rY4~~Gv}0lY zFy6D{&wB93P(i!6A*^MBY!5dUT4XPN!7_OLCgEL-UsJZrf?G%EPp%m-AFmGw42{;O zxmsHa?NY;KqHmvMs6GxBcip#w2gKot8y*33>^dTLYDEiSqeH2D%GhaqORH zb^I6m^80uo?NFv?T^pdC|IlrDEb752=-0R#7PbAo$<@ZDJcHML@0b8tAlkd+m;GWD zl+X@w{zH8Iha;zRm7$j}TE4b;+t`sAd??7zVXF^tcOW=7_&r_vI@yGTSJAvPA6X92 z4E?x7;22~pqFnR%6fpHsbWm2Oh4RNdO)K-C|78*zGY;LPxB6Kd{MLFto-`EbBn>C0 z*2|jaNgOjB&?3Z7;CdlEiCCf?8v8fCwZB>N=I&{#?d)7wv|O3bJk$I%6(!N5z_;Xz zxqMpCd)o$J8-6Ox1`S2EY}tg*dEYzBJfPgP5>FI+sZ``>Usf)oqYQ@+x)4ECJ0gX% zlo>9mona%_~A!K4mHJB{oZAkG~G^k z@A=#`V-Q0nKbx|qZ5Z=YY74RDufXu3EsbuZH~Fq*BaA=fp6DFla+?D{33HStNqR!p zO{ak)iY$+S{Pu~2GkIepLkq#$xU54dMUt1P8s1Ub$@lMBo1Ph^^{2r%yX;r%R*{8# zg5-Yd(;71^Ptfgvb$t=9A&#-MzHpdl%m!dDS4FvX%zJn$W|bAZqg@bD^(|+69`U;m z5yY&9P<4Jue`kspzj^tmQkx!eBC&}DOS(~o*X`(7LH(!m!bRU_Qt!IrR zBchwjdU!|Ln)7#S!K_oYD2>Aj64(aEQy1u=FlV#pdkNU}RGIft9jl<|=FQaFuBWld z+Vo9r)7V}t{^kqCpD8F1Hl zuM_@kfz(;ih^&O1;KZ-Od568b;2K&@#Ta{TUxOU^#@ZRrb?nGARq*JXCU4$6f1km# z#sX&RaeUEn3YmLND;vF}oS&vV@m|_aS_IOMWgOTpD#5VcaOV$Dm}bOVcda96ZpP#? za=d++DS)uWW3>Ipb>dT69;rq&R~Wb?Y}l2=q7QX=(e8<9v?*hcuX{5mfZ z>^ab_PRy~;aLsdmfP_!BHzaBaZ0(=k`W*0Rp&+b31qnin&vTS4OfFgcCl0hycjO8g zzy10Taip4wYA4!2k9aeIk-x3jc9|AhUJ|E&bQS5U9%r3HMMVIA_`Bt0{fTO~z2egi z`fXN|xnjq{;wm$QZF#TUMxeJ?lDP{$51TaX+smEUzjP3OtAW+Gk7S$g(x@>1#N5qL zimps6*XIog-Oe-8V(sBCfT4m`_0mFn zZ!%R~LA?V9aOzK&(NK(kz`o zjgnFc+Svr57}xZLm;d{@qlpzqi#B}gC7$s>Zsj)EEePnbRDD6hB7TKDr7H|o11~`c zI6)Ve1Jx8LAvLIg{>;B@13R$c+7=`iP#Igk1(r^iCJ6mx%pWg+dKWDviRr={YU;GB zUky(`3x}zAM})k{uilDszP)@Aip;Vn)Jy%i+ug>Yz9F^5I`{uS?mSF2|RRE4e zDm8kO8aeeXx7#yfor^=;@7|p|c-lE9R+QZ4x#GKz=?Q#4o!$qGl*`|iFSiO#zTF$n zl+Tz^BV4Y0h~*HyD|f0{IF6VVv2~L299Ow~DtT!6%H3W)jy%FeTC%TO5O31uOYQ=- z{mE$1@PNHxW8iDg!O$xH&E>8(C8>eaXU)KBCo^k1RZ<7EkywjQg^O~)~`6DfLB1>2<;gg*Y9qc zP*(`K!2bcInM{tT!GwyeU)-fbE0~+DPB|Qy;r*TUeDnIT(}k37L8=rIpAX8p4VPPB z{`CwOUyl!ALZz?nsaW|4CQtXPW?7;oT*wRZrK@4%<&wuelVYy+6D_>%dMbtpE0r+A z!mbZJm=Sqg+0c}+_G|3qiSHW1@UIroBTQvKz7tcwgMYr(5n5^Wcxv_6r8KWw?jwU~ zOnU@@G_EIfC`PmRy>D%XbX!(hZT_U&MQ7q1+`X|SI?J@bGgP~*f&)IG#TLIV59GOS4oH|1J)pZd3%C0-iO zTt01wDCqe4X-PCLwG!`ZC+bzmb@;#aI3Ne>Ze2$ii$-1RK$P!v@RZbqC3R>vbh2s2 z&Amts4W(b)tx;9`_uK$Z~rnHd5@y=O~a8z3VJ{Pjh-evEsBcwSBF> zxcGXi=J0n8jqwiWRrYQRQ5f3expw);SnHD+Q?fob=VOXb`DhU`)_NT`GjzZ+>LB|) z^^29Bfb}0vLnpEFXB-F-0=!xG?^|rEZS|q*r?+Jxp&1TU%v9VC%YH;e386<>_JGio zFv1AXFgGOQ=}J@(FHf47PfwRxR~Hb#UErzxP}GhZD=vzGEh88s&WcYjJKA%u5a0yw zIVsZ(KZIG}=@_qWEWxbLD_|-nl0yik43(6e!SQ>Z?n(Ft6gTD(mt;5A% z8-Mwe8UkZJoF7W+k>n3Tq7k0j2`Ekc^!uidtjmVlt2`wnMXZ`uw)xF0QLA3yV6L=) zX!s`8>FnFO)05HvsRg`&UjrN-#)R=osQP0joRS4Y+jfVjm~5v{Yu`@=ikHXHJc^_; zSYDtc{8-t&GazAJ48wW+)|N?Qo94j}J!>d%vkz%{NlG2i12o)cx($6_7l=Q8pHx)7 z)g%U+iq1dGeYQ5iWFddW!7XOx)Q0v};mitj+1#eBGd+thWv7Ai9;~B02Ztzj_D_iR z;gzNLkIYt-VM9h9mS3o)TScm{yb=O2^7>CRP0`ew1L3vVk%vr(RN3%09`6)mYVqDY z!%x&z2YAM$NA~EMC{%`e9Bg95Xt>b6)&sl)n;sTZ;7}ex2G1M{f3iPrmMsMWRa>3Z z;>M8c+MtK>FWQPL&!@5^&yu|(clvfw>bK5i&rs7}MMB`1!EfZl;?A)Cp$;s(r0s<}DoV%`JWKli=6sSGQhV>Cj3B&` z6HA@4q%pZ2Q=VB;Gvb(ddB6dV2{P4CeH`vEWJfVGtFQCykkx#`s`S7H9zu}kVvc?i z?=xiGib1qP7@juHgXUM-_5_dAy7cS(Evn*eX;q*W2X$5*6NQ&y?a2zCbn0*_O%h!< z?~u@rTmz89(9L@7*6+;d9?iGWFb8=PbE6Tk-cFx%fVyCwb-50yu!H#BOILAbEH4ZdSkVk!Gh}@62da?b}wY4R|T0Rr^;_5RmTRCZu zx>C>py(+pz;$P4tuO#&a-Tnz80(dd?(oJHW?tobfw@#;wJX!J=X3&Ilc)Baqs(Q4M z;3|xnLHfK)lND`%cPwps<8JW4Q~I&A67}))J?~Mi@`@01;#&Fiw2kOwMzEo3-k*v{ zEX{9CtU#HJ=CP%tXRCpkxA@BZEM)I4JMg)xWjCAXp%H>Qdwm34^~sJ6j+AKNGWuK#F6N)l;| z+D_$UmuKI}#Wi>Jix+YT-aeJJy`@}|8*SY6YM`Zqwtd&~`l@F5e3^R1e8oha1zQPy zDV-=kA&#KoPMDS;oHo}w+B6NGS2~Q&$*)xC)Q|GIri*niHgy18n0$9tOudmo&37L2 zn)TumEWJdMIWJ}9OR|5h3c8HG1A3=>j~@nhOiYj%e;9gh>cjCLt3o~|tQWiKJAUEC zjin84bVau0!Lf~*(2iFG%ISkxEx%in$a>&%jOrDAS|i8qk_=NQkYr92F#<48IoT;5CF@v60xGEGC1 zFQgwFG%zq8!~PA<;2WkqzK0O6y7jYr?`W4N<@-KbK17D*@waJ{$Kwc2#)amSOTEd( z>X)`nMxO&iokSYV4JZJBCkoNhjm(PbcZprn%ZPMzsR71A*#YFT=!uifd7~s}NII!( zH74R${a7ixjGn!n-nlL#xLT@4h&hPyAdsV%k+yFe?`r3*y_x#pV-4hHPHz4*@a(Z`%C=;It#9X5?+zZS-I`GzVg*KQerz4(D zA)&-g&9^Y#D~bfUsr{T_@<6j7O}$et;a+k=!UpFe zJ7%Wh$ScNOr;SemkJ(LD$x$7?*0vU>3-`C(+4u&C>^U%bKbY|yUD-Gew~}bCK~e!`_CM&`wOu3LU|PTJgeu$ zoZDYNn)iD2dc1MtGTi=}{%6FUi!f?GoAV*6qtqdG!%vHM=pkw$bff8t?(;6PFF&VI z_USxx|Et3flir}v;whsG*#-3l&+5zF#fd*AynOA$`=ahyljo*?d1=PGk%-eSphMy( zeHF65QDa9IGn#j^O?l~~;hfBQCLFL;L=oxrVd@y3>~p*IZlH`1r#a_?%`3@4;i4$C1y)Z9eNDIJr|KN5+)Y(Uc>E*&T1?$~Ud;%o=RS;`m zisO9{WeZ+uLe6^p4QBi|+078#CEp!KfP4oCDD3n*xGbspA6pSO(HoEmsSc_VH9U}x z$;3Rqf+8(EZoW@%B{$x ze(FjQ!kVPa?_YPW&9M@gkoSZHi?sAfO$o+DX#-@-PldE#-Bu6&Nm55lgQry}9bbBS zdF*^>dPgcZdAJH828N(V(QYM~YDL+hsd{!pLn7(j&@uWN_W^U^?aRJ|_q9Yn2VWhYgW&Fjo_)Xb=tcHA_iUF}g{RQT5 z`k|~UfR;Pu8S%~vQTC7dwl*H?#UlolS1?eLo79AzZr&;5bMs570xPD(Do>Dnfp?9W%TFp&RClU#(75vn%#xyIL{aK_2RJi=_dR~5%--TQxttwpnPh`!jdEwY zIt+=cK?;>bKz4ALcD1|=Fh)d`tDN_Le$K{eLc$~s#Ox`lCsbdVUDEbAS&0%$1rFbn z@;y3iH9*)M)9)k~l|#6EKRVQNLS*PhWSI`wl+YyW<4Pw3U^5mcmmtU? z`1M_7LA=MJvQ52t<9E9}{`Zf-hcub(knqF5bb|&^`NbY6U$0S2Sox7O-)Qdi^s{jW zP$$Mo7@OE)n0ks1O7wZRjGb||^F3q`gh#kpQqqw1x`WNnY9sUg`?oZ{5Vc;joXEX^ z)5M(QI~xp0lEZWd7JPtNI|d?ArwH6%z1LL;NJF?~aJVCmfrq1x%Pcb*@nMWrV7SOjWU0hFyu<{-?41rutOfN~Mqt z2zkIBv+vF1IJ~t91_sIhbyyPJd_K&WbmnD|SSt)u(+yJ6>J-iwweRay@jKAf@3-lr~lBqAqV$EBl zXV;;xY*cr_uA?`XAa^$y9&nR=s*kg=i!u#0xBKSQ<_P?#xyzeAv8UtDa5LHBcNDnr z`_~wPG|}x6#xESdd9e=cgz~E68owyaliEl!(xvVdUur0hXbf=de31c_*1kvTSfE1e zo(s5$!l)!VU>XOW%Q1b)X0!-P#?zQ>{!cF$FM;FH-tk7A)8bE1z9Jn@(;a=ZKuP?C zU*!*f%Y(FhXuWgE<){6jClH}8aPuJ%B&WG2jI#d5`F=6Snf(vjwD9{;ap4@WY<3>_ zbEhi}iA5r3EN+|8`9@a<+bWo)1#xlh906DZa_8z2GZru1aFudQ!NtfS3##y&lDO+R={`F$MV%}-uJPB(u1xhq_?4m=`h6#KCdU&KL zD1~W*Bve-Z(^MjywL+!O-7NwMKWb1WY?e7k*ChKV*uu~d2N?R`5o9JKA{y0ql&muV zG~tHf{Z_cGAbDQgM9J}Vcs$ijvIK?5g*wkPr(gOlJE%te0;FF^7a{)6*#HrGQ@roH z@5~~$2vOzq`=46C;%oZ3pPm{0!|5lzxT}Z+kBh=!ZVs(eY3?gxs5kGWce{~&pdB7x z*Fysv8|16>*zXf9U6HyL1OWyn(!VP~<2%;hcPgNn;X}Lc+-?|s;`9_IjVp>>qblyF zzQ)~f3XSKLbW#N_zaVLlP9EInQWT_-7@pRsSwtF)`KGv>B1UkMF5K5%Yg#x#!b$<_ zZgs~)kj$Nr(W0^fM~qB8MM7D6y=N3BKWg1M;qP-jNnH1>+9z451Rv_TRBKo(ryuF@ zAv^JkX7Y6hP!<@e(40kxPh;+1Q z!t1`F(CCl`@+2X7RAWdrL2$k#GcLK zPS6NmPmu_$P!PLBkjl_M6OSZ1f*gE}&+Fw)Hw{W)k>SFjoRTTsfJ^c+3fRM(_ebIB zJl3MA`;{K{SkmBD4*wZ^yDabY`i!jiDI>__;af}v$Inw`@c89|Q^_u^yw5}*wbN^r z9-f-}E=Xr{+qYZk_4!6aPFA=RH-(GyoZ1&aeI185&F%j>f_P8^j($3sTbl*t+V{cx zVG~W$N9TFZYL8B|Vn>}xzf+9+t5v^>=1P{l=|e3!%|ZZt~B04T8CErcwKZv&u+**h^JiZa)biXVhn;uFs80 zHfrs4MvCR>iwsJYFLw;!0M)tpuH6_e|>_8SP>@rg2Ybix%4 z*h@^i`xn8zz$FQixWNag#A9FpQ!V@zpmOz;RSCFu?qMnz$^}uG(7V0;4srDKR_775 zTFSk9#E?8O64teY3dBEfddyay%J~@UEh44ecYZV3QlA{uvq9stGS#I@lu!xEK}+-~Bl^`MvnGAgqB+HgurgevPh>>NISGT0-s5XO@~>Lozk^P(NAU)b$JS~M z;lr>wAS$P5JRivhkf3EMRxoX#6tRG$P>OGJDNLxVW0h(2MgWSh!Gxn2BQ^UdxbOHY ziF4#Oly_j@QHFyh+^O@E{QFma>eNS1Nk(P{v`hpzjrO)(2b=5bdYc4u&48f;BJxfb ze+SuLtL(tFVKKE-xSTE1@FU`vUj)tn=w@ss@F*Zu|LkyF#kkr7X75b7a=OD4Ho}z4 zwLd#{%<#R*lUWbg`e8a{9`_t@6JWkN--K73g1;4%OV_8gd)e?ENgDFGDmv?LYZQi*xSd1@Of6a6w({TQkom4?fPpJq5tjsx2h-if3F#Z=&soyO z!8)3hQ7{#AsE4Dd5drH6zZ>@eyMOh`npi`22q8|F_aUenTD}#L{#H~m&4Ny1%8$DECCV*sQsWXT!|*fw{1fD$5aidxc7!Gz$WPm^Ro| zDaAv_2TL5_l-d>ao!59i>|A;N4m*iA9kHo-ik5Uh$L?$1sx2rwBES0=I7UhdX0KrxVb&S zmhTn(AES9mXX^a}bu~7NVD;v_5zaq^%xCI}u7m}-r$4=ThTzcmzFum`8-3edUld~o zM7`73K-7y5{5vkE8o=z2`Ymwn0f}&~u2&9@i(XE&@@8q3A-0@U8lt@137Ta6=lEfl%k&;-jiZV(#Jt8PQjar}-DqVG@bN5gKn89(!rKjBn z6K0PQ@!}pwUhodY7Sjx%=6ZopRlMLj$bqz8u*{V)s8dil7Pz5T?=%O-}6WQAc!?c z2BIuk5wm51Ac4IsTvUWcG>V^p;-jsv5A$~@JW~M65pzB)2Dpv(G1m!w>3gv=KvUu#N%LamM1}(>(87P=V2<75JmW zLu6pZ#0X2xf@si09Pgu{0Km&&rwLu=?mpt49GvD;YyRHQ(>C*U9W5WrwOW+afl?>$ zrAiRZQNu-OhogNbc&^~COSYb`#?|L_u_jl>cCp^IA$Ow`$%XMQUDPQjQ}zDGE5*3e_Og1k>w$Z zcn~l(uv$wd#?&~n$k;~Mw&IKlk%DSkW)+VG>QapFi1^T9QcsYC;rQ)iNDF9lux~cG z5```1S+VFys3LsZ3W|`*S^Z5Smt9k#pXps`W(MChukQ59t$FGA_~2-d;O?%gU9?1b zU>%)$YBotUxM$`r?}wbjf>8|Q^Tt6x(fc2{yE0RED!|6ZCJq!Zh_SRXKc7nL|6B!<-FS-h zjR`JPO!~5qEp>h=86G2CjvnNZ=+BgCe?FI~f^S z&^Wz$`>ctoCkdf@464Z3#9~6^(Q#PW0SsTqrXCx20ZZnPLXbR^X3SSKw8ZD--&n{* zCUeMf>BG98Er08_@9{n53lY*xuejatbdQ-cd*+4+?3Nf zrZ^zY9W&;3AA|&$bMJUOE*|*qdU$&%34-iC3`gqKx+$>7vYp2`W#u~S4sD!}=A268 zTxh%yMzIzw$Um*uezx5lQ+lpg1s@kE_p`zQH=1#0NK$i%wQy2k;P;ikv&|ij+c|o3 ze{~!tOK7TR)@nhN0|HIyRAx1UTrY5DSOPZ3P(Z(3QJCo~90E#HrNo=7;VDZUfYcEW z!tva~5Q9j?4M)xLd7pSx&#HA7j5s73BCNyVg(nv+y)@`+-?X<9_<`eBVP9&mc~h3MoM;h?h_GS}{kRiBL|F*>=>fL6q*i5)cWN zs$yOI1t7&OxFFdXm=D#$mtaC{@)FTd3YTM^y*q%Qe&80nlmsPm?;j5_u*5*=Uyyjm zc>jpord)bZbDqK;zs1CW#!vYvvT}$&S_91N@3E2%WD+Uq)85I3AM3#CgxvC+qXPp2 z{~4QvoFgMNq2$KH(b4oqNR{lMmAt7_J?dei=}$|!gONugMT3EQLsJG*c>Jxb-NqF1_8wu#O_6WF(1J1Q(CR1P%{HqHZqNtQ${& zE)}Rc_!_|h(Gjt!oN*2VQ#wNq<1egZf*e1+IhSz2qO*x9c|bArec4IadpH;MK)>&B z$=m19pNW_U{_+L|{ww*#Mox-~EGJ9il{gU*(e8hG$Yh3piAA2;*8WY^7dQ<5B{f;X`=W~-WPCf2CKWX5XV&EhSJ@`vV4=bk{Yc*W+;gYz)h=JZ z5k8QcNK_cWLgxgGX=3&tTf$Wyqy`%0bOH`bf8UgtKv<7lOt&zZRBy8KxYJ;r5=g+y zZ&F{VaQPTD39s6+qda04Fd7`n#Ox{DD5A00ZsbYSb&!zQHjGe_1$t#j)~?#+4h27K zGwj=TNBAcNws>wkzkPWK0FGZJueqEV?)1x&9}gc2bvCBYKC6^PtK{D>7+SZeLR5rG zdV%II?g6zXkkarYnKDZx8JdrnIz8sM$J)O`9tQsDe?0}AhrT`fsVFxqyqTs|6`1l+ zBjZ6=#z~+=XL`HJkQEAbY{6I(0NRgCyyH?l`4&6f22T$u-SHjT6)W*^+%UfeNDQN602 zsV~*q;2p2f>)erVdp^8=f+?Oow_b+!J7lOQ$?(ji2)o`=7_=03!P5n3lVuAZu0j3X z#nQ-jOOqylUhaHVPR|UExP6(`w1*7v4O@{&+r8_M&0|0WBI$_ar*6%t zgIKh8_hyD+g#TU#2F|j?jFtnupDVJVIljc|o%hMM>ADTwQZn9Wr_WP@K=fpuctlpX zebH zv>a>eul??~^)<$8%+7Kg;C}iJYAvL2f`0bg7$tRh$wALM}vuC5}i_&4u#(Xm57jkea&My4&ZOh`DB8Ch?g{i zT28;ch5`_2dcaKdlx4Y&Om8VS$3%eq;dvYWPJcK-5eGo{4bu9v6OQsti3nBr$2so%uiKS;6R;mCxz)9G`uu zKR%8JTh)B~LUCE@wbfzpG%=Bq0v^E6v)AK$bI-aKBKW?$X0J`w*nw1Rd}70na@B58 zM`Pv1Wiza0l%9Z)u-O(fl(NF!?)Zq^#4=C>C^G{m=V^^8gCNO5Du5i{1 z$>s>)$U~>5{&Q4wL#hlk8~);yL<#6yLYz`#13<7EUs6&0CS`-gXTu0zpMvnH_8K#` zytcN4g`+Ho1($6$2a!1ysXXr1%;qs(;b?!q%Qk`lopweyW1D#jdDF5UqM353@@d@Kt+-x z-vZ2X2CvQdT&79IvX=U_L|?CDz|c4AE|2(};&Cmqe%n++LC6i<`wKgQWnl2zT~{*K z^L-bES&85JLTZZp%CUcgi*>p;?7G7CFyq2dGOk|dj5~L+gkH6fqs%%`*tjz zu!coDoSmIcJ&J$rZdU=+w9a0za{E~DyHsA4-O+77Mf-ElVZ(DU6L-6}krr&?y8iB* z(BSH5vQvw|crWwjghu+xjf$>!ge@ zV;*QXdu^~VR4~+rTHto7o7hE;jV7Ndz1XxIMLxW*2#(1H^ciPj5~!u_UpKemZKw-e{G}6 z3#l=Uxca2io7i2;^nTu<=y{WsOvQm_ zMMQgEaXa>|7oRSxQ+9~N=P)yWh;<0TE^ARbT7EoW+(SNAW z*?c}Z(rzvPF|E(n+_l_tT2N=;8MOLTS>&SSDe?5<=Lt5b7mo=tlCh%s=;@4OP4ZAK zwXMMDKCQ-G=4*Yced-g_q8!^lMo7TNp?A9h$W?T!QK;3S7^N<#dARdBR(%ksO^6I~ z@&|mqG9O`M)G?no9L1G4)Ix;gf zGc61V45SMGm$7ESVGj-p{VN<|$b?p>cT!!x@U@TQmV~n03G5}9>rFc(v{58X(oZD6 zNulN{;^>tprrXp9uTebB{#lx++D=A1%8qJvwbs^l>(iV@eWl~8^E@%VA>;*(`i+|N zw0t%;1F_QbJv{WaYP^Ef#=T!k$<9D1gIhvs1*R!goSoc%+0Ajkg{_|Yt~OlK6YmMy zm6649@iFTT$=B$`A@eWv?6b2!6%-VhT4eYLy&XwOrhBH@3MwXCZYnX_I$yEHeP-$h zk4#P${5eo!E*JjISUcCj&PY3)~v2V;gVL9ztT}!tW_D$Ep?nR!ODdLj`K_5DbRZsTD?apIfd^G7A8plEEN4o7(>0fWj*x@Le>G&OvX~m_kluL2#AQmT>pLff2&t)npm82qF06RbKNL`>%4-uraYrojYoby z0+0t&GW^(b(FwqbuVkP6dq~3nF`=vKAc$iY-# zQJS|d^=-!~_UZg)MTg_ZGWS*bg!0pjbLCdD#{93RR+~vyr&B%t1t)B`{8T;7_-q70t41x~W-PaG;)1EDtSm%3-$pYlt8w}# z1I7A>cP<7}I+gTVtjJ~-diPVY6~6g9BEAdsCFw$bTOz%&evV&@Ir8J@G4=>Cnx9*Z zex|GP=?~N;wP3&4nx`hRm=jv3*&_MgF^kaV-F-1)*>>Ce=<@A4ChtiDRK*p}>J;DER*Up&|P}+If@_ZI>@rGU)aaax@z9fX&_q=5c2*1?T#Z`f>i?nWY=)hx9d!H=%x8dGv{jhgm_;J@Z zq0t~Il^v-t)?}{h~oRr!YmmtT3bSSvXqs5 z{%=_vHJ_fm2a%yEZ4FZsPpQ5`smJ$nB^xt@ayzl|uj;=QvXJp}l^n(nJ=Zx|4CdeR z-de?B%(C3|B12<#J&w{@`<_d$Zhf`nj+pLbSn^}Z-8LRN53{FM?q7@u&&mNF3H$3x zW@YkFy}Atxj;G7m#aGuWe753VgUA}Mmw6b?cFtD>P6?f#(^W6hjFP9GnF_0BMjsdI zr*2;s$}_p%T$g(Tqe}O~_s=Jx{l`UU2lJK1A0q7Sf=lAjL+H4cqtqR3NaewTTC z6gv)!)xQRH+BVmO1-$#kE#2f;{n0zc_|?nir*A zJ%r2hQUKiDzVCn4?S4!S!NlOZ>F<#V5E2FvyN7n~oqKLnCUT5!rO?A5H@88f75Uzc zHxB~=3F;nxgHP<#R_oM25fOq8)aW3W&lrcd{h}EX8~$p+aE=wg@WlTO?IHcu zc?Nnz)YWb@vKK_Y)MP?v-ngpZ(-OVqp$sYr6(5! zPj`yc@IzwUxHIBBO`~$vQ!~Z5sTQc!Wc5#;XJvrWTrJ8=X(7r-dWG0+4D-u7$RDWG z0yUA~5ZpkGr)Z^h2+18_6uv=wOYEahQaE)Zlkoqv_g-O5Ma{o3f`B4T0qG!uMpP6; zdKaZCNKud$kS4viK&T2T(h(3slM<2MrGo)!(tAnh5Nara03qaT@Vx(Xp6}d$SMR#m z3Hu>yuQhwEnOQTxnE^+r3H!6(Ica**H?X;ssa@Bec~2q73>XSYM@L2aew6&VB&NRq zbnN4?oz6$E9F-RG-(A{uRySAov$eKtHLjJtBk|j!xl8*QLJN3ZKio2w53P(|kmEmIcn8%2&6bd56Rb|rXWSt}h>{1UK}Y;L9% z!OD1XiRg6+EXNNN>+M2*p~1g*8R%sY5+6Sn&f}W?j=EkrPR(~<`U?3LJG$(VQzMa7 zP?OFGX2fl!S;6UIxAI>ZiJ6eht~I~+e*eib_&Cq^<1{C*6{rQ>J&s%6mYk_0Fx<-` z%K@l615giIAj$&nQpCS7I{^9cGdZ)*<8_dggglI+XR)XFcH9k#=WSo+rpauWpKB)< z4}JH!MAE;NdaHG$iYl-gbKBe zH=kR`P0`Fxald0k;!1(q%L9MAzB7STsgkTO?c3d0&h|Gcj4|y{6w4_f!xb|MG6@5& zl@@|7akO2G3%vh!FXCkPI!>++v-gf0t&$OQFcPG`Cwgj%%^U`rRC~u#DTH6=G$;B@l$h7Sp(GvuKJVJrWO1Yf>d@^Jqq@^;h?oBYn zu)jivx004DDAEnf@h0e2Se)KBc>|aE*Xi>5VA8V2$FuT-aqB8rSUnf{9wgL_{(Uk~ zC@Kn>mN$~JOrqbQAPbze%6TifVm$E~XSP0+Qhg^MNG;YN!J4|y%D1KV^(sC ziF)N?EJvr`V0z;JQ0d|9%)X_msj0k~59!}?b9>dzGROX{ye#|{1?)b#0A&NLNAf}R zXtL=`Zi*)nH9Q*Ez6 z`G=g-)vbx$FN6t9dXcxTE1t zefo4bp;=4LiG}&^A2x^0L||iV{9|{;^5Ivp?#fbUe7o}FW|mu*q+kTFS{U?eZ1*|L zJi-&-$vl0f$Fq~ILQ=^X?_nA_PnhecQPQinZP1Rz9uHPqYxcgs-0V!-g6l($Q$J0B zHoT?vlavvV5gtm5eUveiu(rN_g@O#8fsidm1vPWlw?lezd_D~uY9 zvCzE42+24=uzWi9>H3v{G#vO!Kk@L)`(1whpKs;dgdFNd*>PHHn#R5uG$3N+H%;|z z+NfI2a-NWfHk_Nyzn3a^to3t$CdU-b4fu7r{Gd6l&Ii1G?n0#-Yg^Z9C0`xub6FrAWv30vWQHgWC@9hyI*VE{btyOM&mNCcls zhFqlF62kFegk|QhWVHfUfk)u@`bObeX-Z8Q0@~dM)mT}&Y|B!jo{Z& z#{rQ9LjdeSZFcV5EGD62Ps7MeP@JhpO!Gx#aqEa|gNqTTUtA)$)41}gvW)OuG8x7U z%C(el80@eV9MNpds&au6RJq)T#}|5fdO49k@U*61K83=#C7rALWG!$Wj%UxEMyuC{ zz27t>0#c^6=H&%I0*iBJPLHkJS!<@?xLJ8Aq7^Mt8Gg9dtU8;_MjQCaD>O*hKOjj_ zyniqHaesRcFD`Pdna@7n(t{{{HUW8#xbp1lY!`0ar;0Dy7Z`VB$4!#+>MKCi{? zpYVBl6gfm?6p>x&@+iqP>DJOOv=%Q%_qjy%$}|?%Ys#!*IKC{R3ClQf_uVY3}ShDB0Iz5r&{APB)nL zxqI-4P6MBHv{qgoSyrr4@sdzp0p?AnW_&tbtb0=@8nGBvtUWlD8I)$Ra=dqI2YQDo zstawbqmt3T?)H5qYb8GR{K51OYb6Qi*>G1De`$DC0O~AR2-Wp^(DQo6r2IITP!XQ% z29sDU{g&vJU%AVF#1~YTUr&|HQ9qL6zWM+hET!&umCFiR){Mdc?D!+)`PK&D{!`vu zfOCqa;^ipi$7?c5>2Wz3OUY~>gHsCf`6863GIXQ{SCpGYL z@4K$y2Hx2b78xa&B3y=DX(S|zgQRizp6XWd7BMOc591-2IR*#pq9l2U5`{kX0n
    iH8o!P8pLJ$j2|4}i$|faLB9>n$b9aBm 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

    0q-Oich;u3IOO0SUF5TWv#;45q{;(1jEp&5* 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®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�eFTjp1b^9<4Vi--N-} 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 e_l-~>OitKb=;DdFl@xDnLe<` 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%0AdR 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%0DpKIRl?)dYG`; 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 yqOcwdJnYlspZ~y|{Qv)-DU20B1{l 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 UuQbTR~TN$l8D10cE$TL_>W&;XYqG$a<=_aw}5y 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 UahV?fM|gotCZPiEENv8WiNsX zCSIo{vi|_|v(XQaq_*nqZAEbe)xVY+Su(mfVEQpR5=lr-zh-LzE^3y#e=) zJ}=d3LFEs}l!>2J%HfVFynWi&*4&E9Iy#Mqt#EUJ^1CXHYi#TN!Qeu1=a$g>tc*~M zI{L)$Y><%dS?hOZ8!fBP?3{)(gNiby z;(`z&V(DjxTKr;JmAZNJh@=Muq2!q`4(>4}Pw-T@V!s1Uy4B7dl-8orqO|J3gSd{% zK~RBZPVK%_N3(lbO$sfp8hUHL*)O-2^1dcw@tkG~0mLQKVQMXj#rSzKeb=-soZY6y zT?-u5w-~DdgVLy98XK1nAaCEG@U6gKa?EeMdk`|evN@t25)y3z%orD1KQHWkZ??P- z`W*%Z{n)XX!Ok?>J2K;brY8Rw*ti9kxv`ZC+^n?+j9j3_xYoQk!T*a_f{iLxVFw!b zIgtz!sTXGGU&|K#pykhIy5v%CMxw0Axm^g<>nnhxr#97uw7^ z9iJ~Wi^hMn?RJBu-fc}HLsT*z-6pEVo*%A-AQ1y1-1SFAM#p3xn-tY%or)FoipcP- z2C+4tn%vY)G#ExsH>~xfxqruR&G&oGA@S3s{oR^a>IFlp)qe3(<8KJhUo4*eBaFLav&Hgv0{$6k4S#SVmFq*U zINUo4;%W^>B=(2fYe}uRwkcJwsyHJLZQE{{q;qEJTt0-@FB*(NcsWc?zb? zYt*?Hm$b|E+g~L8FQ>4ef8;j*w*3E%X;^1!_&W;yeM@3nFKSvryX1_Q@Kwiyfm!K$ zIY3~qbmmYskGdQ}neKZ9HWt;&#MM&*@>YJ4={?;FxgZu-Wi;|f@xx#uzMF~V2L}^e zOQ3Eu+D9v_N8Rs+Z0_(yWtlJ>hw(r*4yt_ujW#0EXv54lVALsD=;ezW2mQ zZe`3JWobc7tQ)9YMH?)VfiNM{a0#_Deqz|d`J!VO`b+O|)t&M7KS68F1OjkPJP1Dv zf#4&z_OiUrFquqb;|tSj_BSPfkpy=C zch>%pscAF0rLnseM0~@7T#TEO5nmE-up!Wh0P)z~N2&&v1$jeN{%FOI%>sF4B)lfOlT>BRm z>)T?w&ho3&+A3O=yoJN#(D5Gux|V}t`0U#=OYkXe+!^DhD2VH!X}t0qt!5a0h}P8* zu5WA1>mf?Hg-D@t)tBoe!kubL)p&O=^XtUMB9lHen#o$3{p`@u&4AtR-qS3ZHTWY+ zVapJ2&SgEzdbIUB5{B)~_nWboFDpx7q9lhg#R}%V^eDO3yDs-4e{ trUDK}df^?t4MiwDykRg?c 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 hX@8tOR+&%Hg`8A-e*sBp%0d7D literal 0 HcmV?d00001 diff --git a/docs/screenshots/05-settings.png b/docs/screenshots/05-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1244a8bb4076b30903faadf1982d287b55e53b GIT binary patch literal 94151 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 QbcRe_S^Ig#Gpo1%1BtbZa{vGU literal 0 HcmV?d00001 diff --git a/e2e/Dockerfile.agent b/e2e/Dockerfile.agent new file mode 100644 index 0000000..e699170 --- /dev/null +++ b/e2e/Dockerfile.agent @@ -0,0 +1,42 @@ +# Build a Linux container that runs the restic-manager agent against a +# sibling rest-server in the e2e compose stack. Used only by tests +# (e2e/compose.e2e.yml + .gitea/workflows/e2e.yml). +# +# Two stages: +# 1. golang:alpine to build the agent binary. +# 2. alpine:3.20 with the `restic` package + the built binary. +# +# Pinning by digest is intentional for CI reproducibility. + +FROM golang:1.25-alpine AS build +WORKDIR /src + +ENV CGO_ENABLED=0 \ + GOFLAGS="-trimpath" + +COPY go.mod go.sum* ./ +RUN go mod download + +COPY . . +ARG VERSION=e2e +RUN go build -ldflags="-s -w -X gitea.dcglab.co.uk/steve/restic-manager/internal/version.Version=${VERSION}" \ + -o /out/restic-manager-agent ./cmd/agent + +FROM alpine:3.20 +RUN apk add --no-cache restic ca-certificates curl +COPY --from=build /out/restic-manager-agent /usr/local/bin/restic-manager-agent + +# Agents normally run as root because backup paths often need it. The +# e2e fixture only backs up paths under /data which we own, so this +# container would tolerate a non-root user — but staying root keeps +# parity with the production install. +USER root + +# The agent needs a writable directory for its config + secrets store. +RUN mkdir -p /etc/restic-manager /var/lib/restic-manager-agent +ENV RM_AGENT_CONFIG=/etc/restic-manager/agent.yaml + +# The compose entrypoint sets the announce URL via env. +COPY e2e/agent-entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/e2e/agent-entrypoint.sh b/e2e/agent-entrypoint.sh new file mode 100755 index 0000000..7900a88 --- /dev/null +++ b/e2e/agent-entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# Entrypoint for the e2e agent container. +# +# Three states: +# 1. Already enrolled (agent.yaml has a bearer): run the agent. +# 2. Token supplied via $RM_ENROL_TOKEN: enrol then run. +# 3. Otherwise: announce against $RM_SERVER and wait for an admin to +# accept us. The announce flow blocks until accepted, then drops +# straight into the normal run loop, so this is the test-friendly +# path. +set -eu + +CFG="${RM_AGENT_CONFIG:-/etc/restic-manager/agent.yaml}" +SERVER="${RM_SERVER:?set RM_SERVER}" + +if [ -f "$CFG" ] && grep -q '^agent_token:' "$CFG"; then + exec restic-manager-agent -config "$CFG" +fi + +if [ -n "${RM_ENROL_TOKEN:-}" ]; then + exec restic-manager-agent -config "$CFG" \ + -enroll-server "$SERVER" \ + -enroll-token "$RM_ENROL_TOKEN" +fi + +# Announce-and-approve: blocks until an admin accepts, then runs. +exec restic-manager-agent -config "$CFG" -enroll-server "$SERVER" diff --git a/e2e/compose.e2e.yml b/e2e/compose.e2e.yml new file mode 100644 index 0000000..bb77b8d --- /dev/null +++ b/e2e/compose.e2e.yml @@ -0,0 +1,87 @@ +# End-to-end test stack — used by .gitea/workflows/e2e.yml and by +# operators who want to run the Playwright suite locally. +# +# Three services: +# * server — restic-manager built from the working tree +# * agent — restic-manager agent built from the working tree +# (announces; Playwright accepts it during the test) +# * rest-server — the actual restic backend, sibling of the agent +# +# Run from the repo root: +# docker compose -f e2e/compose.e2e.yml up --build --abort-on-container-exit + +services: + rest-server: + image: restic/rest-server:0.13.0 + environment: + DATA_DIR: /data + OPTIONS: "--no-auth" + volumes: + - rest-data:/data + networks: [rmnet] + + server: + build: + context: .. + dockerfile: deploy/Dockerfile.server + args: + VERSION: e2e + environment: + RM_LISTEN: ":8080" + RM_DATA_DIR: "/data" + RM_BASE_URL: "http://server:8080" + RM_COOKIE_SECURE: "false" + # Bind the metrics endpoint loose for the test, so one of the + # Playwright assertions can exercise it. + RM_METRICS_TRUSTED_CIDR: "0.0.0.0/0" + volumes: + - server-data:/data + ports: + - "127.0.0.1:8080:8080" + healthcheck: + test: ["CMD", "/usr/local/bin/restic-manager-server", "--version"] + interval: 2s + timeout: 2s + retries: 30 + networks: [rmnet] + + agent: + build: + context: .. + dockerfile: e2e/Dockerfile.agent + args: + VERSION: e2e + environment: + RM_SERVER: "http://server:8080" + depends_on: + - server + volumes: + # Source paths the agent backs up. Compose pre-populates this + # with a few files so the snapshot list isn't empty. + - source-data:/source + - agent-config:/etc/restic-manager + - agent-state:/var/lib/restic-manager-agent + networks: [rmnet] + + # One-shot init container that drops a couple of files into the + # source volume so backups have something to snapshot. + source-fixture: + image: alpine:3.20 + command: > + sh -c 'mkdir -p /source && echo "hello world" > /source/hello.txt && + echo "another file" > /source/two.txt && sleep 0.2' + volumes: + - source-data:/source + networks: [rmnet] + restart: "no" + +volumes: + server-data: + rest-data: + source-data: + agent-config: + agent-state: + +networks: + rmnet: + driver: bridge diff --git a/e2e/playwright/package.json b/e2e/playwright/package.json new file mode 100644 index 0000000..ed7afc3 --- /dev/null +++ b/e2e/playwright/package.json @@ -0,0 +1,14 @@ +{ + "name": "restic-manager-e2e", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "test": "playwright test", + "test:headed": "playwright test --headed", + "test:debug": "PWDEBUG=1 playwright test" + }, + "devDependencies": { + "@playwright/test": "^1.50.0" + } +} diff --git a/e2e/playwright/playwright.config.ts b/e2e/playwright/playwright.config.ts new file mode 100644 index 0000000..d6dbc0d --- /dev/null +++ b/e2e/playwright/playwright.config.ts @@ -0,0 +1,31 @@ +import { defineConfig, devices } from '@playwright/test'; + +// Single-target Chromium config: the e2e suite is narrow (smoke +// the production-shaped flow against the docker-compose stack). +// Cross-browser matrix doesn't add signal — what we're verifying is +// the server's HTML and the agent's WebSocket handshake, neither of +// which depends on browser engine. + +const baseURL = process.env.RM_BASE_URL ?? 'http://127.0.0.1:8080'; + +export default defineConfig({ + testDir: './tests', + timeout: 60_000, + expect: { timeout: 10_000 }, + fullyParallel: false, + retries: process.env.CI ? 1 : 0, + workers: 1, + reporter: [['list'], ['html', { open: 'never' }]], + use: { + baseURL, + trace: 'retain-on-failure', + screenshot: 'only-on-failure', + video: 'retain-on-failure', + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], +}); diff --git a/e2e/playwright/tests/lib/server.ts b/e2e/playwright/tests/lib/server.ts new file mode 100644 index 0000000..397a908 --- /dev/null +++ b/e2e/playwright/tests/lib/server.ts @@ -0,0 +1,114 @@ +// Helpers used by every test. The shape favours the JSON API for +// reads + accept/dispatch (deterministic, easy to assert) and the +// browser for human-facing surfaces (login form, dashboard render). + +import { APIRequestContext, expect, Page } from '@playwright/test'; + +export const baseURL = process.env.RM_BASE_URL ?? 'http://127.0.0.1:8080'; + +export interface HostJSON { + id: string; + name: string; + status: string; + last_backup_status?: string; +} + +export async function readBootstrapToken(): Promise { + const tok = process.env.RM_BOOTSTRAP_TOKEN; + if (!tok) { + throw new Error('RM_BOOTSTRAP_TOKEN not set — the harness scrapes it from server logs'); + } + return tok; +} + +export async function bootstrapAdmin( + request: APIRequestContext, + { + username = 'admin', + password = 'e2e-test-password-1234', + }: { username?: string; password?: string } = {}, +): Promise<{ username: string; password: string }> { + const token = await readBootstrapToken(); + const res = await request.post(`${baseURL}/api/bootstrap`, { + data: { token, username, password }, + }); + if (!res.ok() && res.status() !== 409 /* already bootstrapped */) { + throw new Error(`bootstrap: ${res.status()} ${await res.text()}`); + } + return { username, password }; +} + +export async function loginViaUI(page: Page, username: string, password: string): Promise { + await page.goto(`${baseURL}/login`); + await page.locator('#login-username').fill(username); + await page.locator('#login-password').fill(password); + await Promise.all([ + page.waitForURL(new RegExp(`^${baseURL}/?$`)), + page.locator('form[action="/login"] button[type="submit"]').click(), + ]); +} + +/** + * Polls the dashboard until a pending host card is visible, then + * extracts its pending-id from the inline accept form's action URL. + */ +export async function waitForPendingHostID(page: Page): Promise { + const formLocator = page.locator('form[action^="/api/pending-hosts/"][action$="/accept"]').first(); + await expect(formLocator).toBeVisible({ timeout: 60_000 }); + const action = await formLocator.getAttribute('action'); + if (!action) throw new Error('pending host form has no action attribute'); + const m = action.match(/\/api\/pending-hosts\/([^/]+)\/accept/); + if (!m) throw new Error(`unexpected action URL: ${action}`); + return m[1]; +} + +export async function acceptPending( + request: APIRequestContext, + cookie: string, + pendingID: string, + repo: { url: string; username?: string; password: string }, +): Promise { + const res = await request.post(`${baseURL}/api/pending-hosts/${pendingID}/accept`, { + headers: { cookie, 'content-type': 'application/json' }, + data: { + repo_url: repo.url, + repo_username: repo.username ?? '', + repo_password: repo.password, + }, + }); + if (!res.ok()) { + throw new Error(`accept: ${res.status()} ${await res.text()}`); + } +} + +export async function listHosts(request: APIRequestContext, cookie: string): Promise { + const res = await request.get(`${baseURL}/api/hosts`, { headers: { cookie } }); + if (!res.ok()) throw new Error(`list hosts: ${res.status()} ${await res.text()}`); + const body = (await res.json()) as { items?: HostJSON[]; hosts?: HostJSON[] }; + return body.items ?? body.hosts ?? []; +} + +export async function waitForHostStatus( + request: APIRequestContext, + cookie: string, + matcher: (h: HostJSON) => boolean, + timeoutMs = 60_000, +): Promise { + const deadline = Date.now() + timeoutMs; + let last: HostJSON | undefined; + while (Date.now() < deadline) { + const hosts = await listHosts(request, cookie); + const hit = hosts.find(matcher); + if (hit) return hit; + last = hosts[0]; + await new Promise((r) => setTimeout(r, 1_000)); + } + throw new Error(`waitForHostStatus: timeout. Last seen: ${JSON.stringify(last)}`); +} + +export async function getSessionCookie(page: Page): Promise { + const cookies = await page.context().cookies(); + const c = cookies.find((c) => c.name === 'rm_session'); + if (!c) throw new Error('rm_session cookie not set after login'); + return `${c.name}=${c.value}`; +} diff --git a/e2e/playwright/tests/smoke.spec.ts b/e2e/playwright/tests/smoke.spec.ts new file mode 100644 index 0000000..0dbd307 --- /dev/null +++ b/e2e/playwright/tests/smoke.spec.ts @@ -0,0 +1,80 @@ +// End-to-end smoke: bootstrap → accept pending host → run backup → see succeeded. +// +// The compose stack stands up a server, a sibling rest-server, and an +// agent in announce-and-approve mode. This test drives the operator +// path through the UI (login + dashboard) and the API +// (accept + run-now + poll for terminal) — UI for the human surfaces, +// API for the deterministic ones. + +import { test, expect } from '@playwright/test'; +import { + baseURL, + bootstrapAdmin, + loginViaUI, + waitForPendingHostID, + acceptPending, + waitForHostStatus, + getSessionCookie, +} from './lib/server'; + +test.describe('smoke: enrol-via-announce → backup', () => { + test('happy path completes in under a minute', async ({ page, request }) => { + const { username, password } = await bootstrapAdmin(request); + await loginViaUI(page, username, password); + + // Dashboard renders. + await expect(page.locator('main')).toContainText(/host|fleet|pending/i, { timeout: 10_000 }); + + // Pending host appears (the agent container has been + // announcing since startup). + const pendingID = await waitForPendingHostID(page); + const cookie = await getSessionCookie(page); + + // Accept with the rest-server creds. compose's rest-server runs + // --no-auth, so any credentials work; restic still demands a + // password to encrypt the repo. + await acceptPending(request, cookie, pendingID, { + url: 'rest:http://rest-server:8000/', + password: 'e2e-repo-password', + }); + + // Wait for the host to come online + auto-init to land. + const onlineHost = await waitForHostStatus( + request, cookie, + (h) => h.status === 'online', + 60_000, + ); + expect(onlineHost.id).toBeTruthy(); + + // Trigger a backup via the UI form-post (HX-Redirect to /jobs/{id}). + await page.goto(`${baseURL}/hosts/${onlineHost.id}`); + await Promise.all([ + page.waitForURL(/\/jobs\//), + page.locator('form[action$="/run-backup"] button[type="submit"]').first().click(), + ]); + + // Wait for the host's last_backup_status to flip to 'succeeded'. + // The job page itself is harder to assert on (it uses + // server-pushed updates and a reload-on-finish pattern); the + // host record is the source of truth and is what the dashboard + // surfaces. + const finishedHost = await waitForHostStatus( + request, cookie, + (h) => h.id === onlineHost.id && h.last_backup_status === 'succeeded', + 120_000, + ); + expect(finishedHost.last_backup_status).toBe('succeeded'); + }); +}); + +test.describe('smoke: scrape /metrics', () => { + test('metrics endpoint exposes the host gauge', async ({ request }) => { + // Compose sets RM_METRICS_TRUSTED_CIDR=0.0.0.0/0 so the + // endpoint is open to the test runner. + const res = await request.get(`${baseURL}/metrics`); + expect(res.status()).toBe(200); + const body = await res.text(); + expect(body).toContain('rm_hosts_total'); + expect(body).toContain('rm_build_info{'); + }); +}); diff --git a/tasks.md b/tasks.md index a696930..843a2b6 100644 --- a/tasks.md +++ b/tasks.md @@ -326,12 +326,54 @@ Sizes: **S** = under a day, **M** = 1–3 days, **L** = 3–7 days. ## Phase 5 — OSS readiness -- [ ] **P5-01** (M) Documentation site (mdBook or similar) with install, concepts, security model, screenshots -- [ ] **P5-02** (S) `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, issue + PR templates +- [x] **P5-01** (M) Documentation site (mdBook or similar) with install, concepts, security model, screenshots +- [x] **P5-02** (S) `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, issue + PR templates - [x] **P5-03** (S) Release automation — **pivoted away from goreleaser/binary archives** on 2026-05-05 (spec: `docs/superpowers/specs/2026-05-05-p5-03-docker-only-release.md`). Single deliverable per tag: a multi-arch (linux amd64+arm64) server image, with cross-compiled agent binaries (linux amd64+arm64, windows amd64) + `install.sh` + `install.ps1` + the systemd unit baked under `/opt/restic-manager/dist/`. The `/agent/binary` and `/install/*` handlers fall back from `/...` to `/...` so a fresh container Just Works. Workflow `.gitea/workflows/release.yml` triggers on `v*.*.*` tag-push (real release: fan-out `:vX.Y.Z`, `:X.Y`, `:X`, plus `:latest` once `MAJOR>=1`) and `workflow_dispatch` (snapshot: `:snapshot-` only). Pushed to the Gitea container registry on this instance — no external creds, no GHCR mirror. Cosign / SBOM / minisign / GHCR mirror deferred to Phase 6. Source builds via `make build` remain a first-class path. -- [ ] **P5-04** (S) Demo screenshots / short Loom walkthrough in README -- [ ] **P5-05** (S) `SECURITY.md` with disclosure process -- [ ] **P5-06** (M) End-to-end test suite in CI (Playwright vs. compose stack with sibling Linux agent) +- [x] **P5-04** (S) Demo screenshots / short Loom walkthrough in README +- [x] **P5-05** (S) `SECURITY.md` with disclosure process +- [x] **P5-06** (M) End-to-end test suite in CI (Playwright vs. compose stack with sibling Linux agent) + +> **As shipped (2026-05-07, branch `p5-oss-readiness`):** +> +> **P5-01 — docs site.** mdBook under `docs/book/` with structured +> chapters: getting-started (install, enrolling hosts, reverse +> proxy), concepts (architecture, credentials, schedules + source +> groups, repo maintenance), operations (backups + restores, alerts, +> observability, updates), security (threat model, hardening, +> disclosure), reference (env vars, HTTP endpoints), plus +> contributing / roadmap / license pages. mdBook binary downloaded +> via Makefile (`make docs` / `make docs-watch`) — same "static +> binary, no toolchain" pattern as Tailwind. Generated `book/` +> dir gitignored. +> +> **P5-02 — CONTRIBUTING + CoC + templates.** `CONTRIBUTING.md` +> rewritten from placeholder to full guide (setup, conventions, +> workflow, RBAC of the project itself). `CODE_OF_CONDUCT.md` +> shaped on the Contributor Covenant but adapted for a +> single-maintainer project. `.gitea/issue_template/{bug_report,feature_request}.md` +> + `.gitea/PULL_REQUEST_TEMPLATE.md`. +> +> **P5-04 — README screenshots.** Six full-page captures from a +> fresh server bootstrap under `docs/screenshots/` (login, empty +> dashboard, add host, alerts, settings, audit log). README +> rewritten to centre the screenshot grid + link out to docs site. +> Captured live from a working build via Playwright; replaceable +> as the UI evolves without breaking layout. +> +> **P5-05 — SECURITY.md.** Disclosure policy (3-day ack, 30-day +> default disclosure window), supported-versions matrix, scope +> in/out, threat-model summary, hardening checklist for +> operators. Mirrored as a chapter in the docs site. +> +> **P5-06 — e2e harness.** `e2e/compose.e2e.yml` stands up +> server + sibling Linux agent (alpine + restic) + restic/rest-server +> backend, with announce-and-approve as the enrolment path so +> Playwright drives the operator flow end-to-end. Tests under +> `e2e/playwright/tests/`: smoke spec covers bootstrap → login → +> accept-pending → backup → terminal-status; second spec scrapes +> `/metrics` to verify the P6-04 endpoint. New +> `.gitea/workflows/e2e.yml` runs on every PR (separate from the +> fast lint/test workflow). Local how-to in `docs/e2e.md`. - [x] **P5-07** (S) Reference deployment landed alongside P5-03. `deploy/docker-compose.yml` stands up *only* the server (image-pinned via `RM_VERSION`, named volume for operator state, bound to localhost) — TLS termination is left to whichever reverse proxy the operator already runs. `docs/reverse-proxy.md` documents the headers + WebSocket pass-through the proxy must forward, the `RM_TRUSTED_PROXY` CIDR rule, and worked examples for Caddy, nginx, and Traefik. ### Phase 5 acceptance From 17b9ee08b7044952c5649254a7ffbcad6b8c64e2 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 19:51:49 +0100 Subject: [PATCH 02/14] e2e: run health probe + Playwright on the compose network Gitea's act-style runners execute workflow steps inside a runner container, so compose's host port-publish (127.0.0.1:8080:8080) is not reachable from the steps. PR #23's e2e job timed out waiting for the server even though the container was up and listening. Move both the health probe and the Playwright run onto rmnet so they address the server as http://server:8080: * health probe: docker run --rm --network e2e_rmnet curlimages/curl * Playwright: new mcr.microsoft.com/playwright-based image, added as a profile-gated `playwright` service in compose.e2e.yml, invoked via `docker compose run --rm playwright`. Drops the setup-node + npm install runner steps. --- .gitea/workflows/e2e.yml | 27 ++++++++++++++------------- e2e/Dockerfile.playwright | 21 +++++++++++++++++++++ e2e/compose.e2e.yml | 21 +++++++++++++++++++++ 3 files changed, 56 insertions(+), 13 deletions(-) create mode 100644 e2e/Dockerfile.playwright diff --git a/.gitea/workflows/e2e.yml b/.gitea/workflows/e2e.yml index 39ad37f..1cfa3fe 100644 --- a/.gitea/workflows/e2e.yml +++ b/.gitea/workflows/e2e.yml @@ -1,12 +1,19 @@ # P5-06 — End-to-end test suite. # # Spec : docs/superpowers/specs/2026-05-07-p5-oss-readiness-design.md -# Stack: e2e/compose.e2e.yml (server + agent + rest-server) +# Stack: e2e/compose.e2e.yml (server + agent + rest-server + playwright) # Tests: e2e/playwright/tests/*.spec.ts # # Triggered on every PR into main and on workflow_dispatch. Runs # longer than the unit-test workflow (~3-4 minutes for a clean run); # kept separate so a slow e2e doesn't block the fast lint/test loop. +# +# Networking note: every interaction with the server (health probe, +# Playwright) happens from a container on the compose `rmnet` +# network, addressing the server as `http://server:8080`. We can't +# rely on `127.0.0.1:8080` because Gitea's runner executes steps +# inside its own container, where compose's host port-publish is +# not visible. name: e2e @@ -33,7 +40,8 @@ jobs: run: | set -eu for i in $(seq 1 30); do - if curl -fsS http://127.0.0.1:8080/api/version >/dev/null 2>&1; then + if docker run --rm --network e2e_rmnet curlimages/curl:8.10.1 \ + -fsS http://server:8080/api/version >/dev/null 2>&1; then echo "server up"; exit 0 fi sleep 2 @@ -60,22 +68,15 @@ jobs: - name: Start the agent run: docker compose -f e2e/compose.e2e.yml up -d agent - - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Install Playwright - working-directory: e2e/playwright + - name: Prepare report mounts run: | - npm install --no-audit --no-fund - npx playwright install --with-deps chromium + mkdir -p e2e/playwright/playwright-report e2e/playwright/test-results + chmod -R a+rwX e2e/playwright/playwright-report e2e/playwright/test-results - name: Run Playwright tests - working-directory: e2e/playwright env: - RM_BASE_URL: http://127.0.0.1:8080 RM_BOOTSTRAP_TOKEN: ${{ env.RM_BOOTSTRAP_TOKEN }} - run: npx playwright test + run: docker compose -f e2e/compose.e2e.yml run --rm playwright - name: Compose logs (on failure) if: failure() diff --git a/e2e/Dockerfile.playwright b/e2e/Dockerfile.playwright new file mode 100644 index 0000000..8689e6a --- /dev/null +++ b/e2e/Dockerfile.playwright @@ -0,0 +1,21 @@ +# Playwright runner for the e2e suite. Built and run by +# e2e/compose.e2e.yml so the test process sits on the same docker +# network as the server, agent, and rest-server. The previous setup +# ran Playwright on the workflow runner host and reached the server +# via 127.0.0.1:8080; that fails on Gitea's act-style runners +# because the workflow steps execute inside a runner container, +# not on the host where compose publishes its ports. + +FROM mcr.microsoft.com/playwright:v1.50.0-jammy + +WORKDIR /work + +# Install npm deps in a separate layer keyed off package.json so +# changes to specs don't bust the dep cache. +COPY e2e/playwright/package.json /work/package.json +RUN npm install --no-audit --no-fund + +COPY e2e/playwright/ /work/ + +ENV CI=1 +ENTRYPOINT ["npx", "playwright", "test"] diff --git a/e2e/compose.e2e.yml b/e2e/compose.e2e.yml index bb77b8d..7b94d27 100644 --- a/e2e/compose.e2e.yml +++ b/e2e/compose.e2e.yml @@ -63,6 +63,27 @@ services: - agent-state:/var/lib/restic-manager-agent networks: [rmnet] + # Playwright test runner. Profile-gated so `compose up` doesn't + # start it; CI runs it via `compose run --rm playwright`. Lives on + # rmnet so it can reach the server via its compose-network DNS + # name rather than depending on host port-publish (which doesn't + # work on Gitea's container-based runners). + playwright: + profiles: [test] + build: + context: .. + dockerfile: e2e/Dockerfile.playwright + environment: + RM_BASE_URL: "http://server:8080" + RM_BOOTSTRAP_TOKEN: "${RM_BOOTSTRAP_TOKEN:-}" + volumes: + - ./playwright/playwright-report:/work/playwright-report + - ./playwright/test-results:/work/test-results + depends_on: + - server + - agent + networks: [rmnet] + # One-shot init container that drops a couple of files into the # source volume so backups have something to snapshot. source-fixture: From a3f134bcd67cde68ede26d71bde78174096540bf Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 20:04:39 +0100 Subject: [PATCH 03/14] e2e: pin Playwright to 1.59.1 `@playwright/test` was loose-pinned to ^1.50.0; npm resolved it to 1.59.1 inside the runner image, which only ships browser binaries for 1.50.0. Pin both the package and the docker image to v1.59.1 so deps and binaries stay aligned. --- e2e/Dockerfile.playwright | 2 +- e2e/playwright/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/Dockerfile.playwright b/e2e/Dockerfile.playwright index 8689e6a..7174258 100644 --- a/e2e/Dockerfile.playwright +++ b/e2e/Dockerfile.playwright @@ -6,7 +6,7 @@ # because the workflow steps execute inside a runner container, # not on the host where compose publishes its ports. -FROM mcr.microsoft.com/playwright:v1.50.0-jammy +FROM mcr.microsoft.com/playwright:v1.59.1-jammy WORKDIR /work diff --git a/e2e/playwright/package.json b/e2e/playwright/package.json index ed7afc3..9b73d4c 100644 --- a/e2e/playwright/package.json +++ b/e2e/playwright/package.json @@ -9,6 +9,6 @@ "test:debug": "PWDEBUG=1 playwright test" }, "devDependencies": { - "@playwright/test": "^1.50.0" + "@playwright/test": "1.59.1" } } From 60e9197c24d91499d92d83615a366f7f053b85ca Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 20:15:21 +0100 Subject: [PATCH 04/14] e2e: build playwright image with --profile test --pull MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without --profile test, `docker compose build` skips the playwright service (profiles: [test]) and the image is built on-demand by `compose run` instead. Across CI runs the Gitea runner caches the resulting tag, so a Dockerfile FROM bump (v1.50.0 → v1.59.1) is masked by the cached image — the container ends up with old browser binaries and Playwright's own version-mismatch check fails the suite. Pull base images on every build so the FROM tag wins. --- .gitea/workflows/e2e.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/e2e.yml b/.gitea/workflows/e2e.yml index 1cfa3fe..199f7a0 100644 --- a/.gitea/workflows/e2e.yml +++ b/.gitea/workflows/e2e.yml @@ -31,7 +31,12 @@ jobs: - uses: actions/checkout@v4 - name: Build the e2e stack - run: docker compose -f e2e/compose.e2e.yml build + # --profile test pulls in the playwright service which is + # otherwise gated. --pull refreshes base images so a bump + # to the Dockerfile's FROM tag (e.g. mcr.microsoft.com/ + # playwright:vX.Y.Z-jammy) isn't masked by a stale runner + # cache that still has the old tag's layers. + run: docker compose --profile test -f e2e/compose.e2e.yml build --pull - name: Bring up the stack run: docker compose -f e2e/compose.e2e.yml up -d server rest-server source-fixture From dedc653256557db780e4c2f386dcb42675597dd0 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 21:06:38 +0100 Subject: [PATCH 05/14] ci: run jobs in ci-runner-go container MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pin every job to gitea.dcglab.co.uk/steve/ci-runner-go:2026-05-08 so Go, Node, and Docker tooling are already installed when the job starts. Drops three actions/setup-go invocations from ci.yml (redundant — Go is on PATH) and inherits Buildx + Compose v2 in e2e.yml and release.yml without per-job apt-installs. Recipe lives in steve/ci. Bump the date pin in lockstep across the three workflows when picking up a fresher image (e.g. when the Go floor moves). --- .gitea/workflows/ci.yml | 70 +++++++++++++++++------------------- .gitea/workflows/e2e.yml | 1 + .gitea/workflows/release.yml | 1 + 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index a69d2c1..3fc922b 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -2,28 +2,34 @@ # # Notes for anyone editing this file: # +# Custom runner image +# Every job runs inside `gitea.dcglab.co.uk/steve/ci-runner-go` +# (recipe: https://gitea.dcglab.co.uk/steve/ci/src/branch/main/images/ci-runner-go). +# That image already ships: +# * Go on PATH at /usr/local/go/bin (so `actions/setup-go` is +# redundant and intentionally NOT used here — the action would +# otherwise re-download Go on every job) +# * Node.js + npm (used by docs / e2e workflows) +# * Docker CLI, Buildx, Compose v2 (used by docker-build steps) +# When bumping the Go floor, push a new ci-runner-go image with +# the matching Go version and bump the date pin in IMAGE below. +# # Self-hosted runner expectations -# The Gitea runners are provisioned out-of-band (the infra team owns -# the script). Each runner host bind-mounts persistent volumes for -# /root/go/pkg/mod (GOMODCACHE), /root/.cache/go-build (GOCACHE), and -# /root/.cache/act (action clones) into every job container. As a +# Each runner host bind-mounts persistent volumes for +# /root/go/pkg/mod (GOMODCACHE), /root/.cache/go-build (GOCACHE), +# and /root/.cache/act (action clones) into every job container — +# regardless of which image the container is built from. As a # result: -# * `cache: true` on actions/setup-go is intentionally OMITTED — the -# action would otherwise tar/untar GOMODCACHE+GOCACHE through the -# Gitea cache backend on every job, undoing the host-volume cache -# and adding ~10s of redundant zstd round-trip per job. -# * Common GitHub actions (actions/checkout, actions/setup-go, -# actions/upload-artifact, golangci/golangci-lint-action) are -# pre-cloned into /root/.cache/act on the runner, so the per-job -# "git clone https://github.com/actions/..." step is a fetch, not -# a full clone. +# * Common GitHub actions (actions/checkout, actions/upload-artifact, +# golangci/golangci-lint-action) are pre-cloned into +# /root/.cache/act on the runner, so the per-job +# "git clone https://github.com/actions/..." step is a fetch, +# not a full clone. # * golangci-lint is pre-installed at /usr/local/bin/golangci-lint -# on the runner (latest v2.x). The golangci-lint-action below -# still pins a specific version and re-downloads — that's fine -# (deterministic CI > marginal speed) but means the host-installed -# binary is currently unused. Drop the `version:` arg below to -# use the host-installed one if you want to trade determinism -# for speed. +# on the runner host BUT that's outside the job's filesystem +# view; the golangci-lint-action below pins a specific version +# and re-downloads — that's fine (deterministic CI > marginal +# speed). # # Build matrix # Linux amd64 + arm64 + Windows amd64. CGO_ENABLED=0 throughout — @@ -32,10 +38,10 @@ # binaries. # # Go version -# The GO_VERSION env var anchors all three jobs. Floor is set by the -# heaviest dep (modernc.org/sqlite v1.50+ requires Go 1.23+ today; -# we run 1.25 so golangci-lint's Go-version compatibility check is -# happy — see the version pin in the lint job). +# Anchored by the ci-runner-go image (currently Go 1.25.7). Floor +# is set by the heaviest dep (modernc.org/sqlite v1.50+ requires +# Go 1.23+; we run 1.25 so golangci-lint's Go-version compatibility +# check is happy — see the version pin in the lint job). # # upload-artifact # Pinned at v3 historically; v3 was deprecated upstream. v4 should @@ -48,9 +54,6 @@ on: pull_request: branches: [main] -env: - GO_VERSION: "1.25" - jobs: test: # Sharded by package group. server/http and store are the two @@ -60,6 +63,7 @@ jobs: # one runner. The third shard ("rest") covers everything else. name: Test (${{ matrix.name }}) runs-on: ubuntu-latest + container: gitea.dcglab.co.uk/steve/ci-runner-go:2026-05-08 strategy: fail-fast: false matrix: @@ -73,10 +77,6 @@ jobs: packages: "" steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GO_VERSION }} - # cache: true intentionally omitted — see header notes. - name: go vet run: go vet ./... - name: go test @@ -98,12 +98,9 @@ jobs: lint: name: Lint runs-on: ubuntu-latest + container: gitea.dcglab.co.uk/steve/ci-runner-go:2026-05-08 steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GO_VERSION }} - # cache: true intentionally omitted — see header notes. - uses: golangci/golangci-lint-action@v7 with: # Must be built against the same Go release as go.mod targets, @@ -117,6 +114,7 @@ jobs: build: name: Build (${{ matrix.goos }}/${{ matrix.goarch }}) runs-on: ubuntu-latest + container: gitea.dcglab.co.uk/steve/ci-runner-go:2026-05-08 strategy: fail-fast: false matrix: @@ -130,10 +128,6 @@ jobs: ext: ".exe" steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GO_VERSION }} - # cache: true intentionally omitted — see header notes. - name: build server + agent env: GOOS: ${{ matrix.goos }} diff --git a/.gitea/workflows/e2e.yml b/.gitea/workflows/e2e.yml index 199f7a0..7ac2ae1 100644 --- a/.gitea/workflows/e2e.yml +++ b/.gitea/workflows/e2e.yml @@ -26,6 +26,7 @@ jobs: e2e: name: Playwright vs docker-compose runs-on: ubuntu-latest + container: gitea.dcglab.co.uk/steve/ci-runner-go:2026-05-08 timeout-minutes: 15 steps: - uses: actions/checkout@v4 diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 14a5929..7a423aa 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -41,6 +41,7 @@ jobs: image: name: Build + push image runs-on: ubuntu-latest + container: gitea.dcglab.co.uk/steve/ci-runner-go:2026-05-08 steps: - uses: actions/checkout@v4 From 084ddd56bad306e4b203fa8a83a80bcf9857c968 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 21:10:33 +0100 Subject: [PATCH 06/14] ci: force bash as default shell in container jobs When jobs run with `container:` set, Gitea Actions defaults to `sh -e` (dash on Ubuntu), so `set -euo pipefail` fails with "Illegal option -o pipefail". Pinning bash workflow-wide matches what the runner used pre-container and keeps existing scripts portable. --- .gitea/workflows/ci.yml | 7 +++++++ .gitea/workflows/e2e.yml | 5 +++++ .gitea/workflows/release.yml | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 3fc922b..d9f0cfa 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -54,6 +54,13 @@ on: pull_request: branches: [main] +# Force bash as the default shell. With `container:` set on every +# job, Gitea Actions otherwise picks `sh -e` and our `set -euo +# pipefail` fails on dash with "Illegal option -o pipefail". +defaults: + run: + shell: bash + jobs: test: # Sharded by package group. server/http and store are the two diff --git a/.gitea/workflows/e2e.yml b/.gitea/workflows/e2e.yml index 7ac2ae1..0cb1b49 100644 --- a/.gitea/workflows/e2e.yml +++ b/.gitea/workflows/e2e.yml @@ -22,6 +22,11 @@ on: branches: [main] workflow_dispatch: +# Force bash as the default shell — see ci.yml header. +defaults: + run: + shell: bash + jobs: e2e: name: Playwright vs docker-compose diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 7a423aa..9c0c078 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -37,6 +37,11 @@ env: REGISTRY: gitea.dcglab.co.uk IMAGE_NAME: ${{ gitea.repository }} +# Force bash as the default shell — see ci.yml header. +defaults: + run: + shell: bash + jobs: image: name: Build + push image From 21567adb8e95776ead431153324ef280cea21784 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 21:17:18 +0100 Subject: [PATCH 07/14] runner tests: probe-exec setupScript to clear overlayfs ETXTBSY MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The original write-tmp-then-rename guard handles the ETXTBSY race on a vanilla filesystem, but inside the new ci-runner-go container our jobs land on overlayfs, which keeps a lagged "writable inode" view long enough to leak ETXTBSY into the exec the test does milliseconds later. After rename, probe-exec the file with a benign argument ("__rm_probe__" — every script's case statement falls through to a clean exit) until exec succeeds. Each script body is shaped `case "$1" in restore) ... ;; esac` so the probe is a no-op. 3s deadline keeps a stuck filesystem from hanging the suite. --- internal/agent/runner/runner_test.go | 41 +++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/internal/agent/runner/runner_test.go b/internal/agent/runner/runner_test.go index 239cdf7..8a9d8bd 100644 --- a/internal/agent/runner/runner_test.go +++ b/internal/agent/runner/runner_test.go @@ -2,10 +2,14 @@ package runner import ( "context" + "errors" "os" + "os/exec" "path/filepath" "sync" + "syscall" "testing" + "time" "gitea.dcglab.co.uk/steve/restic-manager/internal/api" "gitea.dcglab.co.uk/steve/restic-manager/internal/restic" @@ -43,13 +47,22 @@ func (s *fakeSender) snapshot() []api.Envelope { // setupScript writes a shell script (without shebang) to a temp dir, // names it "restic", makes it executable, and returns the path. // -// Writes to ".tmp" then renames into place. The rename is what -// makes this race-free: under -race + many t.Parallel tests, a -// fork-from-another-goroutine can inherit the writable fd from +// Writes to ".tmp" then renames into place. The rename is the +// usual guard against ETXTBSY: under -race + many t.Parallel tests, +// a fork-from-another-goroutine can inherit the writable fd from // os.WriteFile before close completes, and exec'ing the file then -// returns ETXTBSY ("text file busy"). Once the rename lands, the -// final path is a fresh dirent pointing at an inode that has no -// writable fd open anywhere — exec is safe. +// returns ETXTBSY ("text file busy"). The renamed dirent points at +// an inode that has no writable fd open anywhere — exec is safe on +// a vanilla filesystem. +// +// On overlayfs (every job that runs inside a `container:` block on +// our Gitea runner), the rename can briefly leak ETXTBSY anyway — +// the upper layer's "writable inode" bookkeeping lags the userspace +// close. To make the helper deterministic across environments, we +// probe-exec the file with a benign argument until exec succeeds, +// then return. Each script body has a `case "$1" in ... esac` shape +// where unknown args fall through to a clean exit, so the probe is +// a no-op from the test's point of view. func setupScript(t *testing.T, body string) string { t.Helper() dir := t.TempDir() @@ -61,7 +74,21 @@ func setupScript(t *testing.T, body string) string { if err := os.Rename(tmp, final); err != nil { t.Fatalf("setupScript: rename: %v", err) } - return final + + deadline := time.Now().Add(3 * time.Second) + for { + err := exec.Command(final, "__rm_probe__").Run() + if err == nil { + return final + } + if !errors.Is(err, syscall.ETXTBSY) { + t.Fatalf("setupScript: probe exec: %v", err) + } + if time.Now().After(deadline) { + t.Fatalf("setupScript: %s still ETXTBSY after 3s", final) + } + time.Sleep(10 * time.Millisecond) + } } // firstEnvOfType returns the first envelope with the given type, or From e14dd82f20f67b938342834595cf99d7e8410080 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 21:36:09 +0100 Subject: [PATCH 08/14] e2e: extract Playwright report via docker cp instead of bind mount When the runner job runs inside a container, compose's relative `./playwright/playwright-report` resolves to a path that exists only inside the runner container, so the host's docker daemon silently bind-mounts an empty dir and the report never lands anywhere we can read. Drop the bind mounts; keep the playwright container around (--name e2e-pw, no --rm); after the test, `docker cp` the report and traces out into the runner's workspace volume so upload-artifact has something real to upload. The new test-results directory (Playwright traces, screenshots, videos) is also included so failure post-mortem doesn't need a re-run. --- .gitea/workflows/e2e.yml | 27 +++++++++++++++++++-------- e2e/compose.e2e.yml | 13 +++++++++---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/.gitea/workflows/e2e.yml b/.gitea/workflows/e2e.yml index 0cb1b49..f8e9e54 100644 --- a/.gitea/workflows/e2e.yml +++ b/.gitea/workflows/e2e.yml @@ -79,15 +79,22 @@ jobs: - name: Start the agent run: docker compose -f e2e/compose.e2e.yml up -d agent - - name: Prepare report mounts - run: | - mkdir -p e2e/playwright/playwright-report e2e/playwright/test-results - chmod -R a+rwX e2e/playwright/playwright-report e2e/playwright/test-results - - name: Run Playwright tests + id: playwright env: RM_BOOTSTRAP_TOKEN: ${{ env.RM_BOOTSTRAP_TOKEN }} - run: docker compose -f e2e/compose.e2e.yml run --rm playwright + # --name pins a stable container ID so the next step can + # docker cp out of it before tear-down. We deliberately + # drop --rm so the container survives the test exit; the + # tear-down step removes it. + run: docker compose -f e2e/compose.e2e.yml run --name e2e-pw playwright + + - name: Extract Playwright report + if: always() && steps.playwright.outcome != 'skipped' + run: | + mkdir -p e2e/playwright/playwright-report e2e/playwright/test-results + docker cp e2e-pw:/work/playwright-report/. e2e/playwright/playwright-report/ || true + docker cp e2e-pw:/work/test-results/. e2e/playwright/test-results/ || true - name: Compose logs (on failure) if: failure() @@ -101,9 +108,13 @@ jobs: uses: actions/upload-artifact@v3 with: name: playwright-report - path: e2e/playwright/playwright-report + path: | + e2e/playwright/playwright-report + e2e/playwright/test-results retention-days: 7 - name: Tear down if: always() - run: docker compose -f e2e/compose.e2e.yml down -v + run: | + docker rm -f e2e-pw 2>/dev/null || true + docker compose -f e2e/compose.e2e.yml down -v diff --git a/e2e/compose.e2e.yml b/e2e/compose.e2e.yml index 7b94d27..da3d710 100644 --- a/e2e/compose.e2e.yml +++ b/e2e/compose.e2e.yml @@ -64,10 +64,18 @@ services: networks: [rmnet] # Playwright test runner. Profile-gated so `compose up` doesn't - # start it; CI runs it via `compose run --rm playwright`. Lives on + # start it; CI invokes it via `compose run` and `docker cp`s the + # report+traces out (see .gitea/workflows/e2e.yml). Lives on # rmnet so it can reach the server via its compose-network DNS # name rather than depending on host port-publish (which doesn't # work on Gitea's container-based runners). + # + # Reports are NOT bind-mounted: when the runner job itself runs + # inside a container, `./playwright/...` resolves to a path that + # only exists inside the runner container, so the host docker + # daemon would silently mount an empty dir. Instead the report + # stays inside the playwright container and the workflow extracts + # it via `docker cp` before tearing down. playwright: profiles: [test] build: @@ -76,9 +84,6 @@ services: environment: RM_BASE_URL: "http://server:8080" RM_BOOTSTRAP_TOKEN: "${RM_BOOTSTRAP_TOKEN:-}" - volumes: - - ./playwright/playwright-report:/work/playwright-report - - ./playwright/test-results:/work/test-results depends_on: - server - agent From 74be681b4b86f89109c4dd55d58174a7714c6819 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 21:41:38 +0100 Subject: [PATCH 09/14] e2e: dump error-context.md to log on failure + bump upload-artifact MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Playwright run produces error-context.md per failed test with a full DOM snapshot — useful for triaging UI test failures without round-tripping through downloaded artifacts. Cat it into the workflow log on failure. Also bump actions/upload-artifact v3 → v4. v3 uploads still return success on this Gitea runner but the artifacts don't surface through the API or UI; v4 is the correct version per the workflow header note. --- .gitea/workflows/e2e.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/e2e.yml b/.gitea/workflows/e2e.yml index f8e9e54..4181ecc 100644 --- a/.gitea/workflows/e2e.yml +++ b/.gitea/workflows/e2e.yml @@ -96,6 +96,19 @@ jobs: docker cp e2e-pw:/work/playwright-report/. e2e/playwright/playwright-report/ || true docker cp e2e-pw:/work/test-results/. e2e/playwright/test-results/ || true + - name: Show Playwright failure context (on failure) + if: failure() + run: | + set +e + shopt -s nullglob globstar + for f in e2e/playwright/test-results/**/error-context.md; do + echo "::group::$f" + cat "$f" + echo "::endgroup::" + done + echo "Failure attachments (download via the playwright-report artifact):" + find e2e/playwright/test-results \( -name '*.png' -o -name '*.webm' -o -name 'trace.zip' \) -printf ' %p\n' | sort + - name: Compose logs (on failure) if: failure() run: | @@ -105,7 +118,7 @@ jobs: - name: Upload Playwright report (on failure) if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: playwright-report path: | From 523ac4137a257864039f0413811a9702348be72a Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 21:47:31 +0100 Subject: [PATCH 10/14] ui: show pending-hosts panel even when fleet is otherwise empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dashboard's empty-state ("No hosts yet.") was gated on HostCount == 0 alone, which hid the pending-hosts panel — and the inline accept form — for the most common first-run scenario: operator just installed an agent that announced, the fleet has zero accepted hosts, and the only thing the operator needs to do is review fingerprint + click Accept. Tighten the gate so the empty state only shows when there are truly zero hosts and zero pending announces. With a pending host, fall through to the regular dashboard layout so the approval queue is visible and actionable. Caught by the e2e enrol-via-announce smoke test (now unblocked on PR #23). --- web/templates/pages/dashboard.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/templates/pages/dashboard.html b/web/templates/pages/dashboard.html index e95ff78..1788904 100644 --- a/web/templates/pages/dashboard.html +++ b/web/templates/pages/dashboard.html @@ -5,7 +5,7 @@ {{$page := .Page}} {{template "crit_banner" .Page}} - {{if eq $page.HostCount 0}} + {{if and (eq $page.HostCount 0) (eq (len $page.PendingHosts) 0)}} {{/* ---------- empty state ---------- */}}
    From 51fe1946b78bd83432516b3359ba032551bc5b8b Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 21:53:35 +0100 Subject: [PATCH 11/14] e2e: fix agent state-dir to /var/lib/restic-manager MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The agent writes its encrypted secrets blob to $DefaultSecretsPath (/var/lib/restic-manager/secrets.enc) but the e2e fixtures created and mounted a directory at /var/lib/restic-manager-agent — name mismatch. Result: every `config.update` push failed with 'create tmp: no such file or directory', the auto-init never got the repo creds, the host landed in init_failed, and the smoke test couldn't kick off a backup (the Run backup button is disabled while repo_status != ready). Align the compose volume mount and the Dockerfile mkdir on /var/lib/restic-manager so they match the production install script + the agent's own default. --- e2e/Dockerfile.agent | 2 +- e2e/compose.e2e.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/Dockerfile.agent b/e2e/Dockerfile.agent index e699170..0ea8df2 100644 --- a/e2e/Dockerfile.agent +++ b/e2e/Dockerfile.agent @@ -33,7 +33,7 @@ COPY --from=build /out/restic-manager-agent /usr/local/bin/restic-manager-agent USER root # The agent needs a writable directory for its config + secrets store. -RUN mkdir -p /etc/restic-manager /var/lib/restic-manager-agent +RUN mkdir -p /etc/restic-manager /var/lib/restic-manager ENV RM_AGENT_CONFIG=/etc/restic-manager/agent.yaml # The compose entrypoint sets the announce URL via env. diff --git a/e2e/compose.e2e.yml b/e2e/compose.e2e.yml index da3d710..6663a38 100644 --- a/e2e/compose.e2e.yml +++ b/e2e/compose.e2e.yml @@ -60,7 +60,7 @@ services: # with a few files so the snapshot list isn't empty. - source-data:/source - agent-config:/etc/restic-manager - - agent-state:/var/lib/restic-manager-agent + - agent-state:/var/lib/restic-manager networks: [rmnet] # Playwright test runner. Profile-gated so `compose up` doesn't From ccd7c2f2fdccf6d066628d461a9e8bfc17ddcb33 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 22:00:24 +0100 Subject: [PATCH 12/14] e2e: wait for repo_status=ready and bump test timeout Two issues uncovered by the page-snapshot dump after the agent state-dir fix: * The host page server-renders `Run backup now` as disabled while repo_status != ready, and the page has no live-refresh on that field. The test was navigating right after status flipped to 'online' but before auto-init had completed (~3s later), so the rendered HTML still showed init_running and the click was a no-op. Wait for repo_status === 'ready' before navigating. * playwright.config.ts pinned the per-test timeout at 60s, but the test itself uses 60s + 120s of internal waits. Bump to 240s so the test fails on real regressions instead of timing out on its own internal budget. Renamed the test description away from "under a minute" since it overpromises against the new timeout. The performance SLO belongs in a separate test if we want to assert it. --- e2e/playwright/playwright.config.ts | 6 +++++- e2e/playwright/tests/lib/server.ts | 1 + e2e/playwright/tests/smoke.spec.ts | 23 +++++++++++++++-------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/e2e/playwright/playwright.config.ts b/e2e/playwright/playwright.config.ts index d6dbc0d..5fb2c70 100644 --- a/e2e/playwright/playwright.config.ts +++ b/e2e/playwright/playwright.config.ts @@ -10,7 +10,11 @@ const baseURL = process.env.RM_BASE_URL ?? 'http://127.0.0.1:8080'; export default defineConfig({ testDir: './tests', - timeout: 60_000, + // 4 minutes — the smoke test waits for: enrolment + bootstrap + // (~5s), auto-init landing (~10s), backup completion (~120s + // budget). 60s is far too tight in CI; 4m gives headroom even + // on a contended runner without masking real regressions. + timeout: 240_000, expect: { timeout: 10_000 }, fullyParallel: false, retries: process.env.CI ? 1 : 0, diff --git a/e2e/playwright/tests/lib/server.ts b/e2e/playwright/tests/lib/server.ts index 397a908..80bd499 100644 --- a/e2e/playwright/tests/lib/server.ts +++ b/e2e/playwright/tests/lib/server.ts @@ -10,6 +10,7 @@ export interface HostJSON { id: string; name: string; status: string; + repo_status?: string; last_backup_status?: string; } diff --git a/e2e/playwright/tests/smoke.spec.ts b/e2e/playwright/tests/smoke.spec.ts index 0dbd307..f67a806 100644 --- a/e2e/playwright/tests/smoke.spec.ts +++ b/e2e/playwright/tests/smoke.spec.ts @@ -18,7 +18,7 @@ import { } from './lib/server'; test.describe('smoke: enrol-via-announce → backup', () => { - test('happy path completes in under a minute', async ({ page, request }) => { + test('happy path: enrol → accept → backup → succeeded', async ({ page, request }) => { const { username, password } = await bootstrapAdmin(request); await loginViaUI(page, username, password); @@ -38,16 +38,23 @@ test.describe('smoke: enrol-via-announce → backup', () => { password: 'e2e-repo-password', }); - // Wait for the host to come online + auto-init to land. - const onlineHost = await waitForHostStatus( + // Wait for the host to come online AND for auto-init to + // finish. Coming online happens as soon as the agent's + // bearer-authed WS attaches (~1s after accept); repo_status + // flips to 'ready' once the auto-init job completes (a + // couple of seconds later). Loading the host page before + // that leaves the Run-backup button disabled because the + // server-rendered HTML reflects the still-in-progress init, + // and the page has no live-refresh on that field. + const readyHost = await waitForHostStatus( request, cookie, - (h) => h.status === 'online', - 60_000, + (h) => h.status === 'online' && h.repo_status === 'ready', + 90_000, ); - expect(onlineHost.id).toBeTruthy(); + expect(readyHost.id).toBeTruthy(); // Trigger a backup via the UI form-post (HX-Redirect to /jobs/{id}). - await page.goto(`${baseURL}/hosts/${onlineHost.id}`); + await page.goto(`${baseURL}/hosts/${readyHost.id}`); await Promise.all([ page.waitForURL(/\/jobs\//), page.locator('form[action$="/run-backup"] button[type="submit"]').first().click(), @@ -60,7 +67,7 @@ test.describe('smoke: enrol-via-announce → backup', () => { // surfaces. const finishedHost = await waitForHostStatus( request, cookie, - (h) => h.id === onlineHost.id && h.last_backup_status === 'succeeded', + (h) => h.id === readyHost.id && h.last_backup_status === 'succeeded', 120_000, ); expect(finishedHost.last_backup_status).toBe('succeeded'); From 130b68226e46e462b556205b13a8caef8853c1a5 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 22:06:22 +0100 Subject: [PATCH 13/14] api: expose host.repo_status in /api/hosts JSON The dashboard renders init_running / init_failed / ready state based on host.repo_status, but the JSON endpoint dropped the field on its way out. The e2e test couldn't poll for repo readiness; reflect the same projection the UI uses. --- internal/server/http/hosts.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/server/http/hosts.go b/internal/server/http/hosts.go index d355626..e1855ba 100644 --- a/internal/server/http/hosts.go +++ b/internal/server/http/hosts.go @@ -25,6 +25,7 @@ type hostView struct { CurrentJobID *string `json:"current_job_id,omitempty"` LastBackupAt *string `json:"last_backup_at,omitempty"` LastBackupStatus *string `json:"last_backup_status,omitempty"` + RepoStatus string `json:"repo_status,omitempty"` RepoSizeBytes int64 `json:"repo_size_bytes"` SnapshotCount int `json:"snapshot_count"` OpenAlertCount int `json:"open_alert_count"` @@ -85,6 +86,7 @@ func hostToView(h store.Host) hostView { Tags: h.Tags, CurrentJobID: h.CurrentJobID, LastBackupStatus: h.LastBackupStatus, + RepoStatus: h.RepoStatus, RepoSizeBytes: h.RepoSizeBytes, SnapshotCount: h.SnapshotCount, OpenAlertCount: h.OpenAlertCount, From ea9941b9ecd7ccffc110d2dba06353f72e923b34 Mon Sep 17 00:00:00 2001 From: Steve Cliff Date: Fri, 8 May 2026 22:16:57 +0100 Subject: [PATCH 14/14] e2e: dispatch backup via source-group API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per-host Run-backup is gone — the host_chrome partial still renders the button but it's hard-disabled with a tooltip pointing to per-source-group Run-now. The smoke test was clicking that disabled button and waiting forever for a URL change that would never happen. Replace the navigation-based dispatch with two API calls: create a source group covering the agent's /source mount, then POST to /api/hosts/{id}/source-groups/{gid}/run. The backup-status assertion at the end is unchanged — host record is still the source of truth. --- e2e/playwright/tests/lib/server.ts | 37 ++++++++++++++++++++++++++++++ e2e/playwright/tests/smoke.spec.ts | 23 +++++++++++-------- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/e2e/playwright/tests/lib/server.ts b/e2e/playwright/tests/lib/server.ts index 80bd499..538cf30 100644 --- a/e2e/playwright/tests/lib/server.ts +++ b/e2e/playwright/tests/lib/server.ts @@ -107,6 +107,43 @@ export async function waitForHostStatus( throw new Error(`waitForHostStatus: timeout. Last seen: ${JSON.stringify(last)}`); } +export async function createSourceGroup( + request: APIRequestContext, + cookie: string, + hostID: string, + body: { name: string; includes: string[]; excludes?: string[] }, +): Promise { + const res = await request.post(`${baseURL}/api/hosts/${hostID}/source-groups`, { + headers: { cookie, 'content-type': 'application/json' }, + data: { + name: body.name, + includes: body.includes, + excludes: body.excludes ?? [], + retention_policy: {}, + retry_max: 0, + retry_backoff_seconds: 0, + }, + }); + if (!res.ok()) throw new Error(`createSourceGroup: ${res.status()} ${await res.text()}`); + const created = (await res.json()) as { id?: string; group?: { id?: string } }; + const id = created.id ?? created.group?.id; + if (!id) throw new Error(`createSourceGroup: no id in response: ${JSON.stringify(created)}`); + return id; +} + +export async function runSourceGroup( + request: APIRequestContext, + cookie: string, + hostID: string, + groupID: string, +): Promise { + const res = await request.post( + `${baseURL}/api/hosts/${hostID}/source-groups/${groupID}/run`, + { headers: { cookie } }, + ); + if (!res.ok()) throw new Error(`runSourceGroup: ${res.status()} ${await res.text()}`); +} + export async function getSessionCookie(page: Page): Promise { const cookies = await page.context().cookies(); const c = cookies.find((c) => c.name === 'rm_session'); diff --git a/e2e/playwright/tests/smoke.spec.ts b/e2e/playwright/tests/smoke.spec.ts index f67a806..c90d390 100644 --- a/e2e/playwright/tests/smoke.spec.ts +++ b/e2e/playwright/tests/smoke.spec.ts @@ -14,6 +14,8 @@ import { waitForPendingHostID, acceptPending, waitForHostStatus, + createSourceGroup, + runSourceGroup, getSessionCookie, } from './lib/server'; @@ -53,18 +55,19 @@ test.describe('smoke: enrol-via-announce → backup', () => { ); expect(readyHost.id).toBeTruthy(); - // Trigger a backup via the UI form-post (HX-Redirect to /jobs/{id}). - await page.goto(`${baseURL}/hosts/${readyHost.id}`); - await Promise.all([ - page.waitForURL(/\/jobs\//), - page.locator('form[action$="/run-backup"] button[type="submit"]').first().click(), - ]); + // Per-host Run-now is gone; backups are dispatched per + // source-group now. Create one that maps to the agent's + // /source mount, then kick it via the JSON API. + const groupID = await createSourceGroup(request, cookie, readyHost.id, { + name: 'default', + includes: ['/source'], + }); + await runSourceGroup(request, cookie, readyHost.id, groupID); // Wait for the host's last_backup_status to flip to 'succeeded'. - // The job page itself is harder to assert on (it uses - // server-pushed updates and a reload-on-finish pattern); the - // host record is the source of truth and is what the dashboard - // surfaces. + // The host record is the source of truth: it's what the + // dashboard projects from job-completion events on the WS + // channel. const finishedHost = await waitForHostStatus( request, cookie, (h) => h.id === readyHost.id && h.last_backup_status === 'succeeded',