From e4e153cc0a3a924a585c179a028665571ed84ec3 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Thu, 30 Apr 2026 00:32:57 +0200 Subject: [PATCH 01/10] feat(connectors): database selector + per-card write toggle (#568) Add database introspection to connectors (listDatabases for Neo4j/PG, listSchemas for PG) with graceful fallback. Introduce per-widget write mode toggle in Advanced tab and per-card database override in widget editor. Server enforces allowWrites by looking up the widget in the dashboard layout before executing write queries. - connection/: abstract listDatabases(), Neo4j SHOW DATABASES with fallback, PG pg_database + information_schema.schemata - API: GET /connections/[id]/databases, POST /connections/list-databases-inline - Schema: allow_per_card_db on connections, database + allowWrites on DashboardWidget - Write route: when widgetId + dashboardId provided, verifies widget.allowWrites; legacy form-widget path (no widgetId) still works with user-level canWrite - Widget editor: database dropdown (Data tab), write mode toggle (Advanced tab) - 26 new tests (10 connector integration, 11 API route, 5 write enforcement) Closes #568 Co-Authored-By: Claude Opus 4.6 (1M context) --- app/drizzle/migrations/0004_furry_scourge.sql | 1 + .../migrations/meta/0004_snapshot.json | 759 ++++++++++++++++++ app/drizzle/migrations/meta/_journal.json | 7 + app/src/app/(dashboard)/[id]/edit/page.tsx | 1 + .../[id]/databases/__tests__/route.test.ts | 155 ++++ .../api/connections/[id]/databases/route.ts | 51 ++ .../__tests__/route.test.ts | 140 ++++ .../list-databases-inline/route.ts | 46 ++ app/src/app/api/connections/route.ts | 1 + app/src/app/api/query/route.ts | 11 +- .../api/query/write/__tests__/route.test.ts | 215 ++++- app/src/app/api/query/write/route.ts | 57 +- app/src/components/card-container.tsx | 1 + app/src/components/widget-editor-modal.tsx | 49 ++ .../widget-editor/database-selector.tsx | 63 ++ .../widget-editor/use-widget-save.ts | 6 + app/src/hooks/use-connection-databases.ts | 26 + app/src/hooks/use-connections.ts | 2 + app/src/hooks/use-query-execution.ts | 2 + app/src/hooks/use-widget-query.ts | 2 + app/src/lib/db/schema.ts | 9 + app/src/lib/query/query-executor.ts | 29 + app/src/stores/widget-editor-store.ts | 14 + .../__tests__/connection/list-databases.ts | 177 ++++ .../src/generalized/ConnectionModule.ts | 33 +- connection/src/neo4j/Neo4jConnectionModule.ts | 26 + .../postgresql/PostgresConnectionModule.ts | 58 ++ screenshots/01-login.png | Bin 0 -> 29139 bytes screenshots/02-dashboards-home.png | Bin 0 -> 94814 bytes screenshots/03-dashboard-edit.png | Bin 0 -> 72085 bytes screenshots/04-widget-editor-data-tab.png | Bin 0 -> 59187 bytes .../05-advanced-tab-write-mode-off.png | Bin 0 -> 60645 bytes screenshots/06-advanced-tab-write-mode-on.png | Bin 0 -> 64971 bytes 33 files changed, 1921 insertions(+), 20 deletions(-) create mode 100644 app/drizzle/migrations/0004_furry_scourge.sql create mode 100644 app/drizzle/migrations/meta/0004_snapshot.json create mode 100644 app/src/app/api/connections/[id]/databases/__tests__/route.test.ts create mode 100644 app/src/app/api/connections/[id]/databases/route.ts create mode 100644 app/src/app/api/connections/list-databases-inline/__tests__/route.test.ts create mode 100644 app/src/app/api/connections/list-databases-inline/route.ts create mode 100644 app/src/components/widget-editor/database-selector.tsx create mode 100644 app/src/hooks/use-connection-databases.ts create mode 100644 connection/__tests__/connection/list-databases.ts create mode 100644 screenshots/01-login.png create mode 100644 screenshots/02-dashboards-home.png create mode 100644 screenshots/03-dashboard-edit.png create mode 100644 screenshots/04-widget-editor-data-tab.png create mode 100644 screenshots/05-advanced-tab-write-mode-off.png create mode 100644 screenshots/06-advanced-tab-write-mode-on.png diff --git a/app/drizzle/migrations/0004_furry_scourge.sql b/app/drizzle/migrations/0004_furry_scourge.sql new file mode 100644 index 00000000..e7743a4f --- /dev/null +++ b/app/drizzle/migrations/0004_furry_scourge.sql @@ -0,0 +1 @@ +ALTER TABLE "connection" ADD COLUMN "allow_per_card_db" boolean DEFAULT true NOT NULL; \ No newline at end of file diff --git a/app/drizzle/migrations/meta/0004_snapshot.json b/app/drizzle/migrations/meta/0004_snapshot.json new file mode 100644 index 00000000..cde779c5 --- /dev/null +++ b/app/drizzle/migrations/meta/0004_snapshot.json @@ -0,0 +1,759 @@ +{ + "id": "f3e72f09-0731-4ceb-95f6-ce27e251c2d6", + "prevId": "632932b5-b9f1-47b8-b8e6-f4f7aeaad698", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.account": { + "name": "account", + "schema": "", + "columns": { + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "providerAccountId": { + "name": "providerAccountId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "account_userId_user_id_fk": { + "name": "account_userId_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["userId"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.api_key": { + "name": "api_key", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'default'" + }, + "key_hash": { + "name": "key_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "api_key_userId_user_id_fk": { + "name": "api_key_userId_user_id_fk", + "tableFrom": "api_key", + "tableTo": "user", + "columnsFrom": ["userId"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "api_key_key_hash_unique": { + "name": "api_key_key_hash_unique", + "nullsNotDistinct": false, + "columns": ["key_hash"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.connection": { + "name": "connection", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'default'" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "connection_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "configEncrypted": { + "name": "configEncrypted", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "allow_per_card_db": { + "name": "allow_per_card_db", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "connection_userId_user_id_fk": { + "name": "connection_userId_user_id_fk", + "tableFrom": "connection", + "tableTo": "user", + "columnsFrom": ["userId"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.dashboard_share": { + "name": "dashboard_share", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "dashboardId": { + "name": "dashboardId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'default'" + }, + "role": { + "name": "role", + "type": "share_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "dashboard_share_dashboardId_dashboard_id_fk": { + "name": "dashboard_share_dashboardId_dashboard_id_fk", + "tableFrom": "dashboard_share", + "tableTo": "dashboard", + "columnsFrom": ["dashboardId"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "dashboard_share_userId_user_id_fk": { + "name": "dashboard_share_userId_user_id_fk", + "tableFrom": "dashboard_share", + "tableTo": "user", + "columnsFrom": ["userId"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.dashboard": { + "name": "dashboard", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'default'" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "layoutJson": { + "name": "layoutJson", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'{\"version\":2,\"pages\":[{\"id\":\"page-1\",\"title\":\"Page 1\",\"widgets\":[],\"gridLayout\":[]}]}'::jsonb" + }, + "thumbnailJson": { + "name": "thumbnailJson", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "isPublic": { + "name": "isPublic", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_by": { + "name": "updated_by", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "dashboard_userId_user_id_fk": { + "name": "dashboard_userId_user_id_fk", + "tableFrom": "dashboard", + "tableTo": "user", + "columnsFrom": ["userId"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "dashboard_updated_by_user_id_fk": { + "name": "dashboard_updated_by_user_id_fk", + "tableFrom": "dashboard", + "tableTo": "user", + "columnsFrom": ["updated_by"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.session": { + "name": "session", + "schema": "", + "columns": { + "sessionToken": { + "name": "sessionToken", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "session_userId_user_id_fk": { + "name": "session_userId_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["userId"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user": { + "name": "user", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "emailVerified": { + "name": "emailVerified", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "passwordHash": { + "name": "passwordHash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "role": { + "name": "role", + "type": "user_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'creator'" + }, + "can_write": { + "name": "can_write", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "force_password_change": { + "name": "force_password_change", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "disabledAt": { + "name": "disabledAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "lastLoginAt": { + "name": "lastLoginAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "tenant_id": { + "name": "tenant_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'default'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "user_email_tenant_unique": { + "name": "user_email_tenant_unique", + "nullsNotDistinct": false, + "columns": ["email", "tenant_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.verificationToken": { + "name": "verificationToken", + "schema": "", + "columns": { + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.widget_template": { + "name": "widget_template", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "tags": { + "name": "tags", + "type": "text[]", + "primaryKey": false, + "notNull": false, + "default": "'{}'" + }, + "chartType": { + "name": "chartType", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "connectorType": { + "name": "connectorType", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "connectionId": { + "name": "connectionId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "query": { + "name": "query", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "params": { + "name": "params", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "settings": { + "name": "settings", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "previewImageUrl": { + "name": "previewImageUrl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "createdBy": { + "name": "createdBy", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tenant_id": { + "name": "tenant_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'default'" + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "widget_template_createdBy_user_id_fk": { + "name": "widget_template_createdBy_user_id_fk", + "tableFrom": "widget_template", + "tableTo": "user", + "columnsFrom": ["createdBy"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.connection_type": { + "name": "connection_type", + "schema": "public", + "values": ["neo4j", "postgresql"] + }, + "public.share_role": { + "name": "share_role", + "schema": "public", + "values": ["viewer", "editor"] + }, + "public.user_role": { + "name": "user_role", + "schema": "public", + "values": ["admin", "creator", "reader"] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/app/drizzle/migrations/meta/_journal.json b/app/drizzle/migrations/meta/_journal.json index 546a6d57..2bfbbff7 100644 --- a/app/drizzle/migrations/meta/_journal.json +++ b/app/drizzle/migrations/meta/_journal.json @@ -29,6 +29,13 @@ "when": 1776890185225, "tag": "0003_loving_centennial", "breakpoints": true + }, + { + "idx": 4, + "version": "7", + "when": 1777474513745, + "tag": "0004_furry_scourge", + "breakpoints": true } ] } diff --git a/app/src/app/(dashboard)/[id]/edit/page.tsx b/app/src/app/(dashboard)/[id]/edit/page.tsx index 4840bd76..74f61ec2 100644 --- a/app/src/app/(dashboard)/[id]/edit/page.tsx +++ b/app/src/app/(dashboard)/[id]/edit/page.tsx @@ -554,6 +554,7 @@ export default function DashboardEditorPage({ initialPreviewData={ editorMode === "edit" ? cachedPreviewData : undefined } + canWrite={session?.user?.canWrite !== false} /> {templateWidget && diff --git a/app/src/app/api/connections/[id]/databases/__tests__/route.test.ts b/app/src/app/api/connections/[id]/databases/__tests__/route.test.ts new file mode 100644 index 00000000..b1e3c491 --- /dev/null +++ b/app/src/app/api/connections/[id]/databases/__tests__/route.test.ts @@ -0,0 +1,155 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { makeRequest } from "@/__tests__/helpers/request-helpers"; +import { nextResponseMockFactory } from "@/__tests__/helpers/next-mocks"; + +// --------------------------------------------------------------------------- +// Mocks +// --------------------------------------------------------------------------- + +const mockRequireSession = vi.fn< + () => Promise<{ + userId: string; + role: string; + canWrite: boolean; + tenantId: string; + }> +>(); +const mockDb = { + select: vi.fn(), +}; +const mockDecryptJson = vi.fn(); +const mockListDatabases = vi.fn(); + +vi.mock("@/lib/auth/session", () => ({ requireSession: mockRequireSession })); +vi.mock("@/lib/db", () => ({ db: mockDb })); +vi.mock("@/lib/crypto/crypto", () => ({ + decryptJson: mockDecryptJson, + encryptJson: vi.fn(), +})); +vi.mock("@/lib/query/query-executor", () => ({ + listDatabases: mockListDatabases, +})); +vi.mock("next/server", () => nextResponseMockFactory()); +vi.mock("@/lib/auth/errors", () => ({ + UnauthorizedError: class extends Error { + constructor() { + super("Unauthorized"); + } + }, +})); + +const SESSION = { + userId: "user-1", + role: "creator", + canWrite: true, + tenantId: "t1", +}; + +function drizzleSelectChain(rows: unknown[]) { + const chain = { + from: () => chain, + where: () => chain, + limit: () => Promise.resolve(rows), + }; + return chain; +} + +const fakeConnection = { + id: "c1", + type: "neo4j", + configEncrypted: "enc", + userId: "user-1", + tenantId: "t1", +}; + +// --------------------------------------------------------------------------- +// Tests +// --------------------------------------------------------------------------- + +describe("GET /api/connections/[id]/databases", () => { + let GET: ( + req: Request, + ctx: { params: Promise<{ id: string }> }, + ) => Promise; + + beforeEach(async () => { + vi.resetModules(); + vi.clearAllMocks(); + const mod = await import("../route"); + GET = mod.GET; + }); + + it("returns 401 when unauthenticated", async () => { + mockRequireSession.mockRejectedValue(new Error("Unauthorized")); + const res = await GET(makeRequest({}), { + params: Promise.resolve({ id: "c1" }), + }); + expect(res.status).toBe(401); + }); + + it("returns 404 when connection not found", async () => { + mockRequireSession.mockResolvedValue(SESSION); + mockDb.select.mockReturnValue(drizzleSelectChain([])); + const res = await GET(makeRequest({}), { + params: Promise.resolve({ id: "c1" }), + }); + expect(res.status).toBe(404); + }); + + it("returns database list on success", async () => { + mockRequireSession.mockResolvedValue(SESSION); + mockDb.select.mockReturnValue(drizzleSelectChain([fakeConnection])); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); + mockListDatabases.mockResolvedValue(["neo4j", "movies"]); + + const res = await GET(makeRequest({}), { + params: Promise.resolve({ id: "c1" }), + }); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.data.databases).toEqual(["neo4j", "movies"]); + }); + + it("calls listDatabases with correct type and credentials", async () => { + mockRequireSession.mockResolvedValue(SESSION); + mockDb.select.mockReturnValue(drizzleSelectChain([fakeConnection])); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); + mockListDatabases.mockResolvedValue([]); + + await GET(makeRequest({}), { + params: Promise.resolve({ id: "c1" }), + }); + + expect(mockListDatabases).toHaveBeenCalledWith("neo4j", { + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); + }); + + it("returns empty array when listDatabases throws", async () => { + mockRequireSession.mockResolvedValue(SESSION); + mockDb.select.mockReturnValue(drizzleSelectChain([fakeConnection])); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); + mockListDatabases.mockRejectedValue(new Error("Driver error")); + + const res = await GET(makeRequest({}), { + params: Promise.resolve({ id: "c1" }), + }); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.data.databases).toEqual([]); + }); +}); diff --git a/app/src/app/api/connections/[id]/databases/route.ts b/app/src/app/api/connections/[id]/databases/route.ts new file mode 100644 index 00000000..f441fa62 --- /dev/null +++ b/app/src/app/api/connections/[id]/databases/route.ts @@ -0,0 +1,51 @@ +import { and, eq } from "drizzle-orm"; +import { db } from "@/lib/db"; +import { connections } from "@/lib/db/schema"; +import { requireSession } from "@/lib/auth/session"; +import { decryptJson } from "@/lib/crypto/crypto"; +import { listDatabases } from "@/lib/query/query-executor"; +import type { ConnectionCredentials, DbType } from "@/lib/query/query-executor"; +import { apiSuccess } from "@/lib/api/api-response"; +import { notFound, handleRouteError } from "@/lib/api/api-utils"; + +export async function GET( + _request: Request, + { params }: { params: Promise<{ id: string }> }, +) { + try { + const { userId, tenantId } = await requireSession(); + const { id } = await params; + + const [connection] = await db + .select() + .from(connections) + .where( + and( + eq(connections.id, id), + eq(connections.userId, userId), + eq(connections.tenantId, tenantId), + ), + ) + .limit(1); + + if (!connection) { + return notFound("Connection not found"); + } + + const credentials = decryptJson( + connection.configEncrypted, + ); + + try { + const databases = await listDatabases( + connection.type as DbType, + credentials, + ); + return apiSuccess({ databases }); + } catch { + return apiSuccess({ databases: [] }); + } + } catch (error) { + return handleRouteError(error, "Failed to list databases"); + } +} diff --git a/app/src/app/api/connections/list-databases-inline/__tests__/route.test.ts b/app/src/app/api/connections/list-databases-inline/__tests__/route.test.ts new file mode 100644 index 00000000..be3ce287 --- /dev/null +++ b/app/src/app/api/connections/list-databases-inline/__tests__/route.test.ts @@ -0,0 +1,140 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { makeRequest } from "@/__tests__/helpers/request-helpers"; +import { nextResponseMockFactory } from "@/__tests__/helpers/next-mocks"; + +// --------------------------------------------------------------------------- +// Mocks +// --------------------------------------------------------------------------- + +const mockRequireSession = vi.fn< + () => Promise<{ + userId: string; + role: string; + canWrite: boolean; + tenantId: string; + }> +>(); +const mockListDatabases = vi.fn(); +const mockListSchemas = vi.fn(); + +vi.mock("@/lib/auth/session", () => ({ requireSession: mockRequireSession })); +vi.mock("@/lib/query/query-executor", () => ({ + listDatabases: mockListDatabases, + listSchemas: mockListSchemas, +})); +vi.mock("next/server", () => nextResponseMockFactory()); +vi.mock("@/lib/auth/errors", () => ({ + UnauthorizedError: class extends Error { + constructor() { + super("Unauthorized"); + } + }, +})); + +const SESSION = { + userId: "user-1", + role: "creator", + canWrite: true, + tenantId: "t1", +}; + +// --------------------------------------------------------------------------- +// Tests +// --------------------------------------------------------------------------- + +describe("POST /api/connections/list-databases-inline", () => { + let POST: (req: Request) => Promise; + + beforeEach(async () => { + vi.resetModules(); + vi.clearAllMocks(); + const mod = await import("../route"); + POST = mod.POST; + }); + + it("returns 401 when unauthenticated", async () => { + mockRequireSession.mockRejectedValue(new Error("Unauthorized")); + const res = await POST(makeRequest({})); + expect(res.status).toBe(401); + }); + + it("returns 400 for missing type", async () => { + mockRequireSession.mockResolvedValue(SESSION); + const res = await POST( + makeRequest({ config: { uri: "x", username: "u", password: "p" } }), + ); + expect(res.status).toBe(400); + }); + + it("returns 400 for invalid type", async () => { + mockRequireSession.mockResolvedValue(SESSION); + const res = await POST( + makeRequest({ + type: "mysql", + config: { uri: "x", username: "u", password: "p" }, + }), + ); + expect(res.status).toBe(400); + }); + + it("returns databases on success for neo4j", async () => { + mockRequireSession.mockResolvedValue(SESSION); + mockListDatabases.mockResolvedValue(["neo4j", "movies"]); + + const res = await POST( + makeRequest({ + type: "neo4j", + config: { + uri: "bolt://localhost:7687", + username: "neo4j", + password: "pass", + }, + }), + ); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.data.databases).toEqual(["neo4j", "movies"]); + }); + + it("returns databases and schemas for postgresql", async () => { + mockRequireSession.mockResolvedValue(SESSION); + mockListDatabases.mockResolvedValue(["postgres", "mydb"]); + mockListSchemas.mockResolvedValue(["public", "information_schema"]); + + const res = await POST( + makeRequest({ + type: "postgresql", + config: { + uri: "postgresql://localhost:5432/postgres", + username: "pg", + password: "pass", + }, + }), + ); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.data.databases).toEqual(["postgres", "mydb"]); + expect(body.data.schemas).toEqual(["public", "information_schema"]); + }); + + it("returns empty arrays when listing fails", async () => { + mockRequireSession.mockResolvedValue(SESSION); + mockListDatabases.mockRejectedValue(new Error("fail")); + mockListSchemas.mockRejectedValue(new Error("fail")); + + const res = await POST( + makeRequest({ + type: "postgresql", + config: { + uri: "postgresql://localhost:5432/postgres", + username: "pg", + password: "pass", + }, + }), + ); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.data.databases).toEqual([]); + expect(body.data.schemas).toEqual([]); + }); +}); diff --git a/app/src/app/api/connections/list-databases-inline/route.ts b/app/src/app/api/connections/list-databases-inline/route.ts new file mode 100644 index 00000000..f46babb1 --- /dev/null +++ b/app/src/app/api/connections/list-databases-inline/route.ts @@ -0,0 +1,46 @@ +import { requireSession } from "@/lib/auth/session"; +import { listDatabases, listSchemas } from "@/lib/query/query-executor"; +import type { DbType } from "@/lib/query/query-executor"; +import { testInlineSchema } from "@/lib/shared/schemas"; +import { apiSuccess } from "@/lib/api/api-response"; +import { handleRouteError, validateBody } from "@/lib/api/api-utils"; + +export async function POST(request: Request) { + try { + await requireSession(); + const body = await request.json(); + const validation = validateBody(testInlineSchema, body); + + if (!validation.success) { + return validation.response; + } + + const { type, config } = validation.data; + + const credentials = { + uri: config.uri, + username: config.username, + password: config.password, + database: config.database, + }; + + const databases = await listDatabases(type as DbType, credentials).catch( + () => [] as string[], + ); + + // For PostgreSQL, also fetch schemas + let schemas: string[] | undefined; + if (type === "postgresql") { + schemas = await listSchemas(type as DbType, credentials).catch( + () => [] as string[], + ); + } + + return apiSuccess({ + databases, + ...(schemas !== undefined ? { schemas } : {}), + }); + } catch (error) { + return handleRouteError(error, "Failed to list databases"); + } +} diff --git a/app/src/app/api/connections/route.ts b/app/src/app/api/connections/route.ts index 190e14d5..b4d55583 100644 --- a/app/src/app/api/connections/route.ts +++ b/app/src/app/api/connections/route.ts @@ -29,6 +29,7 @@ export async function GET(request: Request) { id: connections.id, name: connections.name, type: connections.type, + allowPerCardDb: connections.allowPerCardDb, createdAt: connections.createdAt, updatedAt: connections.updatedAt, }) diff --git a/app/src/app/api/query/route.ts b/app/src/app/api/query/route.ts index d7f0eeb1..50950e2c 100644 --- a/app/src/app/api/query/route.ts +++ b/app/src/app/api/query/route.ts @@ -37,6 +37,8 @@ const querySchema = z.object({ params: z.record(z.unknown()).optional(), /** Optional defense-in-depth field: when provided, must match the session tenant. */ tenantId: z.string().optional(), + /** Per-card database override — used when the connection allows per-card DB selection. */ + database: z.string().optional(), }); export async function POST(request: Request) { @@ -59,6 +61,7 @@ async function handleReadQuery(request: Request): Promise { query, params, tenantId: bodyTenantId, + database: databaseOverride, } = validation.data; // Defense-in-depth: if the caller explicitly passes a tenantId, @@ -124,6 +127,12 @@ async function handleReadQuery(request: Request): Promise { connection.configEncrypted, ); + // Apply per-card database override if the connection allows it + const effectiveCredentials = + databaseOverride && connection.allowPerCardDb + ? { ...credentials, database: databaseOverride } + : credentials; + const metadata: Record = { priority }; if (requestId) metadata.requestId = requestId; @@ -140,7 +149,7 @@ async function handleReadQuery(request: Request): Promise { const queryStart = performance.now(); const result = await runPipeline(ctx, async (pipelineCtx) => - executeQuery(pipelineCtx.connectionType, credentials, { + executeQuery(pipelineCtx.connectionType, effectiveCredentials, { query: pipelineCtx.query, params: pipelineCtx.params, }), diff --git a/app/src/app/api/query/write/__tests__/route.test.ts b/app/src/app/api/query/write/__tests__/route.test.ts index 62637311..7de0e4bd 100644 --- a/app/src/app/api/query/write/__tests__/route.test.ts +++ b/app/src/app/api/query/write/__tests__/route.test.ts @@ -78,6 +78,37 @@ const fakeConnection = { userId: "user-1", }; +const fakeDashboard = { + id: "d1", + tenantId: "tenant-a", + layoutJson: { + version: 2, + pages: [ + { + id: "p1", + title: "Page 1", + widgets: [ + { + id: "w1", + chartType: "table", + connectionId: "c1", + query: "CREATE (n:Test)", + allowWrites: true, + }, + ], + gridLayout: [], + }, + ], + }, +}; + +/** Sets up mocks for both connection + dashboard lookups. */ +function mockConnectionAndDashboard() { + mockDb.select + .mockReturnValueOnce(drizzleSelectChain([fakeConnection])) + .mockReturnValueOnce(drizzleSelectChain([fakeDashboard])); +} + // --------------------------------------------------------------------------- // Tests // --------------------------------------------------------------------------- @@ -131,7 +162,12 @@ describe("POST /api/query/write", () => { mockRequireSession.mockResolvedValue(writerSession); mockDb.select.mockReturnValue(drizzleSelectChain([])); const res = await POST( - makeRequest({ connectionId: "c1", query: "CREATE (n:Test)" }), + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), ); expect(res.status).toBe(404); const body = await res.json(); @@ -140,7 +176,7 @@ describe("POST /api/query/write", () => { it("returns 200 on success and calls executeQuery with accessMode WRITE", async () => { mockRequireSession.mockResolvedValue(writerSession); - mockDb.select.mockReturnValue(drizzleSelectChain([fakeConnection])); + mockConnectionAndDashboard(); mockDecryptJson.mockReturnValue({ uri: "bolt://localhost", username: "neo4j", @@ -149,7 +185,12 @@ describe("POST /api/query/write", () => { mockExecuteQuery.mockResolvedValue({ data: { nodesCreated: 1 } }); const res = await POST( - makeRequest({ connectionId: "c1", query: "CREATE (n:Test)" }), + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), ); expect(res.status).toBe(200); @@ -171,7 +212,7 @@ describe("POST /api/query/write", () => { it("passes params correctly to executeQuery", async () => { mockRequireSession.mockResolvedValue(writerSession); - mockDb.select.mockReturnValue(drizzleSelectChain([fakeConnection])); + mockConnectionAndDashboard(); mockDecryptJson.mockReturnValue({ uri: "bolt://localhost", username: "neo4j", @@ -185,6 +226,8 @@ describe("POST /api/query/write", () => { connectionId: "c1", query: "CREATE (n:Person {name: $param_name, age: $param_age})", params, + widgetId: "w1", + dashboardId: "d1", }), ); expect(res.status).toBe(200); @@ -201,7 +244,7 @@ describe("POST /api/query/write", () => { it("returns 500 when executeQuery throws", async () => { mockRequireSession.mockResolvedValue(writerSession); - mockDb.select.mockReturnValue(drizzleSelectChain([fakeConnection])); + mockConnectionAndDashboard(); mockDecryptJson.mockReturnValue({ uri: "bolt://localhost", username: "neo4j", @@ -210,7 +253,12 @@ describe("POST /api/query/write", () => { mockExecuteQuery.mockRejectedValue(new Error("Driver error")); const res = await POST( - makeRequest({ connectionId: "c1", query: "CREATE (n:Test)" }), + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), ); expect(res.status).toBe(500); const body = await res.json(); @@ -221,7 +269,12 @@ describe("POST /api/query/write", () => { mockRequireSession.mockResolvedValue(writerSession); mockDb.select.mockReturnValue(drizzleSelectChain([])); const res = await POST( - makeRequest({ connectionId: "c1", query: "CREATE (n:Test)" }), + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), ); expect(res.status).toBe(404); }); @@ -233,12 +286,63 @@ describe("POST /api/query/write", () => { }); mockDb.select.mockReturnValue(drizzleSelectChain([])); const res = await POST( - makeRequest({ connectionId: "c1", query: "CREATE (n:Test)" }), + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), ); expect(res.status).toBe(404); }); - it("does not apply MAX_ROWS truncation on write results", async () => { + it("returns 403 when widget allowWrites is false", async () => { + mockRequireSession.mockResolvedValue(writerSession); + // First select: connection found. Second select: dashboard found. + mockDb.select + .mockReturnValueOnce(drizzleSelectChain([fakeConnection])) + .mockReturnValueOnce( + drizzleSelectChain([ + { + id: "d1", + tenantId: "tenant-a", + layoutJson: { + version: 2, + pages: [ + { + id: "p1", + title: "Page 1", + widgets: [ + { + id: "w1", + chartType: "table", + connectionId: "c1", + query: "CREATE (n:Test)", + allowWrites: false, + }, + ], + gridLayout: [], + }, + ], + }, + }, + ]), + ); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), + ); + expect(res.status).toBe(403); + const body = await res.json(); + expect(body.error.message).toMatch(/write mode.*not enabled/i); + }); + + it("succeeds without widgetId (legacy form-widget path)", async () => { mockRequireSession.mockResolvedValue(writerSession); mockDb.select.mockReturnValue(drizzleSelectChain([fakeConnection])); mockDecryptJson.mockReturnValue({ @@ -246,12 +350,103 @@ describe("POST /api/query/write", () => { username: "neo4j", password: "pass", }); + mockExecuteQuery.mockResolvedValue({ data: { ok: 1 } }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + // No widgetId or dashboardId — form widget legacy path + }), + ); + expect(res.status).toBe(200); + }); + + it("returns 200 when widget has allowWrites=true", async () => { + mockRequireSession.mockResolvedValue(writerSession); + mockDb.select + .mockReturnValueOnce(drizzleSelectChain([fakeConnection])) + .mockReturnValueOnce( + drizzleSelectChain([ + { + id: "d1", + tenantId: "tenant-a", + layoutJson: { + version: 2, + pages: [ + { + id: "p1", + title: "Page 1", + widgets: [ + { + id: "w1", + chartType: "table", + connectionId: "c1", + query: "CREATE (n:Test)", + allowWrites: true, + }, + ], + gridLayout: [], + }, + ], + }, + }, + ]), + ); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); + mockExecuteQuery.mockResolvedValue({ data: { nodesCreated: 1 } }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), + ); + expect(res.status).toBe(200); + }); + + it("returns 404 when dashboard not found", async () => { + mockRequireSession.mockResolvedValue(writerSession); + mockDb.select + .mockReturnValueOnce(drizzleSelectChain([fakeConnection])) + .mockReturnValueOnce(drizzleSelectChain([])); // dashboard not found + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), + ); + expect(res.status).toBe(404); + }); + + it("does not apply MAX_ROWS truncation on write results", async () => { + mockRequireSession.mockResolvedValue(writerSession); + mockConnectionAndDashboard(); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); // Return a large result (write routes should not truncate) const bigData = Array.from({ length: 15000 }, (_, i) => ({ n: i })); mockExecuteQuery.mockResolvedValue({ data: bigData }); const res = await POST( - makeRequest({ connectionId: "c1", query: "CREATE (n:Test)" }), + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), ); expect(res.status).toBe(200); const body = await res.json(); diff --git a/app/src/app/api/query/write/route.ts b/app/src/app/api/query/write/route.ts index dbad7366..eeed3222 100644 --- a/app/src/app/api/query/write/route.ts +++ b/app/src/app/api/query/write/route.ts @@ -1,7 +1,8 @@ import { z } from "zod"; import { and, eq } from "drizzle-orm"; import { db } from "@/lib/db"; -import { connections } from "@/lib/db/schema"; +import { connections, dashboards } from "@/lib/db/schema"; +import type { DashboardLayoutV2, DashboardWidget } from "@/lib/db/schema"; import { requireSession } from "@/lib/auth/session"; import { decryptJson } from "@/lib/crypto/crypto"; import { executeQuery } from "@/lib/query/query-executor"; @@ -22,6 +23,10 @@ const writeQuerySchema = z.object({ connectionId: z.string().min(1), query: z.string().min(1), params: z.record(z.unknown()).optional(), + /** Widget ID — required so the server can verify allowWrites on the widget. */ + widgetId: z.string().min(1).optional(), + /** Dashboard ID — required alongside widgetId for lookup. */ + dashboardId: z.string().min(1).optional(), }); export async function POST(request: Request) { @@ -41,7 +46,8 @@ async function handleWriteQuery(request: Request): Promise { const validation = validateBody(writeQuerySchema, body); if (!validation.success) return validation.response; - const { connectionId, query, params } = validation.data; + const { connectionId, query, params, widgetId, dashboardId } = + validation.data; // Only connection owners can execute write queries (tenant-scoped) const [connection] = await db @@ -60,10 +66,55 @@ async function handleWriteQuery(request: Request): Promise { return notFound("Connection not found"); } + // Per-widget write enforcement: when widgetId + dashboardId are provided, + // verify the widget's allowWrites flag from the dashboard layout. + // Form widgets (legacy path) omit these fields — user-level canWrite + // is still enforced above. + let widgetDatabaseOverride: string | undefined; + if (widgetId && dashboardId) { + const [dashboard] = await db + .select() + .from(dashboards) + .where( + and( + eq(dashboards.id, dashboardId), + eq(dashboards.tenantId, tenantId), + ), + ) + .limit(1); + + if (!dashboard) { + return notFound("Dashboard not found"); + } + + const layout = dashboard.layoutJson as DashboardLayoutV2 | null; + const widget = layout?.pages + ?.flatMap((p) => p.widgets) + .find((w: DashboardWidget) => w.id === widgetId); + + if (!widget) { + return notFound("Widget not found in dashboard"); + } + + if (!widget.allowWrites) { + return forbidden("Write mode is not enabled for this widget"); + } + + // Only apply per-card DB override when the connection allows it + if (widget.database && connection.allowPerCardDb) { + widgetDatabaseOverride = widget.database; + } + } + const credentials = decryptJson( connection.configEncrypted, ); + // Use per-card database override if set and allowed + const effectiveCredentials = widgetDatabaseOverride + ? { ...credentials, database: widgetDatabaseOverride } + : credentials; + // Write queries always run at P1 — they represent explicit user // intent (form submit, manual write) and must not be shed under // load like auto-refresh reads can be. @@ -85,7 +136,7 @@ async function handleWriteQuery(request: Request): Promise { const result = await runPipeline(ctx, async (pipelineCtx) => executeQuery( pipelineCtx.connectionType, - credentials, + effectiveCredentials, { query: pipelineCtx.query, params: pipelineCtx.params }, { accessMode: "WRITE" }, ), diff --git a/app/src/components/card-container.tsx b/app/src/components/card-container.tsx index 0263b901..bf207c6c 100644 --- a/app/src/components/card-container.tsx +++ b/app/src/components/card-container.tsx @@ -226,6 +226,7 @@ export function CardContainer({ connectionId: widget.connectionId, query: widget.query, params: widget.params as Record | undefined, + database: widget.database, }; const manualEnabled = isManualRun ? hasEverRun : true; const { missingParams, ...widgetQuery } = useWidgetQuery(queryInput, { diff --git a/app/src/components/widget-editor-modal.tsx b/app/src/components/widget-editor-modal.tsx index ab517977..d097701d 100644 --- a/app/src/components/widget-editor-modal.tsx +++ b/app/src/components/widget-editor-modal.tsx @@ -40,6 +40,7 @@ import { Alert, AlertTitle, AlertDescription, + Checkbox, Dialog, DialogContent, DialogHeader, @@ -66,6 +67,7 @@ import { ActionRulesEditor } from "./widget-editor/action-rules-editor"; import { StylingRulesEditor } from "./widget-editor/styling-rules-editor"; import { useWidgetEditorStore } from "@/stores/widget-editor-store"; import { TransformEditor } from "./widget-editor/transform-editor"; +import { DatabaseSelector } from "./widget-editor/database-selector"; import { TemplateBrowser } from "./widget-editor/template-browser"; import { useAutoPreview } from "./widget-editor/use-auto-preview"; import { AdvancedCachingSection } from "./widget-editor/advanced-caching-section"; @@ -96,6 +98,8 @@ export interface WidgetEditorModalProps { initialTemplate?: WidgetTemplate; /** Cached query data from the dashboard — shown as preview immediately without re-running */ initialPreviewData?: { data: unknown; resultId: string }; + /** Whether the current user has write permission. Controls visibility of the write toggle. */ + canWrite?: boolean; } export function WidgetEditorModal({ @@ -110,6 +114,7 @@ export function WidgetEditorModal({ layout, initialTemplate, initialPreviewData, + canWrite = false, }: WidgetEditorModalProps) { const isLabMode = mode === "lab-edit" || mode === "lab-create"; @@ -119,6 +124,10 @@ export function WidgetEditorModal({ const setChartType = useWidgetEditorStore((s) => s.setChartType); const connectionId = useWidgetEditorStore((s) => s.connectionId); const setConnectionId = useWidgetEditorStore((s) => s.setConnectionId); + const database = useWidgetEditorStore((s) => s.database); + const setDatabase = useWidgetEditorStore((s) => s.setDatabase); + const allowWrites = useWidgetEditorStore((s) => s.allowWrites); + const setAllowWrites = useWidgetEditorStore((s) => s.setAllowWrites); const query = useWidgetEditorStore((s) => s.query); const chartOptions = useWidgetEditorStore((s) => s.chartOptions); const setChartOptions = useWidgetEditorStore((s) => s.setChartOptions); @@ -714,6 +723,18 @@ export function WidgetEditorModal({ /> )} + {/* Per-card database selector */} + {!isParamSelect && + !isContentOnly && + selectedConnection?.allowPerCardDb && + connectionId && ( + + )} + {/* Form fields editor (form type only) */} {isForm && } @@ -784,6 +805,34 @@ export function WidgetEditorModal({ /> ) : (
+ {/* Write mode — only for users with canWrite, not content-only widgets */} + {canWrite && !isLabMode && !isContentOnly && ( +
+

+ Write Mode +

+
+ + setAllowWrites(!!checked) + } + /> + +
+ {allowWrites && ( +

+ This widget can execute write queries. The + server still requires your account to have write + permission. +

+ )} +
+ )} + {chartSupportsClickAction(chartType) && ( void; +} + +export function DatabaseSelector({ + connectionId, + database, + onDatabaseChange, +}: DatabaseSelectorProps) { + const { data, isLoading } = useConnectionDatabases(connectionId); + const databases = data?.databases ?? []; + + if (isLoading) { + return ( +
+ +

Loading databases...

+
+ ); + } + + if (databases.length === 0) { + return null; + } + + return ( +
+ + +
+ ); +} diff --git a/app/src/components/widget-editor/use-widget-save.ts b/app/src/components/widget-editor/use-widget-save.ts index bc471c72..6f7b8e71 100644 --- a/app/src/components/widget-editor/use-widget-save.ts +++ b/app/src/components/widget-editor/use-widget-save.ts @@ -29,6 +29,8 @@ export function useBuildWidgetForSave( const dateSub = useWidgetEditorStore((s) => s.dateSub); const multiSelect = useWidgetEditorStore((s) => s.multiSelect); const paramWidgetName = useWidgetEditorStore((s) => s.paramWidgetName); + const database = useWidgetEditorStore((s) => s.database); + const allowWrites = useWidgetEditorStore((s) => s.allowWrites); const templateId = useWidgetEditorStore((s) => s.templateId); const templateSyncedAt = useWidgetEditorStore((s) => s.templateSyncedAt); const buildClickAction = useWidgetEditorStore((s) => s.buildClickAction); @@ -82,6 +84,8 @@ export function useBuildWidgetForSave( : connectionId, query: isParamSelect || isContentOnly ? "" : query, params: existingWidget?.params, + database: isContentOnly ? undefined : database || undefined, + allowWrites: isContentOnly ? undefined : allowWrites || undefined, settings: { ...(existingWidget?.settings ?? {}), title: title || undefined, @@ -117,6 +121,8 @@ export function useBuildWidgetForSave( layout, chartType, connectionId, + database, + allowWrites, query, title, chartOptions, diff --git a/app/src/hooks/use-connection-databases.ts b/app/src/hooks/use-connection-databases.ts new file mode 100644 index 00000000..c15aeae3 --- /dev/null +++ b/app/src/hooks/use-connection-databases.ts @@ -0,0 +1,26 @@ +import { useQuery } from "@tanstack/react-query"; +import { unwrapResponse } from "@/lib/api/api-client"; + +interface DatabaseListResult { + databases: string[]; + schemas?: string[]; +} + +/** + * Fetches the list of databases (and schemas for PG) for a saved connection. + * Only runs when connectionId is provided and enabled is true. + */ +export function useConnectionDatabases( + connectionId: string | undefined, + enabled = true, +) { + return useQuery({ + queryKey: ["connection-databases", connectionId], + queryFn: async () => { + const res = await fetch(`/api/connections/${connectionId}/databases`); + return unwrapResponse(res); + }, + enabled: !!connectionId && enabled, + staleTime: 60_000, // Cache for 1 minute + }); +} diff --git a/app/src/hooks/use-connections.ts b/app/src/hooks/use-connections.ts index 9359a045..051d6368 100644 --- a/app/src/hooks/use-connections.ts +++ b/app/src/hooks/use-connections.ts @@ -8,6 +8,8 @@ export interface ConnectionListItem { id: string; name: string; type: ConnectorType; + /** When true, widgets can override the connection's default database per-card. */ + allowPerCardDb: boolean; createdAt: string; updatedAt: string; } diff --git a/app/src/hooks/use-query-execution.ts b/app/src/hooks/use-query-execution.ts index 78a92b37..908ad316 100644 --- a/app/src/hooks/use-query-execution.ts +++ b/app/src/hooks/use-query-execution.ts @@ -7,6 +7,8 @@ interface QueryInput { connectionId: string; query: string; params?: Record; + /** Per-card database override. */ + database?: string; } interface QueryResult { diff --git a/app/src/hooks/use-widget-query.ts b/app/src/hooks/use-widget-query.ts index 68b5b63c..585ebd16 100644 --- a/app/src/hooks/use-widget-query.ts +++ b/app/src/hooks/use-widget-query.ts @@ -15,6 +15,8 @@ interface WidgetQueryInput { connectionId: string; query: string; params?: Record; + /** Per-card database override. */ + database?: string; } interface QueryResult { diff --git a/app/src/lib/db/schema.ts b/app/src/lib/db/schema.ts index f2404622..3a063a5e 100644 --- a/app/src/lib/db/schema.ts +++ b/app/src/lib/db/schema.ts @@ -109,6 +109,8 @@ export const connections = pgTable("connection", { name: text("name").notNull(), type: connectionTypeEnum("type").notNull(), configEncrypted: text("configEncrypted").notNull(), + /** When true, widget editors can override the connection's default database per-card. */ + allowPerCardDb: boolean("allow_per_card_db").notNull().default(true), createdAt: timestamp("createdAt", { mode: "date" }).defaultNow(), updatedAt: timestamp("updatedAt", { mode: "date" }).defaultNow(), }); @@ -246,6 +248,13 @@ export interface DashboardWidget { query: string; params?: Record; settings?: Record; + /** Per-card database override. When set, queries run against this database + * instead of the connection's default. Only effective when the connection + * has allowPerCardDb=true. */ + database?: string; + /** When true, this widget is allowed to execute write queries. + * Server enforces: write only if BOTH user.canWrite AND widget.allowWrites. */ + allowWrites?: boolean; /** ID of the Widget Lab template this widget was created from. */ templateId?: string; /** ISO timestamp of the template snapshot at apply-time (= template.updatedAt). */ diff --git a/app/src/lib/query/query-executor.ts b/app/src/lib/query/query-executor.ts index cec5fdf9..0a498bc8 100644 --- a/app/src/lib/query/query-executor.ts +++ b/app/src/lib/query/query-executor.ts @@ -295,3 +295,32 @@ export async function testConnection( return connModule.checkConnection(config); } + +/** + * List available databases on the connection server. + * Returns an empty array if the operation is unsupported or fails. + */ +export async function listDatabases( + type: DbType, + credentials: ConnectionCredentials, +): Promise { + const connModule = getOrCreateModule(type, credentials) as { + listDatabases: () => Promise; + }; + return connModule.listDatabases(); +} + +/** + * List available schemas in the current database (PostgreSQL only). + * Returns an empty array if the operation is unsupported or fails. + */ +export async function listSchemas( + type: DbType, + credentials: ConnectionCredentials, +): Promise { + const connModule = getOrCreateModule(type, credentials) as { + listSchemas?: () => Promise; + }; + if (typeof connModule.listSchemas !== "function") return []; + return connModule.listSchemas(); +} diff --git a/app/src/stores/widget-editor-store.ts b/app/src/stores/widget-editor-store.ts index 6f486d74..284fdca9 100644 --- a/app/src/stores/widget-editor-store.ts +++ b/app/src/stores/widget-editor-store.ts @@ -64,6 +64,12 @@ export interface WidgetEditorState { templateId?: string; templateSyncedAt?: string; + // ── Per-card database + write mode ─────────────────────────────── + /** Per-card database override (empty = use connection default). */ + database: string; + /** When true, this widget may execute write queries. */ + allowWrites: boolean; + // ── Chart options ─────────────────────────────────────────────── chartOptions: Record; enableCache: boolean; @@ -118,6 +124,8 @@ export interface WidgetEditorState { setConnectionId: (id: string) => void; setQuery: (q: string) => void; setTitle: (t: string) => void; + setDatabase: (v: string) => void; + setAllowWrites: (v: boolean) => void; setChartOptions: ( opts: | Record @@ -238,6 +246,8 @@ function getInitialState() { title: "", templateId: undefined as string | undefined, templateSyncedAt: undefined as string | undefined, + database: "", + allowWrites: false, chartOptions: getChartDefaults("bar"), enableCache: true, cacheTtlMinutes: 5, @@ -280,6 +290,8 @@ export const useWidgetEditorStore = create((set, get) => ({ if (!chartSupportsStyling(t)) set({ stylingEnabled: false }); }, setConnectionId: (id) => set({ connectionId: id }), + setDatabase: (v) => set({ database: v }), + setAllowWrites: (v) => set({ allowWrites: v }), setQuery: (q) => set({ query: q }), setTitle: (t) => set({ title: t }), setChartOptions: (opts) => @@ -390,6 +402,8 @@ export const useWidgetEditorStore = create((set, get) => ({ Object.keys(opts).length > 0 ? opts : getChartDefaults(widget.chartType), + database: widget.database ?? "", + allowWrites: widget.allowWrites ?? false, enableCache: s.enableCache !== false, cacheTtlMinutes: (s.cacheTtlMinutes as number | undefined) ?? 5, clickActionEnabled: !!ca, diff --git a/connection/__tests__/connection/list-databases.ts b/connection/__tests__/connection/list-databases.ts new file mode 100644 index 00000000..d411f297 --- /dev/null +++ b/connection/__tests__/connection/list-databases.ts @@ -0,0 +1,177 @@ +import { Neo4jConnectionModule } from "../../src/neo4j/Neo4jConnectionModule"; +import { PostgresConnectionModule } from "../../src/postgresql/PostgresConnectionModule"; +import { getNeo4jAuth, NEO4J_TEST_CONNECTION_CONFIG } from "../utils/setup"; +import { AuthType } from "../../src/generalized/interfaces"; +import { PostgreSqlContainer } from "@testcontainers/postgresql"; + +describe("Neo4j listDatabases", () => { + let connectionModule: Neo4jConnectionModule; + + beforeAll(() => { + const config = getNeo4jAuth(); + connectionModule = new Neo4jConnectionModule(config); + }); + + afterAll(async () => { + await connectionModule.close(); + }); + + test("should return an array of database names", async () => { + const databases = await connectionModule.listDatabases(); + expect(Array.isArray(databases)).toBe(true); + // Enterprise Neo4j always has at least "neo4j" and "system" + expect(databases.length).toBeGreaterThanOrEqual(1); + // "neo4j" is the default database + expect(databases).toContain("neo4j"); + }); + + test("should filter out the system database", async () => { + const databases = await connectionModule.listDatabases(); + expect(databases).not.toContain("system"); + }); + + test("should only include online databases", async () => { + const databases = await connectionModule.listDatabases(); + // All returned databases should be queryable (online) + for (const db of databases) { + expect(typeof db).toBe("string"); + expect(db.length).toBeGreaterThan(0); + } + }); +}); + +describe("Neo4j listDatabases graceful fallback", () => { + test("should return empty array when SHOW DATABASES is not supported", async () => { + // Create a module with invalid config to simulate failure + // In practice this tests the catch path — SHOW DATABASES fails gracefully + const config = getNeo4jAuth(); + const module = new Neo4jConnectionModule(config); + + // The method should never throw — it returns [] on failure + const databases = await module.listDatabases(); + expect(Array.isArray(databases)).toBe(true); + + await module.close(); + }); +}); + +describe("PostgreSQL listDatabases", () => { + let container: any; + let connectionModule: PostgresConnectionModule; + + beforeAll(async () => { + container = await new PostgreSqlContainer("postgres:16-alpine").start(); + connectionModule = new PostgresConnectionModule({ + username: container.getUsername(), + password: container.getPassword(), + authType: AuthType.NATIVE, + uri: `postgresql://${container.getHost()}:${container.getPort()}/${container.getDatabase()}`, + }); + + const authenticated = + await connectionModule.authModule.verifyAuthentication(); + expect(authenticated).toBe(true); + }, 60000); + + afterAll(async () => { + if (connectionModule) { + try { + await connectionModule.close(); + } catch { + // Suppress shutdown errors + } + } + try { + await container.stop(); + } catch { + // Suppress container shutdown errors + } + }); + + test("should return an array of database names", async () => { + const databases = await connectionModule.listDatabases(); + expect(Array.isArray(databases)).toBe(true); + // PostgreSQL always has at least "postgres" + expect(databases.length).toBeGreaterThanOrEqual(1); + expect(databases).toContain("postgres"); + }); + + test("should exclude template databases", async () => { + const databases = await connectionModule.listDatabases(); + expect(databases).not.toContain("template0"); + expect(databases).not.toContain("template1"); + }); + + test("should return empty array on failure", async () => { + // Create a module with bad credentials — listDatabases should not throw + const badModule = new PostgresConnectionModule({ + username: "nonexistent", + password: "wrong", + authType: AuthType.NATIVE, + uri: "postgresql://localhost:1/nodb", + }); + + const databases = await badModule.listDatabases(); + expect(databases).toEqual([]); + }); +}); + +describe("PostgreSQL listSchemas", () => { + let container: any; + let connectionModule: PostgresConnectionModule; + + beforeAll(async () => { + container = await new PostgreSqlContainer("postgres:16-alpine").start(); + connectionModule = new PostgresConnectionModule({ + username: container.getUsername(), + password: container.getPassword(), + authType: AuthType.NATIVE, + uri: `postgresql://${container.getHost()}:${container.getPort()}/${container.getDatabase()}`, + }); + + const authenticated = + await connectionModule.authModule.verifyAuthentication(); + expect(authenticated).toBe(true); + }, 60000); + + afterAll(async () => { + if (connectionModule) { + try { + await connectionModule.close(); + } catch { + // Suppress shutdown errors + } + } + try { + await container.stop(); + } catch { + // Suppress container shutdown errors + } + }); + + test("should return an array of schema names", async () => { + const schemas = await connectionModule.listSchemas(); + expect(Array.isArray(schemas)).toBe(true); + // PostgreSQL always has "public" and "information_schema" + expect(schemas).toContain("public"); + }); + + test("should exclude internal pg_ schemas", async () => { + const schemas = await connectionModule.listSchemas(); + for (const schema of schemas) { + expect(schema).not.toMatch(/^pg_/); + } + }); + + test("should return empty array on failure", async () => { + const badModule = new PostgresConnectionModule({ + username: "nonexistent", + password: "wrong", + authType: AuthType.NATIVE, + uri: "postgresql://localhost:1/nodb", + }); + + const schemas = await badModule.listSchemas(); + expect(schemas).toEqual([]); + }); +}); diff --git a/connection/src/generalized/ConnectionModule.ts b/connection/src/generalized/ConnectionModule.ts index 2a8aecab..901eb5d5 100644 --- a/connection/src/generalized/ConnectionModule.ts +++ b/connection/src/generalized/ConnectionModule.ts @@ -1,22 +1,43 @@ -import { AuthenticationModule } from './AuthenticationModule'; -import { ConnectionConfig, QueryCallback, QueryParams, QueryStatus } from './interfaces'; +import { AuthenticationModule } from "./AuthenticationModule"; +import { + ConnectionConfig, + QueryCallback, + QueryParams, + QueryStatus, +} from "./interfaces"; export abstract class ConnectionModule { abstract authModule: AuthenticationModule; protected constructor() {} - abstract runQuery(queryParams: QueryParams, callbacks: QueryCallback, config: ConnectionConfig): Promise; + abstract runQuery( + queryParams: QueryParams, + callbacks: QueryCallback, + config: ConnectionConfig, + ): Promise; - abstract checkConnection(connectionConfig?: ConnectionConfig): Promise; + abstract checkConnection( + connectionConfig?: ConnectionConfig, + ): Promise; + + /** + * Lists available databases on the connected server. + * Returns an empty array if the operation is not supported or fails. + * Implementations should filter out internal/system databases. + */ + abstract listDatabases(): Promise; /** * Checks for empty/missing query and sets the appropriate status. * Returns true if the query is empty (caller should return early). */ - protected handleEmptyQuery(query: string | undefined, callbacks: QueryCallback): boolean { + protected handleEmptyQuery( + query: string | undefined, + callbacks: QueryCallback, + ): boolean { if (callbacks.setStatus) { - if (!query || query.trim() === '') { + if (!query || query.trim() === "") { callbacks.setStatus(QueryStatus.NO_QUERY); return true; } diff --git a/connection/src/neo4j/Neo4jConnectionModule.ts b/connection/src/neo4j/Neo4jConnectionModule.ts index aac8936b..a907be30 100644 --- a/connection/src/neo4j/Neo4jConnectionModule.ts +++ b/connection/src/neo4j/Neo4jConnectionModule.ts @@ -138,6 +138,32 @@ export class Neo4jConnectionModule extends ConnectionModule { } } + /** + * Lists available databases on the Neo4j server. + * Uses SHOW DATABASES (Neo4j 4.x+). Filters out the "system" database + * and any databases that are not online. + * Returns an empty array if SHOW DATABASES is not supported (Neo4j < 4.x) + * or if the query fails for any reason (graceful fallback). + */ + async listDatabases(): Promise { + const driver = this.getDriver(); + const session = driver.session({ + defaultAccessMode: neo4j.session.READ, + database: "system", + }); + try { + const result = await session.run( + "SHOW DATABASES YIELD name, currentStatus WHERE name <> 'system' AND currentStatus = 'online' RETURN name", + ); + return result.records.map((r) => r.get("name") as string); + } catch { + // Graceful fallback: SHOW DATABASES not supported or permission denied + return []; + } finally { + await session.close(); + } + } + /** * Checks if the database connection is working by running a simple query. * @returns Promise - true if connection is valid, otherwise throws. diff --git a/connection/src/postgresql/PostgresConnectionModule.ts b/connection/src/postgresql/PostgresConnectionModule.ts index 406e7e84..577e27af 100644 --- a/connection/src/postgresql/PostgresConnectionModule.ts +++ b/connection/src/postgresql/PostgresConnectionModule.ts @@ -202,6 +202,64 @@ export class PostgresConnectionModule extends ConnectionModule { } } + /** + * Lists available databases on the PostgreSQL server. + * Excludes template databases (template0, template1). + * Returns an empty array if the query fails. + */ + async listDatabases(): Promise { + try { + if (!this.authModule.getPool()) { + const authenticated = await this.authModule + .verifyAuthentication() + .catch(() => false); + if (!authenticated) return []; + } + const pool = this.authModule.getPool()!; + const client = await pool.connect(); + try { + const result = await client.query( + "SELECT datname FROM pg_database WHERE datistemplate = false ORDER BY datname", + ); + return result.rows.map((row: { datname: string }) => row.datname); + } finally { + client.release(); + } + } catch { + return []; + } + } + + /** + * Lists available schemas in the current database. + * Excludes internal pg_ schemas. + * Returns an empty array if the query fails. + */ + async listSchemas(): Promise { + try { + if (!this.authModule.getPool()) { + const authenticated = await this.authModule + .verifyAuthentication() + .catch(() => false); + if (!authenticated) return []; + } + const pool = this.authModule.getPool()!; + const client = await pool.connect(); + try { + const result = await client.query( + "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT LIKE 'pg_%' ORDER BY schema_name", + ); + return result.rows.map( + (row: { schema_name: string }) => row.schema_name, + ); + } finally { + client.release(); + } + } catch { + return []; + } + } + /** * Checks if the database connection is active and healthy. * @returns true if connection is valid, false otherwise diff --git a/screenshots/01-login.png b/screenshots/01-login.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3371053f7bbed01dc159227ac2ee810f0fbdc1 GIT binary patch literal 29139 zcmeFZcTiN_w=LR;fTGAJ3J3@o$We)s%|eqT=O9sX&Phc@L?nY`B?c< zCg;>Nsmai9_4l3Mt#jYIRqxze_r7|k>g+#gOPamcUVF{C#vF5u9r{w`1r;SDB?JPY zQjmYD4uOz?f1c~Ta1MMtWQCGIAb&v=o<7p_PFbIz@V|y9v~MZKY>@GPIA=-6<%dJ; zlQZySX5Mimbf@p+&7Rf0eDv4T*xTS2oyL~&%5N(v-Nm~Og2sYxNDZjluOQMQBHQanVc+ga7RL;W8!Uma1NfHW_65ol2et1mY6{@|@3;F2o9s7#^2YBug#3-PDS}sGG&YjW%PIzCb{j(ao0c=R+tk@rYcH8qvW!W8nGS2AX_ z7y@xs!^z(N{|3_7f}5tE^7e30K%ZXE`nCGK-e$lgY^>fsh{sBwh~=#vSaVMn71U;#?Ia>kooA6J>C`Z=Bbd~ zOVhGZHS|6)Q8kP{Efv{@#&6axK^_Whxlln|pYRhn7-G!l!r4y()K&Huu5rIPem-e& z66S4GcNJ^j+fY|OQhJ37^7|@JGbGX+9-KaR?MsvK20D=Bo(Gr< zGUB~_^xqZX;N(o^n>04WQ#K=iVFqMIE#k#l`voEMS4eI^T$R8jIXL`k8@M2wg4@ns zapJ7q=gHrUgBgCpu1ZWcmT|Q?Cr?SzD7q-aLK})(hAB zuQw$stWK?}5rp0-8G{5LAD=PR$k=Zd$)+PMq_M|$w>z{j`s*czh(`|oTd1J4!0oF! zw?-N3kEg%i?SDN~^%jh7=I8BRaKeovJd;VFur_z(WFTROwOv^o0%=CRBVOjDP34>G z^z>DB6YONYJ>jd?@nfCtMA?}FP8K+xAQ4asP|g|c&2vykbH)`L%#XDNy1NZ(aASyl zQ+#2ZAAUJoM!#wT`NeXR9F!VuE&g^?wcB9X&|KwG*Vz_C><5eI;|MQ{j7C zd(m)|eV{FR&6d!J~CJ3V=9&?j#EnR9WmR{x!D|fgC1%*RcLx(>%5#*)6NV% z)HC~cqxXt!HUG0Y8uoMOy&-G^tIx>?krkcwk!q*jyFJiqZRXf@$&&(|{ydWk_rs(Y z>E8E8EuaI0pGCOBmEpyP`^a1cOe;p4*cm$nDiuOlC`{z3+9-?Eoc=ppY$vTar%ttu1gP z0}0E$XSO{}q_0%J`YSv1BqBA1>c#>$5@*(Qx+g0=&xG%87%Ka&?HRp#)!tuh#F8K# z$@!7$Z25G!!NZ0#d22<-9Ie*+`4D+}v~w-+%+?giBJ@o*kQDOrwetlLuqG7cmA1F` zj@IXDOnk8c?D+kV>|I+a(xJ(>PhMPMmH7@|QcC|zon4oaYIU&mreV|6bRODAHBHih zyS9-{*Q3(aGMKLWtZQK4$r$MoetGQpYG?t}mieGnO*LEZZ2DDJ|1P>z>ogDdd^lhG z8M9%%S&0MMB)YTL7H9(E*sm)HI^Xc@cKj1=B%qz8rpfeCZlW@+Z5wVDwyZ}54Q(J))==AUK$+H`r%4yH_A=IjK)4$7K_x>ehnQRmagueMxWC|RrVwfpB-O3`KucYQ8vY@UR{4Uk!bK@RObUr^Ar{ZnI#Afh%l7kK(a zW@>O!fkNQS9Xl5ODJ;Puxb@_8z5VFO8#A^fXs9IYbn07;hVZd5?QirIsC7y$jdz<= z`Oj;#*mF*iU*Ay_b~4>Evz3(d+juuVRnI)(w5egs<{9~8bDwZf;j#tyP?%K~whSfK zff>Dbz?4I+&YCeb{^i1bt9eSy zdtp`7ph15S3XSK{<{BWPA@oHTzppjn9sTp<{DYR&B$8>5h%J}WQJLTfOf>C)-4$0V@xoHY{qg~t3 z5PrCLtr}sv^;yK630+ho))6bfO{;%w&~j8g_%VAZqo3U&@4OS$gah)u!*@S>Y|>y6 zkDgHCABrn1+L*1ai>_0ZKIR_I1B)+@xpNl%H~im^m73JVk2^I={lJvT$>D46M^H1N zGxb``&Yndu%N0DxRmk$SH9yUDSiL%37##AI2Licnd>#zvW0l>2^y!bD!g>$e{O|yZ zpB&1EokN0_la*SGA!wVO5sk9^!9F@=T*~c}slKTcS+}L;6}#aq(DkPs^N+c zXA&R$;c7{cz3sD*6b>h|Dsn7YwKWGRN+Y*h8*}kuXbF~vYmwuih9fM+?XH!KW(0@1bp$o^^;OsmP1c#))g@FD&f1kk&Ehq^G~=5To+v(5D_e4;2eK}F_c z;Riz$#ucW#_vh0KyUt-r68{5aC9&02X&A zNBTT!QoRX|ud?m47>s6k7ItKX*n&W$Yu*25dmj9;txoE)%Idp8n|kB=>wPy-ZL$v^ z?@Q=G3u>I6(R0rlaO7LiscjyGCnpHJ=r~Vu7RU}g&*k%!vX5Ty8Q6yp4{5m>bbp%m zT0a;K&rhZoFx=i3)UVexE!`Kd8S*MBf<~K`4Ra4aZ+^{-&go9s(!;j@RcvfdG#GlV5mu z7ECRt34utws@Ctaa(f(&YVS1SHl4i|y?0Y`W^r|PX2WVKXnp=LENb}FACdRRcx7fo z|4)w&>h5>Hh}!xGe!jJq_q*yo@zM(z@v9Z*N58m~(C)fA-WuI{8h5{U@;R<+Y#^X<)$p0gR;0H6}Y#IauX2v_=n|#egEjCsH+KOsHva! z@B?q3Rrf2{%%Hc@{dZ@U_CBQ6GGD_jtO%&yKCY;YiTIF?2|CFBVY-Rm>L0~-b|)Zi z3;vY@sl+sZGIFDI+r3u`wNu%=?g{a}b>li%=CkYe2W}gMzM{NxqE#U!8nZ_cF-wDm z`W2cN2}TrO554_9o=?!){vA8YOTO4{s)-ZOvycf~46>&{YAZh71~)?AZ#y-@{-0Y6u?O`_y<1jPcGvNEc)C*4)Zs~<4NU~Q zIH+M+Sy^!51 z@=DSEc0!33Eosa{25Bd&BVAI|D(T2Ju?p!n@pLBr!l(BaHo95GGTe4PiqigrSKmBt z9nDDCZ4l%${OnEMlKO7uhj|`9onld2b@u0jmKTEcC$L)|8(kOlW5?yhGQwhm;{1eN zj-vNXnA1XX5SzkRqXV&iY>T4B%+Y74TR(LBac(WgL&f@AVd=RgXi61+g14?vMM+-p_>i!uc1M{1$&Mn4IbE4vsLeHcF0{eTq2u5Al0l%pqxL)NS+N ztc8JrYdmD?`RFOO{|;-iXD-qCFnCm$j>D{jPs86mzum6=>q%)BJ~;{!oG&a zSa__CvzxH?%#b#W443LSj+=oOb&7Scd{UGzRKNfF;l7wH zx7HDT@pz-<((MAOBVRvRG|VV?Oe>pk9O{;Rp3#H%=-0}nES5C@Tw0&Bs|Xq+lqo}7 z!)P50YYH7a63QkI0){9@Nw@i*3>=A)<865dpJ7I}H0V*X32oFdi@)Rjk7srg9Z=hN zDNn2%N6=S1X0O^&-2ghia`w(c{Nsj6jiqWxJXJqV_b{eps$NyB4VjOdp2XT$D~~?A zq~jRn=kuV8X=r(}slXvVmS^otPUTv3OpHUS&DoHcEt`sxNLwqrVS`JN{R#~i@19`up!X^X;q;PHo$DZ-JsPv+j* z5a?RGhS2{w_vUA=`iEPp)Lx+qtESQS4>v=FX)dDO$doxW%%as8F`mr&6|X|B@2A}u zS5`p1g|RCnsXMC2!18w(!%;%7t9kBMY)vVBqh-D(IOFrMW++58<|VMJwi!iNt$}97N{0Pv?SD&xkQ7aj7hA0HiMFthusf{p?RH@FupKldM8(J{r&%jw6V6T7 zm-wv>7We15g(*gfpY3;=)R@m^o4~E{xf9`Q+A&)4m8lQRL)o}iBEnTKO!(=tEM^#E z-$BV!klr5av1FBWs2ocuok^ut1NKpX%!c47X$!f#<5XqSd9-Nq{)n8##UiW$I^j9S z3eSR_;tu1Fy2-WWvH#W_AyxC*g1+3LgFG(ZAgjM|A=zp2tAa2z8iu}SDaE=m+}Al^ zB&Ic?7B!qXZ})C_<7e!7Ck})&157L>pLV@P zvy*TF;=XT+H2cTw&Lsw@P_A?V8uwJlZ(3uiRMvafo#0qvp`-YcfGx8Od=|h~+rf2l z>B&)5%twFjTlcH|UuH85V;HOD?l|GR z|6}f&HJ?_^)3kn!X9&MR&6Bh$p=F(422JS5UEZm4@@Waoj)dwD*8?rB(kfad$=hY2P8Y*=i$UqJVl{Lj)3J5rN}`Ht<)vEDjSC|W5)tson z{SF)j4Ck;u*6fZRfKPIr3ao zgiKkDrIIFBekimd+N#0p^;nU)+e(>9(RPE0O6&u`xm{Bz(c+EM%1hASKQ>X744836 zFmhX8?KCWtlX`mk?xAbedZhSss;EK_jFm?g=dTaxp)b|Tir9WsYsHLhJEKdWZpvlQ z1;vI3Qi`TA5RT4-P+<&>#}T3NAm3@VTdBvk;xZPqHQjeH##%t9XSg~M=?b$jKRkM< zpx`?=b!OiMyG~A4AXY`w1N17V4RdXfrC+4^w_S0)9 zp5hQ9#ZMpRatbrW#4OldIINsLY2_8BFG)COZ|Z{NV>$THsiR0iXNPG_D}Kz=(oG)x z=Z=Yje0BmtKhKw)z50Z=C&ij&g&k{!FG8LkohKZ_01af(a!ALuLfK@2IcK9E?sBakQE-jT!mS}|109e0%sl0gN4 zAlG|+(NcaA@1?V>?UkU;?%-$sjh(SPX;w+Ocsu#jJ-lk$UAdJlRC#P< zB-`mAZ$b>JiQoaZK-Y`%)V$Umh;L(0DWX#N=2{ky*Mzrxx13{#q$B<+c;4}`8h7)U zACFLH|C}o6r!YnnE@0SrH2kxg20qwWQmU^I{t&LXl2+%eckUbZn*(aq781{Lu_v0X z%|I7CP_ZoUict=-(qJzqSoFh zKYNY1FR^IHAQ50ELvGJR*c#l)_YaN4lR6Dlb*JPoO);K^WzQ~B+2tTV)%>#2vl(uf zy80XT?2K;d&K-wqvAoRrVk+sXdKuY{9-IAxv2yv+{0n7#LG%Uv`>SYw-1lqI_Li(0 za{k+KdE|u&FgVgVfk#YWvNNmMsGAw$oDT4N#$VBu-?A?q?h1ZiK-VcEB&+4+!qIAS ze#bTn?i63s#sW5L+2*~B{YAP&=!$%GEA9-!34zBA=o@xAB_kQ0zbj&v1Wdv^?6L9a zEL&_4>_yOi#()fks!~eD)1O)ZkFbwIgr&$+LGYZZr_?};nlts z#}maM5B7-(7EylAWTnsoidm>lpIA5y_DDw3>!@+iz>_&Tgu$>h78Fa*7#teRg0}7* zSBKH3-z@hdRFpKdXgiKn`%ipb3fV8xt9}<9$_M}T$RTNPqH%7T)lFyg%44xar2^`q z=`}Y_X>ljr0XaNH%)BCn^%7FtAmGCDEE`N|xuQ;~xZO+h(;);D>e$G)ubvyvmox+A zr(2s9#n|awV!`XC1EkQU-)PL!Oml0n!-sL3!nZ2Onwz0BM)}kxr*4+o}GYg zpjK>n*21{LS?eRkA$!}#8Mo(ZP-BT(&tVcUtS>y9-8lTjySjydUvr^mR<8S6b>2!e zHcg>REiuZhKy&76s`BYW``%E)CG zUuff;QjOZ3%u&9}uBhI}Zy=dd8E~T6u{E*~d~Wb=mE|Bm({Lp}+`KbZ!|lmFbKHDZ z+UCtfAK!!zH>Es`;d(L}A}8+e$DG8HdkjAn>%d&I>a{E@Z~>w=_{9mm^QQQuHU`Jg zU<(QvymLeZGP%-yB6TM+r(+ena+^1fGH>jf%c1@j8X22?)WX@F)J0cq=r3}TGENb9 z`GQoSzWP)tY5Rhe!S)HQ0UM2Vt@@~n&$_x&yl2BAe*R)cnxY}X^>Fu^qN5U$qSAZ1 zpG*Ij)WXj`?X?l^OGEaP1N-SDy8K^ovd&7UGrWoW^P^z`-37^b0*E z0E!+tcaWb^q00=#hCwx^uICbmh(F@M&(B%umWt zM05tn`P$d)DHHT-_b?Y>?>gh+<(@t^Q~yX(3#uBSVexBLRLXS+Fih29(SqPH-Y@H% z26a)Ike{VlrrI|0ythK#wxO0PiMQFynuw<4ZBTfDLW`i-{rj^yWKU!Q zVs&xVmZ?}nMz?I~^LNNg@4tgGn(gi@EuOa}8lB~P=zBZPQ(xs&()M>^V_^z8@(;jx zX`nf$>*bRGZY4{*)di_d0Zy@q?4h3KX_6M38gGHe?+)5`*(%9aZ}-UEodVW8*E7-Q z%Cc`I>c|{`Kz#nO*$Xc#(8c*+y)rM%W@iWMd_C-0SktTA9rEo%qmL9DWi-k}wQ|fD4li|F83#PZdI;FM3#vCR z)1?~42H;mhEMP%N(y9spX6{Z??&iyHojCrS%;P!nz5yJ`E4`$whp%y9n+yDqXDvEt%PT#|Z^wiksw`X{bRr2z=(S+5cu)l#IT_<47_J=A;pOA%qk6y`U-?HQaFavyK5W!pgfT1gTJX8k_2*pFnY9N`3o>$%vgNS~1B5?i z*Eh2H)=kjuKYTM#7V%JzM=T8_9=zobpjZ0Z$dg5_7zl z=N4W~aR+5Gsny8HjH4fW(OGl=T=DtHH^(QNE)2hjy@66=h-Vj$orxdMLU)DjZEY(B z&1_)$DvZ-uzFz0wXQ3o`9L@GQ$y!PU45x8>z!11sFk!#x$`6&JHeYW=E(J?B%;WC# zyk!!1!jwkfXT)QG`T-zHK3Mf{!{_Fes`b2|QG1;x9c7+1BSZGP%Z z-}40R19X6|KRyEOwdso!eij|;wEg#PT;_;D4P$nyqX0`5mJ!3aq)Y95AL0JI})b&7Pw@}E{@ zHW3-3gJU_y;gZ#v4UQ}TunsYQEZyQAr323T55shp_%Y~Q8|K8t7Nmp?j^Rg14|V;XU8y;t4?~Y``4CI5Y9eMx(B})I)@x4*5>CmD-5}hxrd!FdGT4p z_LFW4`kJTuT6}ax#k)Ncy!54Go`8xK%K7Z)=QGk%iE}=%mQyLxs(yzq9Zc&pKf5gD znX5KYnApXe>@vGc7J9n6%Ni&wAtrE}t@g`xO=~_~KmOId9u2x*ZLPzX3rvxj%*S8P zPLAIJo~d-SQR+5Iw?ti{T27KTAuv=6VYmGr#bxtbkILad* zl_i|fPqAigu(RVccE#nGSq)1q?#oSG_R>FM&bd{#eCGJPoujs)W9o%qgHhf9Hv|&m zas_nanxks9ezp6JoeTn^Sfl4GF7}3c#TOAJ4w%B39v{?Jz^L3+@i3$Lc7WusR!->U zurSqf(8lZT$i){avNSobtiCS@>o0qjOGICH#bjTZFOzT^?cs(x+B={8%w~IX%w43z zZBp|bDuA6T@c{59duwT2tFqo#v}ku_d{%uvoN&55jQv&{^hdp}vDIv}el1ecduv;? zuHX{N-gxw~LL;30*RQsAPBw+Rx9=-7T^$LS*2Q)6v&mt~7DiAz$R2&;M%^gR5O=4c zjK#w622bV(x!Li(1o6PdzD+lyF)^0j68zQxy+!YjGr%WwK5kP=y8CD%P>{R8(<@Uc%n*#YajR7X<%IL!S_>7v3Rv~3@VI_AK=AFc z%8u3=ixwm_d7!YmEmDG{44OSM zj!trlNu9rXf`m*)^0&sMG$Wb>?Dq$=sn*#S8tsi<4_z}T(LR1;Fz(?x&8C3RxN`PH zNhJ3s4QMnRD_U4vKZ)-9W>v}a!xHRZ?1+%`rdxeg4zT*KJ!`iPJ*Q!;dC>ZJ@A2=J z0eY!pP9hvqOuH+2UgcBV9!~PsNhox1rh{wM0BHMPI4HXWa=QF$f45yhIO}now05Iz zpGC~5Y+%8&zKMdo#?Qal=1?&DxMO}%a~-~9b#58Y?M8<|`nzR{PgR9Wer?cE*=@+V z+O{`kO{TG|p4a=cwzA=QHcM-Ov{+n+KOY4Zj^|Inur5}-HIjteM!JhvYV+wpt&l7p z2F%3d9-kTlA~pCluiHqSJ~Mm6-@phkcP_nh$S_5c@{DwE;I zB&fPyZk|_zy;5WXgC;>8|2y9$<^^a1_SF`l3gdLq#@52%OBv~ob2UFeKWsq;qs z$Pm>3<%e2zpbN`Uo3LG30)^dPp>l)893ZX=_vDSc>?fzUb5v5A?z#2VGivehb(M~n z@NAf9R_+31WFc5GR@-SIRB$T#gy%Q?dGo+zsahQ=9i4swo;kx7GqplNa=RP=8jgdHfElyhK|p|HPKFb#19H(vzGzU@zMk*C$`33Bv2 z1YhTBNIQX$n`e+;~*7m!ZXC?Q#pLb^3^BxK~k^w#x0p9CJc`~9VE25v1!@}lXP&%BKRc(dx4VW{SqT!BKz+0KLw}WrWkph~ z8u%c>|_%O(~)^025GxXA|1J- zY5?K>1;9pg@ajwxGhRidbNB-^pdT}k1?v6@jJOu%mpCR*<2p}`ZJ+Q+N&v{XAP)e1 zbN%=vQ4b}bDz-yk5_t?* z?(P)Cvgt^lrx6A1rNTi3uH0=&uyBV(*4J#=yeF=x|Ec5Mw1CqwJlD#2qsNQ2Zqi{O zGa;TCVDsxY>B89W-$#ip&(5yT&tJdBX!iaVsDI)RB#S<%dygtw(bTbZ* zFI7pG7%uJ17^$soLezV%^>??n`m~n@fF}z%3k5m~>P8PHIP}Qq!EsG|7ZWe{aMM@; z_}wjLka4eHx9(0OY_x|04VxCP2NpdP#Sr`siaMROv~!ot^I)oRoUDHW0_&k9@xp&K zO3MHptk6*y&Ozo0%c}XMW(F1#2PuL2faFD?tzW2t1v+(!TE#p#ua478aFI>be=A|F zh@uHt-|H`*RW4KR!kE6#m(|uDjEvOIwuV^-{Ji&uB6^}z^1s!2Wy3qZ6#pci5AXBx zLdF5efmr-h_*?byko12&I>0@HUGmoMdal|?w( ze{tMUwjyf|?rF`~-*w(`cDqeZ`jF%ic%J8Ok6JVV*~EM{@9f;l?4M-emp9nhlR@w6 z8clf9Buh6r;vD3+Qwr&2$YGCJ1sey$gkdU>hsYxzexF&jkEE||tXf#(_eliqffJ&8 zz#q)i+_i9ZlD%zb4ajxL?S4 z%)}otqH%o|o(sRNGd5ja#C~@g1|WzhZCT=n{I>SLMK1D=UJ5cV1@!pDL-~Kov&FUi zc%P-tb1ojNL1(7}W>ZM7fO(}&>k;z{)ik94f^Q}2=Cn!ntjX5HK;!d)6x<@q4bTOd0@4F|ob=p$tm`>NCHoW5Mq3>$@ByuJ zmDGkR=LNbt!PT{i##iAR*yKW3B6Q4vI1HZgi4&*2}uD*Y9*F z^tMNK4Aa_5+yZ;of;;1E2W$5Lhe$|)3Dw#c(2zW{ECq~55WhaX=SgwZ+HkRSwyK|( z_;9Noykw$r3A@C4k#B=@=WIWD3Q(H&xBDjh?z;%nmBxjF4t4=e>+{Q4fqkJlP>_22 z)xT(OOMejX-5vENDq{)=+tN34?|1^p98hw+;(Kc+KI5-#v;jto?_asL7usL>5EGIe1Jz|8`#pkS>K=(+n zaUX#Wd=YU7(^&fmS}c4M8QCm%PrKgh%~%WUt&C^7t$l2uW=VfwUa;$BGx6K>p3(_# zj*Q*bkwM>m8lfB+tL?_%7pnW~BlZVRjOJ#qfugRcR8ma#(IWpMXH<0ny6d%`+Ck!l z0%4spL&uiAfEO)2D3Oby3N&^JWtXs^;qj~Q^o0s2chd0beh+E30pSa}>(b+8SqXU! z76+FSN^?gQ;fVYBI#LS5b~WpX2#er=ppSkEvtG#@9u}R{EHe1?9!_uHTDdVKta!Et z8IMu{`Rn0#BD7$+q4lm4dJj{-_A+(#2h^6o3P>yhpZVu@ncNkf5r092cSdRm#vR%A zsC2;|1nwWKT%xiI@%Hmk`UXGfs7@}EJ&hc-XOQ!VO2`ZO;$VzytHeuXU-euk7J0IP zrzi;Fju01ZA7BcgiNoy}H_%OHQ|&f@+h8`zNhUD)*W@#S^w$zfo8VcAVtb`!R-)e; zckv_DG9OjgsF2^v$2`^z?ikU0t!I_{phzjw63BD>78^AP4^m4n*wHqrqochsZH-w! zI=;deErZ&lS8QTt2IVQlvb8df_ zGUx1xV4T!BI{oY&apQA0H!4j|qQ?ULWlr$)Pk>Wbr0RiqwC?&%8bg}%cQ8odz zByZDpj<_0SNoujjJ~u|FRn`Vsg+*6Hv*p~z&(BbM6aaRj%0Q&hWBNC@O)S?2C*Gjo zM!IZ}f`ZJhe(GBP;F_zThyKN8P^u4>=~;qiO*BfX$~Hsguj!?RwPu%4pajvfgQ*8; zla}+h({16Sk29MlU2&_keC7)?BVv4PwZ&uk8i?rg(=hrw4#FJCf5e?ye`E7dJA*6= z!%G6j3Ol|1>r|K=SmmVR+g6-oT0}xkUPIF7LCtg}@ZjJ4Bsx^6qqUW76(K}oI!CR* z8cM69AoFr`RL?27%~aloDcr_9xpjM=q%~S1pi%md6%1t&{X5Td?B{n>tn0TbU>M6P zD2vD&D-%QWRLF}kViN@49?sziwJtmGSmz?m%RH=_W`Jp74{=wKJbrQ8(gMS!VT&=n zHv-S|X-PVJ7BIkfyKC}yu^bF>9&A$g!4@Vh|M~DRUVx$8jiAO|A(pQN64-)+bgf~* zKMg8`>_W$tRqpCX?4DwAo76bu5 zUFQjHa?J*%hFzyuN;5 zI!OHVwS=*@UJ@tco|#{^Pf>Qo1m>eUQXx!br?WC8vryQreh^@e?j?3FjwwS zYz4Axl$z)9MP4p0%?a8UYq)YVVfv`gPE{J6g#{hky_?bkr!<25Hzgf0_6<|$uH9Kf z8u-68bMg+z59obXP$a9=vZGeG!3rOL|Nj2!??9BMrqc&Ace8og-lphr>6ci+Mqi6Of5u5pb~GCP()E#%{(Sgy22J3V zZW{XZgCkCJP)ZJEJ%Nd2IlgH3_3_Ovvjq}Oc7xoN6W8@GojRp*64@b|8gc7v9H_f0 zz{vE+6ABxp@!-{;t@4d7nalpt$i3UV&x-iwd&=M1IUob$wp5*Jq{YrH*dQrK!+lTX zhPZNU@OKPsta|JPN%pmV#pOQ?V)cn13t))7<|+K_>GQ+G+Pd1>`9K>;hL$E+nvW_y zhQB*Bv}C^-&9#}>H4nfUck_hruIR|~@0WeBYd@{X@UF-N`mO!_ojPV_ul4!5SEQ1| z7YZV+%*1u*>$tB(nid#KOAJfPjKk7y;VC}*_m_w}ObSG!CVzu5024<9G0j}&p6@n- zqgp1gb?rwMYPUQmfd7Ukbgj^+=_agB-0Qb&V=6`C!2jpLvcS3{+EcDyU(K@sSozyu0iebuT19{S zY_|ki=lJ~qARxf;|D}ffKQ2=zCxg6%6dS_&V(p_ps^szN2ykV)mjB4mVL4wkK6%E>oC5JyZ*K{{~nUOwmVZrzyq0~lhd0|CjE+Rcy+#&zE z_d=nFOd`88zziID8UkhjRHO-e zz%G@|->F8wjl=~-{n(7L&XxiGJ(4Hs@no{QzkjzX>J(kG2c;>;w}a!$dP!fRS@inW z2!~H47sTB5?tqDz{<}PT$2A)3DqC(`7E$k0M2O6*`LN*wN`6(D`|dwxX^9@0XhwHG zD*rp~OOwOK4BT&hX6IMZ15UGcRgdi^mj#>37}Zw>2u-xC>Ak=N1ze&-B^q|(Rzzhy_4rr(s#U}9T6ml&r z0H>m-tLxFpTKZ?&9TQ0cwUbjB{d1YVDrFoYU|(@q#bMCF&-Ea(OwLc0@hZI_AOmt$ zdjx=wxB@MqZD0(eRL1t?3Y(prERae5_He_X1Ewe@%Z- zjeFSfs89WjpFy`#FNS=FPC(9iIsX?LxCV8&OthclS4Q&;6EegzUm!B~B9u+kwce-YCr+3yinSyu7Iu!T!`&r`-HctqXOWZg>j zk|%KiyIN*u>NNt`B#}bvWba86VE)9v0M3;&;HKT1AP*o6JY9*cgO`{b{4x*TXO%t~ z!>|rJj4dpdVEP4b>lHTfYL_I`yL2vwH+VS+=1c>>a`vD8Mi+H6Xs?Io;jw|5xVTQ8 zIAhGa%3gw)L zrS-iYuayv~HS?*yWnbo7-QkL~*}3B3j5~WmT(G3?o@9XJdWjM$0rT3b6qQUJs1G+_ zuP!`Y5-?nso9E`ffIRuBL4QX;p*K#6_Y@exJ!hihXaYdI7}UH9i*|imwC!rbk*_Jg zFg@W%y}LSzY8|ap?#zX*;&ak(%04xk{?r~4xP7>P*TlOBuuEa_rIKEc`oBKqZY5 zeO(qA2MhgoS}9lqx5Is@cnVlLGel$$H-TTNM)u&q&Lfe=j7c;yui{TVFECq_g~9ORWS=mRa#;DtR)75t3Hxutmatw`{%EOEy`(YD`a{rDu%kxnM zOj$V5KNTZLa^uYqkuwr>zRCyYK)J@TxSEE4arMgaNA(tG9@aKG9s6gUn_kL zRlb+>hw=?Yde|e}%FN=-;^WJJG$WQ(WRELR{!$#1C+2+s4}GHo-#%^`9K9uI>toY7Y_Kf^$l62V{T>3- zS{o;0&bjr4nOq2$`+N>|K078s!uo*pVG|J`$SPiJzNnCvZIZDWeVI?tjR( zc(PFI9Z@|GXBKAdBNOV5e2FIw=`nyr_8dIC{QA70C*-#m0E5Iy{C@`w%~~1Yo35t7 zVd*-RsdtwQ=vdCstX)cC`A8V%U2%2y!qn= zgop*vI#ao5@4=tA_!6n(%f8#_0yo!~kCzKYUvZNa#gITKi7&)}JZwV;r%d@`yRUYK zC6qZ1*B_=ZT$|^hV$eKhCoO812gKpKaKPO|AeGTrvh>iVf0Tsa4wN#>VuSps{b$=+ z?=h?omT06uQoVBX=u6eG)7W0eCDnqM0xh$^8y6vzvYA z^(oy=LlwvV$VV%hWp7$PWROh1{oBR&yCYK~#z0IJ)ocZU|*T zwna?iAE1Bv8=T4xthlo{c2{hLQoec2BOt40ytr*fTx6e#D_0?*V{p_IuKTSc)Os>z&-{)e{y&j_af&MPkw(`Ei<(qOKx&mlPy|f5Byi!v9+> z`a&6**OTJ6Hqj$yKUoUlG8}{3?k(iuG>cz$H{D7x_uTn!wc#?}_pvBs{sPgybdsHG zqJX}XP<-d~+=u9YBlF$fk^Wn15e{n=!j>JT2jH{LWkmj+c6=&8bomo|X#VEBgfp=P zL9&P6IRxE4g9-;nEOXM)sx2WAA9*2^qCSZ+;9WFRF0`*9zg1UT)9V(6Gf21vJ&9RM zkf)iLj{bv8ek4<=fIu+$-qA`!UwXiaXR>ye{ppUiiXnVjbs^1TwfAVcR21Rs4qoy0 zkY&a?5=3sr_QE@D!PCy3vQLr^whLZ7@mj~qY`VZk`y2J{A|@4PU84K)$4M_X=O|L_ zEf2lg>K_Df;P)kBp8Q>rjwC4c<0=>I4B)tZG^}i@(Wk*C<|yI{^Z(V}bw)L{wCmX5 zC@SZGfOM25U5ZpGqJRMe1!)qBR6%-`j$#9(1rX^-kxmdKG$EiOy@L=!QwWd%K{^By z?j+~??p=4S+kV{p@9uxen%R41-r4WG<$0gYljl70*u2~g6Qqm!)$6ZWOBgspvrGeF zs&P@&WW4Pqqi0z1zR8SoplC2Tmx)BHx_yvcT>+~X$Ta^UadxWCG*gtPC9Jz)f9&%4 zuGMyTRR!*5Z}%l_T(;7j2`+$)ZrA6Y3MKt||21fgLMzcLtf{;?{&LjYG6d)3lr8_s z?8E;4fxbj0T12|yfs{p54`t++$Ok7OJnhC6(>%LMwW92RCBnpHEaIV-RnYPrQ*ovx z7Z-uxhPPuk=`A*{*#LF*U(a)ME7l=Eh6;psw}OI#6crRge)p9ETZf;IkA{ZX>gqwQ zOlf>uhfG%Sa5sZ}8abpf`wvyukEX!vB2Afa1N0WpD4hlg-ysccWn;&7{WBEL3vBx}cb76IMHgvn%`Jb_X z4Z1~LB#Qad(&WdQNeN4&HYbM?IZlSotn$%|Nx;j*$EWjAZuwf5-K)5)`0x0d^fKep zxVT!75Au2qRG3<9eM6nR5<6c)Z1B(Wu50FG8G?VN-tL45?`q*a>GIJuoH_#ohCH6>fNSp1a$ntgx^>4J*AJSh&qz3$_;0eOO(QMa-fA2soI+u>_f9@$_83 z`7)*XCm{+zc{3l+Vm2ie!k*5Sr!hhdj1(69dRlS0R{x2;_ zHDG*&GlL@!H2kkyQX5#`Edw-lv}OM8ka(*nyvM^~6x0s5{x8WmDGTI5-)H$6*5u?5 z;8+C~Ajgwx(3Y9u10W|M1Ot~~o7It14gvzQTdX)#6-in1|x3vagD-m`?Hpf_G_uHyPY9fC>w9jqswA!quSEFZ5_*o4v3<= zNV`ZI4W{{TeIzZcQZzuOK@TQk%(IVV#5&)t;0Q?Twgpf*cs8s^Ck>Y(ZgntjD4~;Q zDtWX#=1#%POsuIUpB85F+uH*;hoIdhU0`otSEC@3JP;tX+a5v=vsFDp?OL%;g9!FO zla_#O5`MW+)U{wD1}zA1j++Yg?CG+^YC;rQxD$7)A zh^f03w*>!o{0b}Gm?o@QU=_e=<1S9zl$xdmY51vPjf1z_qpXhN4^WG<>k`wfxcPj{ z=gnDS`GL4q(@(1re~&f4nvxI7TZ)PTddwF=O1;yLf?9q3ehO1%<_Yx!H>T z#UQm&`84yU@LNw0ON?8+54PdD^Xcq6%O?K$s=aQo=Fs*Z77z1gINs|?yOPs7O64rs z738a@ltS^jq*wYS?5ag37=Z8VEWeEpr8}dGt^_F_kW6#Igpt4S*RM_2G!c`ZCxw}a zrE)Q{i>#iYjXTRG>r9F=E6{!$-#T-Yan1MpXF$|Lb8g8a=D1fso#KQTt3gRqz;UE1lQR~bmj%rFI$DaM6i{ZLm*y2l4A%CWs5u%R2`B|=R(kwsA37)ds_*)` z;bOszos^D1hLmH$$m0Ru2_~Wy&NFnVa(CK-4!>h zn4zeufZ;_%!tH$zRIFtdfs!o}gI2$lOkCu=9@ya6?(mfx&&HB{)nN!$V}%U+@oT%_ z#EC#(XRhq{Dy@&k~?nlyiW(?6A$^A{cy0 z)^-8Z9gB!bShH^DBKMjgshn*raBUf?^TP$?3rqDB^8F8(i=6=a|6%`oCC9%2u-44= zc7k*Z>h=pMe)iGgw4YI+N^hpb(-pH~tda2N!Qt;_gBLqcF@aavG4i2`{8zO9NP>U} zZ!bWY#AVzrZbv%3h5xeK#Q!MTnvW+8xfvjcnCuvk+3RPFXhb8hkvFFJ(Apfy6a>Ii zGn+y--U67YhON_Wm6Xar$&Cg@GvwyP8gpk+b&89Jx36)nAcnlvC@GEecLxfVeXP7; z_ii0YJelpFedg#=3_vX;<3rM3=(6o@FG+mAzOhF)L>R8_9@bZxEQ3bK38(L3#-KOI1+x?|6prHG$y^)O+Qmbzw@+&em`Iu6#XTlfy-imqe$yx3Hr(< zz}zsWZf;%eGQewU#f`8_++Qevr|GLc5-N06wv5S3_E(gvcFo}xVUx4)oJX?eUR7ND zbue65kDJu8PXl0{K&~lV2k$ba9`oooG*7bN7P?Z;$n4<9)T?|ktX1R^fCUt%3l1O3 z1T;_PmkHyxCfh`uelW}~29bY_&N!Cu{aVBs=)cYS#+Rp9f}i@M#8TA^UliMu?oj(0 zaGWGZeTpFA{B0dLCYwrS3Gk2HO*^;ha~N>##$|U2wd*s_-C&37wC)^Ap;eAYKf`p> zZB=imtN#K3y#^oW((?`V^+>1Dk+Q_?`=@u2cD*zAI=#JyGQA9KG5;p z0}M&Pdab8W7S4YJ`OEH*wkrPKg`}dnmBZaZ%^{?!-ng;5PuD1a-f+KoTaSNpMxC8& zQDR^5jnzLfYsA|c5AdBBKkm0%0ZZe!A9oD!-|;^iX(C$3+6|kaoeiE-&O4=*56TTV zGZo#9d|Y73Q8x@iYPgr}FyU`P_l2qhhS%O^>=dG7WSL9(mr055pWm_t>2Mj{mw9MUu$N4oCRo36<74nBr@Ylm}TPuU_i%Ttn zorlZxV8LIy&MDbHds|Ga2gm`t7NGXNC@L0Q#Qn(8WlTv;bz0fhf z=8jqHN>+-#c5w^aeM&>Ced6fe0uLf^~Zn32|9hfb}6(uB}>;@z={wqq95`OMrWgLDx9h8OSWbuo9^adw7 zNP`#lTcy=MBBAM0FtVk~d+-w{4!`unt_SSo&O2*;kjNrdw*=8=zW&Ty6F5xxDoEBd z1UnZBgCWH~!S3diPoPVjRsk^qAiUWeN?uO)=Q{N1$p)IH+A2q};6e-n)>sd!kpL2b z>6N`C!nGCvDFk+^)1IqJ5J zJA0pUsKHLsLE>pcGqb$@TDYt-4N5-DWh?ld3|H3%-|@7Nub2QD=vvFbg?%~KYLMx`{VM1Hxg=;% z$ITFxC%XWm7ao+;Jy>%E0x>Qfb&+L{`CjzymJt6$%-wiav=iV%qEzzLGi1ll6A1V{ zvoDcQ&B$nA*!aX|K5)5Hujcs)RCTw;uTuhC{CML}E@2Lgc9)_9>}zjLMXj&z_>dQi zM2XUqG0f4UE+6F=?J)2+oit7B>lfGl84IvfhMFp`%6=Vw=W1g+XJa#WT<4@+olYVg zE^g6m@cuAU=h^m(DtM<{cRsCa>+$jNb-{L&>6N9b0JvH8aBWV+q+*{)tSjI$jDPno zUsk5wtz8QMD*_rjQ_gP)j$rYJ0gwSv5WfmP&{N4e}dL?pT zC;9Yb8^FbBgVHy|3NsX^fbaK^)AsZA>N1l8U>;<)@>i!X=eZvbD;(U6b%&ij@Yt%A zb`X#6^4RyXmvx(N2Bfd5W5_Q zn35eK8M?LR{oIknqg|4O0qyx>j>EwNMBJ0$qK*DP)9DPz=S1&a@Ab+*UPd|DsA!9? zmj=`v=0{uqs^6spxC=E)iv0lDpm}%}a<^q&`ZmS&`X7eoK*RqfTIu@ve8V2#rGkYE zz$D0VL(~Ysf#hlT5!Qg}fhakZ{CaB2{}RZo+ytl#32t@zxPHWqFINSqgi`dlF|bjiod3!sdbE=sQ;RKjoGI3@_LpNR zRoKUGV@94Hn-tvGx$G{rVa)3;kKB-81;f4JD7DVc1&L>WdtV??NK#T#W$@7;YjD$K zQ`009q(e#4^E4P(MwtM;9E+Ts+%<@jXUFNk_l8$znzodOmsi!`BVAo>DKnp_#OdMQ zQNXl^HtWAJ2=Qvq*!XTk;oagF5Mr)w?F5DS_+OXZMf;M%0GT>v;dfnF$CI>eJm8XO zmyh_2vr&4EMtjfC@W}Z@UBi;vY=)F@FpCU+BAY=%=&@NY5SN(E>TtY|CHx$4s5ZOv zW#PWmkj+P7NIWBh7nU(iB{?l_ldgL#TkT1u)^f-v3%-NRe7 zU@QIy;Q0UltOv;5{ja^G;76_ukgD6++S=;o<_3jABO@aLluqggfE)+HKvZmT zq}Y%qVl(GP#LIK+3s@|+V##&QIf=KF=LB^+Uf%{GE7n`ePky(6 z?*v(u+!um=9;>iOQS?w(S4Vo+H#X|5%JJlws;k=s2OlmCW{*@@Xn8{Zp3*Fjpq7Bw zRZ?HN93p6!z$Bc60=(O)(vBb^zHpn!B$cWwT7CPbL&}SeT#nTBnffyLlqmq>b1vZzmAPHCd97fn?pfYURn{NjGlp0Sp>&E}No>rOa z>+73oq$N8vQgCz-NPYs?REnAt-0>Xj><4pkws1Iu`%H8BByE)`peZ(cQFetiA&t2X zvJT*`J{&|=zI2)OjegamG84pf&Eql7!}`1oZBjt~a@85Ld(7$7si`4{Xl6yL?1}fP z9s75-wmv00uF;y+m8l!&+to_Oz5%KputvOX4du})-k5DY(b-7}uGm?SITbco>t{eG z!c@@E8|Q(X&YxTbWN;pLF}2XFRz54 zfIylqn$}t}^zdY4EBxuG;WHzDkrt>~zsTRuOXp!>r>ArqNSi!53;#AYKW`V^_G|XD z!AWBS`sc{ZvmA_!?5wP*|N59Z>hK`)m-!(|rZ;N1do)f?H3ju|B=9CDIseY2vngh> zK3#iW{8IF}oIik(2(noZ#1Y5EJ~uUi%tvO1SLMmh7NlY&Jn;PQ0v$B>aWU#hC?#(o z1Jo@vhMfW5P5{evmL>wuxFdL?lxfz5{^?tzjwn0dGaA;EW@>KOy5lb0iOC`+UcSD* zetl*TV}mXfui;uYtK=^z;NNgnOQv>klBKkVK-%p&!a0R1ew3R_NJCc>wO!#SyBvFSD(?NzT z^mLWfIFHI+%!p>%L^=VYG)K!o&mn(RT)eNlTc?w$v*qDKA?%E(IKLQO3YhYRc8?1(l-4{q z8|Li{(<*xO%I?g(j*N7g{%i)O(VwA^uJM;V9VmD}mx|+=zBi1zs=+I$4%mkg2n1Zj?1%;~y0f#2sfsF#?ztaAT`Y9hdOr`k z=%e?1M}nuPC$>9fb92*hBT4iw^J5u-ZsDXLz53^N)Vs=So$w&eWxJ}7_wwq!7mbSz z6t+wH0&X%JRoOw!%0wsE#i+OBk#;)aA#Pybn^x0I+G*@fmwWa6erMuYQMv?;)ftpN zvk0Au*K2F){<pk#OFF!3=*6LQ*$2&q=HhV?CtJVshO2g)qtAi?I5N{ z?Gnc_KU~_SV-Y_@9R<~d9g!D7&@|-0PY)DV5eS6kW%CLc8VCcrTC1O}f-gv~u3M32 zc?Qru5QzMhlw;$eQU_U;l{dLV_pE@9qo?0}JXQfvY>EsK{KUY3fKw+gB#yht2!w47 zhK=%O51*XfQU=}!xWXegx7!**-;ye3)_J`Ke1M2DoB;9F zejcnM|A%bJ<-2LFcD-N!mSW57tPfmxl%b+LVKs?0)_}t_A%gKwA8MaiZv!upXr8p; zH)*e;yZk`X7F@1f0+7Wkat?kAuFQZ$Wu*y0)u50dg(ApekzP9af|XWaQU>A=YHKY! zkMkZ#$9)HRdt&1A(KpVhq8@`%Q0n&A*m|ALRjS17t{j~4_>mxmIq{AYRg}!D(~UEw zcD^5LdFny(c1@0n;mjKduymvGfjPhyq=>}s4-%L(CV@|Nu?BBVgxW4~0U zyR$*iU-gu(9(5VU?ZTLrWLV|3BD5PWq%GhFQp+XBBBR)&{^2!+xoKU za0^b;PAHN8B6apF*ggMnBUa-;=~9wI=5tQf@KjwoO2>|xBj70o?W$U9RduMMyaYPR2NW0>7<4H~F(nunc;Mr!DWq4xpU))HurM%K zFj8W|DsCCaned2QhW3F<2-F;r5F-v0G0?6X&Otyzn=oI1b)0q z`THGkB1G>qtn9xh#F%qnsQwuofR%@*2=n%TLy)FXX?`I8?l64 z)vM3kHq@`BQfJs)<;`S9-_2k`F5=CiiG}>heL<@?E~S+J-8`7V9;b__9rN<)DmY&y z)QFFZk&}f5>qWiOmdj?1D5|OQgF^aKae{di@$EjJxvVwRQgvi9^TLjf!0G_8&iN7K zOEno_yf)IRN}rhc-!wnf^?9N+3~ElwY2Qi;WxxeTahuO;lKnS(Z^T5_VTsv{Rv$4* z3eRMrg1StZYrfl4Nn8G&$k|p4cAahq^!@QEDJgbAp;1vu|L3yveazZ@pqno41;+tBsw;tL=20?Dh{nLb<0iWbsI?$i>9Oq?Qcca-oFZaKt*G^|v!yWakNO^wp@E?P~4g=RH~Z%$4Sl zs9ctRttnB6Gngl>yYxv;kT)wU_~69x%ir^kWp z7Q5Zn$h5Cq5}fsF9V&P*Ivf3XLG`!PMkn-qr!@LIWc=h!vgCTl1+!KeRY2R~5d;D@ z+c13Msz_6BHF|&dIrX=l;&-HgHl(+2iM+SA=N{zvLgg~-$2OF6GXCE+hrdXFg)YV8 zV&c0+%(62%G(^(~b0*|vJ>M2wkT4RyC%@F{?!JqH(%pL2HEqLp+Y9@)9IFb6#k3~{ zO7%=CwkH&CM$GS^#95YT#pQY^*kby)4!>3gaytk&h^eMk*6OE>+b!otx#n{+m}DPx zkFMd%uh{_)@RQ}1$&LmKA1=ElY<0OP?V5$be#PWsQY>?}~P zha2>ZNkBP0u+WOXN2jxh+Hh8cCwB(qZ*10Du(fSd|6*=&AJtZpjR8?`$t2TI5f)1O zIArj+N^zFWGk)mVX?N+*s3k|-bgFsavR#_{ecb;^++lCE-=ZG3HL*03BcXCtaYpRH zDeAI0+-?m-Plz*``12vKcX6>qWa-VDe?3pk#?JtTpSzm|(6f!+M~n|}#%FnjRw}N6 z0Rbbn3s3GUu7%DugBw#*EVUL!mY2hZPqgU5!rf(Cju0o@vm>=~9VV-!2%c)!PV-oT*_4oAjh`0m?2BQYY*2W%Nn442z|GQxKjFKTR z2*BpkZnl41x=Nn#)cbm!oZO$r?PxSB-WW)rwynZ7-=n))d5%*}@LdPwpu4YKOIw=a zX#DogrPPI>#}fln?3i|gv=WH4!*#H%qg6LAFRy-=iL^Sj5Zm3ovL3=j))5X`L^Kerd6hJ8xzR>QFGzzwqsOZNAOd(V-;aCNv>uefcOG6fWd$Cysp_Za-Zp0y%m zT~lA7fJL1CNkx4Q_6jS$gV?=8=4W=dS!{5;ZmWDoh$iB7=s0K49uZ)Qy?X@r>RVaS z7o#1Jk>}$w=oM-||3o{O4Rc@Pw%Z`$IwXm%#~XZk7UFbQ_}5GAEKvI48f<2e9}VSt zzhv^u%&`NWB~^LwnuudyauO`wIbSFA$86jZXRAcF-XWN4JgIUS*xd@fdzrg1as+eO zqng9k8;vAFs@Y?y8EITqZ<8f0RjOMoMyv3cy$$aYx5u6|-}Xyug}fJ%vJibKa-ag! zA90`bDLXywXtq>VFoe?w>nau2b!&vyJ2rioqZ_*V0D6m>TqTgFGq>6`^?mpWs;N~p zg*)?mEHKqE3B~n{m}oS?B|eTDKgn_}S3$O6n{TD+{wm_by88c|_ReGccUZKCKl?R? zS4UEnKTC}rGiyZ~D}y@NcP zgMnWs7{=%2vXQXP&|gcbj+%;UZwj*g9+#N(f0lYF$`bO-xKTjH!7+B*sNd#vq-4n%0oW7wy9Lv0=3nC^pw~;2=#U~^=%q0 zwKRnp85!B^Hzt}@Q|VT_jRvv*GrcsZHMSo=vYUvx4$o%PAIX_4ROk^!w|JpET99I%f!S{=_`dZ~fLKqhg7S9t)fQ0ARX zY>x=z#L!SlaCFvc=k58r{~*^qZDzgMcq)6l=m$OOp09b-t4Mc+;n z%wm_7QHPlpX%Cf8o@G|9l)mr3Dk`zO?&`{sQie?E)`&2gl)kZr%6%YzeMKMyWfBNN zf|9~{PNcP4|4!01di&}V8CjinbuOO^NkX(-Hq%L1|7?MV!R99T0QH62+b<1l^}_F1 z6s?}P3S?7~Y{4jupuVp=A;42di1}EdB@Efph61@P1?k_-iyK31#@un?nLe<7vl$!D zxcn!A2%qiE&$m>o-OufYS9^?Sb%_KP5jWYP?0O(KPSb6CPN)#{UO|pgztyADIT)na zBrdM6DFMa570QsGLwwcv^{Q$R(>88H^~G#^Z1E6}@RL)AZt+XG`WPEKXa6@96_w|r zO#8e=Qv2aXf+iss1LHQQsIr%prZd&I&|dN9{4$^J@Z@T(rXwQ03F6M+^1ydG?LOtQ zg+b~QBtIB+|89slZbeg4!!19*+^yKyxP-o>@{I(1Wn<&fcYCx9vd-azq#pVC`L`te zf~Lz)1l(tmJIz%3>pDa$Tvl^=eknI8Dj!mS6%T+}I@nXY>j@k+dRsQPylmOGkL>UR z!zK-vRtcued2dyLgeHx}U2Q{;NKQ_+>FmiUt5T`dI$pd{zte-=cbbky^o~KdHCH|Q zMw872ek*f_F#h1YxMEjnL6o8yC(qwcpWd zc6enTZtDTzS~_vW<0#78=xQH18U#1Mkiw393S`DZhj<4E^M#SArNi61M|NwMxc0V- zbux1m=qA@k+i?OcAI*FBbm`UX;%>>}df=}NQ(y+A^{-xfB~-5;A^XDb*$M=l?)nB8 z+XE;6Xof@6pMw7;CKT#9<78y{g0Ei_y#G*C*TlhT%FS055Ga8FAB+$jv{WE#Xk=aR z6@ql|c)k^HnExVR|BxZ}2PVQEjqqk6N*9spnVn6$X)LB&D$h@o4O!|V{MBv}{CPRI zPb$0F@j`q2?HVGt-CCt)zS2SzV}I3;A6=&9Tqw8W>FdDGSn<6JARPWf>xziXY9x7PR4C*vWC5i7(DYAKrqbmM@7W^==kY$g z99$(Isg2>1kop@<>KDWzxt~6n(k9V1>mE@-pEzZ`h{`0gvFm)pi>}QSNSJA@6g5!_ebHPrLCO=Mc|8(dIkU_VTeg z1gs*}yxkwZNj-?R_3(5*y7m}7BnYa0{xy*`u#T~V!P>mv+gx==y^$#HfT7W2m{xRZ7?^W{2Ev4FM;PFB{~wIGDHu*%HL%EO|{ zljLYEu-ElN>74}Pnpyz{*lF#!{r)=hnKlD?BNr zeSCauzA{6(#K4Escd>6yR&HoZdX2o+UP8(rMW#Z0ot2eoI_FZ+oy5OJ z>WS-P_v7=WI#a1q>UJNjFxoz4d+iAZg+0OHUol$I%gsrvaL_n?5ZQnh7 zut>TVPBiT@5%fZ8fo@_u-EF?Cp`oM4x<$YbWheGX1NTEjB*{(lZ;T$IA*ZqI~z}PPMEiE&Gc{_d z*Xa|b6c2s7X8GyF#1fNkXKvbr-AtXPH_uDED@j7-jHLDuuH50cc8gLABF3}T%k~_P zqY0nuRvrIjhfk(u88iN0vQMl!2R>!$mF$qhKtJWj?DUs^~#NS|_2 zw}$fAjx<<|B$-uv_xwZ$RaJLm`~(~!4oPpM8RfQH#T!w`gRik|U7JPH7Z`uJ+yR;6 z&eB4qHb=rUCJ7(9A04v>V}In+y(6$Qofb8`&-NR#;@xhz7S&^ zZpi%)6HwR#G-Td;a&q)SxaCPs-z;3YBRgI2-LI`m9tW>`-q^svdp`jyQcl(0-c#O# zjjxwQ8f^k*6NGs3XQwl{g=ujC{mu(XroD*19!GP1iy9|g3bu&>@9BktirP3-M)%Nh z$J5DBt<5ieI(f&lIlo@lTi}c&iao5YqLgP5kzIj@ebJ6rzT8+$H>}SDLQ5^L`Q06e z7aRYkTG{nOk}vcjopj!rTBU!cdr*b-ge&)_Y|-2?Rqz0X61<_;<#`f+ ztM1=mDu#*A|8zFM*d`qibLKB>Vv-;>Wak%srd{07G&4y>Ms|4-U(Cv?R3!U;N8POP z;`BKfZ&F`#rNC(ExWPA^Bvp9I4`6r6nX67tgPl(Vvn+;ZmWCi4^(6=iRKm;6Q! zc7gxv*J*Cs_1L&qt5nL$vzm^{An5tmy8@Y`saDa^tE^;9VnJF;Y-Q?5XL_yu&8@dv zTU!#*o^EvN_;UE1KBqlPl>NPhzI{|Oa;G7k=>j@8qw^;R=) zu~O2RAQnJ|q@r5wf9|(E4U~`#0B80O$GbyK{)<`6ZtLg$g+E++eB%5j1;mq?2EP8P4u=46 zs}#>U0iM|VdIz3AwdV^=nR7fP&+j zckj@g+YD~RBAMNH$4?w?`s6h>H|})&$z{G#y9u^9@Adb}7zHK+yq&>9T_7~{{MI(Z z=VHI^aGUvOGznZZ@$F)hqc6DISVpykgqV1`!$P1oM*1Wz@l1#B;P#2vhovg){p&b~ z@#*#jh3>azLe3`IX&m}$&K7HR)4eNZwMToq`KfH*VxAet#+fsg(S5TY@gU=AG>_!+ z_Bhp9I$u<_>3%pyRh&ya80PyNdskWf=ItSYbb4Rkfr!en=YB4QMeA2-^WZH6jvFI# zS?HKSB#e%KKdSxDxdc4%yV&X#?ZKh*t4Oou85=!4Jwdr`e4csdv^grlw!d8_W%K~p z&(~-NvN*D(*_xpY!(mkV`0*oFciT1Le2q`!`A_U4?$Z`e==AytJtM5ar84 zt7y14VzjViwI*x3N8+X7*48JJ#S&jSbq3|8PChctCI`5Q#d_`bH*_SSvRo9k*L-AT z4ue&2*GFo>Ge?UyF^5c^?Y|IRDmj~3+8wSD*jQYdAflf0d=UEQ&8^>Lfx7ew^zJ*0 z2U>IV!ly~JyHV!=K~&c$cYVARzQ1oyWajm7eBXMNJd#AKS0x)N5uGi}Pk@h~!S6gV z!v@dhJ6KfMijv^}LBHLI>&ZT>AqwOEa&NWaoA7;EP(UIBFMr5 zV9^7>^^Ws3Q#GUNRglT#c8mPwv-M6A9v8Bz?eq0(S|yEDFm!Qh>Z5`!*OlwuwnAVDNCD0+o&MP@^{@{3(;H21bM#@8ypkGgbL zd8`F^z3I;B^mJD5_?0$I`}bSSnajwBC!4h^Z)%2ZSA z`2Hl|B57ix5*x?qr4OdvOoQydM9wG#D(C!9@ta0P!Fg)9#H#SUOXrC#1m zCM9)Xp?SYm@>TW1d+><+%nJ=EV69Gmd_)m^E|ob_WON_LVjbk|Gu>=$;YzES$F`+r zvs<80v{_POPHP_!5P(5c>PGH5epy}QmHb`Z%b`xUoQj)?sDH9jL)f|vhq2|`Ggrv^ z4CShHvXj4TAnf~>NP_t)C8^jG0A)Pxy`SYR>fSIDWM22ZbKCyYx)*t*$J-8F@>bw$ z|8>sI%Ia4T%(^j5yLJ_v{PB}MU}6tr@b~BAfD$LYay^<{ty-)t>N;GG;#G{j<05j6@Kkr5{#pzjmW za1+xg5!o-3*TdQH2$;Z57Z(?@O+0Xe?JsQGtDm`{zdjYxl2%fyUP0k=Jk^;v(c(@L z7#|>jbhxCeU&gJXUIx<$>nNG6v}ft!WP{*dqCd{tO2g2rz+IDeL@^YK|6 z#)_J`vnAI8ozyql^UQrVfi8i$pzpa)ij`!tFL{a7Q3PKrrQPv$@y1erRY5 zlICWE{0g`hc-h#LTqM5G3gVbp8!=S9vcP@m?nVg?e04<+!Awa_1$jRbTQt?nWvcR& zk;UL?iL#iEeYIqTikZXy8~Y$E2Uo$qrVe{!QQ4;~8|jV^X4GI7g1zyRII2ipK**t% z&wMLQ#m`T8dc0JJ&?%s+rLpr&z(>{g9L^Z zg=VnXthYt3Y`LEgNtMh4`1$@3?9bwJcTRiUixm$LeLh!W`9as?vE(w}zav#No~&>P z^8-oyj#h<(|F=xj%!B=yBJU$AKnNI)ZB~hWGZ$NPX)5Ez{*Ai$&vwwZ3*V>3;Mc(- zw|XrlEn#Zo1R*Sp30Do18SNUK((V*@4TJCyufp;?=#ym z1>FzXEuJJJgTn(uAQSp}<>H0+8tiu>h7puNf8s6wNYHex0`sp{Yts1=YFMJ43PcCwx&9GbBNm- z$2$PNe}0}emqNLqrmM14Ro_0Z{gzl7#d#TvtlqFQtyD=f{JcL5_s((b<6=C7NdvaG zE;pC-xM8OGM?Z7*LiY9Xv{?&;l6jGo&()fiB(KcUa-l+}QEBPD zW0LIC2H`=o_(}N45Qm1-?)Zx9Y2(2ZUeWSABLT+#Ec_uhIg(L#B@lCjGo?pbXYWu2 zXlWtHXF^UoE3MMW4vyp51lw=bwwKYD_1f(Tvg#qszE6GBKtMzOEpBj@&iz8B3Cz@b zgERN*n<-&|qlLP1z?_Ve%Jm#d-THCpW5W52xzXXR9!6awZ}kUn^iw%(rkCn2oDA>X9V?a) z?fY{ZSVHXgIN0w~BQ}hv!9qbn2vh?DR0G3K&cc6@ddzEb*>=%F6Ti$%n;UD*h@}HE zFmu~FN=Q^Fa&!n9YIM#6r4Sy!pBsi~Pfxz_9nG7+|K-K(;cVx+^~d&NhM5#h+4h=+ z0`YZ?nB?V0Iy&CttLDAGISVk50%VTUH66Avo=+(f_tuSyyv3T}-!sC%nOwuIH>AUW zD3r}YPYUo0&%q`a^MZc|gb-iO3K7fr@Jd~ynd`m|KYNbb8IJa1Gd3#dEoRdDbLsQ2 zs;cSF(kt-(W{9A;KW1}CUm420P!Eb5GqDS6<&LkLZY* zYb6h*LVhU`s$uq275l@*$4u$Bz>=y@adLCBBcov?N|GU=V0_^knCC%|UT!d_`O6&Y z^CKwb-QT$WK%Q2Z&{gvK)$R)!pk){{nZ!k>^Yn1f278r@f4Rkk750_Y)XF!ySh*$k z6mnB5w4M&)91RNmV!h&fco^xqh#GF6ueFP^Gt3nAB@=Yjb#SF_8yqO1k&>QBua{%n zI78Fl3)TG573LV3nMi58{GyxI<^4R-D@x5Q;P$lIw}^BD8E72UE@Fw!97+bgq`Q!S zZ};6zObTr1ju1FU-Z93!eIc{CE>FI2zj)Z@JS*8x@#3j>GS}<<)h9-Hw|_92i70R? z_=gn$nrfgFE^Pbzhqc6X4327ji^;8eA3GtFka6C4ri~bhda@flN8CgaFe#~x( znE5x|_bN5?a_bdOw)%ME;62X%b>LyhU?xI3ab$3+w5n*BBu?H?jqBc?t_}JIxw5i7 zG@xRi^6pPp%B`(Vr0RFNw?A&C60AqZd~wfUpDR=0k5|^hwqE^{*u+Jdp$BAD6k zB>_olyxJXUGaQ_z=RTdQ{`&1`Js#Gt+mRYALYE-B-RbE3KxR@OB)q)LQS~t1elxRR zHWh0=6HLQe)}^FDeB&M?E19)Iy|fU-Je}@YUb_I z&o3=|6Z1v(ocE=IE_)~lPU|3ONG&mIul_`D$^QOaI;N$UPgf?Qg1QZF2;6LOBeQ;< z!FyMAcf8B1snGCS5}`rSbRl&vot(tNz$mL^L7`g9LaD(o2l70m0Z#^E;MJbh9q-SQ z28tz#g{@-Sm~|MvBWkn^Mn{C!d2x2@4W~dn7ntyn7Mr9|&BH$x%<`ka?h-d1e95&( z6#5|+$5=#_hG;8@5U8O|xwO)%eUlNe^SN4UZgz2~M0$y=a7}j$2^pQwt>i!dW`1PLZT!Z#guz49uDD3m1ZPYZ4h8%Yj!9SH+UjO>;L%JAa8M?_X+dnRL}|G1My{DiPgj{i9eI> z6(Gg*>MFJeV3PR9d@Dx7I1mJXYBM>>+Kj1Di!6KnI_Qbdv2l`KXq6#^zTp12P`f2j zr1FH<4Ixc)-kI5ZBdgP?{xfkPny8?V$IY9iI8I}&lKrRF`trGf18zq*+cwR2aOPtzjhMpE`u5Eb-7sJkiK<8>_wh*I-WMzXvZ)*2I(xZ3;S-% zcY}38f6_8454~3%7@wmmq%7b&l?)|w$KL#PZ*}BKC}$d9SK;aN>wca))njArtOUpc|I+sr=(DXA{4==V4;8Z0zG2E zY@*Do~yt{Lc=f$B*q6-*LOO%et>M&VrBEOd~2@i=F%I4GV z_Tni^cI{P5Hcdjp)DTxH-{1;EP$VmIa)g`)h5M}sY zFBZZjY#S< z5dVmWRP*pIhEbF9i>U9FIPA^HZE)LJseG^2maF}yS~=1`D698@==p%p#o}1$w}&=o z1p``v;b@bvEZN}H&(AGAW{S;4Mn2sWaKs{gC|Lf7SB|}pwTDuG(JX;9(La6oMZ@PY zv#qL)fy!Yu!1VKa(rK53EP>2PLVfI2D*^wY%mDpZwGZU}`4uaIvS$Pa#F zQ%R#~ui(EA3ZN4t#?Ez<2tvgh48(s+PR_1uOhE4#kz}d-={)$w-esc6Yx);@x=W=V zc>M7cF7#=B$7y)I&E5Z-++j+3I_fn&C44AO7q_iDvwo|d4=TNK5!$ndbCB`gDy2f! z9g+fnFVQmBWIA=R*bwtiw{F$+Qcau?lWBd#TVmQQca0B*Tkiz1FtKI;`a5PEtBr=X z`gy(g)y;OIzL?3o1dU@P|DU4gqj9ur^?0D3LDt9~r~5ugVj4_PXoY)cSnSuY0CCZA z;|uZDw^sr;pY6gZrbzxMVDOiO+|xH3F0pg72kzpETL5CJAO8}gvIbDMVBS7J1}})C zhhIYaBeR|-bR6*7pJBo=#f0~_gYR;K^}+6#tyPj^?a_5GRXK$3U@T@AdoT`;Zsk*Z zwd!|8KV!wI^yb$a6U&idaD;1d{Ur6Bm=alpsbyziFe6Om8 z`<_$X3mOR2tM8=nSBmO_mca!HA#oyRd)=5x=gD?YhW*|*+l>Vof zYNO6q2!p(cty~|*+NK`3C2BzJ1 zXZcDti7JVE1|#~6fEYZK4wcJ3iz6o>R4yJbSIw_G23zkwK;@puqwH4jl< zoLsCEyK&^AK~72{t-rmY!|`T`bVDW{fNpUHH}Y?W;$L%bn_n6^h_A%+K(_4`)Znn(i;=GSWN3YB$3@uDwYdP*|dO&uO5(O`_5 z(%t+DRoV8*1d^hk*c!Z-bDHaSoq!w=zg$W>c`9_->NegUq3vUW$HZlffVcxUKy?Wj zDf+3`B0Jegxq3FacV>g&^Re7>JqP+;6`DpeXewOi*@-M$;+_q<2AD4CG^E_=0m zd`m2#4chuqk)bM~Fq%jM^X&f6bL}}Ib!Q82*vp(gvMhZZ`TSJkvS+Z9ytZwmfA^rB zLO&D3HJ&{AE;sY%srSpJoKBT)BgX-VW{s8_2r56j%@k(``uY@M28rNsoC2`lAo&{7 zaB*@bvZrc3r;`%HwQ>w!y^0fimJY@1+ICOpbIe;DJJwM-%^S`Vc*KZaFy=8B(s`L z(OMWT*`-YJ(w1e;Ql|8L_)8<1vaTv5VT_gPd~dpt;brM7=1W*(Ld*NjVlO=2U5KPg zlAb?n3)#yF7C2rqp?MZ9mAzGhs98n^X2IPNhjoc&S@sd9F?iew3n{6 z&a6SkrrzdEYAFVzd#TJY@nLRs)qBTr{%Rnw-1U{e=%Z7_?1yx_4fs!9^Ic>Fu`2vp zN)>|#Yr$Qz@=;3s*&0N6i9-o*MTT6zIL*=yZ_DU3L?V&zUi_xIUxJ zWO)boD})IpB_$1F*e+4^Jvh2MdahBe! zDaib;LfmEdP)s4~v1fh(f-!o7vmZ2wNv4zA`Ah3vU zoDGj|dePIGEqE*7BhHGcSph8wp-|?X^ZFrtck^6)FuNT70T)+(_2|ds&)MFqws+hy z_^aK2p`nDAhr@(U$Hi_O*m+@RQm%hD729MyL(e@)A!%+ihNW6NTQB?pA1eTYh@hka zo?R^LDO~Hg-Hnit*I)O2`e}-CCF1V*$6BAn-3RibOlzBQpFuiRV#beym$E*M(PW!q zGpP%rO#VpM}_EZZ@%Vz z99D>$|5M=99$u^VYo&r6{f_g*)7`-+GW$XTO&sFo`eQdc?ZmH&9njT}!JXD4nf6`Z z=e@OBc6E?W-9&p5yQetC$vOU$VMYV zShKMVR>q1V#mX|e50EzK5ajpZ$DQ*NPX&Wg@mB>c_L~7_<{EAfP8K;ntdd_Vby%lA zah9pto&fU(sp@S6dy>EumffAJ4vYL>9tG)sPD+bM>`&ww*^f-Nf~!k@GD_^Ja`dBx z3|{Z`-_(;z#qx7y-qll6HN?6r@Q8?$x;2ESl&CNML)Ob>1gqYj&K}o?*L8_Uk&zJt zQ6FfG@L6`Eiy{vLUI(A@eedh(@mfv*2SAt6wH14>el1Z@@xFp8885m5oxs7Wp zf%rAc%s~M07vk)JM!`z*TjuT^?l)1-CXE)CW(Hc)=4H-GCfbUhT;qpot2I|NJFHx} zVdLX+{yzmfh0fGIE>KqUQBUggowyrMfS*U(+ViS?_XDU+Y6`qm>y$^eQjJnG4Tn1b z)}?qM^T?Ihs9qfY)_ZUwoQl+C`E`(V^|2-!z$iIho&LtMh;zVZ;LmX7K;{?quinPS z=$%|aVAc0ZpDVvR9OuK|6%$vb)5RZ=pb%$#BV{V;+GMbrYga5@JfZLTbc}=Wv8}O6 z!1P6&CyJ@kvU;%vdKvj>WJr<1-QHAY{H^FdQLEU=!hj+`mJaI9$P~lsFM5W7o-^-4 zYcpD7K%Tv;9%7|N=STmuY{T;p|5(pS`kV&HFkAADTU&QE{KpT2l_M z6S>N{&uoKy&YDm7;CU9nGH(I+EG<3y&cBUYyTJqRQpcpf*gTQ;WUaP)tY5pYKER40 zZUdf&Y64)yuHnmFgtJjYG5o@G5*vhsE_dk#2Q;d;wM;X<0|*SPcdcNRV*CqXUhAD- zBww^4yJ#CnX4=9#E2I9S&^hm~%S!V9XxRjC?roVL{JL|M2!UE4=D9C5Ik$V0SvvVz zUm8_&R+??Hm?z3Vo4GJ)t#%Ft&7qoP!y!gHpKzL-j)f-DCA5COkpAGwSL=o&TRo`Y z!4En*czlTTJVd^6nvzjZ3VDhO|LZNlIU+o4; zmAwK-d!4+VHgT@`1g;d*vGvTBN{%Z@oHGs%n$$ zMfrm5_UDw?EldJtmD6=1D}($hRWRr4^QCytj}f)yZmC*#o+eN#pwqJ2OP}0u(aYg1 z@B5&9f!KEFp@VeU-5tnT+KS#A@uP&ONbfeN4}+Ks+)R?7YzWp8L_rYO2fOYsS$V1A zn1zN$`3=Q-3woi2#Tq$f<4JUS-*$5~MxO2_a9rMae@1a+pJS(bqfzEBB0_Ym)NhsP zVY8H{Q%t9*Cw#bT1qDO3xAbV5?;fJY2%xt~v##@2Q(gFGGR78MqSR;<(z z{i-fF{#fMf^qpSI9FhfxQ^rLsWZxF)EUjv&2~=B3-4h!i-;%w&*qK6SDA#g)wrZN2 z`>Vo}JAj6FYk?r7h|KNn@(Un3H~1ooAe4z zHq`6Kt=_@pYAO_loqKNSN&&VgHco8>ywhrDs$C%e>zO2imhfPAQ2D@sw1 z6KZ}?`M!wYT&|yuXLm!$gIEYeHS90T%$-#p1KaH()d&PsO z>V6t$B1Z@=L%!dte!}IITejx?uaR%s_znG!g{loMqcNe&Z)GZ6o~{)@=LgWe3m8P@ z=a-I}dE1p*%tP1bvU|!fdfqy-NnejyHX53{u!YFWU1=^mE$H)OG)_6UUWfGwcjK=6 zrjd9uNT*(9e!B zJk!%*mEJa=gsaJ37+!6W_IDWqp1x72!RWU+po@Gp{~~2^+Zc5_u`(`4{D)ZSU(KexW9 zd?(zKKl44V3BEQu-0ON`Y{vlMyt`hubX&1TR6OG9%98+x=o)Ns#cn#L*wZPQFjL`u z`G*H6AR-ZR=h_AHEa%zG)J!~mp?|<2)Xmi?t>n8w@Xn&jtPy*YH<^-_vNM?|C;j@{ zH>$wPy_o+gc~WJnIi|1~0Z-hbwMc6Aw`9+cPBzOWQTd`Dtdkf|)?0*6aLTzhAsOV_ zyJ4o7Bm&6L)z%Cs5%(p~RK)8-^f9VuFS$h!oLBS>YB5~_8`0(;3^lc|SSmCwpCHnb zmVV2`FvemP{p`ucwHAh(#%5n}=P;vh9Q4F$D_uXoh6OUM53=I6j-Zo3{ErKmySrQg zROk(mC)oZf3V^rC%-SfaqbGuSGKR$7sQNt7{afx5v+<)3Wi!3GBe_zCx!OLFvR*kmD|0i2)$C%n zI2+_kurc`&JCESM_XSA4lB|HC+8Gr6@7)7ZFgkA&|FN0>FRvufg0IQV^#kNre+8<4 z8oLF*7nUq7ae1?CR?J{E$`C@ixxOz@1vm_ilYx zfEK=HP*Y)U9B2lS3V6Z|abdmD7a59{Xb8UxH==1TEb!mWjM;%3hCFZE?%8rijq{zudK|%^clcaRKykul_931=<46A)ZQ*42$rKNeP?CS4UDqymnHgqI)_O)$bb9{hi0+{P^a#`yp>y4Gh1;tMl42*F8KWB;^ zbwK7?u_9G73Z_7J1V9yIo^BAGLYVbham)EF%{Tm>+oUPnV;Wv*a6|%q^FTJ|*KNo} zt6b2~0QijI&>vkfn10=Av||-YDFh!rP_;zV-tte_w)hM+;YsVN^iXIopfK8NBy!Ldg!>t>AXpl&7cl-+|~O z$v-bnu|gy*jfb}DY;Q=}qVPCrA&(Y3tK`DzerT-#ccSZ2ANEGGVgCbQELbhHm0Iou zvBM|eUhk4FHbstt61>v^4_2^Z>GS~rJltz)I3M-OeLOqk_5AC1L@)iuyRX6hRPPRf zfX8~c&UNjU;1dhp`%K6arQ0LU91=0@d26DxZW0PRxFhq$jz*9it3I6EDujU@2a7k+ zAPO&XIw_IPK#)KGB*)USdaWZV>7w6eD1TTEoWX~%a>`CS-Zb#`bzqX5`LBWnlbrEM zN8LZfGzmc81k7D~dkFvm+<8~B4yN^GhKjjTrJhgk2DEwBc)88rH0 zPZd6{_c0n98%Jt5q5H8gFzh7^-h+Mi=47&3xjyU?vs}HyEthQtB->41W1H=bUmdQp zSiN2%e>$W4p~^Y#vy<8oBnvqdE-dC(%;#;bx+5vcRO?S(`MtlWKb#_DY&2V>1it*E zboOhT#+>&;b>F&)IO5PS2%;D~p`y%GD}^&N@VUlZKH%LXi^}I>Xz8@yq;hVpXJ{=; zz1W;AAuf}~rSZLi2g@@8Y;AqDeA|bB%>hF1C$f1$xX)qcy0%zhR*>oA-dUwmyME}! zwQ|KG*UNZzN#Vbw|6fUL`MfI1KR*l2aydYLrcAk6vn`J4K2z@6TqSU8^$`giGXhE2 z*tUlh2#e0unW^+@6^Hcs)#JB)fLRa^#o8dz&!9Kp2_>s&DNhm^4}~1#cg!Y>T-d)C zjr`w>4oGxfCG~y3uvJE3nX=>*nu%s&sj&R#wAJ~P`2-OOsdLlut-g|Fk2r$wf!#^Y zLS18{{{#9-Tz~jO$4xvE&55!q8yx!Y;LaDD_0S>!CYW&VGJS$VB!rf8J07sASMd4v z+_JCgE#VyJW6`16<0}g3@2Be#lopiq;_x&B;yu4Ln!b3p)B*1}S)8RT0#b0Wh@enm z-DU|^z|$A7Lhw}!ZA6|Xh=Q-{#jd&rJ4uM5yyh6gl&iBjt0T693--tLJ856(!#xOm z_vgRq2TIhxGO#L^+pKKXxaiaplH_M)h<~L12n-5@zy4eDO@)+*((@q5$F^F zX||+C%zpq{W-O!eX(N}SX1u$X!tDzGLv0msAf}Biju$Pc0OMXldFy%4@Gy#8y`{R% z?~s?x`8Kh37FwJEp8lj`_x{#y95KE)Vq%i^iq#U;ju{Z!x7Oj#;MPb&&(u*NA9}+S zgDl7R_iq6T(RMOqKSm&?5Zg&G*zhjGd;VL_d@d^dN!?%HP^nL4~s8pf2N81@rV6!_os+xQqOJ$$zXV(B8`Sw$8pE*an zF>9M-^(cxCF}I7pLitf+@Tmtg75(jx(F9x`nuW$jp`=KCFm~S+BSJ%C1!3;<`Klw8 zSz;)E*?CaJ{CmP^|2^TmBsDn369xYe)AZ&reSq)1?}ZL~mPg zu|FTpYH>8U-M(x!!F~n9@96j#B$i98Y5P$WsxSFH7{s#}b6Xs(pBX>tZqBg#i%`y0 z9;{>=-Hw$j$-LPQAC(h$WHD2fkf%#fYUcmJ5xInPFmJUz!DC;y6h~U1F(|DXb)@#f zsz)Q;VmpLmIajJxE;Am5BE~|w^ee@bq&H8EB>m$>@BfTsPG6eSfTu9)}U9%mkHQGThcoEqtMRr~EsKghH1unndBYuAQL;Sqn(O4^mt|6cg@n;m*TV#+) zKBrp^SkSBMrL4^LbDZGT=e^iki}zI&jQIKar6eU4JEsz=NQH!iI=!|`QkTe2PH|CJ z|F@_>2FZmWCnpCEJ2t#QUg%13<*m{%_aBOwka;TCmef;o*I2%MdHDN3U(@Y>zGhLI zcYL3^Pqqt?B2b~!7~Ns*nBK^I;vbt>W`7KnbhV_C9;l>|mFM~oC;)>~_j*r{rg#`> zcUC#0*Tr;bsGhs%FM3H2TK<0n5{QhC&qUbeU`y`=yGw#1LgxitXp9abOH9DiRF!~a z$jkq1x@|oEqyqgC|0@egU3-im{`b%SZ=khQK{Vz<1NA@4BsM-i2^j?lZc0W(N<~Bh znK|{Jvg^9YVE9J_+ioP|ASb8cBBr8J7x&8Q7G5IG&G{`Ug@A|v{_p00I#kzH1|ba+ z_*cgd=e^)DDm$ECW3Mbw2nagNkCRXf$HYjB#Tv?U5#oXcfv6Phy~ucCciG+s7H<-g z+`LQ?UEK-5$0EB32mgWvKJ@-%n?`nwPJrj>UlyWX%ZQp4t+nMApNK5MtQIr!$v_|E zjq+Xm$Ys;;I{_&sUvRoe2ve}$az}WzyN84r=!yYK12*PTK+?AT`L{pce zemB4yOG?7TB>7-1nOcwad4I;UN-z#4>6UOjq#E@ME15<|=H}ZXa=zt>A9~Ghg4yMt z_{Dzw+*#VCn$M@f}40+9&Nj^~&(fSlTqVdq&)SxH1l} zT|vwy=%D_M=GYe!Y z&P$ie7u3ax;x*m=G8tKm zFQnHD77(cl`6arKxq&Hej_3Ncy$FCsJ?&es6 z7l;|mw+Qu?Bo1TPj^+|^7}{tqjRpgw~XU@dKJfRA*D8iMa1R|}rsORp$y|rf% zfN~3j+m7EHw^3M=K%*zd1L4b3&FY9NwL{1Rw}>+wT-?Cm;LHm)q)hw#)${G~yY=-OMKRs%h$ zVVyb@ug24rc!7qK1x%i46MF474}3g-kqFcm=Tq(gT%M3@u~KW53UijNHrFlhtES*Q z%Ma(bOV=6~8hv{*;nP~JcC7#ire=>puhy}4p`=63Vi3~`&JrQ(bOIef!{P&+8tnxr z$86Z*k!iH~`wQ60o#6rMktqe=8ZkOF5@9e}SXa;2PoHdi5*EQEZFC+!RW7(`3#8r= zjY?-z=rp59Q_=hha#~ZBz5OHex@29TnIGT&+_f*&8a-d8+NNL3Ur(L*#-_p^;3mkW(;|C@;#Dy?K3cR-e-((+!oE z_&tLS{}Ey+<_fntscF+u;Q`s+ z3%A=@ZQQp`uT!1-jEhnFw;Pn|8i1Z8{)^@ESIeLlvKhx}?kQd6%_CcXGFD*(IhDeHpg z%ypcacKLQdOzsKfV<;ajj(+r&+Q%61Z8IM>vfJJTgkZb+xs~x>7o3S~S7+`484x_n))qVGk!W-AFAz>+oR2bd}@x~Bx^YB!~tZ3r%xqHa&21v zVcKnp&i4n`6f)?S8dOR2WWlZvN3P{T$4M2c(OP@{)@u!gdY5B+3dTcej6gGib>I1z zn})xq{j^K&iB_e>rE8FnZLPx-=@mrA4wz1=z&RBpR7Yul6WLMEo71uWC^_QJ+Kbgt zQ=cnWQVKacZsln&4hedPyg3i(PqT*&#AM)fih%RdxYw7-?Om+w-!LeXQC};8_!g68 zQgozu&F@S8iXB@Nz<|Z`w!Ckm%o}DGVPQ`x4z2dh{-)}}2FdGvE-ugV!;0hjasBFE zrOi6)@x$TbUMD#cVeVdcCePMllaUHSzKLiiM&UrdQrYCyxdP!nW;O`bkwD!Nu;(G+ z$v<^3oE2ZrKR8=!F44Z8^qN>GQTeWezAoO8LN99TM?T`Ax8MJqo%PBU4bZFgu^_-Ne!e4u&;vi3)nE)IyFy8=+70!g28LndbR*6y{+Ifu$QRFp zb=-NHEXGdx`>D7b*A|~n(`b;voh)%OokmE-y1er>SW?Ik4Pb%VmUW2Lb&Daz%1V&xVsI^5vx^I1|B6zq$*!C(;&wxeyU7q+ zp@yEtny8^RbZXVsU$7oH>i>9#L)%;{_jD}xo1lbgHTV2;qp zfFqH)Lw#kE?WZ%!2kI?`eG}j~72G(!*6h|MlH73Chvjf|1*7r(xn(vY0>NTlR&ntk zI0ILp9)yJZ9-s2RKH3sn60mt_%1d7tE9G9Cb+`ZVe%Y>2A2ztfzZ>pK99V0R9;LE9 zTDUIWZ8v(d&bXRt7XAQ$wt%pXV!P9!&`B5kPL9`~p;$Dt%- z9=gS}fVUY7fe`XfKU#HNcW|WOF)QIlkd7c+riK;E=8Kp4#Mnh3UIav_j4@W)b`WoS z`b$B_9AXgUj7ny$<=Q06!P*n%;^*fV9Q^{_`iI@(ME>d+f<@$&v05yg4u)nQl_BDf z4G18zYt^VIMR{b4PzJfgeAVBfNH}q4m03UMc+(n_^Vn+MTm6iCI9m~kdXL&D~E4t+rbU|kl5Y`;ssg-5~@5P8mRIGc^sSlin(CD|DMEXSdtCvrB=Fdq?bn6i{vQ>S~@}>zjT9 zNaFoU=N%we8jgEHMtwO2SYSzw?7^(vqy zADxyH4L_(MaE?}~Mm4tQeuK?XcoLDP)PuUo-01o`|C1@>-TT3|AE?hB6@-hAvl^{{ zIoqd$mh;HUt+dNV)w)wd{0Vkc&JK%F^gStaWFbXrKB zi~sVR^$Qi8-ozZqxysl{Fqg29-AfNT@2fMv$kA#C9PfAB2_5m|u{Z5#lQO^d)9|Y| zzNpa3ZO^837J?uq*h4VHNPHOWR~j665zsc~+pJ_P#l_!PCKIi1zy1|J-v$Xz(^MtT z33~zE@Ha&KUUI*GOKLEy)ak|e6>+kBKITO{oRytTqma(%Uzh8B$mwQaW)2jPzri8o zaidaaj>ynI!iXvt=U(inf9O%^!Al^kMcpPwXxN`(7awj=JI;l_z_N-gK|gB*NGW3b zda-^1sH>`)nt|~4GJHxPo6qM4d5_` z>7O~eLOdTN`GuiQxi4Vhqq`OuR-6eRvdqw4utc7QZ&3hgFXQ|qP zs%N!Yoo#;n1n3^$n?De8W8>gB?GG~purhF64UmLALOOT*-GfTQMhcq|i{bL1PgktL zi)Z$X;~rimXis{k8s|&2Jlia-T&Ff{H4FbzvS8gBs?=$0$&)El81t^s5wV-y5%+f6 z)hYW5Z4t!a8$~cTKhyWmRJp{Z`5$x`=H@4s zh3X{9moN5wnPU?hdv4M%HW?+=C!nCybAGf4&r}IWZ0NfeEfw8kpP-s`xA;4ujR`3o zD7Slo&yOOJo^`H7n~|9&Va`sf4J+`)LCznpGQmIn1_Kv&S&9TH? ztCQVeO#dB79YPGNeZX#&oCm406G?%v04j@> zBCb)bu5TOuGBalDguusBx@@L=X(Iz;V-`16-h000GCfQJ;ThY7Bd#l^SrOcLHo1i+*GJDR9F@myK&!dBsb;Re=$a2P2n`H;5~f0*YoSMI`c1;4TJP4xZG@* zeb3u(Fc8R>cBB~OM{S;*l?r64)eGYd;yic=soP9Y(k!JvrhTM=_q2FwC7SWL%Y%^ACRJ9qC;G^cD;ea4bY|*mKXV_SuEsFE2{;v z^gewjf?N{M?&Lu!Jp2`eMLL0;3e6kXa->jYyk z@q<0WVvR8hW1grUQKf%m_k)+f3mP}E63|O>&WME1^c=W3oo_5In|Ongs1-D?P#Hq# z2hQW)TCRJu$MHd|x0S253l!;W_&@}~Vj^+m(Z6Gm?8cIafthp{$Dk+10rYA#lD&WI zD_q?D%P{7+O-?VH36CCR0s=bqzzA&gaJUBZIS5D>K*`g0lvNd(=HMtAuraw6s|3Ym zMj309SuJyXBj9?gzcE-XNY4%So-G(CPkgD@om+pAMLj~nQg8>M@*{sL+#f-AlZInIUdF4wam%=B zvUy$np2L5{pi|od9)`h&(L9|9!Fr563|&%UuFYxZ_Y)@l-ttf1NS)hGXDig+my@tu z?kW}KKHd^0DpkmP-CsB=u7ZlRdfoTY{E>NvE7@#Kv8{3A0fb=+SxUUCLPE-U4*uLG z$H&53buc8z@tVFp+$3ckVD>A{2mAkRb3e`Ao6OP7{SGg%2P%HCLZEpvyLpfDg}6uY zo`bNZKdvU;+$2>z>}wIFZn$vrmG|`SNJdU+WE|Prml)q!GA9I3M8PB{sjk7aR0EwG zqMrO=newi`@g(j^S%3Zn&QQLoN2wBBr{yfv zLI7$056mQ)`rJP1ZW*PdYQA+owy6bg^GZACKKK@!HIK>QA78!XzYTt{l(%w~>h#)I zL7Wl7y5O77ad^aNnhb>B$y70g4Ekz2b;xSHI~uRB?Azi_?&`4nWW4jqyW(c2be=c} zRO1$qCVgRHU@T|9F+%5o+8%%f3Aj(@p2AR?Oqyq%l&DsqspkN}T(;cwRtd1>daX4% z{Mce=_r7HZ#>GJg1=;%=J-%4Pyi>@+PuP;zS1&mFn4$mTFjb;+FReKBjb@{M3% z0P7MUhU_sYgV* zuL6r1%#rJ)gkumX)Ki}em9U?UHV>5-HOA+pb-u4oCq1k|iuBqyJ?pUok26KeL<+(b z)m^y*GMFsZMXJ+|(+%AEa)=0oUgCu{!bu4ZMKd2hE9XJH(5bfkZMWAFM_|CTEsZ13 zrN%MCDow3Fu>&?HK=h#b$(gU7co8=&IkqjcAJ-3-`2swGDCb1gPclw>VL{Bpnhm#_-L zi&OoqHp`KAo8suhrs3kM?rz_$oR2r#OdVX|*?^AEc$eTQ{^(X9>ewM?v6wGP z_%j1AQC|O`{-4u7Xh8?~xWaArV$+viV?gVs4A6m(as}Udu3d)ReLtgKpD&&Ba-+s2`yli->O9_< zpDBm*rTB{+J8+ct_!`SGT{T*-YqVP*PMd`7IvEy-(&DmdaS^ns4Z%Y!qHrH*$r!4;6*QJEaU8Nq_Tkn-&O)qCD7O91Mxxx0|7 zFP9Uoax*A_<-Y!m7zMaSn0q*Pxzwb{KW81c5UY!z^4%Y$(`LtD(tQCWo%1PYj%K3p zA&WI;Evk`|SH|l~iK_rYcbE=PNPUki8jYv%--*?~)JbBQm1s96MzM=x!C=B~h=#%b zR+{q2kd55Xu&XGk*LZn8WttU;A&tP^ih=AesWV-!HGJRS7)zx>>3>G~7cfQ-rW`~E zt^KPG6>J1P`+K8LFp*oT=Q=1;d{u~_#zZsM@uC-%ch!Mu{rE}yGMBHu1f4OGWs{OHf0u^qf%;QPNN2XehO)}!@uUkD zwDRHj#&rp6s)Ua}9r3tT>KqY{W*;ax2!r;JmEM9>Az#{Grv_g*rmFjcpAo%T8(%28 z!D2jHO5G6^Upb|=&lhVls2V3aOchJ!VWm0v`tzIOKz3wkx}T**ds*Wm&x~SI?kJiP z9`RT^^K4)$^$4@R*5b1P-_1l9!@F|LTC>drHSKxtvE5`ZGhJTH!+|$MuY9n#^g8iV zE&}1L==}3&QR;|GIluTmmPEn47Hd`=fNJ-BnBwoBrFSRoIvDOEGP+NM0vo2Y9js7+ z8V#qbxu>=(-C2J=?jLdpzI^y0>Q7nAmVT!y*G`U4wj+rOydPxgdnZ3UYVBpivq5S6 zIrzzUv>@`Z#Uta*8h`|D7?3L#&8hO30iZai6TZ(zi~e;%J9LEgwAlG3qrR}?Qi+-; zDXszZ9#NORW{!u}l>>|A(&uNzg^pKs(otg7+E-kaY>(n^y)Oe`7QlIPou7NYxl8RL z4hSnSnRl8kRaUKbc?g=lOr+0u$sx5=Yy4P{4S;A*kGE&nsZPJbjfu|I4WL=U=_OZ| z)y7pIjnzuC5SV2ioy$-xHjyv17*)m`Fi?eLoekI&WA^+ zVN&k^u7Jrx#q`bPyvf2-L*QGLkra(jko)z<_Gs=p3`=)wHSb9E_HcIpl+j;lx>l(9 z1tYKN;GHFDuF=>2UDrm-b!r*aIEqFr9LhL~zf+PgCTK@Od*%8etZZ!Wb|mC+8kKV6 zR;@I=%*WMPY(BXYpY_?1WJe+o-Dp88_AW2yueEr|MVg0I_@wZ_iM6?8=z}X#xH%9` z*0tn+PFBGuUaaiD&Pm@8!pj*QT)o#{9eF3)XkKjfD8ucZor32Ds0U1uJ-#<6|JACv zutAP6KFIO!ZygrfJwgyL(naGZ`~3OAHq7;%DUV!hl6=G7-UfS~-0xx3TdJF~LZuPo zt>V2o3(;tv-mq58{gv#U-IzG-YUfvEF?KWA?^Z@Qa|)8)AHx?Mt=ILZ?qVrdDf2eJ z5*#Xzp?k_=N&aLl4rcj4`_o+Xoj^M9xWdpNl)!hIrFxMc;LXazzNa%MuuG_}p3Gs7 z=cuy^idl9(77@37yg61)2M{-P<7hf7hJ%1FE}%yllj&Jebb9z%I^8WZRMf0BY$S@7~%oL zfgo~g#pfQTwP_$^`)Paf88^GAewF9#PJs6RsQMB{JYH9f)`{lAoZ-^}BGjyWIp3^IA7t-64ZIMoRu=mBgv#%Fn9{*G=x;;x=L_oL^D^OTo;yA+`ZRrwp69~6V!6Ss3w!w6hgIZd7f(N4bRU@ z(0R=IwP^GUdf8@ryhiUh$O`zkzU`N5w3-8~6Qm z=53)&dgol08@3F6|3$XGt5d({agoFU6O#1?3re~c& zEX4oiCbjLtGkt29>gJ2$rc};5nlHCn3XksbDeA;gJNS*W6TcXoh!A055-^P)-|XqR z&O?<*&2&|3FjZPKeleD$KX|iXzdAzoP@OzZ@G)1>547QRyKvqPnhy?C2q+@kpq0{< zp^KobfBl9)_!g3=F#rqo&m8zje`MFlQI3JdNhQ(4Js)4FdaXT*tOtHx!Q01iUWkU% zmizOa=Ty>eVpWC^nV%1{R5C&; zbPEOdW9A{T5wy26KhQz?Ih1v+{c;Pwe=jAAUC$C9E3d^XI#Y z=#|sp2L1pdqUB1Fzz($)6#oXu#6Q=wofhWaHYhqk<5@Lci^SMGN?J&to|Clq?+a*w$B|2%k%HThlt4f+8L)pwLAeeV4JGDDBrAePg7`)lxaloRBJDw=EeUFa#< zm}od2=3Sf+5fSA{|H9t4)9?q7LL}X;7qEw@vq8KY$yg(P5&Mp)&zoh$>GN z3RiWX`cRE*_l-=S$~UZLs_tt!iD0Mmn}vbO$sOeWOQ$(muRzU+dJ%oDaC^erVtjuz zQ*0GQ-C1_Lmjdc4Jm6*{r}W2Y{KfU*DHOl^-^~($WGRO`8L(tCQHB~cK^{ejjfUoN z9+wPQwThhq9!LWSr}NoT3OjCCKRTzGEZg5l>TAyR`pj}4VcrvjilHFNq2@GJwY^Gr z5x1Bui-Xy4!tD|Og{GVd{A#n>FvOi?pa_8wS_9Gh8{9Po{kqG_bP~Alxck?rhpj*r z%j^GY0c8hK@X3{$gp5u(cS~>yRzP?{-=2~`On}6z(=oFm4VQ(D4Xf1@A#*A9T1v24 z<7pP7ejNge^GSp^5I7ix8N3$y@j;n1UAuIeCsPg~sE&$I! zWF8O@I3n?rOaoL-Xn#xQ_wj+hq&cNI70lFiO-A|l1wVjVlk(M9%Yt8^7ZTEc1_Q>I zV6EM;9~6q8QGN^1313!ikoIbETB10m=LLwxsPvJqGI|U0jwNHH^{$m`&e_l-0HBm z@&k!Zu@~llmmJ!?i~RVQ9A<;(y3k>A2nQj>nX**$AwB-K=+C^Mr|s1DlWOw&B!(SP0d|2J-wV*NXSi zQ)22ZF)`p{lbn!U4bEVd{D}itCh<<3671{IBhQy%q+7*@u|M}}Enbzk{)H&_=zQ3N zB-_ttKS~M@9NrItyq#Ud@gSGMP$a44;a1`@?*$s~C%uv^7U6UnWGMi1zgShPy`Bh@ zdQ|exP&pMnhmItU@_c2K6_?LwcWJjBt(d5?t!_42A9_1TFFF)7$WuwDbvsZmAqGu{ z!Cu^&+G_Rs8EO1bKF)sQ;5f21N^IMCci{*1^Ggb|bN`K2@Hm}jyTz}j=39b$Q8B?4 zi9P2M#_v^5%dzph?RkCYTj8PR!k%B<$90Q-MkcY= zfz)KbrCr;CJ~}FyPf9EthoH!6ppSrnkoQimMszLbUJJy6^9bQDNG%4w0~$|qTvV`( zwq}P{rCB;0%DtzrwXYX-3aiML`p&VuMlLU_3207)v%Yec)kfAQ3U&mpVW7^IutjQ> zV0&NRpI;M*VHJ+)jKt85UMAaAta-@x%?dp%np$*rh&W^_npz$zaUzB8i+;?30vtWw z$YOXF-4t)jSEqpiVHppPLfR$OO7(p>GWcukueI8<@(li2hexKFEdXf;SQW+ixcKe$m-Yn7G*#ac9i4?ZonOx{@u8)8JszfdR?6)6 zduFMcN?AU^kVnw=zG}(NFq;%&z$Hc*8}Iymo1wi1ru6JEdZ~Ov5lk5;l^tNBSnrPf zK%Z1sPieH0KVA*?p>>xA@EbN0$Aj4p-ybzrk60h;tOsM4Z!@rPaY<~$9}@p`>g_UW zj`hWAAtIuGRp5bwicYV|lTM8Lkv=u1TC)@V=J?3U>W}w9PrU(wigw3MqlDFTnRVb( zb4~YGQYHl0j*VwF4h|fOgN3$&dL_7eyvu9%Mz6uxRwPf`3Q!Fiej#RL1OCx3?YW+X z7|iF+dw2J5zIEF?t?P8y*(k2hf!O0_OT#Je^NRt*2YQtpUH=0k()_V?*RHo>K+xGq z8Z38+UDIGshqczaj-QXrpF+J0G_a5-FO6YFqojUhfXJAx`*%fCC znn8hN{CvJ|p{OpETHe~!^y4GlNVoiQ9*r84&1hJE|HiK(Krwr4^YHHt#~cg4BzE75 z(<1FYV*BG;VVj)fXj@qIgQ)!3XH4oPqvK+#z7<^pGs^RnY0VA!ce^ctDhUa3uBL;L z#cC1Ua5`IH14;=pTHSs)i#GxSV20x>8Vy{1h`T^u_4+fj4?lm-u#i`0Dc|b1S8w5- z$LoQh*?CEsf!zeZ>tL;2nInoY)d1KvrNd@xi6dx}DG*k>kPPzp*G(5a^GGj%Mfh2p zP3A~Hr@Dm?BI5HOGw;WjE#O*lt1CbK$(ec}#*BfdUSZHtUyJZyQdW_a#vzvoI-*z1Oi4e>lhxE@YE0gQG8fKc~L~z09>@>Nw z`dL0D*^wT?o09P=r>vZ2QiJ*HSFIMW)78p#8pzTHJgx(~W?3Fg(H+c6z_0h_uB*$l zRFR$3xoS}WhgSXf4)-0dtX7i+XCb0#)ZP_koFClqI6c*v2^6mwl)8PLFqbp{Vb3eT zPXDTOg4}A=`6AoCgv8yy7_UfU49sES5#cjAyx$6A$7mU?Xia7&Ige^K zpbySfXy$0eAD9{#(=9^&!)|WSFP%0-mI8QRi^JCpcMX=zhZri$iQx4qZrfT_BfE& ztO+N@;wpJLc~khb~>$FbwjpXpLC$)+=J0>cl5rgDQCa+kQ_-XrjQ)GM{p>*i@ypXxpzY)z|!)Qc^;) z2=i7fp2!L(0v#$iAm<@WSvhfA#Qx-h_K7xS9{W9XB=eOm9@5NBmiVv%(s)}ya$}_d*m#fmM;e*KQTxi>w>gkjEN&&k2&3VsHkw#|01_*;9`5? z#QP!F0B-Kyw`95`o4x>{B1SF6fonOD++CGg`E!m$34PS|Wx05a+~yLwZmoA%lZDKZ z7;zWZ2CDkO-)%mSd<`IUGr+=62zGxn@QG0sK0X|995+Auy!qvoj)RSbl~s+$Za29q z!n63Lkk{iN=cLFGxcegP2Eo+}k*OV! z_K%Xwmi?hnFhejtU}QtO*7Oq6+7%!~H58ZWJbJ1z>M#2$h@z;&G_At#bThE1t1%&% z7RF}oNMP_sb)V_$muc4mnBm6*HBgS&r_m^6vySdn7D9*k`6DAq5F)T$&L#c~ztDfNf$QFxX?2M{LHgQB%K)LrNYsThowA&`LGu!fs#FZ`7Ofz7+#6h678m3zgFR>jgOcVUAOr ze4ug_<=NA-swJA4(CS6nn|i1Gd_e~H0iSpMv3puQG0ei^v!KiUoA`u&9qUd*eb(EZ za7@iwM43}gfT6HiRg(0l0>o9Ah=AemHV)tT11657wyvwE+;lS42TPKmZfV#c~FJcj%(3b-gWTIFG3bg>Y1 zZ+|6hNL0Qjmi=xW5fO2*Gwil?m@g}s+)`vAT@9NULUrA}C8PXFF~OcXB!e+v{Yiu2j&K*M{x0x5eCAm^;ETH3gogK8)d9&JzvcL zGhKI~+f{%c4H1_E70VW%%UZjeYcU+-m)fW3P4$dB%9F8T`1v+#?id4?YzI9gt8-qL zCoYqQ2>VJ*ZlYO_q|+L8hPt17P9Rwp?ZGz=VKC(41-CsK_3|zVYxAFk%Ttsl7ZF2F z1;S&99RE99;DSQC^OAM@r`_EjkS=u-jRM`6o}6HaQ?%G#H+URHbUwlbbFpG+O)1WO z7CP2TpSoDQoClOwUu~4I4q=b~s|Dm}4U$A|e*Ro266T`arW_EQF1SD(ASEXM%M02- z3STX97p1@1exIJ>jpxq7;6V{xg30%pJL#+jzufXX(Vr7ZLVgR4!Yk8FiX$yH53KYe z^*#m)8Pde0-6Hv;Kb{x>ITl_jWstqrl;^DJgvWzC3Q|=BG1^78C6LoS>5AS1U8XpS zLge~QI46UB#j;)B)~4e^0OMW+6y$~2k>9Lhk&Y~7=H(8qGtqIK(tFAeILkO(IXKJ7 zO?BTc(zLJ0LTseX4{`b{Vx*)Z$Y|SJN%sx9;3C~g zg%SG#v-0^YQ6}I0JMchW1@v7RGw0+OFa@c2_P#s$RaD87i-J>;f?3F6YOb%3hf$%Y zHF#z##HnZST+BkR#*~?twx6f)DlYufiGqeo>Rd1d%e$E)JG1{NeagDxW0#8civL4k z=Sm`)uC2Pf6TITIZnFBh@rNL!8Y6KeWcQ7ObkyCpk|b*K&Z?{X1DzGM|T_Jz=c{ ziX`Ih53=XgRiZ}s%0iiH34@o*Z@1`-jUxTzm`SI@_fVO;a^dbc$oIv|h1CHpMRLOR z%U1dq#a=O)PDTMP>S#t*$8!REr<0Xr?SfeUqn6FOa@}h~fy=Bt{bq#-E zYSqUjK)T#^^nxz*$bQ_j!pwkheThmO4AIhJ-62-XcT>j+U0qF`Br*Mt_&iO>H`eu^ ztxVZTcec}}tizZI^r{1Vb7~3}e~qbqU2(r^1Mu9O&@MjaBcXwTpXw`Eqw-uta{HtJ zoQ>6d<^K4sjEbm3C_&0>qguiWF@6m2T-WZrDbvOmuMWo;rIW$sOG`80!~#c{nQViX za9L)1U#yUSv{HkSFtCEYjFj1;*y)BnJEjZp>LnEIulK1;^g5k^4_51SLGDC>n(R)0 z!>*K)Jci@HCR=A2{ba}~WnevK+ar2f_k;n7B@5+7VlO}|T&vqR=S zw*B6Wkl~+y<0uGEZ7P%NG_VF7DcjG!Q6Oo>gB`U0L)q~hysj^rOw=8LB}QQ##~3`P z7?o71^ls%gxM*-B;gg+{>11KmDy5Z~*D%9JVdBL=}I50wW+k+AF5Dwf6Wlx+j(8nY{AEH85cH z*KrQV9mqS?Xb(I7=~k6?2a$$nn{e&28i^RkrX1d zRvb&;6SWuy^e0?jL*a{Z6_brU9ySrLnoR@Ge`V(qYi~}dqMKS+)TQef;F6NT;3wuq z@d)5mOX|^m);N=~K{9jmR@Imn)d(!Bc1|YsM8JdZW@@6YmJ1+~K8Klc@) zF(S`PXrVVu*X!Jlz=hJztM1!)I1KYEixcSDt;Y-~3YF&jpD*VYRW<5uw+N_0`C=PkY|Db%Wn>^+#z2B@~pYtqKtbJd;^gKA8Jp`~^xpL=T zXTJdr*PuE!b1)@V(dEWe0qJEv!7~}~Q8xxw)vE7(46{_<+!YO?Utv8snj<{N&vny% z`gK@vOHz3Cp(MVnu3raa!QoYG40N%Q?@v7cOd+~owit%4a>x1Wsp8{@w~LIU4`rfq zQ#BRREkFpkU0+!9R6b3peM5puFSjwq6hpxOIs4?k1ZQZ!xcUBziD9}WBnSzd4)MjsupB=RI~!t$O*vJXQQkWd^0WeG z_d*ts0}Gya2pq1zC};I^T3aT9{@Yahs29PO3gwDBXs)&_HLr|5NWBQoSf?AcF%wl7 z*Hl9`E|7}Xvi&%PSEa~l_|SnP9Oo@*o&0t^sjMOU(S}D^r==je#!1 zK`)BX<$*RccY7`|%Xb9*yp*o2kJ|!A4Clu@I^=x6|D2eu8>u?wcr>$AhxPbV=@x`Trv1AGpO~_97*A3v<1?-WUDu(2cHGgu$ z$tA4|V*sz$n5%5F9ku>WC}*a>QlW9ku~ksHQgfT9I+o|M(PqkWL)hsftrQt{qR)}< zvN$SxFViU<$za{0KkX$}9PHjuPSMe*cQ$+LOs43^U}L@HsYwGBvec$g%3*HiAepO* zWw84V327Yn|6}hhqpDn^w_g>cMH-}~Q@XpmyIZ=uMY=;$kVXmV?(Pz#ySuwNx7)q{ z@A-aWobiscJ~?o)c-HgWG4DCAdHvRdT@=%Iip0BAwX+p@8rdajdEyKk;=5yxhB1H6 zvY6hoBFg~_!VQfmGXW7jCEYc_%ffx-5ASesgYeH0H*uPFUV~Hxii$w(l=GOfTzakS z29zdz^_T48!};>nY?j8cFREQic@rfqBMtT1$vx{g+}5<1cY z&`k=H=v?-f*5667hC}{%dN5?NArih!Ll1-ZYqOcoZE!P(bA>KGL)kn_uJgyD!<^z{ zmfgV`)@^wMaY&1!ocQGjtxuBGJLK&x9`deWgEC5tbNNA)Nqxapm`e1oJsy*i#HAmo zN)a`}#uDp{!BpAVTZI*q06PrT9m5VChW+qtjXeuPP2N8#3<(Y{2DPY&?Bq<(#abic zTW`-uQfAhU){ot5+1dPTwU$Mk+0*b}`XWfRo>J-oz)Y;gmREzlnrB?dqpFRG$-A8B zTbb>J%`$&e-At?0mv`Z8;Ud~&dB5u*%WE6~)Z>-6WMBQ_!0V4$M+210e#+EjAds*o zcs;3VSCxP^DJdGIs#ReRopr^s^p#z8aL%Torchn0!rAoI?aLL})hM)^2kfRywp?X81?9A4vmPuXj`aNkQa!g?=vgbd{LwHB+uUxPR-%l>lWd ztjL}LAJK*~7VroD8t+7+`$Fz3r|X%oqaIH^)z2%rbY41b!E&ULRMY7$Bk%L8MWBQ$ z(ctAG;?DM-e#yl~N2enAh#KPi%yl@^U)g(Q8^1OR3}pZj_lQ1NUM4s~Gnxz$#u9w~3!7CW3JDGMi+#_`eBrHsqo&X;&KHMI{Nzsx zSsa^u^CQO>m;eN>Zr6ErsenV_dX8P)NngHMWofHGMp^!vxV#;OW)frs z0qe{A&R+hTkZQInKYBoeO!o37gvwn8a1_7E8Kwq<4>e`fFow|G(%4jK< zN5*{PveBa2f}hfWiWl46P~8r^t3t@=>Df&d!hXyZFE<=-^gHVQe%|wc|B#F&p&LnN zkeLkwgb6IiAse@?kNPPc+*giyhp|ERfIrv4IR(c+K_=ds{2?D1Z@a_Kb{U#bwpy`3 zRT@QA$BddCTS~Giu2?#5OA8e&(^~G+3h2EIv#osn6;0$p>{BPN@Mr_E3lEd1EJkO7 zzV*tct4**vyu;;lOemHaNI%@mIV`K9XN$aKw)hFhT*JbiG^gfhf-(!$-5eLOXv*$% zwgwa#rqRcky{E*=V#^13-OZK(^V`oyIXV`W)s^I6`5i!XM@b^zm?jkXqgrSzST&Jq z6nX(P?iy8PhBSLa9CE9^^Y=bW3t_h589b#oHR}CqBE?FYJid1Q+%}gY3+|wK7L1~x zw?}wdpae%OFsu4aB@dZdjZD?vL%z7Rx-csiC<(H|h&dYu8x(xt+c|4|wF^BX4Sr=! zBu<{)rNv#rPrJPDlZ)J)n2Or#n^Cs6>}S^fmX-AqdyXB7Od_OxTO_MBG)gOjgcvQK z;*VXVbb9jl{N3EI1m+iq%r3{u;h~~VY4GUZdbX8{lSzIy{8F`ByE)kxugQI!>MGZq za{2A7+)Y#2N?ow#Xu7@xX-S=Y#&q?Nuv|U=HY%f8v0T{zRfgK5tAq^_y9ngwBcpso z6nRFMf07toztg?BYd6MreT|Me&%baCKT=d~C{f4@<;1%mW*c|VgB*^g_!EEC{wjNh z+vm)xd2SLIri`Rr#(OV>qkq1;Y;Y<1c;BE0&LdC%Q} z$U0=`!x3ZPTA}97b(mmI*tEA42AyJy^r;c~sH9}&6Y#VtQl=uOBqIs9za1)quKq6r=3%;x1+rvQH1RoyzF)Q>Y<-UE8HU#Fs_J});v|0;7&QY(G@CgZ#JnJg^9GR2tdpVQ3gYf(08LQfI%8_$r?Iu*9YBz+Gy8x_}onu-Z+RD9jd1 z)2{mN4ZQ{)72HuaqX|m&Msc4`= z1&6TX@Nlh48Mv|z09BjuXyWXMD)Q6#=KhaSw*gPFx5s>$(H*(k4Y^ubYm z8~pV0$FXTBRp-y@UDj*Re1Vrs<;VUi%hC6_S5KY2Ke$IsM-xSs;ODFDj0cim_KSM_ z@pbvfv2f!@4D&0u*?~8|8bGJ)H9o!ORlw{O=qH((%(AX@>jrMMMa|8Nv*$@AZi_#4 zDl7c_1c130qp8CgyXWb`trWm_Drgm`&=^~1SL~$W@*gs-oSC)*bm|GFslC(9MRyq> z+W(N+rsyUB@IZiwwzV-kin-Z{(Sdj#A9vc$W4J)^1hNT5_z6FI(Bsud~P0E?=QZQurx z!uUOD9auK)H{8(QLP5RO;cV2CPHFKtOx#C@!5f>NbO7N2T&B+BHwKD=EfQ{SU3lkT~FnQI!n$dUNay3)t@f=Iy_X4Ac=Ph2oyX|fq+)J8nRM0^AG-{iFmn&jfijWLt!N0D!c>`GA7+Xw9hgDgy%H-7h1%=cAU=<(awf ztSq+`kPjI-(2>|nbc{rbv?``i$1%(dV6pU##1BBtbC&jx&nGRlF6ud6@&=9X#K_(z z!&5>)67eg{WDy=F<5yV-dg>KhvC{ik$;*d?dC%x{e<6%E@=={i3G5Hg!KR4dg$zt^uVF8wBkWb+Axq?#(114;6DVd-&K493Wbz1R(YfeegRGg{qLvb`2L zS&G1X-ng`E<$zBFE+oJWi5gm7y#yD}P|U>8Dgsy-0^3CK(`we6I4UKjLcLe42i&Uk za)?fLKwU(^jz&hzGAcpb`0jz9+Ul(0q0uV z(NvD=Ws}9AfTQDYKB%h7@|wF72D|YlXQ`>flq*x)_-jzC6MPgzU@OpBTAJDd`Hyq8 zqcm>U#hI6fR!U=gQYi3H$EFXHVuv|jmoNE&;UC=xz1H4zr1$-PwZ{;@@&$%=FxnXL zv?eT2k=+MJ-k zUq^gCE$eN&fVHNXoT~Ccr%v;=>ljGR!D!a5_x%A&^baL5SpvDxkn&up^L#YW{27#; zV#@33^9o4GG3pRFf=z3Rsz+=Dr6)+Q% zrC5K6vJ3*ekC3?d<~L|=eg8m_1%^oLd$LJ;*yj<|Cd*Idqj=EVWDz^BuKm_AWz()b zu6YS-9k-kiU0jd&@P4<_I+*vw(OwoMfbl8_2VdC=?HW)A>bDe(7{O>G+Y3#)BF34y zxT_xktPn)sH;T2BD>lR4x-DQ*v9hwx`K&NUG}FU`_hZK_bb8j}GMVg#R_ea7h>wMl zVD|4Bww%mlOy@_K^we!u>RCh|Wr7m~_{BN4;t%-T7n-ccJW=G_pnn*o4U(u56-J>NDt;d29o0YkARV za*E7;Jl*&b6Y&~yPnsR~_7s^E6?cm1S&xp)3mwaW?5=E9a8q6oQ zcEBVeVx)478an){EOmQ1&tHfKm4^6;^w1p`@8T%pU&5N`4d@jjmM$t38g;tWishr9 zgV-4vQHCvn#;ZGmsvhU$Js|}kI27Y3_s20D{yIH}`1~1gW`nyuf#%Ck;Jw)tgJ$HZ zne}4OjcV@PuVj26VLG=MlBgcR;#8;;vt9OWx-Jwb||lGxfUeRX6%E>9_3b4}8jJF%4_ zND<||?)Bu&7ayw40kq{t?}UueOLEuIQY{WPu`3#s_k6g-#5v!q2Xn5P9M03{J}k2x zf2W;;L>1- zp&_AiL=?DQ?{xu6YXkbwVu3p?%v|@rix6iAA3Zyy3`-B1LaByU9zV_rfXLkdSf~dO z^2kSEnGGe67+kMbD&oSxzfFo~3M0*XgHh2W&zl5JGR=;(niwd(EK zXGL%W%~L>j#O-#bO+-T3ri6|CodO=qR&X0@)DZ|*b|f-kj`>R5-t;~%_KH}#a?Iq3 zx(}t3KJFDmGg#$%5W=mbq0h^|NS*kQLD>w!$uoogcsmcdqh=zW`W+|@v$9q}l3k=s zGA}&DM`a$!(@aKlY5$CHCX=PR=$Gx**eb>94JV5W@Z$FogaML?`F>!W0J-XW0?Z!2u)M6|aM(=Cnku^IhI!Pg3kZp1fn7 z?8tme$cX^7O5J61y>0r*sDlld><)M1-xqsTgqA!vm^^1ynSVPM71C{SI?hf3ebvA6 zDRC4Onukpreo!0l=p_C=q!)do#hgz~$kK z3Z~u(L8SxXP|_zaAu++byL6)2`>6CH%@XwlMv;=GhG>L{u@oal?8ZQg(FD!v(qi&= zrP_i?u!~gOqgY|xO#bhqFS(+^bms5}^)S851F^A4lB(T9d{9vFl;#%ES#H82?;WFu zem3l%6oe;YYzZ~61q*g!kz430ADKzoE_p*%v(|Y!o~l|0IbDHG%KdHu(#r@VSvQ`Oh3KG5zF7L;IxZqLUuspm>wR>lafLEWxoHx2eTnTQ$7LK?Z z@En6boK<3A@Ki?+6PeMI+(}H-(Lwy{wO9w(R)hA~i~VW$yqRHHsL@N6G{zJ$Mvl2H z#tkXPL4KX#XGmhH&7@)o0mS&PC9IerMmOKZI zsXsg}#bRKztR6Vu*VAj_XY>@vp4^h3DX?^8_Z z?C8Ljq$bR(;E&GeLLxi7B{RA7Jez%S?Zx^Z;$h0i@f%bd*2x1%V6n;tJ%fW_Wa1nD z%LQmjFYwPgRmoYWbiDemufDwiw^^gma-j^mp_v%~#Z*x4qH6mM^XIaa-4Iql!zwhv zWr6zH+o07m({&`cQ2&hZT|Ck+I;|x_`OV=NK%EFG&3><8Wo3-J?x2EEBKJUE)SQl7 z{C4!K3aTom%vMZTG@Avp$f(c-;%s}UVgJ{=K3OO3U&f{&GH}+Am!QO~cE%C@1gV_M zxt8?%eE83rTF(?DvtW2I{+%(#D0|-|Y0l$vN(h8E-(`%772Nwa6PcM}0`!nK7LO`aZxEEL%WwBKC0Bfr`CNIr*_!{pi zmw#fU(&*d$|b4j=Ch#Z}#kAqk^)gK@uYB@1xJWp;oAmij)`JM5|(mcksyVb-!Yi%>_{i2y` zSb+>Y<`+FN{6107YhB8H&U&0rJ+&tO192`+PB^&%s{f1v;zCvH?Z-3@O)jH2hZj1* zkuoEW%IipN;!u!fJ-ABfZF3EQaV}MO;K6qU<~o+~c_8=s1^B#ygZQg) z7F!7hJ5N~W1%>EAp!S`gpEKh=o+}QP_0;WE$Fs0Y!~QJ4WMZ7Z$^)aGtWqQ{L|l9< zsgG6R+*ycpjinUNhlf^}248$v(Ht6Do=o^{w*Pc_Rp*z^NyFpH8jCH7xpBr+oU9@5 z=)*(Tb`Vr?MQ)sJhk?oM=4)~UMO7LVtX9CGJLL81nLftr*&2)B@wkIyHAV;kKyy?X z%(x4{bH~+4BRNY&A|}O&P`(Qfg31^`hMNYe=IHeL&%6vlc{PVzw|@Y;RD+ipkr2H+*LXb3MLPao^%aGI_MpNj*wJ~;IY49O z&6#+M?o}BfRj$>ep6~p=1(}^_yi3?p--++n@C+bt1tl1fuOIJH15cbb{!bv@rIC#y zA90uX+VHYrY|J_aMKg9UitocVn5hvG_H8SU10or4SGv|5SC{WtT;ZM5#OL3i4v;$0 zJwMoTeE7wp#(IH%yx>dJgUzeshKoOVEEkvH`sWc+ToxvB`ral!Xuh@^`MSE4vt5j% zg3ba*MTh{IJu;BU@d)%+4@*8s6<6)3-7zHGpiwFy%>TXX{L}Bavu*^5QystGE(O+L zUOKAT2%Uva+vpW2o6hyE#b1s1|1did7V$mKimr+I6lc}# zmd0&XAjlbf7V7vqSsb!F_B)B~kmJMDY+Q7=JZa%pxUQ=(=F46HUesQnOGY{eR=Pz% znp?IH^*R`cZw1#3haC1kM-K0+#P>Sk{iayM97cDz-*7KwJi2ATT76uZ?OE)lj;9ET zbw-E+=1EAxq50sv(Tdsf1lB5c*IU(U2fe95c`wY19v*kaH1%B)*ngIF;C>yQ-uzkQ zPrO6nnnO;<;k37w#ClpODzc6^h$9R`QwvheFc6weA)bR2Ia7iBDkmrX@C+(ktoe>W zSBi^{PRon!@ffwn0(W}I?*y^+@Y}b)fd`!3g$B9c zeQv<{glvlNn;PSXvSjJZo{m_p0M2RQPE{WHhwaI!cVE`pDz{6SOyq}9uY59-r6NWW zYH*cAv}#X&+sGIZ%pr!Veb8xrM8e}!r|hyu3Ga9)`O_aHB;Y+!?mi5vo`bx33um4l ziy9R!atRe8{z8J7#f#Rda~@91thWvyMN-)ucN4!mQ)MRTR9@Oq?Z<<(aIg5rPkZmp zPFFnM%IBHaDj72%?Q^>`D+S~>`Ybxto0%81VVM1nyA6gi1t4Bq@ZE5{?a`s+&D9s2df*e4LLnxdu9Kdw7cj+6!x8Bpx(9~99EibTE%tr4`=*WD-#CT8+Xpp_^ zo4)XDA4k((_J2b7H8ZsB-2XWT#HTZYeR2j1`BD(&6r;Qeq43DmJi2AX4|cgdSt}teP0&)DEg=1 zNg#tVhdpJPOH@9XUP)t?ECI_C7!?R*3XPkNNv`#eKb`23@5@K2#~jDs;NO2DEKOaC zP8;XSO!~?7Clo!|8*cp5_EUzw*Rh>I&|?rNDw!&JD)C1j0s@@1eB4#q^&^jy-0hTb zHVaj%4?y}tyACQ^aHH%U;4p3w`Tdffn!cra4X{Mcm|C2eG1{ z1cMu$>RW(RDlo8`PBzk8M5J95tlpNao||?FsnKo#eW9J_qW;(>%Ej#+*!H(~ItY&Z z2+K|PeP>#>!FcRGFR^`$mw}HLrT%1_5bsYlsf&F(%qx5jwtOw7a!D!1fLF;e1b%ze zMD(nNZCDuit0~}M8SxrO25@D*=BAM?%G3|MCRzJmf`HZKMj`(hrmqO=Wo=riqAI2| zvuC42Dj*Jwo4y{_iiG_l;Jlpwu^tbaCq`U7wY$oCSizFR9q1FbN@iOA2oz>dF08cV zywoy5nWHk%`dg)-y-3JA>%yA~sm`w^Y=^w|ou0$Kz88YjHde-NbLUV!l;_(cVX@|? ztl{DXUd{9mh`VEk?R(#TV^WKv($CB`dPAJT{qEx}{v|7f5*`!N!ZSDZB^rCG@^u3| zRs?2`4|IJIG6w-Nglpg;w)X`|3Uw+3zKQ7vxBt&D{8Iy<8#fQkOAgGy4fPn6_?#x z;Z_s{A@@xoHSdq@WHRT|4)?5zjcA;#1V5BdIwel!4}}b7KdG5(2In+Iv6!Mkm9Mel zZo{}9o2?1+oC2(}v5^%Bk|eCnXRO#p~06e-B-L%PiNS-Wb9 zc=qhO$2(|Tpe&?D*+z>RnZB>T*6-T_(zdW1yX$)wtAK~;SR)535L|$BjYaixg@8$9 zu-PE##SvlhJZnkeSN)x(j$7@n-o#%&97gsabILX6CO#QF2=U9StJfJPtVNFFpQFc8@V@yol94h_jz<%p0yVqi;-!K4xnw=^`2@RPPSZ3mzP&m;69JD)oXsHv1RKtp^g&bxQJK2E+i?!AuqNLUfE z4w1)7Jg29_2N(U^pHH!!>`bHfuZP+0z&R?yes%y_*YzRbp@XFI3?C2AzXmF&$l^Mo*?U#mT$Z(n7dJ)RHt7OL`@~dvG1*LVRSM{IGCsNJS zYQNMEK2X~E-sw2u1(T`)_=k6%Ih6%YfIWgROKQxwkazvgnrGEx}evr2=Tn7=jmf17{8P7HRcPj+0vuSQDd3)bmCeN#vuRCWG-GKJ3pX z7tqia5rcIc<&{EK`OkNhe(OQkIhM8fnY8OPUBAkU+Y}olWeZV zDn9t#jZe*GuXWHnSv>|94`m&T)HITdGL)6R|=gFBb*Zs?%@;JQq~(#7HICXB z(2h+89i?~TeU3QCVmtCvQE+UEk#pt;P&Z-!aEGCf(*;^shTz-n&z{CfoVOoZ~QYg$2isVfy>bIsBiWG+gI)CGzpW*%h+SvbT zGLMsTmotPv0Zz12)(h;RJlM0eNt+#?(DEp}NCH3do%uqIF0Dy*!OTFk|C$YOdME;Slk9sl^M9Ed_?)8Vh5VNbI3|K1jY|`^wn`WqS{m=; z=G0_lmTqx*udvkFK@6Ij5#V6KQ#gm0iJ?rFpuxHg@76zvBQ#Xf?&yja!3}!+F$fxpLd$FQr@94E3>!*ALZ@R~bZ+6~3cL$Ob^? zOrykd6^EJ;k8$e4d!T$oLbgGBAG;x}uDsEhNvJkBWJat|7`MG3uCSEllhJ$;-Qnhf z770ut0;1cqu=oa&M-Z{uQ<7Y3j{7lyOBh`L4{x~xG_!m?7@d6WEFS=dA$u@@#@JI+ z)b!^W@#x_hDffMTOSa6VOAfrQS4x4M1J7MlNYoU|lFQ{>aq;{$tgEr`22k2~dFh4? zGxfRvyH$Cj4Xzw7I`NK~vI=MBIB`Y@w%4^#Y~ogiR_bG%*cHywE-T+xrdFUNGQw3D zg-H-<^a}L^Q6R$J{v85?T=Un)@W78IaN~Cic{^8Io+O(85qfL#PO?GHbNgFFb?-p( zS6xysG8*mbt<0~PuWIbpkM~TNwnuK*7$r~D#Y9A&ZSNkyRef}^x1Fzl1}N+m4!4^+ z%HLb=%bqcn{Pp$lYFkwDi0QzbzF5AQ61Vv-`oVM@fxW3@QSg($nCz789BeRfU78<# z{>Eb7PScVUQmK#i_Nqhu9mU-ka44EzOHk4-j!6aDw|?}Krnlj zlT6Fba-+Z!46eWb=9SZts+m)arB^S>_koolp%Bi{BNCt5{C4Q+5ClBZ1sTnkQK>%# z)}h~BRrLmX$Z+wxoj~%jmr+v6be$@;W*RkqWZI(9X!2TYye241nHtNIrgT+8MXl?V zNoF+|IQS^DCxgqk_Vg(BCe;=8%^S<#6$+qoJ;UX=w+u{9(^)s=>TuZdFSqmk?3%o< z@%h+0IywPg=^g?1cbRS^FAtYn+9@vk0iAu%d*a?vjj|?C?Rv-$TrLDRHwyN) zE=L^9SI3mY*wY%7Rv4_QwYx71XpsM1T5exU9B{QEwSn4yfb+!jZKTdUq6&qU!#QWS z*Ln|agJGo;C0jX-YSYroqvapretzv`3ePKQfL1!MDgz4c=ElZYNJ#9KOBKLsgCF?R z06oCs;1sXRnslTE`d8M%O2_MViv;wVWog;n(^}m_3s4k@#=G6{6`d^7K}XErpR}y? zarimU>AW^`WsQch4jhP)i(wADul*A8Oh!u%!T!0p2nT#o=7bA6|J8g1JUEb?n#ROI z;_Sx*EkT{*W!HiEI;~Rf&X}v)s1NZ9-A6*(nW{>_hPaW*XvRtfD^Hl*Lfjt+nnG@j zrM|qpvGK&P))MG7X^B4>jpdO7M(Z6qfPED}sopdPkT@ket>4I#&P&eUy`8Rnt$V6j@N*VxDZAN7ddms|}f(0D|PIKi8|3jhUH7PdD(i#^$ilNc5uD_Tt1R z5_=+!w$`Gn%iW#<`7kRdV`K-Asl$_6Iv($;_4xIF{qo~MJl1*Zc(H2qqfG68v>@i&U@(bo7ofL<;|lpW47A zF~?}<^zKpey2Ru=rPR;YJ3wi`^j&X(Nd&`lWLPT8f$JKJ#tS$IGJ$E-(QJ2>>*L>B zV^$P0JTUIC*HtdxYByb|i`>4)Y{8eWR|`x#A2>XI_3@DvYqVa5Ub`Q#Ff%JZu^^rH z^6qZMvb&wVX@*NC~dg)GBX3L*lUAYt`4oRCB(f+Ub#1Ik@5f=wz zaEX2l(Mfag{16lm1H>KxX`L&zZ)WxLX|ftvqyoEgAZ7`yNPvZfWdW9vz(6YpU}S#& zq*-?;nJ#^dkclvO3Is~kPrz#Pfx$w5IUTQiDf*?KL6(8}_>2UJ`}+SWGzTbcK_Q`K z=pbKo6J@?^! z1gpEIGdUBJk2W?oV03!Uc623O-^=NW2#W%zkS+s5t7KwFO-lEFHXqzSn-5>6_cK{& z^@}2+pY1U%cJS}gu%u^PjH^*Qzr*HM zM`DfgUj{G|z|ew|^S>7mq6=cgf5(DY)p{k`S-W~zha#8@1-?=`oD1X z05uHAY4`esK*;#|ACMmj^>Nj|Uo{&Z2VMv@ha!|j%FfcxKY**cJi)vwR5*^bj-^gu zd^G64Kdh5m%fQGIk_{yr^fxF79gg^T^^t*WqOBik0c`<$fpFKf^S?X3Lljsba8yM` z$1Cg&1Dho7@Tz9{f|aaJ!0`8Y-@+v0c_n?TYpfrLmD;Z0FT-(29^_hlz-?rHlqG}1*?@3(O9t+K@QtBG(g|OE=eRAgWiV}N@C>Z`R@dT z?HU-7XN<~*N{rvb)X3^Xii==K{P+Jz1d@|+W=vQSFQO6Q5t1%&W_*edB4Xd8Nc8;A zOhrK?(c421jWZ@ejyuTmOaI?sj>kM#x?-Lv;96s~u^j~<(bPf1`mG!t9Vs@&C&E=t zwANJR#S2o>B6cq>vakoN90l+TqJ-RUdLBX5^llzGoJt+tKASbv*4FZJosSG1p~Om* z#fSWPi4!n|GTUd!M|EN76a9I44_RxYl6ZzLbu6{<#){KHbKy9`tD-(YdqUg`57;1l z3jOnI7v&B#-}JZIu+-ap+WvWCsh2w*?a&Yw1pLg~8Jrn%MHeGXvwuI4=9`taWw#i2 zMChBuT$29Wl&r()o^s}^P+?v%hVw8!Axq*?jxxtejg!+e> z{D_WkUuNTuR}VT~B>(-kU4qC86{JG z$^82j1*8Zi54W~B?(JLDeXU;ChHq#P1rn<5@6U`;uwJ14eWS$xj&ID3 zPRI)sj3wFhnt`(l7dGzr_v`K&8Cj>~%Wqs@VeLm3x7COXlSROO`umjN9Ua9yQ)lV| zZUTfUdj;o9zZJi!5g}qU_;>gzeyST=n$q;Y|3>~_E`TT-H;RS-|IS+)+h1N$B~KAY z;sO6>>?1gC8$(_4q(%OF{VBLOmV?59pAFJKJ$`ET^CseT*fwU51aGMDee=)Ipa|DU zPUV`L@9H7#A}5g~drSMprG|Bee2v&uHt3(B_IEVIQVKE~+FH`avMzAcqc`&Z&uD=E zXRs*1p`gRLgs=#zCStHoCGO!_y5~kHoe?MK{C6k)lc|WPFic#H+=6Helqllt%y18v z7qkb6O{$oqlvxe`n~1-%Llhh9>r;e9p`c#}LqUssZNxHaVvA96O$+~>REuk1FIq02$wgZ4p1aSB&3s>3O`(_rQidJB>ujSBnXU4rtp@P!aZ%GF#kS!8k;Z6Wc^_bWyl=@?OE+Fr0x2$}_O#r9n?{Ep;{9i!dKJ`N;`>27$xCE z6rH4h#(T&;LaeW?kxDi%d|T=lKIyO_+&YebjRq$oZKZv78mqvdxR+w}WJ8IppvtlD z>3F@$gk`4QScp|=)w$H7qsd&Pr!%1WQlQi)xy5)ZngDG15(QPjObqC-qX?EN6>sAV zhZZ*H)6UrucBU+@#%ZGvT{0q%i1U^}n}O+LqXa_ZhI65EiE;Fm4DNw7>G(&Wg@taS zGkYv_Uf1N|WL6;flAK%zsu=M-B$F+VZf>Q5ueC`!ySm9A?yd)HtZ}NXRmHp?(uqy! zbXu<`gCR)$!O0f*AUoU$&8u3&hgyolKS>GJoXe8Hafk9 zU&3%NZBoydxo@gxu5HvO1LcE4*7DSx#SF%MREm7a?<$) z*U5fCxFjZB+FYIZbRbW)+6(o1_vZixZ%4fsLl28cL(43=RF9vp>#19&j|^MiAAM^y z_qUFT3n>Sy)0&&F+#v4m+ zkGrO1t@ak3uY-I7--`0`@`62gpB6POXipEgJdQrqzHPBstRoAn&sSZj+n+gJjzCUX zNHft=kQPW$c_eow;O<@%eY0~hI!!zM;xf2|>YjF>P#L}oWclgro-B-(`1h&CLpO zI_*wfys=XM>-wU6Z{f@Bx~xUXB)d*XV4Sm9^DHbcZZ;by5_DxlzGd~bjHyVK%D*{m zbuVGidUn6~$=XT!0JC){gT6toU@g$QbXlj&q4zoi(V2QDjKXAkm8n%0`*J#4#^0l= za7~w!k;-FrPX`e9Htn4#)CxmxI2ik#=MjNGnMWaZ;=6hAWABFt9`~l)g=g2AL%z_* z=pbI)%;cFm^Ybag2eIX0?Acag*}+Mzx9N>e@J4&erR@1)mQ0n}Doy=(yLhm0u+Yz( zRX_I~FJ07yjhDEi#BZe74w^mov;4owoI~k4{BAFrUNvL(Ic3aME*GST+#D=QS^E`1 z^W?7jfy?Nr;qYG0hrTK`{y@1M@&`aWa(TlRg?#}NO@rojH7mP3>^`;Y(4@^$>Gd_NJw(szqzs^9xbSYMQ zAu(AJzQ!dRP3By5tJ}!rz)xN!koDbYa_cer;T8R9jIK43y!X|*l{B~a6DMv3@3&N` zdYE(9tz(V0u_YV+Yt`&y>1ON%*8;|zPS8cH?R)JVtJbC zBMh&0$p18!?=pFGh@CTawUlGJhB#Vx6Tr7sDs&XW{q_y}Hr?{qYPTH0tUSi!h~qcL z4myzV9Y!Rix%)U|v# zlQ^>^4wh2z;SvN0eM!^ihgY39SN)Z3ppR|hgd$qfQrTEGwUO*LiUltaeoH82y}+07 zjQfD!IBjovZg#GYolCdgnV?h6hT>Vb^%2I`yL6FSNiYT8P>q~~%us(R?6B{I7ketl z`ODXt+qG>^#0-(@i%fiLc`MG1Lx01x+=gN^;9B*@LbV!CcQGIP;Hsid@0*m|Y8v`A z9o=p-UfF*4lqtzRmp%fi%CQK_@bkK9DLco^;8&nwWu7#w0$YdWkfu;@+PPyyvLV;1sqoGh)g-1_d^BlgZCuZ%5t?J#4oo zhVPaxyN7(e4?VsXN`WE>Z`jmp`Usq2@}GaJSLMg_u%J2n@FpF*sZd7Wrk&MqDU@FX z4%RAM6ewoJ-(7@;hSt%9VIP&aJs|=}6`U8^#T->Otk0w>&n* zk?Kj>u?)?t$+kF~k`E(&mzNJnq!7wbIUn(o=0>cs(FTsk8zhQV3VqBlOBSdUs^q6@ zBIzSk$*QnM3z4lvzUoe z5+f~_d`_IyGhEJ?LoDpryW9gEp-AcDofw`L@>20MCyG^MG#(c!g_I`l4ObrWv`E9z zZM4-i=8l%DHzzoXa&nBq&{eNo(GPL5yMiPQt{q5CA1@SaES`p0c6Ai-v=vY~s6r=5 zeu&xgom67dDHIVYdML1&2oOLRK{?-EU5mUg?NrcDaO%q#<=|$N1Y;(_k z6(SvdP@gZ;?^Wmg^*4UMMrl|!oqhe!ik^7C3LC_3bAHfu7s)bdzqDEMjJODGLs$*w zjx3>mG51*#-Bl%jp^?6+nfv~3CeZJHZK0tACjz#p#)3B%9o(JXNQTGDeh5~iw zw$spZO6w1?x$)y5Jh4~)deH<+Lf#}O2Li|N1TE7#MuuC*nhYT5aLV_MjEE9=ESa)Z zSfzsMa)j?7&SoZ~h#9?o*qjfR)%H4NghaQ+^4CGXqUNHp-6QkG{jXB5q^;o%K5{WXz?+t`M`XeYx2Vu*jeFx!0n!5t7?SHudO&BS8nU?)uyR8_u59^KPGvsG# z6gY=`F1&<0=!Pg=^sS>h=UsG!tJV|mAzKh)l}*3isOQ@G#0q3Ht8N^MGqZ%hY{jG_ zxNlBA`E7N(ov*2?mx8TAO&I>I-i&ylmlkJgXW@Gm$ZNz?Z+yK#Jp4L&I9Fp3SGWt7 zE$h5+Ocy8lrDjUL)5rbHWB<-nTI0s4s|}8}nNxoeTRS%@Y$b&LVrK zrc}-BkftGv_xa70T9g%XyFA}M{#xSo&?iTWvVYCLGSOhK=8mnS_5xS(R`=*tiF@~p z5p`n>u&1d#xyy?mc|CEQyN2F+P6@(uKgnSIp4ONo6>~elr1#ytDzU~c+@5;{B2kbn zF!`X(i}>wCz&a(m@crw~J|o18rVv&3SjS|org~I?{of|?bNA+3XDe!1`HjW$-_;8Y z1Eapx|HP(inX2fjt8=@wjI3J~+c!EI6DF=;({6&xSA}9JO@8`${6>2*=)$6i;W6}F z?L^I(8{iE)YtpXjOD>PNFim?`V(1xg(eW%zOehDsmVG&u7eWhjYZd7?oM*uH4((!_ zFh>CQTIYPtfi9@LlQ<_EzK&C>KK!8yAu`yMuxm0IMTR-wM(nn&qXW0t0uZ=G%5$vx zpI@!Sb;IY#SD&|0RuvmCrtyJe!Ah=5YxR(da}Z>30EP;>i@#noM+Yt7_OG-ACEVyJf2myiaXY13Ysd5Ao_~B3HiD{Q>&q$5+_oI zRxfzevRA15-8goGNw0PtCamxppNDJTQ)%Kgk?T*T<~7h0Zr4tw*r(!cIE1R=kptzl zH=70fbh$TErSZ5&(QTn)ZT!sjHr)dsD`MbaRtnI_jG5*f<=;2k+{fncB%k!{5PYQJ z@fcvceQQ74oi6Zx<(k9tSBKJcQJf#&gggL4Yh9-k7PZ0sT=c;Tev#zaulyeMYqJyl zUY~tk?IGX$g6eeG0hk|(v+!y*o~o)feVgVnF|2(4C5(t$sowd65?uVuvx&$2$n8QIAQPlh#DoS?M1DjsTofsI; z-I@(0FIae}K}(<4ApY^-fX%DqLgE9C(ic@ryCk80U2AFfs%?Wn>=q}Mp#^} z7=2Bj(i477M3YSYY{4AIq(VNCQ&eFGF;$KH%cQH}{jgZrV_m_NR?BV-{p_K@3p)I- z{|9ex9ad$~y$hS5bR#Vx9n#VQo9=FqZV-^(fJ%3FDb1!^aw{z$A>Gp5Y&yQt_xGN2 zegB_xF8GVs^UORmYt6dXy6;7|`^Lit5bw85PjOjDfUGvXMrozryWw>q$E?MjRjX)@ zzNp7^kNpk#_@^@8xJ%rH276oMaai0o7b|V7TUqPWUA_bHX1<)&&zCA2j7>#L#B}hI zN+&X<+Q(eQC6}dm`a({WYH*)gV9)ihS7k+Ag=TmqF>Xh*`)S6@gtH@dUlkkX98NAP z;LcW2dUF;o%(`f8`vRtbc65zt`s=)Itg1w$7;wo4Dsy@ksPFOk>C)MFK zpk4WJ18wk$*(drNW3!$lM9loYuygnC_8f&#{x@{&IBR790QhB8M@>oj5EpZE0;O&+ zB;@@a^u7oFrW)PGGo#VtWR&9WM`uxzgMLHWKa0-lk=?vprc03KCs1eeGHgUTnv=jG z<+NXrz2uB#J2Z5@KS{gV0aJDxMDJkEnJrz8T?Mys+i0cA1s8v^?7O;cgfzzd%nNeZ znGF8!2z9t~4Gjzjrm0T82^@))d@cgz;~P&1Jjy#dQ+(8<2FXwWBO@;1R%`F|5fEK- zqfl)lCfqVORo?UejdvDaKNwi7`OT_f!|ydic;A@5V zkN<-g;K0`ST|%Iw*W+kM?ayV#88*|4!@FB2=U3+S-e6>Z`(`|;!meKf6DZe*`vU7X z{XB8g>Q{5ASE&&Q->##xE0miqykUjJU%HScX-7!Pq`%($4IQ@X$}t(0oo-bzgZBkJ zt~T1yiO)j{&>5eqRAg+-YYB(-NE6?k!B20nkhwS*yGJNnNlXHG4un~+=xHaLoXS=Y zFcT7P74e;pjsR}1dKDlAS(=OSK3$^TMs$%`1uI?v8n-Iz{j1`IsZY3Xg+7Lchf4*v zUhpxdmz6See%Z~@6h8LGj+-2rnV2BRXS!`=OsgoOF+{w6- zBDEIM_+5`d`wD&X)9L89M}G!dT<=3Ya&TtOeeY}=J%+*rt6DQ7uh_+M)M#Y3n&@J- zGB3T$dlzc}?Kau=_&i~w??H-lBq{cTLiA%Xv+Ukg=5ZAC3b78S=UCH9X6jsw%ClU> z^Q}Ino{v`12?*AU`&1_EMW6uSQBZP^oP3P4ReiA8Saz-WCHA2u1F_q1`!KlGF@zJ@ zetKh{vcQ1sdD!VUGgr57F88fzRrLG%JICvl0Atkx6E91zLgrYPlXJW(R4x^ak5EP5 zrh<)> zACh&Aa?lI?9g0CMrx!CDUBG(_i5SY?;4oa76bvc;ajGcEM7VKa_po4&ny}%4?HUDE zi_OWMlXkR-Nvt*d zr$<#0Tbc4?|NZ6futsX|XI^w1WB_?h{RE=r|EBoj(e${_q_G_DJ)PgQtPXaw(>9JL!a^&kR`qs%FpGX(D=VXNc zMU(S*T6cOLq)6k&B?aoJ%FAa!AbcosEI5ufdI2d5q0UqV?o^|(L8s-&kKg6E(_c%a zrt9gYNp*F~LK1RcPE#FyUSbgg>&A!ocRi);y(Xg{zK*5MV`XAus-cnaFslV02=Rb$ zfzM=%t6YMEhwBRkpDYi8f@X5Cns=rJpU2FNjg9TC35dz@DY9Q;$Bu}rqDO{^fjQxG zcQR<=a01L*8H`dujlLx$0Y%3FBQVLy$&u)#f9u`+Gr9CsKa*uZM+0Kk0$)72X^ht@Sh*C`HSl)$(z;22*ygss>i;IwNuj& z8UPDj15ozVsM9?6+rJAPSVW_!8X6Xg`V7O>t=8SSHa?^`B|u6tI7lj0F7(W8BBp-Z z7%VC2r@u>TChavD_;(Rvzjx+xboPMa)5^;CG!ou=Bzk(bOiZY5X;gizp(qkisENG1 zzPh}fs>$a>&$zNo7H6p=kBBi%OfX*}&VMUkwPk<_a<#fe8?k+pNV?jcU0q$>-9b{F zk`TRAnROXeoPxLz`jS_vG8Qs%R1EA3zxAu@>ag)Uwzf#Yjxj6!H}&p9_rK{n>%uH4 z-J+Ldv_Fy+62Wws2Mz`*>WowRh)fnt{^ z95?tn)F;w8%(RxDsAN#Ksq;VlJv5B}UW?kOw=;N`r?K%F(g8(LaV}D!A=Um~ZYfnd z)L>&&8UNjqsmTl6U`xuTW;}~!vrtu~$r+A(j`FE?yOIgrKf)R_q&&B@Ba-?GX zeUKkgt^X?{`F}i-4ayLD-^s|x;9wIWb8>PraDwwig!ym&(_5JjU#s*%+EQ-Vu+4>H z*_PSjz6vs%lY-x_0Apmv&mqv-4;FQc+A*?jgVcLoZpdbNz#Hs4&IiPNx)oT(Y@qqU<{d9{=)Y?wW4)Fk5LqQ;ImIoHOp8rS;M69N(vLTvo-CgZie zw@@0ISZr~sUmLqGut;spjU8-l#hI266dJewSy}Fj{MFmCD%L)RDZ*FT>JvU7ZmSL_Rl~!L%O?q zdS1~S7i&TIp5ZY6`{Ag-39v(S_Lu*$t<+kWJ>9RSW@n`T$6OO@%P<$Z-?Vqn$O6am z^rvRxoLchVRak=*_bsY*{&fYaT2Pa?GM04z5a$;(dNhVK#vOh+@&`^RByPU6ebzB{ zD~Xv@YN`MJ>#cR~A_AnSPcc-)OQq$jt4%(o&)ue)sa1Y0b$~^ZsxD~+d94m#;BmZ-D#nS&-sRSSn3`t;7ou#4y?(VPs;|KOTK_^8NXU&Qk z3-^Ca%H+%cBu}yP|DQYd@Biyg@i`xqi!|y&#Y~`LpFxER5iV%M2%H*7rH6)aV5l}x zF)*man$Z%W>U%K{`~qJw+pnnl-V7{`27$^AmGVI6_jdYF0Nry4_f}RpJP!>8XPur1 zEP$|#jB1V;WmvmpV$J|WoAs3r4JDF=GhN>U@X!9B!pIq(EK0e1V8NSSC93^KNa!!zQ=ZQ>(M*6CMkvKzN_^U2d!$#pbNi#m z=vEL>QAg4sm+H8CQ8Cs~rMRM)?Q^t}*^EguKCT?m;qA6u*SKSh>z=JdH(VKtjIUFY6nTk&O*pJor%ZP=1|*> zL*M7FlG6c}y2jPj#XFo)r5l@Svy|b=L+^8nOA$H0rtwYl=uk)@gY!AE8DmtkDTEq9{NU_oG8(#&7f6RqrdNi9G?2 z(~BR!SUof2)yLEq=2!UXRkRw94jTDonAzKBE?4l_ z&);5Z#gp)s0^u?f=f4L6{uB^1E?_5@vrqb+9#!Y_+jB zpZ+S*+QiNHDtoFZ%PXHklY3I|#sLs+sIJJSDtf-Li}xomGy>X7tSMd2!e#QJ#qH6o z0GUt_`j)>Rv5U0$8C|o-7Odz`_j`!hs>%VUy)KW8aO$1JSlM2kV{n_Kbr~94K*}TF z7hi0^szG4qMtriA2de`-G`MSTuM$eqA>;=a6_s;et=~4+ega%uFw!Jaa&8-??6JdHM)*E+?5{%o|_2AEXJ5BiZ4skU@VTM%v#c3bNZz`|x7}($dOtd{|5|0>^t(a~{l?$%yBi-e85rAg zxl7^0G=+^@M`}byMO_{@GhApFsNRMeDMp1)y89#B6Y!04Pz+=&-znfRzdB6i5coOl$CIo?}H{<;$1-Ec8G!$Iax>&b|?O(f5 z^OR|JV8k)r-QVnFA61zJHcf4tE?DN-IWH|IYE_6I4V@pmGAPvV3xGCtDtLZ+T&LS( zFkeuu5#EUZT`Hne3x_D!Uf^uWF&D|T;P%))@YtN0g{9fe=4A9d+jO;nr5R_8-@k0W zvK82?H5eBukHzOX(W{?o_n0Erx6lQ8Y;W z4v!`;Le`C-<7GpK1!dmF72;xI?N?wiUmwMvtKe%?zV)S(3U;K6bR5sAY6(hV(fndx z_%J8_q{zuAiAS%a{0kd)5e~DZit%1qdufxRUTnH=M1)Of+GK@& zFv9qp)jR@rk^Dx|_)WL(=a>@es)2%O{(OaqZ)hwD&w;#0!%1Q9(ciuZ!hN3X)rIGh zKCrr>6V7`=1zp7V3g0_>&11&~2d#p&bp?_SR+D0?2F7FX#2OK^^*a`R+1FHc4I|}(3Rb^D^VT>yY=zqIx32+-;e{q&c9gUf z4rb;@IvBcY><@E{I=?3m?z0(|_D1NSV)29<&9|OoU5+-QCTp@>_Vo418WIGJeEe8n z+~(gC#;(1Y^Qxp_f6Cp8cZPnhU96)jL_%&NB=I5p`ZK3-{-;U`!QLQEeariqK zC+nB{{m}?V3vx@k8_*bPgI$oa!jRgiM^MFkPp9rUv4l6qM^Zw<@9fAbxn*$DabddZ z`W;Z1cxA39`=>s$&#p};{wm}o)-RloRM_hnhzvWrWhT(LVc&g?dSEJ>M1QurRTCu? z6gK~qq+wU}POtSr*Heam*Ztw`l2D2qMZ(9b+g}}~u6GlaB+ta!-kg;XxfDV*+iDlH zQ77H)bSS7TS!cAry%jD)bS5NXX=I%@27Ic@4c3NnJEQL|<~9|+;dk6_k0ujgN!A=; zy#DiJ#T1z*=VmO&z%if>1LG`#cN)(h9^3@VEze3KY}xc%oDpfiM4%@`CXNwv)jn*rRwD!I z4s`odZEG9ZZH^WeQ4bjq!)M;dbK{u7u2Pg2D+l*?JB88v!l&1kKa=Wz*_hHGp{)0p z)RCoB93Iy_En!`(Uh4NTi3Y4MAZ2|&u;0O8*C%yoF>1H;`hP6s7Z;j$fm3)nbvHDq!mtgk`+}`alLu8F z?nKgoN>HX9=GNCU^_f=Fo;yDV2P7QQ$MPTFZJkr^5vC;ef2v_80 zXSm#al69}#@J+4b#&))!a={Ol*|WZr9|I%9r+?PBQb&CSU7*OzW)XAXekbldSm#Gb z-ats2S(lkC@M4ATZb##2A*Ky9mj8kH>N$F4GLKR0<=@lO6E1*%jo4>QjTjOpKiRra zQBB(wh8D=B2Zi{8vLdGa$DKy(A7d|2aHWfTPP3}W1))?q(|w7IMPQ~4;-n#dnn^RW zsg*qt!wCJYeFSdrlh^}O%_6m=!qBKF@{5Jw5S|isSS9qx=%?epkjtPH1okV9>+N3U z3x>tW(yZJ0Q=#LZQhjPi(IOkS#~pdrY6(sZpKTIQuFkegg@^Ds6-qIejiKB+<0Wh0 z&KQ!a0>K_R*e_!`9J(G(I;GZ_b)RmVz_qV$nuXY2IZY}m>K#4> zHmA3`TSHaV)_e`FaGz4#*lWk7u=TyGG3&Wv=g9S5YIcj$!%y3|9vbHek&6-<=~0FHmel zBzd4W7Qa307z%nm=7k-q*u++MgsN>EDai_P-F0?%@xs*bJ3v(nr7hlyicrK2&SUTf z-&KzdXz13OA;v`R7z|(@75kYyb_?vsx6jwt*Wa`uV^Tzih9ZtyaY#u&pS)&Zc+TSe zqTFzvnu-JEFTS)QUh0EX!x?X%7jeMgC zLXw1J$H728e}$>9)Z_t!^nJp!pxA)2va$tlZ>5)?H@34hEEMjow^u7-!$!=!PA?c_ z@JagNu&uRexFfH|aqVwT7wiD)=e?#t^?W>k!+Y7N$HAW+$($SVCtoh{Emkvh4e7~h z9IPR*+|#h-g94f$;$*Sr;PtX`RRU-q@N@K~@p^wUp%f{LTn@4AY&j4fBsj>hns69} z6`OG=W;VXxJ`EhZS4>@4S;i$EQ{|yt@LM&iSI1^2{{_E}Vq|*>R_k@EWph!(*8Ic- zEjN60AUrl_V=&G6>_QP+14ZaMk^o;75J-nsR#Tv~Irp6HD{-&FsQSgJSl+t+Pk5;ZUUQIq8iH>ex}6GUzn#}aLM zR)7?()p|hm=nM39<$*;P0zgmd^WBc!rr_KN9URc*?l>?-V_dA0^GUFtDNA}GzoA!aki^-0QnrSTx<3EoSCT#N=T?D3P zL!;g58SsuO^jj%4kuKNhD56RY%fhbERp_yzvkzP6(sd1dwFm)?WVX?9GE3a5{kXN1 z+4FpNVkrW~^^u6bl?5G-O%ozpAKp3fbxkMXwQM3ZKJyFOC%`NR&8^`2)2gZyViQw! z=daQ1W-Iel{AY@<_CU{e73rB4DV;is7pExp*XifniVWb+h9Bz zh0_&2c)j6{ii#=`X9DiyzC&5L?8Y1WkHJ|HbYGbK@q?0s<9I2T&T`P8^L^yDhJ+tn zr0`Z7Zdj(8ALe)7p`M}ccIMWr=KW!3DpwC#9gVtTzQt7wzA#T?&Mh^LFL%eDX_@m) zi=GL|VZJR`m(f$uE!^WiCc_sMpYbJL7Q9gVHk|He z(0Q}WWLFA!sHesE*T=I)u{z;5#KxDa_dX-FPC`GqK^%=Bcknb!SD3OM8`%W)+eJU#9vl=zh#eMMGp)heCV(>Am?b`0qE>Jv07t?r4yV0dHZi$F&MrjIQ;XuZ*dVd3GpWZhweY*cI7^folKv~6Vd z(kJN;*yHsY4swL2#9Xhf#u@vrpC8P7PeC-y8aE(Y%C|P&<%be5Z`ap zQ%5Aosd(cM68ae-NV(0z(9>NV=EOYzki+<=#V(!A<+nq>SY1L!S&?`g=F5c1HTcXK z8L~+VcQRYsMNX0^uUuW20;qbw3hfMwF%>_OV@QOx_$;M<^CTB06G5?8P#|Hzbm$0j z1+4u=5(EGjL?3&V8F4S3?+Ql>;KecJH+j9AuQb`d7bfQw+c`~S(l|U-&Qh0(&RzgP z2$GlU!Alj!;@=)7$4g@-UPEZl$l&DToSZXvJV@ycnQOgQR-I4v=P)lL9xvB#weGDLwmBU?SK~*#2>X1T z66;^@sL$9<=XX`)QGgec?i?Q%cb8h2@y!tQ_`aKogI*r(xxbYSdT-u!W--dl|&sm&`4fl_>8jx`}cDK`ECPIvr#Y;8s zXtF8hR9KclqVd8ucY5Ja1{-6_dk4R(F3i3PuMgFABa<4cwW#Q1Qzb?Rtj}IbAWL5s zYc&M~+9sv%?b!*q+xUNqrh~#=uMGp5RYurB1cx)E;;3CQG1@?P2093EJ7^<2T>}q) z%GM>P5sXhju)nz(;@SbX7r^}TrJ`gE(atvUt&w4i{B&5jkq=@XPd%nsBzoohAUD&!hQ)j7#vLA@MCiY%@eo`t zlkO8))MQoLLhXYyZhz@i>YMr5PCAyT=1RnC_G!Hivs@1hX!)ID8J1eWYW09ZWa%2< zj$*FgH?pH{-4{N{;4jG0`d@lS{o8sWQQ?3~6Lq~xVn)}B6v4Bq72;j7_$?Po|6%C- zu*1z@;S{QPS8A%RrF6SSf(AY57z0-=j|qpmgYPQP46dce4E^JqXjozip@T9DPL-m}n*arzY>O_mUSETWn0)lSPc#d;pTA+ATVf zVj_^Pxh6*l+Dq^|?ZfiijAHWK;8<<#Pl~rGp4!iH!QE~r4n{2^gDaStW zxS8AU|1MG_{!8LlVTxGrTlVHSt(u!InA;YD+{U>o+4oY#61T|9a1JI8C)m5Dvgztk zv>C#xud1_NtiP!`1<6DyFb!@&Q_H@k;S42gafw<@C!)ULw zNq|i%3Exu)pKXml^-JecU0{ij)MeIf>6R&=8%_Ao(Pcjy(GZ_dfv4MSJPWH!hhN=@kG%RRFR?Q>@GEhJaPY3x zwy?hFeHW$=o6$+BE>U97vLV^g;N!~;>ct%q#74z@e{!ocBIy3)Apb-i8}JJ+pSp_SDhnvd%YWLaWU(m<}?e{g}iEAi5_9H$)ed z#F4@1`^{!|r>mUFU-5nVna zr78xEN}X9h>8)^XR)#!P(>_>_zVA0YD7@lQ*&6% zZJ3IrsaH7sitRvZ$yDVKT~s8#-%&E+u|8eD<5gEdCz&}I&T<9mgIDuxqTIZ^6g=NB zO?026h9{Sv2|KNmjH7l#2(8NC#GKHVx^}N`0c^`fE@f$H*=%<-pd?IeFn{uE9@*-n z#HGi?X*K{>LF}N(a*OOD*>M0+1@)8C&#JM`WCH_TuOu2FE-r|CU0vOQbZ+zBFAHw< z^#X4D@DFSJ#I6mFVvVqna)tJ@Ff6k7pW@^PvTFziJsJ#$-h*=e*|z(rzgpxZKe=hp5QvFm}X^Ro)B-fhXN6lRD`KdWO;YiNW;C*0>*ge=h8r5bp zt6u4*Uqn%XnK`L6ea}f8vR2a*7fLP2I{xTFPKQSmUO&L{9G1#f!UCvwINjwUg5>e0i zq44hj4M4jze&5T4XSP=-WI)X%At4dm;uWcFaQiB(9i->BdDS$vvftE7?E3}U3wjSW zh_Te*$u6nT zo=1>)GbAp-%rQABzHda>)$&?ktlAh(Na;ydW^ZrL!pwX+`KPGx{PSf-o;(&VNqCL4 z;D^5Vz%y2e8RGv=qOZmA$wSOBl9FRvJ6IIBekOeQ$*taPaIkpx2ILSkmA~-(SzpBz z21@Mp^UwSVZ#XqLUNxVQ67y+J|AAZWQ&@ZB9|D|PDXTf`^FddM`=JWp3Aa*T*=rZt zY-l353!=k$i{4n$Y|YQ~eQ^Tjmesz5 zMqoJq4R~aWEzPY{Z;E@HzOB2&Mm(T8TonbV%}`RAzMnDzX+-lEN&g7jHaxw4JCuKY zkWBY)EVi^#ShK;_ap7j4wqq35ePTV{Q{p%F%$@V~RiI5)qQv8OziR6lsZp8rUs8m@ ztDKJLo4>uv0Q)q z(Dn~~P)KZdq%bb)iCf#*U+@b6R=!SMj<&nTCcg!Cy00-WE{hxR?di$dyw8QaKJ>HL z*S9BZifFb>a(J;j6T{BDu5tT=Pq!l|TP^JqohPd5>SXq=WAX-u!d=b%LMTol^G&|_ z*%N5sVgX8&M*)8C9IZe4NdAPd>~ES?29_Q&QISSRF2a<-?_xZa@_buq(rUJ8dN&mw z($WL@LQi^ltnqf3X-L-mbdC@YA2&ScDFfYWUfvodpC3me-7}Bus+DVtw1HM)S{9en z90+z3=*wajK;1HOP=J>@eKB1t9Sx(ivR6ZGZ;IYw1Po*lZd2g4eHjGrkiI8)zkV>t zZTRHLLW?U~w%h{fY^I}U+xCWwpMM>suz{u{A0K~{7QJ4*{7*E$0M~u2?3j=yGX}c1 zLJb;TO#|!?csQPQL7^3rQc_yk0|~nH=yZ9AdY^(zz3cmE_ubK`Bp`R4{RT3DeVzg1^r7aU0@*5q!grJ*DFRdhtlNDQ~ ziQP{L6VSY{*L2q{EZle|fZz$B0C!Jt1>{sF=D(Wt4dn<+O|9;HDS6mwEE<5flD`Q5b-b73Z9m?oQ!2>&HRGapnKj0I;ap%mE&5 zY+Fx$jET1WyU92-C(w<8f3(IFm(a41lh84NMJMm0tzoEi1<+;zzT(E{i3YtIT44;N zX};;a6C9=w&v}1#zI6ZQb8oGxs@moJimRMal=7>VgD|~e-rGi1iC>`dlSB6E64o*l?t>lXMC7+-&^k*Vkoo)uqD=7Lw zd1e+I$`l>%pY=dHOS?~*xN)_LGx_ArOrgjFVfU?dz;e6#;J|9$fY-09!;J1tYyT=0 zIXZh~u3WdO*1t6~!Bpq!X#gmlvW~e7y}=|bD0b2G6U-rGyv`p(^(5Q(-eYwhJxyNy z{hCSMsOg(tL6G)Cw#3OCN}<^T`}+sPs;dP!h$Su$a;&*(<4AI{w0AGq-BKgl>thP&+0nO;2+9`_pl;pB=M9!|79{o0 zG2+@PScd#TZvHah3AOTbbJjn2!>;mav!S5y8W4rwSLrqxFE)`$*=V^pR91e!^xtf- zot6AWqAtZfH^yhHX~!RvHS@4fkSGyuNnR^*k64i+zSNo+?tNA0D?}^a#3AUh3;NC* zm_GZc_UdszT~nU%&L2xi+(&JngaQ(L-R1ZE9e4JRX@ZDL z$N3GP<+<_A6m3ho;DyYz$hoYdbLu^-~tJC zbSsnkZMpl+W}PyUNx>EGmGPbT`aRd~wvF${qmY%dOod;R8MEC?=^P;$HGydlPFn*?D5=i z#zy{LNZct* zUkH@B7ZwoxenCP&t}~wtZMJZI9g*`sa~q${p!u5P4W7<->+GG&lQsL1VN|0fAiG-! zs&>Me;@)JM>A2AD3Vyg+ZL|ef(!k?pwB3=JC*Ix#xEQAqPj_OsGlBTX-nb@L2kj7H ztp&yVgOM6wA47IaHFAmV(!wmw}UJ*V}0| zDv31HA{tq4PeQv$YLNfbj=An6fp@!gystux<}8OqxpooG1_N<5Vhjq}g-pNHF?zXZ*`Rh8urPfGDG zGctu=%%J0buph;W%o#F#vb1Zzm{U%VwmDs*%W2};)TfI@Oi<-^ZJfaVTE8O~3NL4Q z?ZW&lFnHgd#D3cS(TYHA(T-vLMY~3`vUYpoMy|0?jG8pV8bTLU<)@a0>Cn4D?GFw0 z=pdJ9>1cT}+PU;I+Ccfx_OTpC91MOQ^|&zW3YlQw;PXym!pRY(He}iYaGyeqwNB4!J=D(J82cEL-{PD?VS)oFj}?cHEr(=$O`Qa zkHfv?Zo13~^YdFgNwMXZmpzt_%UJD+C&~?vCR*v_CJz`=MA&jhANdZyNDz3tg=FS-GE;0Qa$aH-FvEZN_%>yfSa@U7GD$r@%`kt7M8B>$vjK{~+ zEeE?3YsSpvb6rZi>NdH5$I1RtDCpsnRzUgJhJeCQrTC#&nAN;!U${mqN~-Je8^^X; zkX0(lhg+q4I z4BomvC?Ai5@jO}c4OM;YsW#I7RCy8?7ngTu@t5?SYBf|;>kRwwcsv`G_YckPWWL0B zSUzB~dV+3#k(bnzFSq^@N;T;plkzXsfHJj6>&lm;KH{|945veJzj`N|YOQ0SdLI%A zDuet6jDoG|?Q8g7_+9@{gUV;gnUny5EbanF{T^I%f1Pk%s%Lm5FhP6`Z?tjN8Ujbv zqP3QfIiHI@iTP?(*@gD4$r*o+->3+4RN;;E%L(w;p@a>rY<`TatE!SLh~7pL^48Fj zELGIfL3QcKYP>!q;@II)u=%QM6T1y#MZpa5y>_*ZN~6`ER=y}+(ZC*8TEZTYwp!k} zI=Na6q%SLhRatiCsH87`Qv}i^B(_3sLCI!Wf~cLZ2MxLS@Z6a~uDBUCR)oGorl}eE z33OhjDJZwn6|=q-xv!f$zY@}axLVXWU8?_RTw`;^m`hhNv@_dRE_iS_Yjf03s zP8ICpd6-&$c=J#EqQh}1|IW0RRun=-E{MLh;iyl~V}!mup;fxvDq1L-g!B^r7YpdI z*M#$@#e&uyGhZcyRy%chhiCdwJl`5r$ZBiIf6N^HYTi0nmN5N361E0UZF&}KbG`1$ zoy5vjrqx!6>`*i;VSZBT$1CJXpj@s#QaJP&`xBS#pTMIcdY) z!-jG#b3|lUAD$|HU6t4NYzf9R8Vo;1>0O#lVxs3>lFvf#2bHHUEkY(-A&8Ev`W~s$ zjn4Dyt*wKA&u{K>e2F#YpJnU|o{G=g!_M9w=Za5DkSa9ti3PE5u+GPcob6Ak&m9sG z;YU`=swTP)8a0Jhr&+lb0ahwdXfkT^t#GSua?2nGic_CIA=SYE3HEmfozGt$w7UN& zrh?3y(f0(I=dGcY=#M8IgdjVcVDK;vv6FRRQaho_A)-)vn0F-}SGbnDZ`-UpwHO2b2O+8W;BiXC&Z_g|a2u%2kc$!SlwN=Sag={)y+M`e%NA z%s=|54?A3Q#kNdxl&rUw1O0AXh?aRrOrB@^4I9;FJWi8mw`_c_{?;S3nwGJvQqx2> z!M$q6s;lb|G+?c?<`$es*wMB-t6M^^kKP@TQVWofbY_H5tghw!At_*l74-i8Ev9ul z)@AEHa^Y|LEikaU?Ey(nNH#;Rr zbHQy!iYYq}mQhzb>=|*Y6ww)2U`^A&?%(vTOS$$fM>1Rj=Pe|!uJ--yU`O(giYh*H zImYG@0@r@Oodq?nJ)70I>ebO)94tO=MFW{s>HeYvc72s`w!+?DBR3&uN__B+rw{A2 ze46V!%LSe8h z*2Ro%{ipQWI3jizv6({GKlStOukh10^|qo!eouS387;$5p=22Hy9qW$iV*UDN#r+z z7oGdE*lUzVE->ma?{WvfSMpPX6hv1%plxA)=3V`{>f>SroF zPr16#A&L=jXPzLcm(JDK(KqpI1~C+LLCm8+e<*gQQ8D2tkSgqG%mUG_yzC81cWdPm zSnm`Nj#IH_%qP*6Q0D4{`z6_7n^xkIi=bk4yb2@u?bo2RcKoVJf|JnU?ay4V#A9?@ z&zE$#jp0k)A0qk>*ubPArEdfCUFgH^{TCYte#-Y*)9BmBR@h|O-hrq zs#S+b(@M90g9J!Ij9)mds|A_>EjcR~!q4StIQFP%?kfElsIpM+LJ)9&D0(Vx7V=JS z|7)2mCk3p$Jcpt#&n8{t7Cnj32eJN`tChIg>c;GtkUB0Jem~_mebuTlCl@X}6t`VX zl)H^W6H+fwc3aMQEnlQIKYzWu23Q2@b*ia=YX))Q&zA+N7F`dhcxA>z7=`;TKWFVe z{-oexmH^dvfL$%weh7l!ZxZFa#2%J~dB-72BeFtGSC$J0bs|4uF7B}MOXNCT041K| zCw{kF z%*8l5Yo*&?ll^ix-=Et8?ci)zj73m=@=#}vqzcaSuCVzPGESIRSQ?nvv*4KeuqsVarwl1{O8Ev_}Z^X^_+95I4T)GYbjew#x9M-MCL2nT=u-Y!VPuk#VH@- zwujgJ-x2|h#^eloEL1++SqA3Rbd{;NFy8@&b>67TKbDjK4 zD&1y{6Q;tN@ZT;=Fz8@FMoT|epE`Q?ZSZSi85`ni9FU0aSaf$W@~SOJvj15Q<^~a9xSv>qIk^pAFW2c| zLMs-2e7b0_jC_@PIeQ|zqN$gfwM)&ac$s+RA>#@!^3n|rSE{V$sMRsN?_4fkX~xXn zD{ZoF@xJcfZfK->{98jeBs^S6WAZ`dmc&f7x87F#GWn?TSG(t(&Hy^=I(;@Zmg|LD zcV>@9SHvpXbOxJ<&~DAqQPPpq$6WIadnkqM-Pk6MdF$CaA*LQya+Tcx=lQpXZ5csAM$@M)^0QkVM#nw7_}o|-2}W?ek}qKMtq8LVXVg`ma_5k{ZmbA7%1c!BUP z95X(SYn|HW0w^ai5(}#6hWVt&W*oKZ6necH!9JHbuGHjas(trz=o-qCOmmK3-Akq`~~}KC0Vch%1RI}5nAQ_?Vk=e6$|WP5gS4_%U56oEEj zr{;i8J>pA)QiEG0=Qd@8RfcHli}aWK3GwP|Mhq#7!@PWSWDl2LTTMTnk*$OXzD&LW^1;8B<@>c<0N z=)~Qgsqjb&LjlkT#bqB-%El!8`F`>%r=x{lDHie3aPP}?zqR%BJK8taD#GG5#`g{^ zT`w};=^ANop9?-)vlvnJy1rAx`+5u@L}mOSG#x!6UChc(pyJmXoy6y~&p07F*?RQ; z?%4h)!%W6?BP&63yExakjIl@2sJ^PYv#-})xrwLd!%=%7tNzYdQ`LW~yZF+>Uc*GZ2j(`zb2dlQAHS3#h&jsh+d# zsVDbQS;zC$=TFM*tQQP_%PO6zw0%$^T^1FZ4Jk!oN28sv+UeknNV@NY1ilG`M5A5) zkRU#lkHGakW6NeXtg!{^WmaBg>TNWG@{x+yO|q!wvIPGhZ*LivWw(Xxf(lrObc1xK zbT>%XLw6%3-5?;{E!{|WcOxL(-QC@=r|-Mg`o6#W$KL#rIymm<@s2sixW;*&@;HL6 znIab%QvHli?-Sv>adCZ@Q^HL~lJOf9y#pL3FG4J#PP!`t_G%Xq4GWH%BC`B`Wel`8 zLepB4iHNlpYU-&;sTF7r)MKW#HK9TX>A&-K0?0RQ*CTv>)jgS#A7Vhp#fOsao)VsS-%t3{{PlE~wk zayAveO$YEq;Z*s*iMz(#M;#D9UP$wQgj`y}Xaahk&C?l;hTyYSh3aFWzf9UXlHYry zrT)V+r%TnqLhOEZIxWBS;+4A;f3;~eUj9^TP-)qa*`(OnL&C!hW$yI`2s?E}!o3W$ zm&>#4(jR8n_Z@KB4Ii(3epSX>w#U{wT#Cylerio)afI(rM1VNH=Dm8y2lFd|k}QeM zxnu`AR*jq-OksmcB8^K4OUZU%E@hR+J=`k-vuDGppcFV6lIO{WL(!3^A_gSLwC5jn z*PR~-4l4=4(zJu8@}CMf$IOLooaWp z-C6uaUMC`*YS9SbB++U$2JcZOQ;u&_r4>ZE_1}l59$UTggy9XAd$&N$v-wWD(1!Dr~`M;=ES z0a6^8(N?ubO#K)+J41Zm=W{Vk4N*6&i7WjwuBXL4_M`7tY#3Nv))crN2f8yv*4BM|8~ z7FGh0YB4rw2utxINpNANDjZ7ItP?l_IM}snPWho;09rCXKMhE=jkiLE;hZSUxRd2N z$^ixby01j^af-F=0YeSstCNLthWAg=xeX5nK+*irm1rbQF&}hePwWZEkichXuS6>vR|Ba5A@~PhUjmp@G z1`Rz#BcsGim%Kx~&v^q6vGbm3jUs<64pvGq_=*C|Tuj7kF#?^FS~Y*Dpgmpfj2M8G z@4$pT$uQ8*~Wb$i;|E&c)9pNF8Ik#HUAi@#i zMJvh}MD9ODIhI?FXHP}hyOu?P=0ZeT6iL2iRp*gF2iKwPx@Q`EtRliwUm6`i~U zVRl^tTTEKmUbD&I(X2#mPzt+|?Dl(S__5AkbRCL|M4LYl+#9R-Xx=0)`dyo~+8=*0 zN9@n7<01CM4UU*K7FZq{j1(l`iB!ZT0$jXJlQv{Rv6QX)uepXzB?q0&lBd^qRifOH z!w^HQzytd~Z9`b+rLwtfnM%n3*1~o}o~n}_DHYJ2!^VIm@E11fIUfH>@OicJnn?+7 zSHR4)eYE}P{Q4dsvDVXa`dvlkV1Lp#gqu(*4wGz7M*K=EPQ;tPTrE4Y`L%yKn)8q^a2F zoBLK*d-J(G=}FMz?n9>5qcmi6yEdXvcFMCyQpoIs(H*Y4Zh*+{hljS&fzGOL&3wZK z>t?3)*wPS-^ViAN8Z}+`*wRuv8~T%$_6TKNwsQD4oRRWX(z({N51XZ^KUa;j?tdeL z(^PCrECbV?fH7j>omwF^Cvq89-CN8smU9ug9>3~H!`yuM4a`CY9<{7jvb1kPFQHl?=%aoiXDi+C~&fE1e` zXD(Kjx~P_JsZqQB=LDImh)Zvh?dsnCqM-N1!c=s+;OhZq=;XM|!F%eyydM9??5(e9 z3}Z2^5)``c=;c@h8PVt(Wc{hIXyw(&rclfJ!W|Tia|>`{?WmPgQO}?R83~GmKgzpy zPgi?k$qLo<*9jP(-EeV_mSz`lLx!gZms%=?3b&!#^Eha7*Ll929!zbl!!N&F+qr>z z1))~%sLIqPit|JJoE%N-tPs#+?N*(;zu`-U@{~KM8N4+JdKI$Jc6^g+Dp!m1hw>W9 z*)D9AF;mr(-(!c3`R3v=dCE&(G`kfydTft^&B#jtS(R(%CTG`7GF?Gs)ZY#CFjW0U zicx_TajF*y=BdLMirT+wiWtjTT05xv8-OTlQ=2 zF7;@ck&4yxpE$7C)7L@m?ip}_p%Jj4croS%Ph9YYgmx*Yu#)pOw zp0ZniuDp@_#3+3qmijkk07l9{Eub*mv8>isXAyq4hjt{!bz=mu6JoS_=3o*77$GIQ zFQkO#45iUcc)-{HeEh#cb!BRh^AMbZEydb$y##C89ULW!>P7Yd2z&sZJ6+D3sVl=1 zGYUZxQcC)H<&4#{pV`^j0Ok~{6wTS3v`25tQ*vLqTJO#+8q;}4c>*azH9TjSxar#U!)B|Qqkb`Q z{~J6mkFW<4QWmBC+Po&Mvag~wID_lPbfrr+V*Rpv>}*4B=1x;65|VGju)F}_y&xj8+akAR(#?Wk2|d|)P__Q+`Z!{AJQ z;Z1z$GFTDI`lvyOv*c<;3_(w~sF<-1!w;<+6dkYkCjLzIsAb~NZrIlyS2u!(;BQ>f z&nfIqQ?6vJ%8yd1{9ASAOrNC-lASUcp;!q24LBt%LM9g${`8NH^^XZ;7I_mjx(q<0 zi0iGdsWTOw?(ClHS;Bw@eG7=xoX1;2N@VwbQ!JC(b6X$s32xT7lbuWhV4-342f%G) zce_|D@>)~}3p7>vSgV$2{XYL=ds{kny{*hpP^;6^Uk9{&dz&)BzybiX!;+{iqb~)B z%KSB8%hp}IBH~fDe7?Fgv9&dXi#Q4R+l=_z1|JY%wl99}J6A?XySPMnZR23GGgVTq z0-v0xe(jvb=E%%Jini_wn0w=u-aQCFO+0PRX?K34f8h0RZ+NP2^a+67f#u+$RmOj7 zcss-ta7C-#)}Io1Ln_P4Ms8NC=fjbZkb;0fBGVJ@A*I#k9%NOzmUhPLRl$?_C#nPb zoYsN4g&K3gXpOUG{5Y@pBL>=Mf5xXQw6_2kLP+n z;cG?+HC6p=II{|dKHzsJmE0bdFG#An7R#@@MC`5RO$J(!F_trgHLokW(M#qoIj9#% zO2+|qvkuh`)ocmmWHylX5Pe*$t?3jr#^8fH4FK^Plq@(L#8^SRuW4AbU5N|fy@S1V z4}~I#P%x;jzMuuO4WJ|2Lt1O5^b4|{=n{q~-Bj7aTHeQY3hL|r7nZ@%U&l-I*?2); zg5{|B=;s^Kcksa~jgRzUFZ|4$VveV)VXi8LDEOhl;YGJ7TY?SwYE!p|;7$$?4<%`d z+ivFHj`H9@&tk88=~BwWZ5it>1Eb4X+Q3|G-h7jnvWe41PfD-lf_up6BxU^JVt)S2 zGqOkGe1$c9+JGb2vdP?A9&|uBHImQY?<^saO@eI_tesi?^UQ7A%5?X_Svb}Vdw5oJ zcEc-zRqbYHe6lamcaxx;gJMrLQYeTF_OUn)cwCP=yYEo+5?S+>a!oBXsw21nU%&9D zIyA$e)pOC%c9ii&oAgZbpsTb-g98~MWv@f?*JRAx_G)(_bu_xIS5!RM7c?I#enX9|H8f3hj20EN^bsLk#24wwB$vFgk0Gc{Kq(zn92mC0!@c ziU%v;G4K@l(fQZ&$#GOJe}p8QQn@rV`pt*sl=w*D`I z@=17oJ$JG9bkebvPQ>m}>$nEVkWs_Pno*<41un1_I3avoYlIu(?6l)ZAY_xcaMBs0 zMLHhw9FtUgiJwb`Gn+34w6}?}Fh^U7;(W2xH&!A?%fT@D{%nS6q(Di7N6G$+5;E*L z*NX+Pm5#K4?Z;M;e02#kYeM zS}<+j-KA#B0q-Z7RX(&QjL1Fjt?&N=m3HN~vvoes=d#aNe-eWGc}S)9lsYT2?ToW# z-dH3~3B39E=AksLM_o-NfGBu?Cyp)8bzi>wokYVht^G_MBnd&I!2|u}89V7NITSH( zeid3RJ+#BY*rn@ZYO7F_Y^ew;4rAmO5;{j*DHa(DGC8(g?f4l&+WpBFzmPGFbNJH{X(C9Vo zLHhkfMKqf)w_rbOv|IE1HAz&T)$x^rkbvCs$kJhiFwJ}!x^1VE2DF@Bp+fUmfCp}5 zFr8ZE=ZnP_$=^56KU+VjO3WMCyVO|O{B36|T1XI1@yeZU#rHnhT8 zoUXR-N5wd}2V2zhL4+|s4`vbu^1Ov_UqU0CjrtdSNND(bJNq6_z=nWWwb8du@4Aat z^~2F>`PJtA-?0THeNc}q!xMHp=mGt9%{m*`(L_xoOr6O%!CvWGrE~Id6_iFq!~AcP z>_p+mGZlCOY{|`Rvjq@JpBc#`9Z%_4yh3GKfBYe}Cd}T~$h9ULzIvM#@b_IzZ1`8W z?Eb&sl2Hbc0scr_$&z>Ig?zlwon+!4 z7&dia6PSLKMxws9j!ZvKd6a`_oT;KvuJI;0)8<%DF>^I)Q?hpg5 z1iE6JD#oFc1KS5bD)O)E&DOT-&{A5yH4DtHVbKu(4v)BVD_v;snK~;f`X9Lnk&_5yK7{Z>u6MFGq+%J=pvc~N|$X!zEKoyv7_LF=*U4Y$Z% zRD>2N&gDfTWxpk+kAiM>RDrcf;8mC*bHRT7*8%>?ZteOsI*pd%rk{1FZQWo$jE0Vh z0-=hd+Ex9+`%+N%zqJ5NY$6#`wP}USKec+}9t^ zoKb&_x5RN*bVdiEhxHP(p*);YAP|9-4V~A3`2H}&<#8Sz$a+CL@I>eR{IgamS+Q@o z{`-EvUs!6(59%z*H?Mb9_PwHLN_suuWaqUO)T2q11g}g5JXQS!HiXO4Ipkh92 zvGQU0axhGxLqKGM4Trs-WVBn#WH6yi4NUI`*Z1}pY$9T<%g?8DHX;+b5L)fC9n)n1 zH|(=B%9_yxQ6zq^SHXN2RQR(XWVZH@z+y#X1NY^6Hs=G$AMot`n2;rp8mpJr`f8#u8^qTtIA~vcY2_0T z7?28Ft#vzu(eULOpU<@iCdqF0viJ#!1y^B(t3Y$Sw$^og$WOdix)^)sSkfoW?a71J z04j>|Cx|}^Y%9TcDc9NQr4k|w#NrwGdc8H2NZ&*bZODX&w$B6YS%H_{CAU_y+o4nX zipF{vn5g2eH7xxuQX0r|Y&}~#7@I6iM7&OS3x)ljUKf{~2y)fzr;i?WUF-UCwGTkM zBdn{)*jC1KD2yp5KV?b!DNWEw0SLDg&&xr(>~%h8%VdE@^qrB^{AQ_xAM|}S97H>egm|wSv|{DvgSg&=&fEm_Z-t9q zbQ%0y*j8b5*W^mumL<=3Csxf}feaD<@4~OQ@WUnho+jfTJ7`v5ZRT)?r z2ftQe($;xD1PA&)CY1cao3;1|9+l4)=CXB0T$kEnKzW0z_2I zqW7P3+1*cJ$Hd@e9Lp14H`9~!fZ86;d6V0tmIcH%?rx93qGa9!qurqW!Fe<>R8M=I z15#abyN!Q=u3igzhQ($!2Y*nL!HDTmXzNcJmJ_gp#rk}T@VW=f!CVe~93(ZK_UzgA zUPn*@ky-FN?;Yq2GYNQ&(0vdA9?}E4nL3+-525yF7_ht)$_2kK)e+=QnjP*5wtNVQ zJZ93BV$Evt6!T@pv))2&PE_Os1yyPE79!1AbvqFYQk$*ayLUr?7}jBbiBwV&wHH=l0rtW`9N*KC>!TLP3`KTM0y92**Rr zfA$QDj~XS|NPFkc)$e1NCneAME;S&I8D$V@D|2hEd)`TKO<1$J@RfYwJRjVqGwP~@ zKJh(h2Yn>M^>hxmUc3(U*bktkE;ylQne9lFYYYhq2E&3Ha=edYT`@Zr4+b6xz9 zr45^)thag26epHcq8^m;$*4WN$FDHba#efZAc{|y4}0jBfM zdqT^^fD%e3%E{yw7)gG;ZWTq?_eVo@Bi5`%4l6=Yv+QCR+1Ff739a|V^9UtLi@?*x z&1{lCcjg5(sjam`hf&b%9=izJsSrYKQvt29$!h#G8l(xs=|t#urtEJ_p{$En_SUxQ zi2-U#hRdU}XI>4K49-=K5G5m#3y*+yi0X8MnCTCw1VHa1l9A2585IwVM1V}gkETH6 zxfxV0SyhCXNrLx^m=JSV`Nq!cZLlc>isXTcqRXjPpky!p6XuX-m)bk!*4^SyN*KIW zioYnuSwKu2OvoHG9ZL=O8x|K+Tji%xI-YefUv78tcw!R5PADTVkbNDL)@}-uJqa0x zN7?UAD1|O0hBI%N+BhBG-V{fVR>m`|*nkFc?4u=P5T>8cEQsv~CNQ!@LHGsvm&)sr z+E69*gmb%_hu<(z;J#T9pY{QPvU7 z2-e0tp=DCxSBZuC_!Y+`3Zg$!g^L)49!~zAYF0e-P>HKM$Yya=ILeH&DuLa!cCL4$ z0w5=bveabhk!Wnf(Ue9zh14^!;@_tX+F6e4fLXd=8rm=VLumb~+p^s{CQTz{$Xu~S z$qYvo_#v6hB&;Nu8-_|)TTw~=P+HL*gXdhANZ=~UJ5%qeHMAP^$nz)tZNyIHLirlg z<~W; zwM-E=v5swUTrexGDW}_$l~F~7(tmw@8AnNDRv1FH_YOqf&6hoqP=j8d$XfYBVH68O z(+Q5K5o$X`3oeFa7syFJP3{fCNhh}kMPbItkB{SqawR4qqg(x+jcuahq3rNXtmgu! zO-U=cZ9JvY&I~3^I1`F1>^un%;at2TC)w)aSKN2ij|v4Ux+pwMfQQt>UG%a*7=Gb- z*Wk&){m-Dnb#ln7N#7UFNq3|Jx;4J_ardh7Tp}(3Tv}Rj7~kx4lH}iZc}P4NWNoZl zR|H1FnokNs1l%s0hIsIR|F0 z;pZd!+6xr}Y2bQ@aJyL5auBmP zC~2!z+!O}tjhFzTQ@KZi*Uy9Ji`7xeXRU=^b9;T8R{e|&*8S?yXKWmK+HsqE%Ej@9 z8?td<*<+H4KG}Odj(&1>J1Y<=r>2s)Gz%~+`nqAPe+P!pKM62CqMvNcMzFo1nUoeN zrYemr4n~F?#U%MHNDZYAE^9GeY}-*tj{~#BCE$t#+x@-AOZd^#V@r7$O!n?`G`>RQ z&%>tx+TVBNq90mPw!H}Ia9XE-HScWO3ia-DgR)al)Mk3BMOXI| zC_gI>X6ndQsOVm9E-64t-hnN0UCTZ}&>8&K7H16elS29lLzcp0UnrH~r+D_6SsrI~ z)KDG1=0b>3=hUjoCpe_X3gXFo>9++}8MG95MBHVp(#efu#TG=TWgnB-5#<YsSh~8IHqZRPD?3{bnMdf%;AQcIeORypx<16SV%qXCG>H4k zpY0K7e_W*YCFWTtl8B)wk(~ZL{S~4xMMRcgQG+CWxj5hcGx~1c^8FwxjcCh1V;6=NkkG zA~m#2bShgGL|^^riGPiMhR4!BZ*h-`o3f7!CR8n>fyILfB?{J92g4x!%uFi>l&Xr( zhHaCA#GWXo8w0LyVW1|zOyvEbZK2C7Yqe`j$ z=35vn!SPZjEm+xjSi68HS89ON_W6mX)E19|%=MNLgZZ^^aKo3F#c!*HO7#oC=M+f` z$`Rj~CzwgZd0&g87thXC$VnNPgOFRk>ZB&hKm;A|Vil6x)HgXRS#jq*QN@&Ol`e!$ zp`!2sQ6s-VbZZ9;E;DCc#Ohjr1VIHWJ3LFFGHyQ7OR0MZx;`Lpayma@eU)LhTs2W^ zodZ(g$jm|rZLmD`UQJB+5xM-wVt5lNRNr0Hq${#z90agxYyj5ge5>s(7M7{!l6hQY zWdE^Nr?!yF!nYinF#c<^0H*m1J;QEK8`W6zeNS|N=aW3#gVUqT-<3k~{d2Q{Z7VI!$QoGEdmh7Ej+XTR`K+?}g1?PL z?AshLpQmd}Z=IA|eR1rm3WjCMKFdW1r5$s)iS&PJaA@)Cx#V)h=kPHH>S;`z1(0vj zo1etDEhgyJ&xY%tVsjfuFFG!D`z)B0=hzqNoNv_Hmkwfb^i-r^CUm6+*@7e=Rs zM;fvltgA@!!w-xKrt|utm(HSoyx0Q@(!@E}*pFAARu-!6*|6ROqYQ=ruw5U@0zO&xL#H`s@C0oxs>Xo6FtsAYHm5|$;>&TZJ9CP!5qQQZ9A^l{$ye?pBz$`wM zhS`7_$m&ObHoB<~he;uZ4lGVY7jDUYxQE}=G;e86sW5q(q2tSXu9TfGTq{?IzryDX zzq-mYrd{_ovdGb}h+(r9d2BY2cvOR|t*=GC`_0Q=+|@#~{kD!{T|8LD@G*=C6d`uz za&1+?Vr6)FE%1di@It)v_4gQT5TfIt!JJfc1#hE(@7qr%7pKiu{Xa2n@4?)zwo!3J z3`sX7G~IKdHVOkm=Hu}4F{|ffm}ea2@fg1!x2_$2B;OMLg5hZ5BDris1Dm7eBHyF# zzzt17rmLel*!{}I@G!v2#azPUXv(IxWn;2oK3BLSr) z5B@y9JryWe#wh+80o_UTS(XZ2|JvK@;CO;Jr-5sIB*QO#h_duhf{2+6Kivt3BG3lz z;c`m7T5G$dax9w5EXote{*m=*2_c&YPi`>JD`f*+ZQ{fZ9l9(TPcG)xPSJ`u8pM*s z3$79vd^q-lJeE_P`sW;r$(G7m4jsU(oz&%n!z&#&@4jFBJIui3jq<&VC_pX`YxH^0 ztTWO{F1MWlV%6Hc^(mG{y;WJ>UasA|TBP;GTCLy`Pv}=O&xhEa*+Mg^kBuH|Mfdzx zX}0KA>A2OdjUwtxJc!~;Z^+jPH`L4IZ`o829zZjey}(k_Y&;u{mJLj?VJ(%u+&ilp zT5g-1c|ClZGbhRGv9rB0y8G->t z?anN3CowM$cJ;L4{;9}A!Y}=}feJ-O;Qk@Jjc9AZI~qNn^A#)9eu_K@qlspYl`>^^ zr!hEUBAj|CXw{uFV1a*lmgL?*@wgSu;=%FI@{9d&zME(XxP|n5$*HdMb!r4b#F<)j z#r1($N=m%Fz<$KyP1;cB0`&JGajF8O8klmJ=e`8REXaIw+c;zJGB;xnb{wM+SH4YE-7|EhvC{ zU~yS1uB!@cF@5ta(N|qkf4+J0**NcF(c>j+-TJ-w%YG1C z-T?_Vg6ulzhtC-=~(SF5iKG9Ml`jaEpd%#$RfE9Rtq^wyX{i& z$WK1VR-BtTqIf-~QffR&h{@)g=KH=~`B>~d%Ajmx_4fuVa&3|D;Q>N|RXtJ@e#x47 zA38CQPAns}WT5#Tv&SF{0;ypYBpo*!to^1mj(z8fbngwmGi@GI^v9s-ylMbLp^Grj8ei-?JsLnx5R*&-~JUpttCE?7Jt1gUP7ozg=n-m3e5mz)>2k zJi~8wzy9;w4dfcgsDWvo99O5&#+t4ORHv zS^fxZzhzo)toL0uIp2dh*mHm!{P-E&nhH2S5>p>VkC*F7TMPMFM-Mr_q40Zv2Y1ck z0@;fd;L-8mT5a?XPj%Qk*}6pHmAOU6AN_W?{p{8=fp0XdZgb>){6l65pVx8&-*f2H z6OZ0_$_lp;zCgP)?mDoN&d0kPTb;#r=kN((Us{zo;XVHvwk zZkG<>Q9sjkFtnVBhSvUN++}hzlJ12MV%+}S8(O9k+C8a{EqH5`tOU6thns3*JY!%c++_1ya~fIV?&OD$yWa4<_vM_-VpH%M^?f@(BS%w{G#dkVb*MA65?E z%UZ>01I(um1dR)(Eld<74vV9?F_MKu))Rs51+R7VZ?Ble71XX*$S2;k3o> zLPm9TwEle!%||FAJiLik|B^uElBJOTP>946T1p(EMUej#t#)&{No24ko9F46`42B*)w}42!D6=es5>1oLUHv7?C1tL5 zuEO0a>#mv?i&GK=#i@3-myI&p5HT@*cdh}780WM6tx9X$AhuHe=!?;VfQ(0Z4d@5A z`yqD=HP*u2&3fJQFfy4m0*t4Fb9|7}dV0Y1I+ABlH88kn@9Z^xIvww4PVx)Gc^-dm zAy=V)1|Ag=c>EuwgoH5&=?EV@s$CA_D56`n%AC44w2c{|hFr)!fmQgrVDMhqd@lTV z`((GX!Lu~xWjYMga}ejkd;k7vsmAcE?>FrcC1GC&WkDplKy^?v^B}^y_uqj!qw<_ z|9z;OAD~BZr@Kl}C=0IIZ+s5}WecI;7XsQ$FrM^PNpF^v_=IB08L6O@mb$0&6CV0U z6rBNZy+fL5b*Uw*$(Yg8V>*A_c>m3JI*q1<24Vf%xJ4dr&OooqZCU^#e6FPPK*683 zl3zl}K812A)`Im7z#COAq0}a2vA@G%c$zwNy}3UbMLv~VNDK~&UK3snLU&d8Nv4!jc{=S)v}%3!mL}eh)~Mp%LUKqmzjia)_`f40?Ejd61hwqEQoBFGdF%@U@hU*j zb;(5_xEN>A-`Mu+ksbYcBl0z8^%5Ty#qt4;zFAhzuC`qSts;Hv%}t*_5y_^6DC%o9 zl0{kmqjlFycSxyzD7#L&>AH(^N{XNsR0iq(e`^8Faq`~P9opE{sGZ+pzWPycd=tA> z?6Z2lPP$>U8V&M#j1B)*Rikv3F6&9(9QrlnVXtOmxCo9DVodMqYUqzyMN=uL$g);K z_7}R=FM^2=MRWm>LRELjSi}&qkjOomg;5y9xgh4Gy{W4xd^Z3OUdl7PmQr_=dDw6- z=FQivoO=@N-OODCmZX1-MpzRHECp`&o4te^=dM=^qoeI}l)kPA9#4m*>FFzem$9Y7 zrv{`DJ>s|*DAcL?zCRB}x_z?PF8qj)LHlY}QVyVzLO2_>N2HJO=Y7gTe+ za13eQOIGcNa=Pumv_+?OedItH(5yF#cJ-~Gnl_L5H}Ojz%g6&Yg}M{e#?}pWvzAjB zo_6ziHy$q>jDn_5KhkKtZAiuH#^O;mm1cK5X9;XR+8+1&5&X?BUiyeM@s_K{*S!9Y z=scuew>EH`+r*m3sy7WtkPYSuQ2^L4!{hHGDxGeBeYFVJ+dPcJwf1;lx;&Mi}pXj6njdwVP$v- zce&{cDtxQ@6irVpKt-b<7pb#P_w~u?GZW+TZ+Uy>dR)vp`iO?aDTwjYqIUn1BseSV&~kwy)6aMe#B85ThGHS%ajz%qK)ckaK>c za{l{I9L_18&a2wj*7ol6`H;sy!5$fW(1%uAV(KdeAKGmb*Nx50_T8rLw4Qyh3{Ho3 zisFg1CWV2ZQAj9;;7?9SE?Jk1@q>t-PR^WDfk9R!su9ZMr4V}0DT2#mCdh}r9xNl8hn zs%jO7tmi=X>{bRVr$&)x5$UtEoGT{I7=6P9lUXGe72#$h`PVHP!_yPh`Wd8?UyEbL zZ`l>xy)z0G+RdQWTT46T&5`-h65Ok$fA?gg}-IZ5Rk$A49NA-{36)}kH+ zkp;6*kuZ^sInN1)(5|MQH36t=O;AfzNTgTXKoTTi&o=F=%4_7wLpWfi<%L_tE>8p7 zfDsw3zc+G)*Y-0}xR>x#YMyLY4@sBt&O4z%Nw~RN^CFtal}c_;V?btLP<+gc89g3E zKehgXb{aT^gc)5&J|W(vOleM{rz6xVlLkjdNg_+`q$0NQq|X2$Z>1{4Sz|HdVF!9Q{iV zDG2R^{TK!J-o#ap1)17gVIpvFF#fP`Vs1k7bXnT#KYY9eeO?kbODTzn6`{|0&_F_! zkq~p{ei z8*{TlBmeo-d7gPuEIhK#nt?&CeT-g?g8(rw>2=7BgUhBbm?($@0@IX;fTbm&h?HB- z|G(AY{|9dQf5}Y~u%WbDY}V&O=l?ww5#<~P7NDF~qbASMN+SNfkp@&G<-}xY`TOB= zZ7ddwiWVsjkf_t1(&c*zk_qIJZ_XaoC3l&Rb3k*(yHq=$ASg|NC>EDY%C?@Lt zhwlh@S9s^6*}(P5d#8iJ19sxy^aL_*_Kw*lJZ=o{9$J6xy$z4%biY~ycyUtvzjvY6 z-{HbBcpay#++7@^{&OVqQSH#*N{?{UcoDd)?{HqM%+#@YK0}3s$cU9yRCWEvZ%NQ` zx_I~6QrOKE$SX*TT@GezD!>$8;EX=Y{?(%!abuO5cWtB@^5;G77kz&UoVOJlw9Ad;rw; z`E-vb3w z+ww}pw6(Q$OML07HjupD?42UFQcW*$i8lnO69~0p{60=Z@O+0(OWqSttGc%2BZ~16 zAqBLG!!SJeuecxFZ+71N=W@(UrtN&8Q?>I1L?U{1ZuMi*VPVKE$ssk`Ze373ELKx( z{bTZ}q=G6cO{$)@=d1|TKpoP%{BW!J4)qURkK5U*7;CKn><~R8C6?#rvfh7IY9#-H zZ2MOkZzx8*L#r>nXB9-lld4=6(cFYCg2Mwma{g@Z?5t?Dn9om1wchU`Gi)6-`;!Er zGn{N|O%|*i|GPwjZO+hL&B)LNKZyPJnjrTdxbfF{v;S z(36I$U%f^M|Ift_{``v4EYN^Go(x=o%j>%?(=8h1&*hG>4v|apB9Y7e6)M(R@8*VI zYmm0P{N_PrH$@M;&o;6uPB&KL#xf6kWNtX@=56;xaDB@KGN!qwu3rQ?kK^ovdu47) zz!h|(0`TYdRNEZv?Bf6aFUNEykTki|L;PNU@UY*wpVGdR^Gt;K%q*O5r<1=2@DMUUja?NzZF7` za(e{uz>rta{dABzZWVZrdNpPTc&@%h(y!_({}%Ska__g%s(FquVCB$ z{hk35FfRY|y~r4Zhr8u;=!ckz9@B2T`OVyM}9$s)TvJ#ZMmx12pTme-DMxCBQ@f7*4f|Y_{v1T}58N&Cc8@L~8aS#EXKg z|2NeT5Qf_AGE4TG$jOZYc*s+u+af45gS&EYBm+bF@&o-PxO~79RL-HSqD)LoazjD) zf3K6##pGW2!mMvc8Rj0^_2s?L-y^Go!H{a1XQho~96IE@zDK~l2CSv0hZ27N_OK5h z3gey@^Y~L%B9y^X_?x|TJ|rtKrW(w+x7=CwM|d@JaZ`Q~5;7}>TY&TX(cg_87;xi)w+*@pSU1K3EECQurcR_d&DXU@E!QLrP3>s#>{l-Uz6_^eTY# zyLNA6xH=E6V|~|i@OaiU2IE+(c((z5UKDJ%fIAm#EG8xmUFL@#Z{Fnce|O)Qp>Hys=N+q+PaIn>|S}FmchP~P!Ep=2DngAM^rCNOmNF9MQ z>M^Y~g6tjqyLWDwigmJHz#&Gz=QHeTf6SI{q}n=<}yEdcKF`1JOdK7(x8_x*@S zFt&Q~x-f&M9h5=MmTS6;c6oK{T;s0}8{Q{>_PlL9|7E6$FDmMPWs#_#4%8%4*wfJg z0lyUq?wTJN8KiX)@OlKs&`+JIiB^IlR&m2|w3PgGcV;JNE3s2ab2uD8Ye z1@^laQ#tz254V**&5vLy=W%kXyoU_HG(Zaf%VOVXEvvXVR769qR2rUP1+w_k(??J% z-xC`hecSa`t=EC3OO)w@LM#4LAIYnxj+(U$0*;nBIpT@2{9?I_R581aTC5(M3 z3fZ$II~5_yntd_wBY4aR%W^S+-t{TS-z4wSo&kL0aQ=y2yExfdf*Utl%~@JajUw{C7dbQ|tt`p##{0C# zqvr^^96CBE5qa}Z)%N)TT1-4#+(=jB0zn~MekXJORMD3OlmZEWgzGujoK1ce$!8Z# z@-t8{`U+KScXzdZ0Ym*(V+dE;a>1vCvk#S(hU?R%LiNi!wpy3g^ZS&*5}AVq3e8X6 z)`{hIO$Fo@)LCqcj*iIF9EEsUs+3be10)!tjI&jc@aieka|yF+SCQd0uDg>fifdkz z)wC_HovFn)8xu(`{Nd7J?W-q*Cy`2_;fA~3z+5OA1UgaOb%yX%%zgq+@d!Y1{>44KmqnuB)KkshfIUM^yHhoUDE`Ks zXmBLG)Q2uU1L)e$t%M#_DG|@XZ)I({C*#jI8V%@#_6haz!jmgf$M}G?sDnAYCOexa zl0410XP~dI@BUEf_|}~HhvoTmdQHb41jT57+35J^|3eqhj*;$hoKTD1MLj6vVN`wS zi-m5ry%R9e6PxjJyr1@&bC_=W)wkYn5a6s1-Id>fc17H~oCdU2L9;nIFFvo&7i1jX z@3Z?>H&Yyic%N?r3JaVA9XM>x0eAF3S(P7PFaOacBKT#j2%tXGZ1~#RF`&-xN+VEI z2(p%wkpRTRnO=##DQ;=-oZ2-{$|-?ZIP z>D<2gV`P23C*{hOlIt|3e;rE~M;W(OYETC#6Ixz!%O*$nt!5T|PA)Q4s5Q6GmnT0;bdTAp0+>fy$T66xLYo{BYw6fl#K2;xN zf9+aaDy&b;gMD?NWJs!MkB5&>Enu;iEwXL3_fTt6NAmwub}RM-ps^7w2WJ;MpOY0~ z2~+?Z%||WWBYSq(C>^x(?Qc}McCza3guzr;o=b>u-j~%TjGg=f@wU%wSs^1VM=gd*%3A|h_d1pn z(9ak#{hPj$fxlf!Yh#!*P#gTU7_>V60g&VpLzmO5cOy11On^Jf_P5H~@JFKv#Z%4> z{n{4yS&lwUG78Q3p1f$$pzWul(>fK|^CT&Wo|zdTOX23}?w+9QpxKfB)^p>mP=2b? z@JPm;ipH*M)BjopDE`%uK!<#D=NWPH;E<4pFsRG7m8Yf#8!(iB1SMmC6_*acOH$>p zV_!m@9fben><-`SDvvMJSc$)w5{Y(ff&0zjNW1FkvH%57j59cE`bl|&xCU$l&THqz zpVtNF4YW||02yQr357XU%S_(Bdu$*gY;A)Y=vI}4!UhT_3fs2o>hcvzUE&9A=g zVmCb3CC@>kN!>py3mMAn(bSH z;5X;wTP(n1uFg(Xj@+HpW;lDR)b=@qL`vqiXyF+3^_b(@lCMISo@E` ze5X&RJb&&7VOn31(qOWwax?TbsQ6V)trRQT>%eMxlD*I~M!r5Uv%MF^yMQ0V!1e&ZpQLb#)k zQO&g`c{OUT?Ck8)(o(RcLx#2$<9E3NRYyBKr9LOwYe~iasO`utfdPEiHFth~3M@<< z8y&T_ezV7U@$Y5D6AA3!*y=T$4|^n9$@<5W^otE##Q3RNHHIm3b90NAe5J;`c()Uj zxV*N=DhwAD5qZP;%IQc5m6V6J0bKAed=T#bTI+^7iyJq9VJ=IBIb#zw*S$;3%Wy#b zW?GLMbJyDVXs8PbUBDYhV>KSqY^+VxyL$o!_^6@l{5_UYt;!7#BN6Z7GcTc1k44=W zaN!as=O2B-@n-z3`^>Ba23YLode%tG10{=#9=7U0kD><&S&H7txBsdYGs$mF5j76j zAMfrqlAugT2`J44iP7V>>Y&oo*d1EN3_>@S&p@F|i;L$A=$*cK4!t!fmbM&{KN<(u z;f~IKaKv526Up9=P=UXAlzNATYBZwvJPHy0-#}i*-|*myG}6Fh;Zdc>(;I zAY_o=JwGIHy!Nlx`T03HIR)~42P|j16y)XE5_+dTXWxpMPATk}MgFNVA~;a4`69l; zzbiu~IXSsNAJLUAg-p$p*6vb}l;lfz-p@Pd7W#Z|H&NLZ#thDYKB|{$%fuYDLA*j< zD&$wZKYBY)YX=O_Yf!2xKY#xg(5jZ9Ru4f^j!JkpNDYJ$Mri*ez+Gwa5G7`lg2z_} zpmJp5=4N0}`Ex-TX<(LZ>%J$9IL(`iLGL(pEgnz8eda_pFut#QFi{u2J$<#%D5u!w zgQ?1{*6c!C0!Mo(xo47hz18=TBgF0(FAcp8>ujqb4`aGfvW{9Nq)$D!e5~gcS!!~~`#Ky+fcpoS!DaF~a*xUoA2nHjO_q}VXtF?XxMMN~# zk|Xw}uY-yh_g9Y8wEodoHH+6gNP-Ww2o)@C zsn~_HQTm)efD8GYrv~TKLu_&kN+3a3V8nea77GZY5;&T=@%V}QE&T3QB!Eg`+dlnE z+0+x_kpLy!DKoDJ;<@~2j&M1s5rF;Ck&zG*u@HekfbTg&v-BW>1zNkM2%d|yYk}~{ z-b3+mYyIf&?xCL;vmgH|(#tkO?cXL&ys$0}YXu%tu-!M*Ku zI9-a(3)pUpPA)~Z6_7S zL{LH?QBt=IA>Fv7f|RS>x^_jdlG@=Q@X%NGdellKMwi1{6VB_MJl%?s zyhyhs7?2AJ4zBBH-sadTt9Vj(Hk%t3>jKJf;uy0+e*@Z*7|&TfbM)nW19$cqNpNG} zw-`p(`e)7d+M>5qvdAP;_L+~MaRRm_#d8Cg;Ez*gVG+q`*1}7Q1#;&4k1v8Mjh4_M z0mKv0e&Uy=3rmNZ!L{qoNYs6T(cK^~kdp)AuUqbb;wXubGv64oeWe>;)M>%L(B%6u z2urG`s=WW~4^}sES&FLl{}6LfhJwH5k|cZ46Jm7ClhCFsAu35o7AV8PRfosG1$CGY$1nC&L5#TZRtB))(Oy~9)B-oZf~iUBN< efY2O@;shk~TX>pLR6;8#fn3)$(s`@p5c5BawrlSI literal 0 HcmV?d00001 diff --git a/screenshots/03-dashboard-edit.png b/screenshots/03-dashboard-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd152576a3a8acce5d0c33e566199d2df4967bc GIT binary patch literal 72085 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ⅅDt9t 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

+bl0m6l76n!z4#X;_2u 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 OKNuO@(nsk!zxp3d?Ff

l(nB}!w4 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 literal 0 HcmV?d00001 diff --git a/screenshots/06-advanced-tab-write-mode-on.png b/screenshots/06-advanced-tab-write-mode-on.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4837fb53b40fcf31c9a509a91a5e1c61b45d6f GIT binary patch literal 64971 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 Date: Thu, 30 Apr 2026 16:05:24 +0200 Subject: [PATCH 02/10] fix(security): address CodeRabbit review findings on PR #631 - Add database to widget-query cache key to prevent cross-DB collisions - Forward full config (SSL, timeouts) in list-databases-inline route - Validate widget-connection binding and gate DB override by allowPerCardDb in write route - Return allowPerCardDb from POST /api/connections - Show placeholder in DatabaseSelector when no databases available - Clear database override when switching connections in store - Exclude information_schema and escape underscore in PG listSchemas - Hide write mode checkbox for content-only widgets (markdown/iframe) - Only persist database/allowWrites for non-content-only widgets - Add 3 tests: per-card DB propagation, DB override gating, widget-connection mismatch Co-Authored-By: Claude Opus 4.6 (1M context) --- .../list-databases-inline/route.ts | 5 + app/src/app/api/connections/route.ts | 2 + .../api/query/write/__tests__/route.test.ts | 162 ++++++++++++++++++ app/src/app/api/query/write/route.ts | 5 + .../widget-editor/database-selector.tsx | 7 +- app/src/hooks/use-widget-query.ts | 1 + app/src/stores/widget-editor-store.ts | 2 +- .../postgresql/PostgresConnectionModule.ts | 2 +- 8 files changed, 183 insertions(+), 3 deletions(-) diff --git a/app/src/app/api/connections/list-databases-inline/route.ts b/app/src/app/api/connections/list-databases-inline/route.ts index f46babb1..61503ef1 100644 --- a/app/src/app/api/connections/list-databases-inline/route.ts +++ b/app/src/app/api/connections/list-databases-inline/route.ts @@ -22,6 +22,11 @@ export async function POST(request: Request) { username: config.username, password: config.password, database: config.database, + sslRejectUnauthorized: config.sslRejectUnauthorized, + connectionTimeout: config.connectionTimeout, + queryTimeout: config.queryTimeout, + maxPoolSize: config.maxPoolSize, + statementTimeout: config.statementTimeout, }; const databases = await listDatabases(type as DbType, credentials).catch( diff --git a/app/src/app/api/connections/route.ts b/app/src/app/api/connections/route.ts index b4d55583..4aba9213 100644 --- a/app/src/app/api/connections/route.ts +++ b/app/src/app/api/connections/route.ts @@ -68,7 +68,9 @@ export async function POST(request: Request) { id: connections.id, name: connections.name, type: connections.type, + allowPerCardDb: connections.allowPerCardDb, createdAt: connections.createdAt, + updatedAt: connections.updatedAt, }); // Fire-and-forget: pre-warm the schema cache for the new connection diff --git a/app/src/app/api/query/write/__tests__/route.test.ts b/app/src/app/api/query/write/__tests__/route.test.ts index 7de0e4bd..ce51a395 100644 --- a/app/src/app/api/query/write/__tests__/route.test.ts +++ b/app/src/app/api/query/write/__tests__/route.test.ts @@ -428,6 +428,168 @@ describe("POST /api/query/write", () => { expect(res.status).toBe(404); }); + it("applies per-card database override when connection allows it", async () => { + mockRequireSession.mockResolvedValue(writerSession); + mockDb.select + .mockReturnValueOnce( + drizzleSelectChain([{ ...fakeConnection, allowPerCardDb: true }]), + ) + .mockReturnValueOnce( + drizzleSelectChain([ + { + id: "d1", + tenantId: "tenant-a", + layoutJson: { + version: 2, + pages: [ + { + id: "p1", + title: "Page 1", + widgets: [ + { + id: "w1", + chartType: "table", + connectionId: "c1", + query: "CREATE (n:Test)", + allowWrites: true, + database: "analytics", + }, + ], + gridLayout: [], + }, + ], + }, + }, + ]), + ); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); + mockExecuteQuery.mockResolvedValue({ data: { nodesCreated: 1 } }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), + ); + expect(res.status).toBe(200); + expect(mockExecuteQuery).toHaveBeenCalledWith( + "neo4j", + expect.objectContaining({ database: "analytics" }), + expect.any(Object), + { accessMode: "WRITE" }, + ); + }); + + it("ignores per-card database override when connection disallows it", async () => { + mockRequireSession.mockResolvedValue(writerSession); + mockDb.select + .mockReturnValueOnce( + drizzleSelectChain([{ ...fakeConnection, allowPerCardDb: false }]), + ) + .mockReturnValueOnce( + drizzleSelectChain([ + { + id: "d1", + tenantId: "tenant-a", + layoutJson: { + version: 2, + pages: [ + { + id: "p1", + title: "Page 1", + widgets: [ + { + id: "w1", + chartType: "table", + connectionId: "c1", + query: "CREATE (n:Test)", + allowWrites: true, + database: "analytics", + }, + ], + gridLayout: [], + }, + ], + }, + }, + ]), + ); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + }); + mockExecuteQuery.mockResolvedValue({ data: { nodesCreated: 1 } }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), + ); + expect(res.status).toBe(200); + // Should use original credentials without database override + expect(mockExecuteQuery).toHaveBeenCalledWith( + "neo4j", + { uri: "bolt://localhost", username: "neo4j", password: "pass" }, + expect.any(Object), + { accessMode: "WRITE" }, + ); + }); + + it("returns 403 when widget connectionId does not match request connectionId", async () => { + mockRequireSession.mockResolvedValue(writerSession); + mockDb.select + .mockReturnValueOnce(drizzleSelectChain([fakeConnection])) + .mockReturnValueOnce( + drizzleSelectChain([ + { + id: "d1", + tenantId: "tenant-a", + layoutJson: { + version: 2, + pages: [ + { + id: "p1", + title: "Page 1", + widgets: [ + { + id: "w1", + chartType: "table", + connectionId: "c-other", // different connection + query: "CREATE (n:Test)", + allowWrites: true, + }, + ], + gridLayout: [], + }, + ], + }, + }, + ]), + ); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), + ); + expect(res.status).toBe(403); + const body = await res.json(); + expect(body.error.message).toMatch(/does not belong/i); + }); + it("does not apply MAX_ROWS truncation on write results", async () => { mockRequireSession.mockResolvedValue(writerSession); mockConnectionAndDashboard(); diff --git a/app/src/app/api/query/write/route.ts b/app/src/app/api/query/write/route.ts index eeed3222..c47916b1 100644 --- a/app/src/app/api/query/write/route.ts +++ b/app/src/app/api/query/write/route.ts @@ -100,6 +100,11 @@ async function handleWriteQuery(request: Request): Promise { return forbidden("Write mode is not enabled for this widget"); } + // Validate widget is bound to this connection + if (widget.connectionId !== connectionId) { + return forbidden("Widget does not belong to this connection"); + } + // Only apply per-card DB override when the connection allows it if (widget.database && connection.allowPerCardDb) { widgetDatabaseOverride = widget.database; diff --git a/app/src/components/widget-editor/database-selector.tsx b/app/src/components/widget-editor/database-selector.tsx index 93a567d0..5a7be79f 100644 --- a/app/src/components/widget-editor/database-selector.tsx +++ b/app/src/components/widget-editor/database-selector.tsx @@ -34,7 +34,12 @@ export function DatabaseSelector({ } if (databases.length === 0) { - return null; + return ( +

+ ); } return ( diff --git a/app/src/hooks/use-widget-query.ts b/app/src/hooks/use-widget-query.ts index 585ebd16..bfa5086c 100644 --- a/app/src/hooks/use-widget-query.ts +++ b/app/src/hooks/use-widget-query.ts @@ -188,6 +188,7 @@ export function useWidgetQuery( queryKey: [ "widget-query", mergedInput?.connectionId, + mergedInput?.database ?? null, mergedInput?.query, mergedInput?.params, options?.staleTime ?? 0, diff --git a/app/src/stores/widget-editor-store.ts b/app/src/stores/widget-editor-store.ts index 284fdca9..d5619443 100644 --- a/app/src/stores/widget-editor-store.ts +++ b/app/src/stores/widget-editor-store.ts @@ -289,7 +289,7 @@ export const useWidgetEditorStore = create((set, get) => ({ if (!chartSupportsClickAction(t)) set({ clickActionEnabled: false }); if (!chartSupportsStyling(t)) set({ stylingEnabled: false }); }, - setConnectionId: (id) => set({ connectionId: id }), + setConnectionId: (id) => set({ connectionId: id, database: undefined }), setDatabase: (v) => set({ database: v }), setAllowWrites: (v) => set({ allowWrites: v }), setQuery: (q) => set({ query: q }), diff --git a/connection/src/postgresql/PostgresConnectionModule.ts b/connection/src/postgresql/PostgresConnectionModule.ts index 577e27af..e2070406 100644 --- a/connection/src/postgresql/PostgresConnectionModule.ts +++ b/connection/src/postgresql/PostgresConnectionModule.ts @@ -247,7 +247,7 @@ export class PostgresConnectionModule extends ConnectionModule { const client = await pool.connect(); try { const result = await client.query( - "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT LIKE 'pg_%' ORDER BY schema_name", + "SELECT schema_name FROM information_schema.schemata WHERE schema_name <> 'information_schema' AND schema_name NOT LIKE 'pg\\_%' ORDER BY schema_name", ); return result.rows.map( (row: { schema_name: string }) => row.schema_name, From 626b81e475c8f362c7bb4ea0aa3a735968c2e397 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 11:03:05 +0200 Subject: [PATCH 03/10] test(app): add unit tests for database-selector and query route overrides Cover DatabaseSelector component (loading, empty, select, __default__ mapping), useConnectionDatabases hook (query key, enabled/disabled, fetch endpoint), and per-card database override logic in the query route (allowPerCardDb true/false/undefined, missing database field). Co-Authored-By: Claude Opus 4.6 (1M context) --- app/src/app/api/query/__tests__/route.test.ts | 174 +++++++++++++++ .../__tests__/database-selector.test.tsx | 203 ++++++++++++++++++ .../use-connection-databases.test.ts | 100 +++++++++ 3 files changed, 477 insertions(+) create mode 100644 app/src/components/widget-editor/__tests__/database-selector.test.tsx create mode 100644 app/src/hooks/__tests__/use-connection-databases.test.ts diff --git a/app/src/app/api/query/__tests__/route.test.ts b/app/src/app/api/query/__tests__/route.test.ts index 2de9a98e..a7ddf91f 100644 --- a/app/src/app/api/query/__tests__/route.test.ts +++ b/app/src/app/api/query/__tests__/route.test.ts @@ -562,4 +562,178 @@ describe("POST /api/query", () => { expect(body.meta.rowLimit).toBe(5000); expect(body.data.data).toEqual({ nodes: [], edges: [] }); }); + + // --- Per-card database override tests --- + + it("applies databaseOverride when connection.allowPerCardDb is true", async () => { + mockRequireSession.mockResolvedValue(defaultSession); + mockDb.select.mockReturnValue( + drizzleSelectChain([ + { + id: "c1", + type: "neo4j", + configEncrypted: "enc", + userId: "user-1", + allowPerCardDb: true, + }, + ]), + ); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + database: "neo4j", + }); + mockExecuteQuery.mockResolvedValue({ + data: [{ n: 1 }], + fields: ["n"], + truncated: false, + rowLimit: 5000, + }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "MATCH (n) RETURN n", + database: "otherdb", + }), + ); + expect(res.status).toBe(200); + + // executeQuery should have been called with credentials where database is overridden + expect(mockExecuteQuery).toHaveBeenCalledWith( + "neo4j", + expect.objectContaining({ database: "otherdb" }), + expect.anything(), + ); + }); + + it("ignores databaseOverride when connection.allowPerCardDb is false", async () => { + mockRequireSession.mockResolvedValue(defaultSession); + mockDb.select.mockReturnValue( + drizzleSelectChain([ + { + id: "c1", + type: "neo4j", + configEncrypted: "enc", + userId: "user-1", + allowPerCardDb: false, + }, + ]), + ); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + database: "neo4j", + }); + mockExecuteQuery.mockResolvedValue({ + data: [{ n: 1 }], + fields: ["n"], + truncated: false, + rowLimit: 5000, + }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "MATCH (n) RETURN n", + database: "otherdb", + }), + ); + expect(res.status).toBe(200); + + // executeQuery should have been called with the original credentials (database NOT overridden) + expect(mockExecuteQuery).toHaveBeenCalledWith( + "neo4j", + expect.objectContaining({ database: "neo4j" }), + expect.anything(), + ); + }); + + it("ignores databaseOverride when connection.allowPerCardDb is undefined", async () => { + mockRequireSession.mockResolvedValue(defaultSession); + mockDb.select.mockReturnValue( + drizzleSelectChain([ + { + id: "c1", + type: "postgresql", + configEncrypted: "enc", + userId: "user-1", + // allowPerCardDb not set + }, + ]), + ); + mockDecryptJson.mockReturnValue({ + uri: "postgres://localhost", + username: "u", + password: "p", + database: "mydb", + }); + mockExecuteQuery.mockResolvedValue({ + data: [{ n: 1 }], + fields: ["n"], + truncated: false, + rowLimit: 5000, + }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "SELECT 1", + database: "hackerdb", + }), + ); + expect(res.status).toBe(200); + + // Original database preserved — override ignored + expect(mockExecuteQuery).toHaveBeenCalledWith( + "postgresql", + expect.objectContaining({ database: "mydb" }), + expect.anything(), + ); + }); + + it("does not override when no database field is sent in body", async () => { + mockRequireSession.mockResolvedValue(defaultSession); + mockDb.select.mockReturnValue( + drizzleSelectChain([ + { + id: "c1", + type: "neo4j", + configEncrypted: "enc", + userId: "user-1", + allowPerCardDb: true, + }, + ]), + ); + mockDecryptJson.mockReturnValue({ + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + database: "neo4j", + }); + mockExecuteQuery.mockResolvedValue({ + data: [], + fields: [], + truncated: false, + rowLimit: 5000, + }); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "MATCH (n) RETURN n", + // no database field + }), + ); + expect(res.status).toBe(200); + + // Original credentials used as-is + expect(mockExecuteQuery).toHaveBeenCalledWith( + "neo4j", + expect.objectContaining({ database: "neo4j" }), + expect.anything(), + ); + }); }); diff --git a/app/src/components/widget-editor/__tests__/database-selector.test.tsx b/app/src/components/widget-editor/__tests__/database-selector.test.tsx new file mode 100644 index 00000000..308bbca3 --- /dev/null +++ b/app/src/components/widget-editor/__tests__/database-selector.test.tsx @@ -0,0 +1,203 @@ +import React from "react"; +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { render, screen } from "@testing-library/react"; + +// --------------------------------------------------------------------------- +// Mocks +// --------------------------------------------------------------------------- + +const mockUseConnectionDatabases = vi.fn(); +vi.mock("@/hooks/use-connection-databases", () => ({ + useConnectionDatabases: (...args: unknown[]) => + mockUseConnectionDatabases(...args), +})); + +// Track Select onValueChange so we can simulate user selection +let capturedOnValueChange: ((v: string) => void) | undefined; + +vi.mock("@neoboard/components", () => ({ + Label: ({ + children, + ...props + }: React.PropsWithChildren>) => ( + + ), + Select: ({ + children, + onValueChange, + value, + }: React.PropsWithChildren<{ + onValueChange?: (v: string) => void; + value?: string; + }>) => { + capturedOnValueChange = onValueChange; + return ( +
+ {children} +
+ ); + }, + SelectTrigger: ({ + children, + ...props + }: React.PropsWithChildren>) => ( + + ), + SelectValue: (props: { placeholder?: string }) => ( + {props.placeholder} + ), + SelectContent: ({ children }: React.PropsWithChildren) => ( +
{children}
+ ), + SelectItem: ({ + children, + value, + }: React.PropsWithChildren<{ value: string }>) => ( +
{children}
+ ), +})); + +// --------------------------------------------------------------------------- +// Import after mocks +// --------------------------------------------------------------------------- +import { DatabaseSelector } from "../database-selector"; + +describe("DatabaseSelector", () => { + const defaultProps = { + connectionId: "conn-1", + database: "", + onDatabaseChange: vi.fn(), + }; + + beforeEach(() => { + vi.clearAllMocks(); + capturedOnValueChange = undefined; + }); + + it("renders loading state when databases are being fetched", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: undefined, + isLoading: true, + }); + + render(); + + expect(screen.getByText("Loading databases...")).toBeInTheDocument(); + expect(screen.queryByTestId("select")).not.toBeInTheDocument(); + }); + + it("renders empty state when no databases are available", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: { databases: [] }, + isLoading: false, + }); + + render(); + + expect(screen.getByText("No databases available")).toBeInTheDocument(); + expect(screen.queryByTestId("select")).not.toBeInTheDocument(); + }); + + it("renders empty state when data is undefined and not loading", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: undefined, + isLoading: false, + }); + + render(); + + expect(screen.getByText("No databases available")).toBeInTheDocument(); + }); + + it("renders Select dropdown with database items", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: { databases: ["mydb", "otherdb"] }, + isLoading: false, + }); + + render(); + + expect(screen.getByTestId("select")).toBeInTheDocument(); + expect(screen.getByTestId("select-item-__default__")).toHaveTextContent( + "Connection default", + ); + expect(screen.getByTestId("select-item-mydb")).toHaveTextContent("mydb"); + expect(screen.getByTestId("select-item-otherdb")).toHaveTextContent( + "otherdb", + ); + }); + + it("sets Select value to __default__ when database prop is empty", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: { databases: ["mydb"] }, + isLoading: false, + }); + + render(); + + expect(screen.getByTestId("select")).toHaveAttribute( + "data-value", + "__default__", + ); + }); + + it("sets Select value to the database prop when provided", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: { databases: ["mydb"] }, + isLoading: false, + }); + + render(); + + expect(screen.getByTestId("select")).toHaveAttribute("data-value", "mydb"); + }); + + it("calls onDatabaseChange with the selected database name", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: { databases: ["mydb", "otherdb"] }, + isLoading: false, + }); + const onDatabaseChange = vi.fn(); + + render( + , + ); + + // Simulate Select onValueChange + expect(capturedOnValueChange).toBeDefined(); + capturedOnValueChange!("mydb"); + expect(onDatabaseChange).toHaveBeenCalledWith("mydb"); + }); + + it("calls onDatabaseChange with empty string when __default__ is selected", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: { databases: ["mydb"] }, + isLoading: false, + }); + const onDatabaseChange = vi.fn(); + + render( + , + ); + + capturedOnValueChange!("__default__"); + expect(onDatabaseChange).toHaveBeenCalledWith(""); + }); + + it("passes connectionId to useConnectionDatabases hook", () => { + mockUseConnectionDatabases.mockReturnValue({ + data: undefined, + isLoading: true, + }); + + render(); + + expect(mockUseConnectionDatabases).toHaveBeenCalledWith("conn-42"); + }); +}); diff --git a/app/src/hooks/__tests__/use-connection-databases.test.ts b/app/src/hooks/__tests__/use-connection-databases.test.ts new file mode 100644 index 00000000..f6411544 --- /dev/null +++ b/app/src/hooks/__tests__/use-connection-databases.test.ts @@ -0,0 +1,100 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; + +// Mock React Query — we're testing the config passed to useQuery, not React wiring +vi.mock("@tanstack/react-query", () => ({ + useQuery: vi.fn((config: Record) => config), +})); + +// Import after mocks are set up +const { useConnectionDatabases } = await import("../use-connection-databases"); + +// --------------------------------------------------------------------------- +// Helper to create a mock Response +// --------------------------------------------------------------------------- +function mockResponse(body: unknown, status = 200): Response { + return { + ok: status >= 200 && status < 300, + status, + json: () => Promise.resolve(body), + } as Response; +} + +describe("useConnectionDatabases", () => { + beforeEach(() => { + vi.restoreAllMocks(); + }); + + it("uses the correct query key with connectionId", () => { + const config = useConnectionDatabases("conn-1") as unknown as { + queryKey: unknown[]; + enabled: boolean; + }; + expect(config.queryKey).toEqual(["connection-databases", "conn-1"]); + }); + + it("is enabled when connectionId is provided", () => { + const config = useConnectionDatabases("conn-1") as unknown as { + enabled: boolean; + }; + expect(config.enabled).toBe(true); + }); + + it("is disabled when connectionId is undefined", () => { + const config = useConnectionDatabases(undefined) as unknown as { + enabled: boolean; + }; + expect(config.enabled).toBe(false); + }); + + it("is disabled when connectionId is empty string", () => { + const config = useConnectionDatabases("") as unknown as { + enabled: boolean; + }; + expect(config.enabled).toBe(false); + }); + + it("is disabled when enabled parameter is false", () => { + const config = useConnectionDatabases("conn-1", false) as unknown as { + enabled: boolean; + }; + expect(config.enabled).toBe(false); + }); + + it("sets staleTime to 60 seconds", () => { + const config = useConnectionDatabases("conn-1") as unknown as { + staleTime: number; + }; + expect(config.staleTime).toBe(60_000); + }); + + it("queryFn fetches from the correct API endpoint", async () => { + const databases = { databases: ["neo4j", "system"] }; + vi.spyOn(globalThis, "fetch").mockResolvedValueOnce( + mockResponse(databases), + ); + + const config = useConnectionDatabases("conn-42") as unknown as { + queryFn: () => Promise; + }; + const result = await config.queryFn(); + + expect(globalThis.fetch).toHaveBeenCalledWith( + "/api/connections/conn-42/databases", + ); + expect(result).toEqual(databases); + }); + + it("queryFn unwraps envelope responses", async () => { + const databases = { databases: ["mydb"] }; + vi.spyOn(globalThis, "fetch").mockResolvedValueOnce( + mockResponse({ data: databases, error: null, meta: null }), + ); + + const config = useConnectionDatabases("conn-1") as unknown as { + queryFn: () => Promise; + }; + const result = await config.queryFn(); + + expect(result).toEqual(databases); + }); +}); From 6e52d0fe1f453c95fccf42f266728171395db7d1 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 12:12:54 +0200 Subject: [PATCH 04/10] test(app): add coverage for listDatabases/listSchemas and store database fields - Add listDatabases tests: returns databases, correct credentials forwarding - Add listSchemas tests: returns schemas, empty array when unsupported - Add widget-editor-store tests: database/allowWrites defaults, setters, setConnectionId clears database, resetForAdd clears both Co-Authored-By: Claude Opus 4.6 (1M context) --- .../query/query-executor-core.test.ts | 92 +++++++++++++++++++ .../__tests__/widget-editor-store.test.ts | 37 ++++++++ 2 files changed, 129 insertions(+) diff --git a/app/src/lib/__tests__/query/query-executor-core.test.ts b/app/src/lib/__tests__/query/query-executor-core.test.ts index 1c51fd67..57f6d4e9 100644 --- a/app/src/lib/__tests__/query/query-executor-core.test.ts +++ b/app/src/lib/__tests__/query/query-executor-core.test.ts @@ -616,4 +616,96 @@ describe("query-executor", () => { expect(_getCacheSize()).toBe(0); vi.useRealTimers(); }); + + // ----------------------------------------------------------------------- + // listDatabases + // ----------------------------------------------------------------------- + + describe("listDatabases", () => { + let listDatabases: typeof import("@/lib/query/query-executor").listDatabases; + + beforeEach(async () => { + vi.clearAllMocks(); + vi.resetModules(); + vi.doMock("../connection-adapter", () => ({ + createConnectionModule: mockCreateConnectionModule, + DEFAULT_CONNECTION_CONFIG: { connectionTimeout: 30000, timeout: 30000 }, + ConnectionTypes: { NEO4J: 1, POSTGRESQL: 2 }, + })); + const mod = await import("@/lib/query/query-executor"); + listDatabases = mod.listDatabases; + }); + + it("returns databases from the connection module", async () => { + const mockListDbs = vi.fn().mockResolvedValue(["neo4j", "movies"]); + mockCreateConnectionModule.mockReturnValue({ + runQuery: mockRunQuery, + checkConnection: mockCheckConnection, + listDatabases: mockListDbs, + }); + + const result = await listDatabases("neo4j", neo4jCreds); + expect(result).toEqual(["neo4j", "movies"]); + expect(mockListDbs).toHaveBeenCalled(); + }); + + it("creates module with correct credentials", async () => { + const mockListDbs = vi.fn().mockResolvedValue([]); + mockCreateConnectionModule.mockReturnValue({ + runQuery: mockRunQuery, + checkConnection: mockCheckConnection, + listDatabases: mockListDbs, + }); + + await listDatabases("postgresql", pgCreds); + expect(mockCreateConnectionModule).toHaveBeenCalledWith( + "postgresql", + expect.objectContaining({ username: "postgres" }), + expect.anything(), + ); + }); + }); + + // ----------------------------------------------------------------------- + // listSchemas + // ----------------------------------------------------------------------- + + describe("listSchemas", () => { + let listSchemas: typeof import("@/lib/query/query-executor").listSchemas; + + beforeEach(async () => { + vi.clearAllMocks(); + vi.resetModules(); + vi.doMock("../connection-adapter", () => ({ + createConnectionModule: mockCreateConnectionModule, + DEFAULT_CONNECTION_CONFIG: { connectionTimeout: 30000, timeout: 30000 }, + ConnectionTypes: { NEO4J: 1, POSTGRESQL: 2 }, + })); + const mod = await import("@/lib/query/query-executor"); + listSchemas = mod.listSchemas; + }); + + it("returns schemas when module supports listSchemas", async () => { + const mockListSch = vi.fn().mockResolvedValue(["public", "analytics"]); + mockCreateConnectionModule.mockReturnValue({ + runQuery: mockRunQuery, + checkConnection: mockCheckConnection, + listSchemas: mockListSch, + }); + + const result = await listSchemas("postgresql", pgCreds); + expect(result).toEqual(["public", "analytics"]); + }); + + it("returns empty array when module does not support listSchemas", async () => { + mockCreateConnectionModule.mockReturnValue({ + runQuery: mockRunQuery, + checkConnection: mockCheckConnection, + // no listSchemas method + }); + + const result = await listSchemas("neo4j", neo4jCreds); + expect(result).toEqual([]); + }); + }); }); diff --git a/app/src/stores/__tests__/widget-editor-store.test.ts b/app/src/stores/__tests__/widget-editor-store.test.ts index e3b6e2b4..1c94b229 100644 --- a/app/src/stores/__tests__/widget-editor-store.test.ts +++ b/app/src/stores/__tests__/widget-editor-store.test.ts @@ -570,4 +570,41 @@ describe("widget-editor-store", () => { expect(getState().queryHistory).toEqual([]); }); }); + + // ── Per-card database + write mode ───────────────────────────── + describe("database and allowWrites", () => { + it("defaults database to empty string", () => { + expect(getState().database).toBe(""); + }); + + it("defaults allowWrites to false", () => { + expect(getState().allowWrites).toBe(false); + }); + + it("setDatabase updates database", () => { + getState().setDatabase("analytics"); + expect(getState().database).toBe("analytics"); + }); + + it("setAllowWrites updates allowWrites", () => { + getState().setAllowWrites(true); + expect(getState().allowWrites).toBe(true); + }); + + it("setConnectionId clears database override", () => { + getState().setDatabase("analytics"); + expect(getState().database).toBe("analytics"); + getState().setConnectionId("new-conn"); + expect(getState().connectionId).toBe("new-conn"); + expect(getState().database).toBeUndefined(); + }); + + it("resetForAdd clears database and allowWrites", () => { + getState().setDatabase("analytics"); + getState().setAllowWrites(true); + getState().resetForAdd(); + expect(getState().database).toBe(""); + expect(getState().allowWrites).toBe(false); + }); + }); }); From 8506f5c32c57c2cb2d6f09f4b2edfd605b59cca8 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 12:23:55 +0200 Subject: [PATCH 05/10] fix(review): address CodeRabbit round-2 findings on PR #631 - Forward full validated config in list-databases-inline (not partial) - Strengthen DB override test: assert connection-level database preserved - Add legacy widget test: missing allowWrites defaults to 403 - Add loadFromWidget hydration tests for database/allowWrites fields Co-Authored-By: Claude Opus 4.6 (1M context) --- .../list-databases-inline/route.ts | 12 +---- .../api/query/write/__tests__/route.test.ts | 53 ++++++++++++++++++- .../__tests__/widget-editor-store.test.ts | 29 ++++++++++ 3 files changed, 81 insertions(+), 13 deletions(-) diff --git a/app/src/app/api/connections/list-databases-inline/route.ts b/app/src/app/api/connections/list-databases-inline/route.ts index 61503ef1..8b3b6b57 100644 --- a/app/src/app/api/connections/list-databases-inline/route.ts +++ b/app/src/app/api/connections/list-databases-inline/route.ts @@ -17,17 +17,7 @@ export async function POST(request: Request) { const { type, config } = validation.data; - const credentials = { - uri: config.uri, - username: config.username, - password: config.password, - database: config.database, - sslRejectUnauthorized: config.sslRejectUnauthorized, - connectionTimeout: config.connectionTimeout, - queryTimeout: config.queryTimeout, - maxPoolSize: config.maxPoolSize, - statementTimeout: config.statementTimeout, - }; + const credentials = config; const databases = await listDatabases(type as DbType, credentials).catch( () => [] as string[], diff --git a/app/src/app/api/query/write/__tests__/route.test.ts b/app/src/app/api/query/write/__tests__/route.test.ts index ce51a395..cb529d5b 100644 --- a/app/src/app/api/query/write/__tests__/route.test.ts +++ b/app/src/app/api/query/write/__tests__/route.test.ts @@ -524,6 +524,7 @@ describe("POST /api/query/write", () => { uri: "bolt://localhost", username: "neo4j", password: "pass", + database: "primary", }); mockExecuteQuery.mockResolvedValue({ data: { nodesCreated: 1 } }); @@ -536,15 +537,63 @@ describe("POST /api/query/write", () => { }), ); expect(res.status).toBe(200); - // Should use original credentials without database override + // Should use original credentials with connection-level database preserved expect(mockExecuteQuery).toHaveBeenCalledWith( "neo4j", - { uri: "bolt://localhost", username: "neo4j", password: "pass" }, + { + uri: "bolt://localhost", + username: "neo4j", + password: "pass", + database: "primary", + }, expect.any(Object), { accessMode: "WRITE" }, ); }); + it("returns 403 when widget allowWrites is missing (legacy widget)", async () => { + mockRequireSession.mockResolvedValue(writerSession); + mockDb.select + .mockReturnValueOnce(drizzleSelectChain([fakeConnection])) + .mockReturnValueOnce( + drizzleSelectChain([ + { + id: "d1", + tenantId: "tenant-a", + layoutJson: { + version: 2, + pages: [ + { + id: "p1", + title: "Page 1", + widgets: [ + { + id: "w1", + chartType: "table", + connectionId: "c1", + query: "CREATE (n:Test)", + // allowWrites intentionally omitted — legacy widget + }, + ], + gridLayout: [], + }, + ], + }, + }, + ]), + ); + + const res = await POST( + makeRequest({ + connectionId: "c1", + query: "CREATE (n:Test)", + widgetId: "w1", + dashboardId: "d1", + }), + ); + expect(res.status).toBe(403); + }); + it("returns 403 when widget connectionId does not match request connectionId", async () => { mockRequireSession.mockResolvedValue(writerSession); mockDb.select diff --git a/app/src/stores/__tests__/widget-editor-store.test.ts b/app/src/stores/__tests__/widget-editor-store.test.ts index 1c94b229..c835d657 100644 --- a/app/src/stores/__tests__/widget-editor-store.test.ts +++ b/app/src/stores/__tests__/widget-editor-store.test.ts @@ -175,6 +175,35 @@ describe("widget-editor-store", () => { expect(getState().stylingEnabled).toBe(true); expect(getState().stylingRules).toHaveLength(2); }); + + it("hydrates database and allowWrites from widget", () => { + getState().loadFromWidget({ + id: "w1", + chartType: "table", + connectionId: "c1", + query: "SELECT 1", + database: "analytics", + allowWrites: true, + settings: {}, + }); + + expect(getState().database).toBe("analytics"); + expect(getState().allowWrites).toBe(true); + }); + + it("defaults database and allowWrites for legacy widgets", () => { + getState().loadFromWidget({ + id: "w1", + chartType: "table", + connectionId: "c1", + query: "SELECT 1", + // database and allowWrites intentionally omitted (legacy widget) + settings: {}, + }); + + expect(getState().database).toBe(""); + expect(getState().allowWrites).toBe(false); + }); }); describe("buildStylingConfig", () => { From 2e799a8423dc66f807ca2aa4d64f062ed3073033 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 17:21:52 +0200 Subject: [PATCH 06/10] ci: trigger CI after base branch change to release/2.0 From baea35fd6fd49dd2367f9133ceb4d317bb584c23 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 22:18:23 +0200 Subject: [PATCH 07/10] fix(types): fix mock type mismatch in query-executor tests Add listDatabases/listSchemas to module-level mock factory so TypeScript accepts the return type when overriding in tests. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../query/query-executor-core.test.ts | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/app/src/lib/__tests__/query/query-executor-core.test.ts b/app/src/lib/__tests__/query/query-executor-core.test.ts index 57f6d4e9..afcfe1f1 100644 --- a/app/src/lib/__tests__/query/query-executor-core.test.ts +++ b/app/src/lib/__tests__/query/query-executor-core.test.ts @@ -7,10 +7,14 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; const mockRunQuery = vi.fn(); const mockCheckConnection = vi.fn(); const mockClose = vi.fn().mockResolvedValue(undefined); +const mockListDatabases = vi.fn(); +const mockListSchemas = vi.fn(); const mockCreateConnectionModule = vi.fn(() => ({ runQuery: mockRunQuery, checkConnection: mockCheckConnection, close: mockClose, + listDatabases: mockListDatabases, + listSchemas: mockListSchemas as ((...args: unknown[]) => unknown) | undefined, })); vi.mock("@/lib/connector/connection-adapter", () => ({ @@ -637,25 +641,15 @@ describe("query-executor", () => { }); it("returns databases from the connection module", async () => { - const mockListDbs = vi.fn().mockResolvedValue(["neo4j", "movies"]); - mockCreateConnectionModule.mockReturnValue({ - runQuery: mockRunQuery, - checkConnection: mockCheckConnection, - listDatabases: mockListDbs, - }); + mockListDatabases.mockResolvedValue(["neo4j", "movies"]); const result = await listDatabases("neo4j", neo4jCreds); expect(result).toEqual(["neo4j", "movies"]); - expect(mockListDbs).toHaveBeenCalled(); + expect(mockListDatabases).toHaveBeenCalled(); }); it("creates module with correct credentials", async () => { - const mockListDbs = vi.fn().mockResolvedValue([]); - mockCreateConnectionModule.mockReturnValue({ - runQuery: mockRunQuery, - checkConnection: mockCheckConnection, - listDatabases: mockListDbs, - }); + mockListDatabases.mockResolvedValue([]); await listDatabases("postgresql", pgCreds); expect(mockCreateConnectionModule).toHaveBeenCalledWith( @@ -686,12 +680,7 @@ describe("query-executor", () => { }); it("returns schemas when module supports listSchemas", async () => { - const mockListSch = vi.fn().mockResolvedValue(["public", "analytics"]); - mockCreateConnectionModule.mockReturnValue({ - runQuery: mockRunQuery, - checkConnection: mockCheckConnection, - listSchemas: mockListSch, - }); + mockListSchemas.mockResolvedValue(["public", "analytics"]); const result = await listSchemas("postgresql", pgCreds); expect(result).toEqual(["public", "analytics"]); @@ -701,7 +690,8 @@ describe("query-executor", () => { mockCreateConnectionModule.mockReturnValue({ runQuery: mockRunQuery, checkConnection: mockCheckConnection, - // no listSchemas method + listDatabases: mockListDatabases, + listSchemas: undefined, }); const result = await listSchemas("neo4j", neo4jCreds); From 74ac1cfc6ae77ce0d8c46cf119eb8aace76835d5 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 22:37:14 +0200 Subject: [PATCH 08/10] refactor: remove redundant credentials alias in list-databases-inline Co-Authored-By: Claude Opus 4.6 (1M context) --- app/src/app/api/connections/list-databases-inline/route.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/app/api/connections/list-databases-inline/route.ts b/app/src/app/api/connections/list-databases-inline/route.ts index 8b3b6b57..aa940fda 100644 --- a/app/src/app/api/connections/list-databases-inline/route.ts +++ b/app/src/app/api/connections/list-databases-inline/route.ts @@ -17,16 +17,14 @@ export async function POST(request: Request) { const { type, config } = validation.data; - const credentials = config; - - const databases = await listDatabases(type as DbType, credentials).catch( + const databases = await listDatabases(type as DbType, config).catch( () => [] as string[], ); // For PostgreSQL, also fetch schemas let schemas: string[] | undefined; if (type === "postgresql") { - schemas = await listSchemas(type as DbType, credentials).catch( + schemas = await listSchemas(type as DbType, config).catch( () => [] as string[], ); } From 043bd62ac29890c2c94b9817f417b25d6e4e58c6 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 23:07:25 +0200 Subject: [PATCH 09/10] ci: trigger PR checks From ec9d06c105841351aff4b33c9d5da34ee3e7b962 Mon Sep 17 00:00:00 2001 From: alfredorubin96 Date: Fri, 1 May 2026 23:24:04 +0200 Subject: [PATCH 10/10] fix(types): add missing close mock to listSchemas test after rebase Co-Authored-By: Claude Opus 4.6 (1M context) --- app/src/lib/__tests__/query/query-executor-core.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/lib/__tests__/query/query-executor-core.test.ts b/app/src/lib/__tests__/query/query-executor-core.test.ts index afcfe1f1..d9d2eb62 100644 --- a/app/src/lib/__tests__/query/query-executor-core.test.ts +++ b/app/src/lib/__tests__/query/query-executor-core.test.ts @@ -690,6 +690,7 @@ describe("query-executor", () => { mockCreateConnectionModule.mockReturnValue({ runQuery: mockRunQuery, checkConnection: mockCheckConnection, + close: mockClose, listDatabases: mockListDatabases, listSchemas: undefined, });

dpFfX;k?YI>-LYQVS1>;jhx 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 literal 0 HcmV?d00001 diff --git a/screenshots/04-widget-editor-data-tab.png b/screenshots/04-widget-editor-data-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..055b43d66b9d833d1b7b8b2b8bb17cb5bf8ebb9b GIT binary patch literal 59187 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