From 25689b6e0de59e457b493bd35b4e64577aa55c43 Mon Sep 17 00:00:00 2001 From: killian-larcher Date: Fri, 12 Jun 2026 23:18:14 +0200 Subject: [PATCH] chore: remove all e2e files. --- Makefile | 4 +- e2e/access-management.spec.ts | 74 - e2e/agent.spec.ts | 116 -- e2e/auth.spec.ts | 104 -- e2e/cleanup.spec.ts | 32 - e2e/helpers/access-management.ts | 70 - e2e/helpers/agent-cli.ts | 107 -- e2e/helpers/agent.ts | 66 - e2e/helpers/auth.ts | 50 - e2e/helpers/env.ts | 62 - e2e/helpers/notification.ts | 94 -- e2e/helpers/project.ts | 59 - e2e/helpers/session.ts | 1 - e2e/helpers/storage.ts | 103 -- e2e/notification/discord.spec.ts | 71 - e2e/notification/gotify.spec.ts | 66 - e2e/notification/ntfy.spec.ts | 73 - e2e/notification/slack.spec.ts | 61 - e2e/notification/smtp.spec.ts | 72 - e2e/notification/teams.spec.ts | 0 e2e/notification/telegram.spec.ts | 72 - e2e/notification/webhook.spec.ts | 73 - e2e/project.spec.ts | 59 - e2e/setup.spec.ts | 13 - e2e/storage/azure.spec.ts | 0 e2e/storage/gcs.spec.ts | 0 e2e/storage/google-drive.spec.ts | 60 - e2e/storage/s3.spec.ts | 121 -- package.json | 3 + playwright.config.ts | 79 - pnpm-lock.yaml | 1599 ++++++++++++++++++++- seeds/keycloak/master-realm.json | 2216 ----------------------------- seeds/pocket-id/portabase.zip | Bin 273583 -> 0 bytes 33 files changed, 1598 insertions(+), 3982 deletions(-) delete mode 100644 e2e/access-management.spec.ts delete mode 100644 e2e/agent.spec.ts delete mode 100644 e2e/auth.spec.ts delete mode 100644 e2e/cleanup.spec.ts delete mode 100644 e2e/helpers/access-management.ts delete mode 100644 e2e/helpers/agent-cli.ts delete mode 100644 e2e/helpers/agent.ts delete mode 100644 e2e/helpers/auth.ts delete mode 100644 e2e/helpers/env.ts delete mode 100644 e2e/helpers/notification.ts delete mode 100644 e2e/helpers/project.ts delete mode 100644 e2e/helpers/session.ts delete mode 100644 e2e/helpers/storage.ts delete mode 100644 e2e/notification/discord.spec.ts delete mode 100644 e2e/notification/gotify.spec.ts delete mode 100644 e2e/notification/ntfy.spec.ts delete mode 100644 e2e/notification/slack.spec.ts delete mode 100644 e2e/notification/smtp.spec.ts delete mode 100644 e2e/notification/teams.spec.ts delete mode 100644 e2e/notification/telegram.spec.ts delete mode 100644 e2e/notification/webhook.spec.ts delete mode 100644 e2e/project.spec.ts delete mode 100644 e2e/setup.spec.ts delete mode 100644 e2e/storage/azure.spec.ts delete mode 100644 e2e/storage/gcs.spec.ts delete mode 100644 e2e/storage/google-drive.spec.ts delete mode 100644 e2e/storage/s3.spec.ts delete mode 100644 playwright.config.ts delete mode 100644 seeds/keycloak/master-realm.json delete mode 100644 seeds/pocket-id/portabase.zip diff --git a/Makefile b/Makefile index 1dea89d1..91b5ebb5 100644 --- a/Makefile +++ b/Makefile @@ -59,4 +59,6 @@ e2e-manual: @docker compose -f docker-compose.e2e.yml up -d @pnpm playwright test --ui || (docker compose -f docker-compose.e2e.yml down --volumes && exit 1) @docker compose -f docker-compose.e2e.yml down --volumes - @echo "Finished E2E testing successfully." \ No newline at end of file + @echo "Finished E2E testing successfully." +api-test: + pnpm test:api diff --git a/e2e/access-management.spec.ts b/e2e/access-management.spec.ts deleted file mode 100644 index bc1a7b45..00000000 --- a/e2e/access-management.spec.ts +++ /dev/null @@ -1,74 +0,0 @@ -import {expect, test} from "@playwright/test"; -import {users} from "./helpers/auth"; -import {changeUserRole, create, switchToDefault} from "./helpers/access-management"; -import {LOCAL_STORAGE_PATH} from "./helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const firstOrganization = "Organization A"; -const secondOrganization = "Organization B"; - -test.describe.serial(() => { - test("Create an organization from organizations page", async ({page}) => { - await page.goto("/dashboard/admin/organizations"); - await expect(page.getByRole("heading", {name: "Active organizations"})).toBeVisible(); - - await create(page, "button", firstOrganization); - - await expect(page.getByText(/Organization has been successfully created\./i)).toBeVisible(); - await expect(page).toHaveURL("/dashboard/admin/organizations"); - await expect(page.getByRole("button", {name: firstOrganization, exact: true})).toBeVisible(); - - await switchToDefault(page); - }); - - test("Create an organization from sidebar button", async ({page}) => { - await page.goto("/dashboard/home"); - await expect(page.getByRole("heading", {name: "Dashboard"})).toBeVisible(); - - await create(page, "sidebar", secondOrganization); - - await expect(page.getByText(/Organization has been successfully created\./i)).toBeVisible(); - await expect(page).toHaveURL("/dashboard/home"); - await expect(page.getByRole("button", {name: secondOrganization, exact: true})).toBeVisible(); - - await switchToDefault(page); - }); - - test("Change John Doe's role from pending to user", async ({page}) => { - await page.goto("/dashboard/admin/users"); - await expect(page.getByText(users.normal.email, {exact: true})).toBeVisible(); - - const userRow = page.locator("tr").filter({hasText: users.normal.email}).first(); - await expect(userRow).toBeVisible(); - await userRow.locator("button").last().click(); - await page.getByRole('menuitem', {name: 'Role'}).click(); - - await expect(page.getByRole("heading", {name: "Change the user's role"})).toBeVisible(); - - await changeUserRole(page, "user") - - await expect(page.getByText("User role changed successfully.")).toBeVisible(); - await expect(page.locator("tr").filter({hasText: users.normal.email}).getByText("user", {exact: true})).toBeVisible(); - }); - - test("Add John Doe to Organization A", async ({page}) => { - await page.goto("/dashboard/admin/organizations"); - await expect(page.getByRole("heading", {name: "Active organizations"})).toBeVisible(); - - const organizationRow = page.locator("tr").filter({hasText: firstOrganization}).first(); - await expect(organizationRow).toBeVisible(); - await organizationRow.locator('a[href*="/dashboard/admin/organizations/"], a[href*="organizations/"]').click(); - - await expect(page.getByText(firstOrganization, {exact: true})).toBeVisible(); - await page.getByRole("button", {name: /Add member/i}).click(); - await expect(page.getByRole("heading", {name: "Add member to your organization"})).toBeVisible(); - - await page.getByPlaceholder("Enter a user email").fill(users.normal.email); - await page.getByRole("option", {name: new RegExp(users.normal.email, "i")}).click(); - await page.getByRole("button", {name: "Confirm"}).click(); - - await expect(page.getByText("Member successfully added!")).toBeVisible(); - await expect(page.getByText(users.normal.email, {exact: true})).toBeVisible(); - }); -}); diff --git a/e2e/agent.spec.ts b/e2e/agent.spec.ts deleted file mode 100644 index 893eeaaa..00000000 --- a/e2e/agent.spec.ts +++ /dev/null @@ -1,116 +0,0 @@ -import {expect, test} from "@playwright/test"; -import {execSync} from "child_process"; -import fs from "fs"; -import os from "os"; -import path from "path"; -import {createAgentWithDockerDatabases} from "./helpers/agent-cli"; -import {create, edit, get, remove} from "./helpers/agent"; -import {LOCAL_STORAGE_PATH} from "./helpers/session"; - -const agent = { - aName: "Agent A", - aUpdatedName: "Agent A Updated", - bName: "Agent B", - description: "Agent created by Playwright E2E", - updatedDescription: "Agent updated by Playwright E2E", -}; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -test.describe.serial(() => { - let agentWorkspace: string | null = null; - - test("Create agent A from empty state", async ({page}) => { - await page.goto("/dashboard/agents"); - await expect(page.getByRole("heading", {name: "Agents"})).toBeVisible(); - await expect(page.getByText("Create new Agent", {exact: true})).toBeVisible(); - await create(page, "emptyState", agent.aName, agent.description); - - await expect(page.getByText("Success creating agent")).toBeVisible(); - await expect(get(page, agent.aName)).toBeVisible(); - await expect(page.getByText("Create new Agent", {exact: true})).toHaveCount(0); - }); - - test("Edit agent A", async ({page}) => { - await page.goto("/dashboard/agents"); - await expect(page.getByRole("heading", {name: "Agents"})).toBeVisible(); - await expect(get(page, agent.aName)).toBeVisible(); - - await edit(page, agent.aName, agent.aUpdatedName, agent.updatedDescription); - - await expect(page.getByText("Success updating agent")).toBeVisible(); - await expect(page.getByText(agent.aUpdatedName, {exact: true})).toBeVisible(); - await expect(page.getByText(agent.updatedDescription, {exact: true})).toBeVisible(); - }); - - test("Create agent B from classic button", async ({page}) => { - await page.goto("/dashboard/agents"); - await expect(page.getByRole("heading", {name: "Agents"})).toBeVisible(); - await expect(page.getByRole("button", {name: /Create Agent/i})).toBeVisible(); - await create(page, "button", agent.bName, agent.description); - - await expect(page.getByText("Success creating agent")).toBeVisible(); - await expect(get(page, agent.bName)).toBeVisible(); - }); - - test("Delete Agent B", async ({page}) => { - await page.goto("/dashboard/agents"); - await expect(page.getByRole("heading", {name: "Agents"})).toBeVisible(); - await expect(get(page, agent.bName)).toBeVisible(); - await remove(page, agent.bName); - - await expect(page.getByText("Agent has been successfully deleted.")).toBeVisible(); - await expect(page).toHaveURL("/dashboard/agents"); - await expect(page.getByText(agent.bName)).toHaveCount(0); - }); - - // test("Launch the updated agent", async ({page}) => { - // await page.goto("/dashboard/agents"); - // await expect(page.getByRole("heading", {name: "Agents"})).toBeVisible(); - // await get(page, agent.aName).click(); - // - // await expect(page).toHaveURL(/\/dashboard\/agents\/.+/); - // await expect(page.getByText(agent.aName, {exact: true})).toBeVisible(); - // await expect(page.getByText("Registration & Setup")).toBeVisible(); - // - // const commandInput = page.locator("input[readonly]").first(); - // await page.locator("input[readonly]").first().locator("xpath=following-sibling::button[1]").click(); - // const command = await commandInput.inputValue(); - // - // agentWorkspace = fs.mkdtempSync(path.join(os.tmpdir(), "portabase-agent-")); - // await createAgentWithDockerDatabases(command, agentWorkspace); - // execSync(`portabase start "${agent.aName}"`, { - // cwd: agentWorkspace, - // stdio: "pipe", - // timeout: 120_000, - // }); - // - // await expect(page.getByText("Never connected.")).toHaveCount(0, {timeout: 120_000}); - // await expect(page.getByText("Action Required")).toHaveCount(0); - // }); - - test.afterAll(async () => { - if (agentWorkspace) { - try { - execSync(`portabase stop "${agent.aName}"`, { - cwd: agentWorkspace, - stdio: "pipe", - timeout: 30_000, - }); - } catch { - } - - try { - execSync(`portabase uninstall --force "${agent.aName}"`, { - cwd: agentWorkspace, - stdio: "pipe", - timeout: 30_000, - }); - } catch { - } - - fs.rmSync(agentWorkspace, {recursive: true, force: true}); - agentWorkspace = null; - } - }); -}); \ No newline at end of file diff --git a/e2e/auth.spec.ts b/e2e/auth.spec.ts deleted file mode 100644 index 34872cdb..00000000 --- a/e2e/auth.spec.ts +++ /dev/null @@ -1,104 +0,0 @@ -import {test, expect} from '@playwright/test'; -import {login, register, users} from "./helpers/auth"; -import {LOCAL_STORAGE_PATH} from "./helpers/session"; - -const TIMEOUT = undefined -// const TIMEOUT = 5000 - -test.use({storageState: LOCAL_STORAGE_PATH}) - -test.describe.serial( () => { - - test('Redirect to login if not connected', async ({page}) => { - await page.goto('/dashboard/projects'); - await expect(page).toHaveURL("login?redirect=%2Fdashboard%2Fprojects", {timeout: TIMEOUT}); - }); - - test('Password too short', async ({page}) => { - await page.goto('') - await page.click('text=Sign up') - await expect(page).toHaveURL('/register') - - let password = '123456' - await register(page, users["admin"].username, users["admin"].email, password, password) - - const toast = page.locator('text=Must have at least 8 character') - await expect(toast).toBeVisible() - }) - - test('Password too simple', async ({page}) => { - await page.goto('') - await page.click('text=Sign up') - await expect(page).toHaveURL('/register') - - let password = '12345678' - await register(page, users["admin"].username, users["admin"].email, password, password) - - const toast = page.locator('text=Your password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.') - await expect(toast).toBeVisible() - }) - - test('Password and confirm password mismatch', async ({page}) => { - await page.goto('/') - await page.click('text=Sign up') - await expect(page).toHaveURL('/register') - - let password = 'testPASS123456!' - let confirmPassword = 'testPASS123456!!' - await register(page, users["admin"].username, users["admin"].email, password, confirmPassword) - - const toast = page.locator('text=The passwords did not match') - await expect(toast).toBeVisible() - }) - - test('Successful register for admin', async ({page}) => { - await page.goto('/') - - await page.click('text=Sign up') - await expect(page).toHaveURL('/register') - - await register(page, users["admin"].username, users["admin"].email, users["admin"].password, users["admin"].password) - - await expect(page).toHaveURL('/login', {timeout: TIMEOUT}) - }) - - test('User already exists.', async ({page}) => { - await page.goto('/') - - await page.click('text=Sign up') - await expect(page).toHaveURL('/register') - - await register(page, users["admin"].username, users["admin"].email, users["admin"].password, users["admin"].password) - - const toast = page.locator('text=User already exists. Use another email.') - await expect(toast).toBeVisible() - }) - - test('Successful register for normal', async ({page}) => { - await page.goto('/') - - await page.click('text=Sign up') - await expect(page).toHaveURL('/register') - - await register(page, users["normal"].username, users["normal"].email, users["normal"].password, users["normal"].password) - - await expect(page).toHaveURL('/login', {timeout: TIMEOUT}) - }) - - test('Failed login because account not active', async ({page}) => { - await page.goto('/login') - await login(page, users["normal"].email, users["normal"].password) - - const toast = page.locator('text=Your account is not active.') - await expect(toast).toBeVisible() - }) - - test('Successful login', async ({page}) => { - await page.goto('/login') - await login(page, users["admin"].email, users["admin"].password) - - await expect(page).toHaveURL('/dashboard/home', {timeout: TIMEOUT}) - await expect(page.getByRole('link', {name: 'Logo Portabase'})).toBeVisible() - await page.context().storageState({path: LOCAL_STORAGE_PATH}) - }) -}) diff --git a/e2e/cleanup.spec.ts b/e2e/cleanup.spec.ts deleted file mode 100644 index 95fe7fe9..00000000 --- a/e2e/cleanup.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -import {expect, test} from "@playwright/test"; -import fs from "fs"; -import {logout} from "./helpers/auth"; -import {LOCAL_STORAGE_PATH} from "./helpers/session"; - - -test.use({storageState: LOCAL_STORAGE_PATH}); - -test.describe( () => { - test.afterAll(async () => { - if (fs.existsSync(LOCAL_STORAGE_PATH)) { - fs.unlinkSync(LOCAL_STORAGE_PATH); - } - }); - - test("Remove shared storage state", async ({page}) => { - await test.step("Logout shared authenticated session", async () => { - if (!fs.existsSync(LOCAL_STORAGE_PATH)) { - return; - } - - const content = fs.readFileSync(LOCAL_STORAGE_PATH, "utf-8").trim(); - if (!content || content === "{}") { - return; - } - - await page.goto('/dashboard/home'); - await logout(page); - await expect(page).toHaveURL(/\/login(?:\?.*)?$/); - }); - }); -}); diff --git a/e2e/helpers/access-management.ts b/e2e/helpers/access-management.ts deleted file mode 100644 index dea6286d..00000000 --- a/e2e/helpers/access-management.ts +++ /dev/null @@ -1,70 +0,0 @@ -import {Page} from "@playwright/test"; - -export function getUserRow(page: Page, email: string) { - return page.locator("tr").filter({hasText: email}).first(); -} - -export function getOrganizationRow(page: Page, organizationName: string) { - return page.locator("tr").filter({hasText: organizationName}).first(); -} - -/** - * Create an organization from the selected entrypoint. - * - * Available entrypoints: - * - `button`: the organizations page create button. - * - `sidebar`: the sidebar organization switcher. - * - * Executes from: - * - `/dashboard/admin/organizations` for "button" entrypoint - * - any `/dashboard/**` page for "sidebar" entrypoint - */ -export async function create(page: Page, entrypoint: "button" | "sidebar", name: string) { - if (entrypoint === "sidebar") { - await page.getByRole("button", {name: "Default Organization"}).click(); - await page.getByText("Create organization", {exact: true}).click(); - } else { - await page.getByRole("button", {name: /Create a new organization/i}).click(); - } - - await page.getByLabel("Name").fill(name); - await page.getByRole("button", {name: "Create"}).click(); -} - -/** - * Switch the active organization from the sidebar switcher. - * - * Executes from: any `/dashboard/**` if the sidebar is visible. - */ -export async function switchTo(page: Page, name: string) { - await page.getByTestId('organization-dropdown').click(); - await page.getByRole('menuitem', {name: name}).click(); -} - -/** - * Switch back to the default organization. - * - * Executes from: any `/dashboard/**` if the sidebar is visible. - */ -export async function switchToDefault(page: Page) { - await switchTo(page, "Default Organization"); -} - -const ROLE_LABELS = { - pending: "Pending", - user: "User", - admin: "Admin", -} as const; - -/** - * Change the global role of a user from the admin users role modal. - * - * Executes from: the "Change the user's role" dialog opened from `/dashboard/admin/users`. - */ -export async function changeUserRole(page: Page, role: keyof typeof ROLE_LABELS) { - const roleOption = ROLE_LABELS[role]; - - await page.getByRole("combobox").click(); - await page.getByRole("option", {name: roleOption}).click(); - await page.getByRole("button", {name: "Validate"}).click(); -} \ No newline at end of file diff --git a/e2e/helpers/agent-cli.ts b/e2e/helpers/agent-cli.ts deleted file mode 100644 index aec53c6d..00000000 --- a/e2e/helpers/agent-cli.ts +++ /dev/null @@ -1,107 +0,0 @@ -import * as pty from "node-pty"; - -type InteractiveStep = { - match: RegExp; - reply: string; -}; - -function normalizeOutput(output: string) { - return output.replace(/\u001b\[[0-9;?]*[ -/]*[@-~]/g, ""); -} - -/** - * Run an interactive CLI command and answer prompts in sequence. - * Entry point: - * - `command` is the full CLI command executed in the PTY. - * - `cwd` is the local workspace where the command is launched. - * - `steps` defines which prompt text is matched and which reply is sent. - * - `timeoutMs` controls when the command is aborted if it stalls. - * Executes from: not page-bound; runs from a local test workspace on the Node.js side. - */ -export async function runInteractiveCommand( - command: string, - cwd: string, - steps: InteractiveStep[], - timeoutMs: number = 120_000, -) { - await new Promise((resolve, reject) => { - const child = pty.spawn("sh", ["-lc", command], { - cwd, - env: { - ...process.env, - TERM: "xterm-256color", - }, - cols: 120, - rows: 30, - }); - - let currentStep = 0; - let output = ""; - const timer = setTimeout(() => { - child.kill(); - reject(new Error(`Interactive command timed out.\n\nCommand: ${command}\n\nOutput:\n${normalizeOutput(output)}`)); - }, timeoutMs); - - const handleChunk = (chunk: string) => { - output += chunk; - const normalizedOutput = normalizeOutput(output); - - while (currentStep < steps.length && steps[currentStep].match.test(normalizedOutput)) { - child.write(steps[currentStep].reply); - currentStep += 1; - } - }; - - child.onData(handleChunk); - child.onExit(({exitCode}) => { - clearTimeout(timer); - if (exitCode === 0) { - resolve(); - return; - } - - reject(new Error(`Interactive command failed with exit code ${exitCode}.\n\nCommand: ${command}\n\nOutput:\n${normalizeOutput(output)}`)); - }); - }); -} - -/** - * Create and configure a Portabase agent with two Docker-backed databases. - * Entry point: - * - `command` is the CLI setup command copied from the agent details page. - * - `cwd` is the local workspace where the agent is installed. - * - this helper answers the wizard for PostgreSQL first, then MariaDB. - * Executes from: not page-bound; runs from a local test workspace on the Node.js side. - */ -export async function createAgentWithDockerDatabases(command: string, cwd: string) { - await runInteractiveCommand(command, cwd, [ - { - match: /configure.*database|add.*database/i, - reply: "y\n", - }, - { - match: /docker.*new local container|manual.*external|external.*existing/i, - reply: "\r", - }, - { - match: /postgresql|mariadb/i, - reply: "\r", - }, - { - match: /another.*database|add.*another|configure.*another/i, - reply: "y\n", - }, - { - match: /docker.*new local container|manual.*external|external.*existing/i, - reply: "\r", - }, - { - match: /postgresql|mariadb/i, - reply: "\u001B[B\r", - }, - { - match: /another.*database|add.*another|configure.*another/i, - reply: "n\n", - }, - ]); -} diff --git a/e2e/helpers/agent.ts b/e2e/helpers/agent.ts deleted file mode 100644 index 565f106f..00000000 --- a/e2e/helpers/agent.ts +++ /dev/null @@ -1,66 +0,0 @@ -import {Page} from "@playwright/test"; - - -/** - * Locate an agent card in the list. - - * Executes from: `/dashboard/agents`. - */ -export function get(page: Page, name: string) { - return page.locator('a[href^="/dashboard/agents"]').filter({hasText: name}).first(); -} - -/** - * Create an agent from the selected entrypoint. - * - * Available entrypoints: - * - `button`: the classic create button. - * - `emptyState`: the empty-state CTA. - * - `auto`: uses the classic create button and falls back to the empty-state CTA. - * - * Executes from: `/dashboard/agents`. - */ -export async function create(page: Page, entrypoint: "auto" | "emptyState" | "button" = "auto", agentName: string, description: string) { - if (entrypoint === "auto") { - const createButton = page.getByRole("button", {name: /Create Agent/i}); - if (await createButton.isVisible()) await page.getByRole("button", {name: /Create Agent/i}).click(); - await page.getByText("Create new Agent", {exact: true}).click(); - } else if (entrypoint === "button") { - await page.getByRole("button", {name: /Create Agent/i}).click(); - } else if (entrypoint === "emptyState") { - await page.getByText("Create new Agent", {exact: true}).click(); - } - - await page.getByLabel("Name").fill(agentName); - await page.getByLabel("Description").fill(description); - await page.getByRole("button", {name: "Create"}).click(); -} - -/** - * Edit an existing agent (name and description) from its details page. - * - * Executes from: `/dashboard/agents/[agentId]`. - */ -export async function edit(page: Page, currentName: string, updatedName: string, updatedDescription: string) { - await get(page, currentName).click(); - - await page - .getByRole("button", {name: /Delete Agent/i}) - .locator("xpath=ancestor::div[1]/preceding-sibling::div[1]/*[1]") - .click(); - - await page.getByLabel("Name").fill(updatedName); - await page.getByLabel("Description").fill(updatedDescription); - await page.getByRole("button", {name: "Update"}).click(); -} - -/** - * Delete an agent from its details page. - - * Executes from: `/dashboard/agents/[agentId]`. - */ -export async function remove(page: Page, name: string) { - await get(page, name).click(); - await page.getByRole("button", {name: /Delete Agent/i}).click(); - await page.getByRole("button", {name: "Delete", exact: true}).click(); -} diff --git a/e2e/helpers/auth.ts b/e2e/helpers/auth.ts deleted file mode 100644 index 9835c03b..00000000 --- a/e2e/helpers/auth.ts +++ /dev/null @@ -1,50 +0,0 @@ -import {Page} from "@playwright/test"; - -export type UserCredentials = { - username: string - email: string - password: string -} - -export const users: Record = { - admin: {username: "Admin", email: "admin@example.com", password: "testPASS123456!"}, - normal: {username: "John Doe", email: "john.doe@example.com", password: "testPASS123456!"}, -} - -/** - * Fill and submit the registration form. - * - * Executes from: `/register`. - */ -export async function register(page: Page, name: string, email: string, password: string, confirmPassword: string) { - await page.locator('input[name="name"]').fill(name) - await page.locator('input[name="email"]').fill(email) - await page.locator('input[name="password"]').fill(password) - await page.locator('input[name="confirmPassword"]').fill(confirmPassword) - - await page.click('button[type="submit"]') -} - -/** - * Fill and submit the login form. - * - * Executes from: `/login`. - */ -export async function login(page: Page, email: string, password: string) { - await page.locator('input[name="email"]').fill(email) - await page.locator('input[name="password"]').fill(password) - - await page.locator('button:has-text("Login")').click() -} - -/** - * Log out the current authenticated user. - * - * Executes from: any authenticated `/dashboard/**` page. - */ -export async function logout(page: Page) { - const profileButton = page.getByTestId('profile-dropdown') - await profileButton.first().click(); - - await page.getByRole("menuitem").filter({hasText: /Logout/i}).click(); -} diff --git a/e2e/helpers/env.ts b/e2e/helpers/env.ts deleted file mode 100644 index ba4d6f84..00000000 --- a/e2e/helpers/env.ts +++ /dev/null @@ -1,62 +0,0 @@ -const REQUIRED_E2E_ENV_VARS = [ - "E2E_NOTIFICATION_SMTP_HOST", - "E2E_NOTIFICATION_SMTP_PORT", - "E2E_NOTIFICATION_SMTP_USER", - "E2E_NOTIFICATION_SMTP_PASSWORD", - "E2E_NOTIFICATION_SMTP_FROM", - "E2E_NOTIFICATION_SMTP_TO", - "E2E_NOTIFICATION_SLACK_WEBHOOK", - "E2E_NOTIFICATION_DISCORD_WEBHOOK", - "E2E_NOTIFICATION_TELEGRAM_BOT_TOKEN", - "E2E_NOTIFICATION_TELEGRAM_CHAT_ID", - "E2E_NOTIFICATION_TELEGRAM_TOPIC_ID", - "E2E_NOTIFICATION_GOTIFY_SERVER_URL", - "E2E_NOTIFICATION_GOTIFY_APP_TOKEN", - "E2E_NOTIFICATION_NTFY_TOPIC", - "E2E_NOTIFICATION_NTFY_SERVER_URL", - "E2E_NOTIFICATION_NTFY_TOKEN", - "E2E_NOTIFICATION_NTFY_USERNAME", - "E2E_NOTIFICATION_NTFY_PASSWORD", - "E2E_NOTIFICATION_WEBHOOK_URL", - "E2E_NOTIFICATION_WEBHOOK_SECRET_HEADER", - "E2E_NOTIFICATION_WEBHOOK_SECRET", - "E2E_STORAGE_AWS_S3_ENDPOINT_URL", - "E2E_STORAGE_AWS_S3_REGION", - "E2E_STORAGE_AWS_S3_ACCESS_KEY", - "E2E_STORAGE_AWS_S3_SECRET_KEY", - "E2E_STORAGE_AWS_S3_BUCKET_NAME", - "E2E_STORAGE_AWS_S3_PORT", - "E2E_STORAGE_R2_ENDPOINT_URL", - "E2E_STORAGE_R2_REGION", - "E2E_STORAGE_R2_ACCESS_KEY", - "E2E_STORAGE_R2_SECRET_KEY", - "E2E_STORAGE_R2_BUCKET_NAME", - "E2E_STORAGE_R2_PORT", - "E2E_STORAGE_GOOGLE_DRIVE_CLIENT_ID", - "E2E_STORAGE_GOOGLE_DRIVE_CLIENT_SECRET", - "E2E_STORAGE_GOOGLE_DRIVE_FOLDER_ID", -] as const; - -function assertRequiredEnvVars() { - const missingVars = REQUIRED_E2E_ENV_VARS.filter((name) => { - const value = process.env[name]?.trim(); - return !value; - }); - - if (missingVars.length > 0) { - throw new Error( - `Missing required environment variables:\n${missingVars.map((name) => `- ${name}`).join("\n")}`, - ); - } -} - -assertRequiredEnvVars(); - -export function getEnv(name: string): string { - const value = process.env[name]?.trim(); - if (!value) { - throw new Error(`Missing required environment variable: ${name}`); - } - - return value; -} diff --git a/e2e/helpers/notification.ts b/e2e/helpers/notification.ts deleted file mode 100644 index 9d54983d..00000000 --- a/e2e/helpers/notification.ts +++ /dev/null @@ -1,94 +0,0 @@ -import {Page} from "@playwright/test"; - - -/** - * Locate a notification channel card in the list. - * - * Executes from: `/dashboard/notifications/channels`. - */ -export function get(page: Page, channelName: string) { - return page.locator('div.block.transition-all.duration-200.rounded-xl', { - has: page.locator('h3', {hasText: channelName}), - }).first(); -} - -/** - * Open the edit dialog for an existing notification channel. - * - * Executes from: `/dashboard/notifications/channels`. - */ -export async function edit(page: Page, channelName: string) { - const card = get(page, channelName); - await card.locator("button").nth(1).click(); -} - -/** - * Delete an existing notification channel. - * - * Executes from: `/dashboard/notifications/channels`. - */ -export async function remove(page: Page, channelName: string) { - const card = get(page, channelName); - await card.locator("button").nth(2).click(); - await page.getByRole("button", {name: "Delete"}).click(); -} - -/** - * Fill the notification channel creation form. - * - * Available entrypoints: - * - `button`: the classic add button. - * - `emptyState`: the empty-state CTA. - * - `auto` use the classic add button and falls back to the empty-state CTA. - * - * Executes from: `/dashboard/notifications/channels`. - */ -export async function create( - page: Page, - provider: "Discord" | "Gotify" | "ntfy.sh" | "Slack" | "Email" | "Telegram" | "Webhook", - channelName: string, - fillConfig: (page: Page) => Promise, - entrypoint: "auto" | "emptyState" | "button" = "auto", -) { - if (entrypoint === "auto") { - const addButton = page.getByRole("button", {name: /Add notification channel/i}); - if (await addButton.isVisible()) await page.getByRole("button", {name: /Add notification channel/i}).click(); - else await page.getByRole("button", {name: /No notification channels configured yet/i}).click(); - } else if (entrypoint === "button") { - await page.getByRole("button", {name: /Add notification channel/i}).click(); - } else if (entrypoint === "emptyState") { - await page.getByRole("button", {name: /No notification channels configured yet/i}).click(); - } - - await page.getByText(provider, {exact: true}).click(); - await page.getByLabel(/Channel Name/).fill(channelName); - await fillConfig(page); -} - -/** - * Submit the notification channel creation form. - * - * Executes from: the add notification channel dialog opened from `/dashboard/notifications/channels`. - */ -export async function submit(page: Page) { - await page.getByRole("button", {name: "Add Channel"}).click(); -} - -/** - * Open the edit dialog for a notification channel and trigger the test action. - * - * Executes from: `/dashboard/notifications/channels`. - */ -export async function testFromEdit(page: Page, channelName: string) { - await edit(page, channelName); - await page.getByRole("button", {name: /Test Channel/i}).click(); -} - -/** - * Close the current notification channel dialog without saving. - * - * Executes from: the add or edit notification channel dialog. - */ -export async function cancel(page: Page) { - await page.getByRole("button", {name: "Cancel"}).click(); -} diff --git a/e2e/helpers/project.ts b/e2e/helpers/project.ts deleted file mode 100644 index ee788866..00000000 --- a/e2e/helpers/project.ts +++ /dev/null @@ -1,59 +0,0 @@ -import {Page} from "@playwright/test"; - - -/** - * Locate a project card in the list. - * - * Executes from: `/dashboard/projects`. - */ -export function get(page: Page, projectName: string) { - return page.locator('a[href^="/dashboard/projects/"]').filter({hasText: projectName}).first(); -} - -/** - * Create a project from the selected entrypoint. - * - * Available entrypoints: - * - `emptyState`: the empty-state CTA. - * - `button`: the classic create button. - * - * * Executes from: `/dashboard/projects`. - */ -export async function create(page: Page, entrypoint: "emptyState" | "button", projectName: string) { - if (entrypoint === "emptyState") { - await page.getByText("Create new Project", {exact: true}).click(); - } else { - await page.getByRole("button", {name: /Create Project/i}).click(); - } - - await page.getByLabel("Name").fill(projectName); - await page.getByRole("button", {name: "Create"}).click(); -} - -/** - * Edit an existing project from its details page. - * - * Executes from: `/dashboard/projects/[projectId]`. - */ -export async function edit(page: Page, currentName: string, updatedName: string) { - await get(page, currentName).click(); - - await page - .getByRole("button", {name: /Delete Project/i}) - .locator("xpath=ancestor::div[1]/preceding-sibling::div[1]/*[1]") - .click(); - - await page.getByLabel("Name").fill(updatedName); - await page.getByRole("button", {name: "Update"}).click(); -} - -/** - * Delete an existing project from its details page. - * - * Executes from: `/dashboard/projects/[projectId]`. - * */ -export async function remove(page: Page, projectName: string) { - await get(page, projectName).click(); - await page.getByRole("button", {name: /Delete Project/i}).click(); - await page.getByRole("button", {name: "Delete", exact: true}).click(); -} diff --git a/e2e/helpers/session.ts b/e2e/helpers/session.ts deleted file mode 100644 index 938f8b3e..00000000 --- a/e2e/helpers/session.ts +++ /dev/null @@ -1 +0,0 @@ -export const LOCAL_STORAGE_PATH = "./e2e/local-storage.json"; diff --git a/e2e/helpers/storage.ts b/e2e/helpers/storage.ts deleted file mode 100644 index f8a7a606..00000000 --- a/e2e/helpers/storage.ts +++ /dev/null @@ -1,103 +0,0 @@ -import {Page} from "@playwright/test"; - - -/** - * Locate a storage channel card in the channels list. - * - * Executes from: `/dashboard/storages/channels`. - */ -export function get(page: Page, channelName: string) { - return page.locator('div.block.transition-all.duration-200.rounded-xl', { - has: page.locator('h3', {hasText: channelName}), - }).first(); -} - -/** - * Fill the storage channel creation form. - * - * Available entrypoints: - * - `button`: the classic add button. - * - `emptyState`: the empty-state CTA. - * - `auto`: uses the classic add button and falls back to the empty-state CTA. - * - * Executes from: `/dashboard/storages/channels`. - */ -export async function create( - page: Page, - provider: "S3" | "Google Drive", - channelName: string, - fillConfig: (page: Page) => Promise, - entrypoint: "auto" | "emptyState" | "button" = "auto", -) { - if (entrypoint === "auto") { - const addButton = page.getByRole("button", {name: /Add storage channel/i}); - if (await addButton.isVisible()) await page.getByRole("button", {name: /Add storage channel/i}).click(); - else await page.getByText("No storage channels configured yet", {exact: true}).click(); - } else if (entrypoint === "button") { - await page.getByRole("button", {name: /Add storage channel/i}).click(); - } else if (entrypoint === "emptyState") { - await page.getByText("No storage channels configured yet", {exact: true}).click(); - } - - await page.getByText(provider, {exact: true}).click(); - await page.getByLabel(/Channel Name/).fill(channelName); - await fillConfig(page); -} - -/** - * Open the edit dialog for an existing storage channel. - * - * Executes from: `/dashboard/storages/channels`. - */ -export async function edit(page: Page, channelName: string) { - const card = get(page, channelName); - await card.locator("button").nth(1).click(); -} - -/** - * Delete an existing storage channel. - * - * Executes from: `/dashboard/storages/channels`. - */ -export async function remove(page: Page, channelName: string) { - const card = get(page, channelName); - await card.locator("button").nth(2).click(); - await page.getByRole("button", {name: "Delete"}).click(); -} - -/** - * Trigger the storage connection test in the current dialog. - * - * Executes from: the add or edit storage channel dialog opened from `/dashboard/storages/channels`. - */ -export async function testConnection(page: Page) { - await page.getByRole("button", {name: /Test Storage/i}).click(); -} - -/** - * Submit the storage channel creation form. - * - * Executes from: the add storage channel dialog opened from `/dashboard/storages/channels`. - */ -export async function submit(page: Page) { - await page.getByRole("button", {name: "Add Channel"}).click(); -} - -/** - * Open the edit dialog for a storage channel and trigger the test action. - * - * Executes from: `/dashboard/storages/channels`. - */ -export async function testFromEdit(page: Page, channelName: string) { - await edit(page, channelName); - await testConnection(page); -} - -/** - * Close the current storage channel dialog without saving. - * - * Executes from: the add or edit storage channel dialog. - */ -export async function cancel(page: Page) { - await page.getByRole("button", {name: "Cancel"}).click(); -} diff --git a/e2e/notification/discord.spec.ts b/e2e/notification/discord.spec.ts deleted file mode 100644 index 4e5f4706..00000000 --- a/e2e/notification/discord.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -import {expect, test} from "@playwright/test"; -import { - cancel, create, get, remove, submit, testFromEdit, -} from "../helpers/notification"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const validChannelName = "Discord E2E Required"; -const invalidChannelName = "Discord E2E Invalid"; - -// test.describe.serial("Valid channel", () => { -// test("Create and test a valid Discord channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Discord", validChannelName, async (page) => { -// await page.getByLabel(/Discord Webhook URL/).fill(getEnv("E2E_NOTIFICATION_DISCORD_WEBHOOK")); -// }); -// await expect(page.getByRole("heading", {name: "Add Notification Channel"})).toBeVisible(); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// -// await testFromEdit(page, validChannelName); -// await expect(page.getByRole("heading", {name: "Edit Notification Channel"})).toBeVisible(); -// await expect(page.getByText("Sent to Discord")).toBeVisible(); -// await cancel(page); -// await expect(page.getByRole("heading", {name: "Edit Notification Channel"})).toHaveCount(0); -// }); -// -// test("Edit and test a valid Discord channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// await testFromEdit(page, validChannelName); -// await expect(page.getByRole("heading", {name: "Edit Notification Channel"})).toBeVisible(); -// await expect(page.getByText("Sent to Discord")).toBeVisible(); -// await cancel(page); -// await expect(page.getByRole("heading", {name: "Edit Notification Channel"})).toHaveCount(0); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid Discord channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await create(page, "Discord", invalidChannelName, async (page) => { - await page.getByLabel(/Discord Webhook URL/).fill("https://discord.com/api/webhooks/123456789012345678/wrong-discord-webhook-token"); - }); - await expect(page.getByRole("heading", {name: "Add Notification Channel"})).toBeVisible(); - await submit(page); - await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - - await testFromEdit(page, invalidChannelName); - await expect(page.getByRole("heading", {name: "Edit Notification Channel"})).toBeVisible(); - await expect(page.getByText("An error occurred while testing the notification channel, check your configuration")).toBeVisible(); - await cancel(page); - await expect(page.getByRole("heading", {name: "Edit Notification Channel"})).toHaveCount(0); - }); - - test("Delete invalid Discord channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Notification channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/notification/gotify.spec.ts b/e2e/notification/gotify.spec.ts deleted file mode 100644 index 059aa812..00000000 --- a/e2e/notification/gotify.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import {expect, test} from "@playwright/test"; -import { - cancel, create, get, remove, submit, testFromEdit, -} from "../helpers/notification"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const validChannelName = "Gotify E2E Required"; -const invalidChannelName = "Gotify E2E Invalid"; - -// test.describe.serial("Valid channel", () => { -// test("Create and test a valid Gotify channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Gotify", validChannelName, async (page) => { -// await page.getByLabel(/Gotify Server URL/).fill(getEnv("E2E_NOTIFICATION_GOTIFY_SERVER_URL")); -// await page.getByLabel(/Application Token/).fill(getEnv("E2E_NOTIFICATION_GOTIFY_APP_TOKEN")); -// }); -// await expect(page.getByRole("heading", {name: "Add Notification Channel"})).toBeVisible(); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// -// await testFromEdit(page, validChannelName); -// await expect(page.getByText("Sent to Gotify")).toBeVisible(); -// await cancel(page); -// }); -// -// test("Edit and test a valid Gotify channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// await testFromEdit(page, validChannelName); -// await expect(page.getByText("Sent to Gotify")).toBeVisible(); -// await cancel(page); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid Gotify channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await create(page, "Gotify", invalidChannelName, async (page) => { - await page.getByLabel(/Gotify Server URL/).fill(getEnv("E2E_NOTIFICATION_GOTIFY_SERVER_URL")); - await page.getByLabel(/Application Token/).fill("wrong-gotify-app-token"); - }); - await expect(page.getByRole("heading", {name: "Add Notification Channel"})).toBeVisible(); - await submit(page); - await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await testFromEdit(page, invalidChannelName); - await expect(page.getByText("An error occurred while testing the notification channel, check your configuration")).toBeVisible(); - await cancel(page); - }); - - test("Delete invalid Gotify channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Notification channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/notification/ntfy.spec.ts b/e2e/notification/ntfy.spec.ts deleted file mode 100644 index cbf8178f..00000000 --- a/e2e/notification/ntfy.spec.ts +++ /dev/null @@ -1,73 +0,0 @@ -import {expect, test} from "@playwright/test"; -import { - cancel, create, get, remove, submit, testFromEdit, -} from "../helpers/notification"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const requiredChannelName = "Ntfy E2E Required"; -const optionalChannelName = "Ntfy E2E Optional"; -const invalidChannelName = "Ntfy E2E Invalid"; - -// test.describe.serial("Valid channels", () => { -// test("Create and test a valid Ntfy channel with only required fields", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "ntfy.sh", requiredChannelName, async (page) => { -// await page.getByLabel(/Topic Name/).fill(getEnv("E2E_NOTIFICATION_NTFY_TOPIC")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, requiredChannelName)).toBeVisible(); -// await testFromEdit(page, requiredChannelName); -// await expect(page.getByText("Sent to ntfy")).toBeVisible(); -// await cancel(page); -// }); -// -// test("Create and test a valid Ntfy channel with optional fields", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "ntfy.sh", optionalChannelName, async (page) => { -// await page.getByLabel(/Topic Name/).fill(getEnv("E2E_NOTIFICATION_NTFY_TOPIC")); -// await page.getByLabel(/^Server URL$/).fill(getEnv("E2E_NOTIFICATION_NTFY_SERVER_URL")); -// await page.getByLabel(/^Access Token$/).fill(getEnv("E2E_NOTIFICATION_NTFY_TOKEN")); -// await page.getByLabel(/^Basic Auth Username$/).fill(getEnv("E2E_NOTIFICATION_NTFY_USERNAME")); -// await page.getByLabel(/^Basic Auth Password$/).fill(getEnv("E2E_NOTIFICATION_NTFY_PASSWORD")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, optionalChannelName)).toBeVisible(); -// await testFromEdit(page, optionalChannelName); -// await expect(page.getByText("Sent to ntfy")).toBeVisible(); -// await cancel(page); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid Ntfy channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await create(page, "ntfy.sh", invalidChannelName, async (page) => { - await page.getByLabel(/Topic Name/).fill("wrong-ntfy-topic"); - await page.getByLabel(/^Server URL$/).fill(getEnv("E2E_NOTIFICATION_NTFY_SERVER_URL")); - await page.getByLabel(/^Access Token$/).fill("wrong-ntfy-token"); - }); - await submit(page); - await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await testFromEdit(page, invalidChannelName); - await expect(page.getByText("An error occurred while testing the notification channel, check your configuration")).toBeVisible(); - await cancel(page); - }); - - test("Delete invalid Ntfy channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Notification channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/notification/slack.spec.ts b/e2e/notification/slack.spec.ts deleted file mode 100644 index aba1d0f7..00000000 --- a/e2e/notification/slack.spec.ts +++ /dev/null @@ -1,61 +0,0 @@ -import {expect, test} from "@playwright/test"; -import { - cancel, create, get, remove, submit, testFromEdit, -} from "../helpers/notification"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const validChannelName = "Slack E2E Required"; -const invalidChannelName = "Slack E2E Invalid"; - -// test.describe.serial("Valid channel", () => { -// test("Create and test a valid Slack channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Slack", validChannelName, async (page) => { -// await page.getByLabel(/Slack Webhook URL/).fill(getEnv("E2E_NOTIFICATION_SLACK_WEBHOOK")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// await testFromEdit(page, validChannelName); -// await expect(page.getByText("Sent to Slack")).toBeVisible(); -// await cancel(page); -// }); -// -// test("Edit and test a valid Slack E2E channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// await testFromEdit(page, validChannelName); -// await expect(page.getByText("Sent to Slack")).toBeVisible(); -// await cancel(page); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid Slack channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await create(page, "Slack", invalidChannelName, async (page) => { - await page.getByLabel(/Slack Webhook URL/).fill("https://WRONG_SLACK_WEBHOOK"); - }); - await submit(page); - await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await testFromEdit(page, invalidChannelName); - await expect(page.getByText("An error occurred while testing the notification channel, check your configuration")).toBeVisible(); - await cancel(page); - }); - - test("Delete invalid Slack channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Notification channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/notification/smtp.spec.ts b/e2e/notification/smtp.spec.ts deleted file mode 100644 index 093b5954..00000000 --- a/e2e/notification/smtp.spec.ts +++ /dev/null @@ -1,72 +0,0 @@ -import {expect, test} from "@playwright/test"; -import {getEnv} from "../helpers/env"; -import { - cancel, create, get, remove, submit, testFromEdit, -} from "../helpers/notification"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const validChannelName = "SMTP E2E Required"; -const invalidChannelName = "SMTP E2E Invalid"; -const successMessage = `Email sent: ${getEnv("E2E_NOTIFICATION_SMTP_TO")}`; - -// test.describe.serial("Valid channel", () => { -// test("Create and test a valid SMTP channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Email", validChannelName, async (page) => { -// await page.getByLabel(/SMTP Host/).fill(getEnv("E2E_NOTIFICATION_SMTP_HOST")); -// await page.getByLabel(/SMTP Port/).fill(getEnv("E2E_NOTIFICATION_SMTP_PORT")); -// await page.getByLabel(/Username/).fill(getEnv("E2E_NOTIFICATION_SMTP_USER")); -// await page.getByLabel(/Password/).fill(getEnv("E2E_NOTIFICATION_SMTP_PASSWORD")); -// await page.getByLabel(/From Email/).fill(getEnv("E2E_NOTIFICATION_SMTP_FROM")); -// await page.getByLabel(/To Email/).fill(getEnv("E2E_NOTIFICATION_SMTP_TO")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// await testFromEdit(page, validChannelName); -// await expect(page.getByText(successMessage)).toBeVisible(); -// await cancel(page); -// }); -// -// test("Edit and test a valid SMTP channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await expect(get(page, validChannelName)).toBeVisible(); -// await testFromEdit(page, validChannelName); -// await expect(page.getByText(successMessage)).toBeVisible(); -// await cancel(page); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid SMTP E2E channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await create(page, "Email", invalidChannelName, async (page) => { - await page.getByLabel(/SMTP Host/).fill("smtp.invalid"); - await page.getByLabel(/SMTP Port/).fill(getEnv("E2E_NOTIFICATION_SMTP_PORT")); - await page.getByLabel(/Username/).fill(getEnv("E2E_NOTIFICATION_SMTP_USER")); - await page.getByLabel(/Password/).fill("wrong-password"); - await page.getByLabel(/From Email/).fill(getEnv("E2E_NOTIFICATION_SMTP_FROM")); - await page.getByLabel(/To Email/).fill(getEnv("E2E_NOTIFICATION_SMTP_TO")); - }); - await submit(page); - await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await testFromEdit(page, invalidChannelName); - await expect(page.getByText("An error occurred while testing the notification channel, check your configuration")).toBeVisible(); - await cancel(page); - }); - - test("Delete invalid SMTP channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Notification channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/notification/teams.spec.ts b/e2e/notification/teams.spec.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/e2e/notification/telegram.spec.ts b/e2e/notification/telegram.spec.ts deleted file mode 100644 index 85963d71..00000000 --- a/e2e/notification/telegram.spec.ts +++ /dev/null @@ -1,72 +0,0 @@ -import {expect, test} from "@playwright/test"; -import { - cancel, create, get, remove, submit, testFromEdit, -} from "../helpers/notification"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const requiredChannelName = "Telegram E2E Required"; -const optionalChannelName = "Telegram E2E Optional"; -const invalidChannelName = "Telegram E2E Invalid"; - -// test.describe.serial("Valid channels", () => { -// test("Create and test a valid Telegram channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Telegram", requiredChannelName, async (page) => { -// await page.getByLabel(/Telegram Bot Token/).fill(getEnv("E2E_NOTIFICATION_TELEGRAM_BOT_TOKEN")); -// await page.getByLabel(/Telegram Chat ID/).fill(getEnv("E2E_NOTIFICATION_TELEGRAM_CHAT_ID")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, requiredChannelName)).toBeVisible(); -// await testFromEdit(page, requiredChannelName); -// await expect(page.getByText("Sent to Telegram")).toBeVisible(); -// await cancel(page); -// }); -// -// test("Create and test a valid Telegram channel with Topic ID", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Telegram", optionalChannelName, async (page) => { -// await page.getByLabel(/Telegram Bot Token/).fill(getEnv("E2E_NOTIFICATION_TELEGRAM_BOT_TOKEN")); -// await page.getByLabel(/Telegram Chat ID/).fill(getEnv("E2E_NOTIFICATION_TELEGRAM_CHAT_ID")); -// await page.getByLabel(/Telegram Topic ID/).fill(getEnv("E2E_NOTIFICATION_TELEGRAM_TOPIC_ID")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, optionalChannelName)).toBeVisible(); -// await testFromEdit(page, optionalChannelName); -// await expect(page.getByText("Sent to Telegram")).toBeVisible(); -// await cancel(page); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid Telegram channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await create(page, "Telegram", invalidChannelName, async (page) => { - await page.getByLabel(/Telegram Bot Token/).fill("wrong-telegram-bot-token"); - await page.getByLabel(/Telegram Chat ID/).fill(getEnv("E2E_NOTIFICATION_TELEGRAM_CHAT_ID")); - await page.getByLabel(/Telegram Topic ID/).fill(getEnv("E2E_NOTIFICATION_TELEGRAM_TOPIC_ID")); - }); - await submit(page); - await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await testFromEdit(page, invalidChannelName); - await expect(page.getByText("An error occurred while testing the notification channel, check your configuration")).toBeVisible(); - await cancel(page); - }); - - test("Delete invalid Telegram channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Notification channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/notification/webhook.spec.ts b/e2e/notification/webhook.spec.ts deleted file mode 100644 index 3eeb6427..00000000 --- a/e2e/notification/webhook.spec.ts +++ /dev/null @@ -1,73 +0,0 @@ -import {expect, test} from "@playwright/test"; -import { - cancel, create, get, remove, submit, testFromEdit, -} from "../helpers/notification"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const requiredChannelName = "Webhook E2E Required"; -const optionalChannelName = "Webhook E2E Optional"; -const invalidChannelName = "Webhook E2E Invalid"; - -// test.describe.serial("Valid channels", () => { -// test("Create and test a valid Webhook channel", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Webhook", requiredChannelName, async (page) => { -// await page.getByLabel(/Webhook URL/).fill(getEnv("E2E_NOTIFICATION_WEBHOOK_URL")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, requiredChannelName)).toBeVisible(); -// await testFromEdit(page, requiredChannelName); -// await expect(page.getByText("Sent to Webhook")).toBeVisible(); -// await cancel(page); -// }); -// -// test("Create and test a valid Webhook channel with optional header", async ({page}) => { -// await page.goto("/dashboard/notifications/channels"); -// await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); -// await create(page, "Webhook", optionalChannelName, async (page) => { -// await page.getByLabel(/Webhook URL/).fill(getEnv("E2E_NOTIFICATION_WEBHOOK_URL")); -// await page.getByRole("button", { name: "Add Header" }).click(); -// await page.getByLabel(/^Header Name$/).fill(getEnv("E2E_NOTIFICATION_WEBHOOK_SECRET_HEADER")); -// await page.getByLabel(/^Header Value$/).fill(getEnv("E2E_NOTIFICATION_WEBHOOK_SECRET")); -// }); -// await submit(page); -// await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); -// await expect(get(page, optionalChannelName)).toBeVisible(); -// await testFromEdit(page, optionalChannelName); -// await expect(page.getByText("Sent to Webhook")).toBeVisible(); -// await cancel(page); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid Webhook channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await create(page, "Webhook", invalidChannelName, async (page) => { - await page.getByLabel(/Webhook URL/).fill("https://webhook.example.com/api/wrong-webhook"); - await page.getByRole("button", { name: "Add Header" }).click(); - await page.getByLabel(/^Header Name$/).fill(getEnv("E2E_NOTIFICATION_WEBHOOK_SECRET_HEADER")); - await page.getByLabel(/^Header Value$/).fill("wrong-webhook-secret"); - }); - await submit(page); - await expect(page.getByText("Notification channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await testFromEdit(page, invalidChannelName); - await expect(page.getByText("An error occurred while testing the notification channel, check your configuration")).toBeVisible(); - await cancel(page); - }); - - test("Delete invalid Webhook E2E channel", async ({page}) => { - await page.goto("/dashboard/notifications/channels"); - await expect(page.getByRole("heading", {name: "Notification channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Notification channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/project.spec.ts b/e2e/project.spec.ts deleted file mode 100644 index 7685ccdf..00000000 --- a/e2e/project.spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -import {expect, test} from "@playwright/test"; -import {create, edit, get, remove} from "./helpers/project"; -import {LOCAL_STORAGE_PATH} from "./helpers/session"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const project = { - emptyStateName: "Project A", - buttonName: "Project B", - updatedButtonName: "Project B Updated", -}; - -test.describe.serial(() => { - test("Create a project from empty state", async ({page}) => { - await page.goto("/dashboard/projects"); - await expect(page.getByRole("heading", {name: "Projects"})).toBeVisible(); - await expect(page.getByText("Create new Project", {exact: true})).toBeVisible(); - - await create(page, "emptyState", project.emptyStateName); - - await expect(page.getByText("Project has been successfully created.")).toBeVisible(); - await expect(get(page, project.emptyStateName)).toBeVisible(); - await expect(page.getByText("Create new Project", {exact: true})).toHaveCount(0); - }); - - test("Create a project from classic button", async ({page}) => { - await page.goto("/dashboard/projects"); - await expect(page.getByRole("heading", {name: "Projects"})).toBeVisible(); - await expect(get(page, project.emptyStateName)).toBeVisible(); - - await create(page, "button", project.buttonName); - - await expect(page.getByText("Project has been successfully created.")).toBeVisible(); - await expect(get(page, project.buttonName)).toBeVisible(); - }); - - test("Edit the second created project", async ({page}) => { - await page.goto("/dashboard/projects"); - await expect(page.getByRole("heading", {name: "Projects"})).toBeVisible(); - await expect(get(page, project.buttonName)).toBeVisible(); - - await edit(page, project.buttonName, project.updatedButtonName); - - await expect(page.getByText("Project has been successfully updated.")).toBeVisible(); - await expect(page.getByText(project.updatedButtonName, {exact: true})).toBeVisible(); - }); - - test("Delete the second created project", async ({page}) => { - await page.goto("/dashboard/projects"); - await expect(page.getByRole("heading", {name: "Projects"})).toBeVisible(); - await expect(get(page, project.updatedButtonName)).toBeVisible(); - - await remove(page, project.updatedButtonName); - - await expect(page).toHaveURL("/dashboard/projects"); - await expect(page.getByText("Projects has been successfully archived.")).toBeVisible(); - await expect(page.getByText(project.updatedButtonName)).toHaveCount(0); - }); -}); diff --git a/e2e/setup.spec.ts b/e2e/setup.spec.ts deleted file mode 100644 index 3bcc3baa..00000000 --- a/e2e/setup.spec.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {test} from "@playwright/test"; -import fs from "fs"; -import {LOCAL_STORAGE_PATH} from "./helpers/session"; - -test.describe(() => { - test.beforeAll(async () => { - if (fs.existsSync(LOCAL_STORAGE_PATH)) fs.unlinkSync(LOCAL_STORAGE_PATH); - fs.writeFileSync(LOCAL_STORAGE_PATH, JSON.stringify({})); - }); - - test("Prepare shared storage state", async () => { - }); -}); diff --git a/e2e/storage/azure.spec.ts b/e2e/storage/azure.spec.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/e2e/storage/gcs.spec.ts b/e2e/storage/gcs.spec.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/e2e/storage/google-drive.spec.ts b/e2e/storage/google-drive.spec.ts deleted file mode 100644 index aa050e20..00000000 --- a/e2e/storage/google-drive.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import {expect, test} from "@playwright/test"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; -import { - cancel, create, get, remove, submit, testConnection, testFromEdit, -} from "../helpers/storage"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const requiredChannelName = "Google Drive E2E Required"; -const invalidChannelName = "Google Drive E2E Invalid"; - -// test.describe.serial("Valid channel", () => { -// test("Create and test a valid Google Drive channel", async ({page}) => { -// await page.goto("/dashboard/storages/channels"); -// await expect(page.getByRole("heading", {name: "Storage channels"})).toBeVisible(); -// await create(page, "Google Drive", requiredChannelName, async (page) => { -// await page.getByLabel(/Client ID/).fill(getEnv("E2E_STORAGE_GOOGLE_DRIVE_CLIENT_ID")); -// await page.getByLabel(/Client Secret/).fill(getEnv("E2E_STORAGE_GOOGLE_DRIVE_CLIENT_SECRET")); -// await page.getByLabel(/Folder ID/).fill(getEnv("E2E_STORAGE_GOOGLE_DRIVE_FOLDER_ID")); -// }); -// await expect(page.getByRole("heading", {name: "Add Storage Channel"})).toBeVisible(); -// await testConnection(page); -// await expect(page.getByText("Successfully connected to storage channel")).toBeVisible(); -// await submit(page); -// await expect(page.getByText("Storage channel has been successfully created.")).toBeVisible(); -// await expect(get(page, requiredChannelName)).toBeVisible(); -// -// await testFromEdit(page, requiredChannelName); -// await expect(page.getByRole("heading", {name: "Edit Storage Channel"})).toBeVisible(); -// await expect(page.getByText("Successfully connected to storage channel")).toBeVisible(); -// await cancel(page); -// }); -// }); - -test.describe.serial("Invalid channel", () => { - test("Create and test invalid Google Drive channel", async ({page}) => { - await page.goto("/dashboard/storages/channels"); - await expect(page.getByRole("heading", {name: "Storage channels"})).toBeVisible(); - await create(page, "Google Drive", invalidChannelName, async (page) => { - await page.getByLabel(/Client ID/).fill(getEnv("E2E_STORAGE_GOOGLE_DRIVE_CLIENT_ID")); - await page.getByLabel(/Client Secret/).fill("wrong-google-drive-client-secret"); - await page.getByLabel(/Folder ID/).fill(getEnv("E2E_STORAGE_GOOGLE_DRIVE_FOLDER_ID")); - }); - await testConnection(page); - await expect(page.getByText("An error occurred while testing the storage channel")).toBeVisible(); - await submit(page); - await expect(page.getByText("Storage channel has been successfully created.")).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - }); - - test("Delete invalid Google Drive E2E channel", async ({page}) => { - await page.goto("/dashboard/storages/channels"); - await expect(page.getByRole("heading", {name: "Storage channels"})).toBeVisible(); - await expect(get(page, invalidChannelName)).toBeVisible(); - await remove(page, invalidChannelName); - await expect(page.getByText("Storage channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(invalidChannelName)).toHaveCount(0); - }); -}); diff --git a/e2e/storage/s3.spec.ts b/e2e/storage/s3.spec.ts deleted file mode 100644 index 8993e72e..00000000 --- a/e2e/storage/s3.spec.ts +++ /dev/null @@ -1,121 +0,0 @@ -import {expect, test} from "@playwright/test"; -import {getEnv} from "../helpers/env"; -import {LOCAL_STORAGE_PATH} from "../helpers/session"; -import { - cancel, create, get, remove, submit, testConnection, testFromEdit, -} from "../helpers/storage"; - -test.use({storageState: LOCAL_STORAGE_PATH}); - -const providers = [ - { - title: "AWS S3", - requiredChannelName: "AWS S3 E2E Required", - optionalChannelName: "AWS S3 E2E Optional", - invalidChannelName: "AWS S3 E2E Invalid", - endpointUrl: getEnv("E2E_STORAGE_AWS_S3_ENDPOINT_URL"), - region: getEnv("E2E_STORAGE_AWS_S3_REGION"), - accessKey: getEnv("E2E_STORAGE_AWS_S3_ACCESS_KEY"), - secretKey: getEnv("E2E_STORAGE_AWS_S3_SECRET_KEY"), - bucketName: getEnv("E2E_STORAGE_AWS_S3_BUCKET_NAME"), - port: getEnv("E2E_STORAGE_AWS_S3_PORT"), - invalidAccessKey: "wrong-aws-access-key", - invalidSecretKey: "wrong-aws-secret-key", - }, - { - title: "Cloudflare R2", - requiredChannelName: "Cloudflare R2 E2E Required", - optionalChannelName: "Cloudflare R2 E2E Optional", - invalidChannelName: "Cloudflare R2 E2E Invalid", - endpointUrl: getEnv("E2E_STORAGE_R2_ENDPOINT_URL"), - region: getEnv("E2E_STORAGE_R2_REGION"), - accessKey: getEnv("E2E_STORAGE_R2_ACCESS_KEY"), - secretKey: getEnv("E2E_STORAGE_R2_SECRET_KEY"), - bucketName: getEnv("E2E_STORAGE_R2_BUCKET_NAME"), - port: getEnv("E2E_STORAGE_R2_PORT"), - invalidAccessKey: "wrong-r2-access-key", - invalidSecretKey: "wrong-r2-secret-key", - }, -] as const; - -for (const provider of providers) { - test.describe(provider.title, () => { - // test.describe.serial("Valid channels", () => { - // test(`Create and test a valid ${provider.title} channel`, async ({page}) => { - // await page.goto("/dashboard/storages/channels"); - // await expect(page.getByRole("heading", {name: "Storage channels"})).toBeVisible(); - // await create(page, "S3", provider.requiredChannelName, async (page) => { - // await page.getByLabel(/Endpoint URL/).fill(provider.endpointUrl); - // await page.getByLabel(/Access Key/).fill(provider.accessKey); - // await page.getByLabel(/Secret Key/).fill(provider.secretKey); - // await page.getByLabel(/Bucket name/).fill(provider.bucketName); - // }); - // await expect(page.getByRole("heading", {name: "Add Storage Channel"})).toBeVisible(); - // await testConnection(page); - // await expect(page.getByText("Successfully connected to storage channel")).toBeVisible(); - // await submit(page); - // await expect(page.getByText("Storage channel has been successfully created.")).toBeVisible(); - // await expect(get(page, provider.requiredChannelName)).toBeVisible(); - // - // await testFromEdit(page, provider.requiredChannelName); - // await expect(page.getByRole("heading", {name: "Edit Storage Channel"})).toBeVisible(); - // await expect(page.getByText("Successfully connected to storage channel")).toBeVisible(); - // await cancel(page); - // }); - // - // test(`Create and test a valid ${provider.title} channel with optional region and port`, async ({page}) => { - // await page.goto("/dashboard/storages/channels"); - // await expect(page.getByRole("heading", {name: "Storage channels"})).toBeVisible(); - // await create(page, "S3", provider.optionalChannelName, async (page) => { - // await page.getByLabel(/Endpoint URL/).fill(provider.endpointUrl); - // await page.getByLabel(/^Region$/).fill(provider.region); - // await page.getByLabel(/Access Key/).fill(provider.accessKey); - // await page.getByLabel(/Secret Key/).fill(provider.secretKey); - // await page.getByLabel(/Bucket name/).fill(provider.bucketName); - // await page.getByLabel(/^Port$/).fill(provider.port); - // }); - // await expect(page.getByRole("heading", {name: "Add Storage Channel"})).toBeVisible(); - // await testConnection(page); - // await expect(page.getByText("Successfully connected to storage channel")).toBeVisible(); - // await submit(page); - // await expect(page.getByText("Storage channel has been successfully created.")).toBeVisible(); - // await expect(get(page, provider.optionalChannelName)).toBeVisible(); - // - // await testFromEdit(page, provider.optionalChannelName); - // await expect(page.getByRole("heading", {name: "Edit Storage Channel"})).toBeVisible(); - // await expect(page.getByText("Successfully connected to storage channel")).toBeVisible(); - // await cancel(page); - // }); - // }); - - test.describe.serial("Invalid channel", () => { - test(`Create and test invalid ${provider.title} channel`, async ({page}) => { - await page.goto("/dashboard/storages/channels"); - await expect(page.getByRole("heading", {name: "Storage channels"})).toBeVisible(); - await create(page, "S3", provider.invalidChannelName, async (page) => { - await page.getByLabel(/Endpoint URL/).fill(provider.endpointUrl); - await page.getByLabel(/^Region$/).fill(provider.region); - await page.getByLabel(/Access Key/).fill(provider.invalidAccessKey); - await page.getByLabel(/Secret Key/).fill(provider.invalidSecretKey); - await page.getByLabel(/Bucket name/).fill(provider.bucketName); - await page.getByLabel(/^Port$/).fill(provider.port); - }); - await expect(page.getByRole("heading", {name: "Add Storage Channel"})).toBeVisible(); - await testConnection(page); - await expect(page.getByText("An error occurred while testing the storage channel")).toBeVisible(); - await submit(page); - await expect(page.getByText("Storage channel has been successfully created.")).toBeVisible(); - await expect(get(page, provider.invalidChannelName)).toBeVisible(); - }); - - test(`Delete invalid ${provider.title} channel`, async ({page}) => { - await page.goto("/dashboard/storages/channels"); - await expect(page.getByRole("heading", {name: "Storage channels"})).toBeVisible(); - await expect(get(page, provider.invalidChannelName)).toBeVisible(); - await remove(page, provider.invalidChannelName); - await expect(page.getByText("Storage channel has been successfully removed.")).toBeVisible(); - await expect(page.getByText(provider.invalidChannelName)).toHaveCount(0); - }); - }); - }); -} diff --git a/package.json b/package.json index f61be9c9..8185220b 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "build": "next build --experimental-build-mode compile", "start": "next start", "lint": "next lint", + "test:api": "jest --config tests/api/jest.config.ts --runInBand", "email": "email dev --dir ./src/components/emails", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", @@ -115,6 +116,7 @@ "@release-it/bumper": "^7.0.5", "@release-it/conventional-changelog": "^10.0.6", "@tailwindcss/postcss": "^4.3.0", + "@types/jest": "^30.0.0", "@types/eslint-plugin-tailwindcss": "^3.17.0", "@types/node": "^22.19.19", "@types/node-forge": "^1.3.14", @@ -130,6 +132,7 @@ "eslint-config-next": "^16.2.6", "eslint-plugin-tailwindcss": "^3.18.3", "framer-motion": "^12.40.0", + "jest": "^30.0.5", "node-pty": "^1.1.0", "postcss": "8.5.10", "release-it": "^19.2.4", diff --git a/playwright.config.ts b/playwright.config.ts deleted file mode 100644 index cb09219d..00000000 --- a/playwright.config.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { defineConfig, devices } from '@playwright/test'; -import dotenv from 'dotenv'; -import path from 'path'; - -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -dotenv.config({ path: path.resolve(__dirname, '.env') }); - -/** - * See https://playwright.dev/docs/test-configuration. - */ -export default defineConfig({ - testDir: './e2e', - /* Run tests in files in parallel */ - fullyParallel: true, - /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - ...devices['Desktop Chrome'], - baseURL: process.env.PROJECT_URL, - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - }, - - /* Configure projects and dependency order */ - projects: [ - { - name: 'setup', - testMatch: '**/setup.spec.ts', - }, - { - name: 'auth', - testMatch: '**/auth.spec.ts', - dependencies: ['setup'], - }, - { - name: 'access-management', - testMatch: '**/access-management.spec.ts', - dependencies: ['auth'], - }, - { - name: 'notification', - testMatch: '**/notification/**/*.spec.ts', - dependencies: ['access-management'], - }, - { - name: 'storage', - testMatch: '**/storage/**/*.spec.ts', - dependencies: ['access-management'], - }, - { - name: 'agent', - testMatch: '**/agent.spec.ts', - dependencies: ['access-management'], - }, - - { - name: 'project', - testMatch: '**/project.spec.ts', - dependencies: ['access-management'], - }, - { - name: 'cleanup', - testMatch: '**/cleanup.spec.ts', - dependencies: ['agent', 'storage', 'notification', 'project'], - }, - ] - -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e27fecc4..e302d9b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -190,7 +190,7 @@ importers: version: 16.2.3(@babel/core@7.29.7)(@playwright/test@1.58.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) next-safe-action: specifier: ^7.10.8 - version: 7.10.8(next@16.2.3(@babel/core@7.29.7)(@playwright/test@1.58.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.3.6) + version: 7.10.8(@sinclair/typebox@0.34.49)(next@16.2.3(@babel/core@7.29.7)(@playwright/test@1.58.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.3.6) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -306,6 +306,9 @@ importers: '@types/eslint-plugin-tailwindcss': specifier: ^3.17.0 version: 3.17.0 + '@types/jest': + specifier: ^30.0.0 + version: 30.0.0 '@types/node': specifier: ^22.19.19 version: 22.19.20 @@ -348,6 +351,9 @@ importers: framer-motion: specifier: ^12.40.0 version: 12.40.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + jest: + specifier: ^30.0.5 + version: 30.4.2(@types/node@22.19.20)(esbuild-register@3.6.0(esbuild@0.27.7)) node-pty: specifier: ^1.1.0 version: 1.1.0 @@ -430,6 +436,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.29.7': resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} @@ -456,6 +466,97 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.29.7': resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} @@ -479,6 +580,9 @@ packages: '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@better-auth/api-key@1.6.11': resolution: {integrity: sha512-717Bmbs1Y2h0KrPIwrutxI/HwdqKlga1a1OHlL5TrRbN35IxHeY3GilqvyI/92n7RxFGa/AQhIajX0OL+FJkvw==} peerDependencies: @@ -1934,6 +2038,96 @@ packages: resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} engines: {node: '>=18'} + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} + engines: {node: '>=8'} + + '@jest/console@30.4.1': + resolution: {integrity: sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/core@30.4.2': + resolution: {integrity: sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/diff-sequences@30.4.0': + resolution: {integrity: sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/environment@30.4.1': + resolution: {integrity: sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect-utils@30.4.1': + resolution: {integrity: sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect@30.4.1': + resolution: {integrity: sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/fake-timers@30.4.1': + resolution: {integrity: sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/globals@30.4.1': + resolution: {integrity: sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/pattern@30.4.0': + resolution: {integrity: sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/reporters@30.4.1': + resolution: {integrity: sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@30.4.1': + resolution: {integrity: sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/snapshot-utils@30.4.1': + resolution: {integrity: sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/source-map@30.0.1': + resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-result@30.4.1': + resolution: {integrity: sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-sequencer@30.4.1': + resolution: {integrity: sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/transform@30.4.1': + resolution: {integrity: sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/types@30.4.1': + resolution: {integrity: sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -3622,6 +3816,15 @@ packages: resolution: {integrity: sha512-GV/oM/qeycWn8p42JZIMJBsXWQcNFg+nJFzeQTnMA4gN8mXg0+HZFWJerHg8ZN/zlveMS3iV1wzuFpOVWS/46w==} engines: {node: '>=20.0.0'} + '@sinclair/typebox@0.34.49': + resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@15.4.0': + resolution: {integrity: sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3794,6 +3997,18 @@ packages: '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/cors@2.8.19': resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} @@ -3833,6 +4048,18 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -3886,12 +4113,21 @@ packages: '@types/react@19.2.17': resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/webpack@5.28.5': resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + '@typescript-eslint/eslint-plugin@8.60.1': resolution: {integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3951,6 +4187,9 @@ packages: resolution: {integrity: sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} + '@unrs/resolver-binding-android-arm-eabi@1.12.2': resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} cpu: [arm] @@ -4248,6 +4487,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + ansi-styles@6.2.3: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} @@ -4266,6 +4509,9 @@ packages: resolution: {integrity: sha512-TfOzvDWUaQPurCT1hOwIeFNkgrAJDpbBGBGWDgzDsm11nNhImc13WhdGdCU6K7brkp8VpeY07oGtSex0Wmhg8w==} engines: {node: '>=16.17.0'} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -4367,6 +4613,31 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + babel-jest@30.4.1: + resolution: {integrity: sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-0 + + babel-plugin-istanbul@7.0.1: + resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} + engines: {node: '>=12'} + + babel-plugin-jest-hoist@30.4.0: + resolution: {integrity: sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-jest@30.4.0: + resolution: {integrity: sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -4515,6 +4786,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -4590,6 +4864,10 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -4611,6 +4889,10 @@ packages: change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} @@ -4658,6 +4940,9 @@ packages: citty@0.2.2: resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} + cjs-module-lexer@2.2.0: + resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -4702,12 +4987,19 @@ packages: react: ^18 || ^19 || ^19.0.0-rc react-dom: ^18 || ^19 || ^19.0.0-rc + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + code-block-writer@11.0.3: resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} code-block-writer@13.0.3: resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -4969,6 +5261,14 @@ packages: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} + dedent@1.7.2: + resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -5025,6 +5325,10 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -5214,6 +5518,10 @@ packages: embla-carousel@8.6.0: resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5267,6 +5575,9 @@ packages: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + es-abstract@1.24.2: resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} engines: {node: '>= 0.4'} @@ -5339,6 +5650,10 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -5513,10 +5828,22 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + exit-x@0.2.2: + resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} + engines: {node: '>= 0.8.0'} + + expect@30.4.1: + resolution: {integrity: sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + express-rate-limit@8.5.2: resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==} engines: {node: '>= 16'} @@ -5583,6 +5910,9 @@ packages: fault@1.0.4: resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fd-package-json@2.0.0: resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} @@ -5619,6 +5949,10 @@ packages: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -5692,6 +6026,9 @@ packages: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5752,10 +6089,18 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -5807,6 +6152,10 @@ packages: deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -5913,6 +6262,9 @@ packages: resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} @@ -5939,6 +6291,10 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -5966,10 +6322,19 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -6016,6 +6381,9 @@ packages: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -6068,6 +6436,10 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + is-generator-function@1.1.2: resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} @@ -6131,6 +6503,10 @@ packages: is-ssh@1.4.1: resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6189,6 +6565,26 @@ packages: resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} engines: {node: ^18.17 || >=20.6.1} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -6200,10 +6596,138 @@ packages: resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} engines: {node: 20 || >=22} + jest-changed-files@30.4.1: + resolution: {integrity: sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-circus@30.4.2: + resolution: {integrity: sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-cli@30.4.2: + resolution: {integrity: sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@30.4.2: + resolution: {integrity: sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@types/node': '*' + esbuild-register: '>=3.4.0' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + + jest-diff@30.4.1: + resolution: {integrity: sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-docblock@30.4.0: + resolution: {integrity: sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-each@30.4.1: + resolution: {integrity: sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-environment-node@30.4.1: + resolution: {integrity: sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-haste-map@30.4.1: + resolution: {integrity: sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-leak-detector@30.4.1: + resolution: {integrity: sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-matcher-utils@30.4.1: + resolution: {integrity: sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-message-util@30.4.1: + resolution: {integrity: sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-mock@30.4.1: + resolution: {integrity: sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@30.4.0: + resolution: {integrity: sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-resolve-dependencies@30.4.2: + resolution: {integrity: sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-resolve@30.4.1: + resolution: {integrity: sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-runner@30.4.2: + resolution: {integrity: sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-runtime@30.4.2: + resolution: {integrity: sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-snapshot@30.4.1: + resolution: {integrity: sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-util@30.4.1: + resolution: {integrity: sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-validate@30.4.1: + resolution: {integrity: sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-watcher@30.4.1: + resolution: {integrity: sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} + jest-worker@30.4.1: + resolution: {integrity: sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest@30.4.2: + resolution: {integrity: sha512-Yi1jqNC/Oq0N4hBgNH/YvBpP1P57QqundgytzYqy3yqAa7NZPNjSoi4SGbRAXDMdBzNE6xBCi5U7RgfrvMEUVQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true @@ -6226,6 +6750,10 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + js-yaml@4.2.0: resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} hasBin: true @@ -6241,6 +6769,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -6303,6 +6834,10 @@ packages: leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -6400,6 +6935,10 @@ packages: resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} engines: {node: '>=14'} + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -6491,6 +7030,13 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + marked@7.0.4: resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} engines: {node: '>= 16'} @@ -6786,6 +7332,9 @@ packages: node-html-parser@7.0.1: resolution: {integrity: sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA==} + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + node-pty@1.1.0: resolution: {integrity: sha512-20JqtutY6JPXTUnL0ij1uad7Qe1baT46lyolh2sSENDd4sTzKZ4nmAFkeAARDKwmlLjPx6XKRlwRUxwjOy+lUg==} @@ -6817,6 +7366,10 @@ packages: engines: {node: ^18.18.0 || >=20.0.0, npm: '>=8.12.1'} hasBin: true + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6930,14 +7483,26 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + pac-proxy-agent@7.2.0: resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} engines: {node: '>= 14'} @@ -6959,6 +7524,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parse-path@7.1.0: resolution: {integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==} @@ -6999,6 +7568,10 @@ packages: resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} engines: {node: '>=14.0.0'} + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -7104,6 +7677,10 @@ packages: resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -7202,6 +7779,10 @@ packages: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} + pretty-format@30.4.1: + resolution: {integrity: sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-repl@4.0.1: resolution: {integrity: sha512-Ve+ZNS5fwxylks3TTR4su7SaNAHVOh++7J5R8VKFAHIjmAMS8X79rnETc/JJoqay52cfgeHum7vm2+9hFSys9Q==} engines: {node: '>=14'} @@ -7263,6 +7844,9 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + pure-rand@7.0.1: + resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + pvtsutils@1.3.6: resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} @@ -7343,6 +7927,9 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.2.7: + resolution: {integrity: sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==} + react-promise-suspense@0.3.4: resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} @@ -7483,10 +8070,18 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -7674,6 +8269,10 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + sleep-promise@9.1.0: resolution: {integrity: sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==} @@ -7730,6 +8329,9 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -7763,6 +8365,9 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + ssh2@1.17.0: resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==} engines: {node: '>=10.16.0'} @@ -7770,6 +8375,10 @@ packages: stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + stacktrace-parser@0.1.11: resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} engines: {node: '>=6'} @@ -7796,6 +8405,10 @@ packages: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -7850,10 +8463,18 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + strip-color@0.1.0: resolution: {integrity: sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA==} engines: {node: '>=0.10.0'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -7997,6 +8618,10 @@ packages: engines: {node: '>=10'} hasBin: true + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -8036,6 +8661,9 @@ packages: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -8101,6 +8729,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -8262,6 +8894,10 @@ packages: deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -8327,6 +8963,9 @@ packages: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + watchpack@2.5.1: resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} @@ -8417,6 +9056,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@8.20.1: resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==} engines: {node: '>=10.0.0'} @@ -8659,6 +9302,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-plugin-utils@7.29.7': {} + '@babel/helper-string-parser@7.29.7': {} '@babel/helper-validator-identifier@7.29.7': {} @@ -8678,6 +9323,91 @@ snapshots: dependencies: '@babel/types': 7.29.7 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/runtime@7.29.7': {} '@babel/template@7.29.7': @@ -8717,6 +9447,8 @@ snapshots: '@balena/dockerignore@1.0.2': {} + '@bcoe/v8-coverage@0.2.3': {} + '@better-auth/api-key@1.6.11(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.3.6))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(better-auth@1.6.11(@prisma/client@6.7.0(prisma@6.7.0(typescript@5.9.3))(typescript@5.9.3))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@prisma/client@6.7.0(prisma@6.7.0(typescript@5.9.3))(typescript@5.9.3))(@types/pg@8.20.0)(kysely@0.28.17)(pg@8.21.0)(prisma@6.7.0(typescript@5.9.3)))(next@16.2.3(@babel/core@7.29.7)(@playwright/test@1.58.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(pg@8.21.0)(prisma@6.7.0(typescript@5.9.3))(react-dom@19.2.7(react@19.2.7))(react@19.2.7))': dependencies: '@better-auth/core': 1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.3.6))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0) @@ -9681,6 +10413,194 @@ snapshots: '@isaacs/cliui@9.0.0': {} + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.2 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.6': {} + + '@jest/console@30.4.1': + dependencies: + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + chalk: 4.1.2 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + slash: 3.0.0 + + '@jest/core@30.4.2(esbuild-register@3.6.0(esbuild@0.27.7))': + dependencies: + '@jest/console': 30.4.1 + '@jest/pattern': 30.4.0 + '@jest/reporters': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 4.4.0 + exit-x: 0.2.2 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-changed-files: 30.4.1 + jest-config: 30.4.2(@types/node@22.19.20)(esbuild-register@3.6.0(esbuild@0.27.7)) + jest-haste-map: 30.4.1 + jest-message-util: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-resolve-dependencies: 30.4.2 + jest-runner: 30.4.2 + jest-runtime: 30.4.2 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + jest-validate: 30.4.1 + jest-watcher: 30.4.1 + pretty-format: 30.4.1 + slash: 3.0.0 + transitivePeerDependencies: + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + '@jest/diff-sequences@30.4.0': {} + + '@jest/environment@30.4.1': + dependencies: + '@jest/fake-timers': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + jest-mock: 30.4.1 + + '@jest/expect-utils@30.4.1': + dependencies: + '@jest/get-type': 30.1.0 + + '@jest/expect@30.4.1': + dependencies: + expect: 30.4.1 + jest-snapshot: 30.4.1 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@30.4.1': + dependencies: + '@jest/types': 30.4.1 + '@sinonjs/fake-timers': 15.4.0 + '@types/node': 22.19.20 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-util: 30.4.1 + + '@jest/get-type@30.1.0': {} + + '@jest/globals@30.4.1': + dependencies: + '@jest/environment': 30.4.1 + '@jest/expect': 30.4.1 + '@jest/types': 30.4.1 + jest-mock: 30.4.1 + transitivePeerDependencies: + - supports-color + + '@jest/pattern@30.4.0': + dependencies: + '@types/node': 22.19.20 + jest-regex-util: 30.4.0 + + '@jest/reporters@30.4.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 22.19.20 + chalk: 4.1.2 + collect-v8-coverage: 1.0.3 + exit-x: 0.2.2 + glob: 10.5.0 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + jest-worker: 30.4.1 + slash: 3.0.0 + string-length: 4.0.2 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@30.4.1': + dependencies: + '@sinclair/typebox': 0.34.49 + + '@jest/snapshot-utils@30.4.1': + dependencies: + '@jest/types': 30.4.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + + '@jest/source-map@30.0.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@30.4.1': + dependencies: + '@jest/console': 30.4.1 + '@jest/types': 30.4.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 + + '@jest/test-sequencer@30.4.1': + dependencies: + '@jest/test-result': 30.4.1 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + slash: 3.0.0 + + '@jest/transform@30.4.1': + dependencies: + '@babel/core': 7.29.7 + '@jest/types': 30.4.1 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-regex-util: 30.4.0 + jest-util: 30.4.1 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + + '@jest/types@30.4.1': + dependencies: + '@jest/pattern': 30.4.0 + '@jest/schemas': 30.4.1 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.19.20 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -11536,6 +12456,16 @@ snapshots: '@peculiar/asn1-x509': 2.7.0 '@peculiar/x509': 1.14.3 + '@sinclair/typebox@0.34.49': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@15.4.0': + dependencies: + '@sinonjs/commons': 3.0.1 + '@socket.io/component-emitter@3.1.2': {} '@standard-schema/spec@1.1.0': {} @@ -11664,6 +12594,27 @@ snapshots: tslib: 2.8.1 optional: true + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.7 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.7 + '@types/cors@2.8.19': dependencies: '@types/node': 22.19.20 @@ -11703,6 +12654,21 @@ snapshots: '@types/estree@1.0.9': {} + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@30.0.0': + dependencies: + expect: 30.4.1 + pretty-format: 30.4.1 + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -11759,6 +12725,8 @@ snapshots: dependencies: csstype: 3.2.3 + '@types/stack-utils@2.0.3': {} + '@types/webpack@5.28.5(esbuild@0.25.10)(postcss@8.5.10)': dependencies: '@types/node': 22.19.20 @@ -11783,6 +12751,12 @@ snapshots: dependencies: '@types/node': 22.19.20 + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -11874,6 +12848,8 @@ snapshots: '@typescript-eslint/types': 8.60.1 eslint-visitor-keys: 5.0.1 + '@ungap/structured-clone@1.3.1': {} + '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true @@ -12247,6 +13223,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -12264,6 +13242,10 @@ snapshots: node-addon-api: 8.8.0 node-gyp-build: 4.8.4 + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} aria-hidden@1.2.6: @@ -12389,6 +13371,58 @@ snapshots: axobject-query@4.1.0: {} + babel-jest@30.4.1(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@jest/transform': 30.4.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.4.0(@babel/core@7.29.7) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@7.0.1: + dependencies: + '@babel/helper-plugin-utils': 7.29.7 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-instrument: 6.0.3 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@30.4.0: + dependencies: + '@types/babel__core': 7.20.5 + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7) + + babel-preset-jest@30.4.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + babel-plugin-jest-hoist: 30.4.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) + balanced-match@1.0.2: {} balanced-match@4.0.4: {} @@ -12512,6 +13546,10 @@ snapshots: node-releases: 2.0.47 update-browserslist-db: 1.2.3(browserslist@4.28.2) + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + buffer-crc32@1.0.0: {} buffer-equal-constant-time@1.0.1: {} @@ -12608,6 +13646,8 @@ snapshots: camelcase-css@2.0.1: {} + camelcase@5.3.1: {} + camelcase@6.3.0: {} caniuse-lite@1.0.30001797: {} @@ -12640,6 +13680,8 @@ snapshots: snake-case: 3.0.4 tslib: 2.8.1 + char-regex@1.0.2: {} + chardet@2.1.1: {} cheerio-select@2.1.0: @@ -12711,6 +13753,8 @@ snapshots: citty@0.2.2: {} + cjs-module-lexer@2.2.0: {} + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -12753,10 +13797,14 @@ snapshots: - '@types/react' - '@types/react-dom' + co@4.6.0: {} + code-block-writer@11.0.3: {} code-block-writer@13.0.3: {} + collect-v8-coverage@1.0.3: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -12989,6 +14037,8 @@ snapshots: decode-uri-component@0.2.2: {} + dedent@1.7.2: {} + deep-is@0.1.4: {} deepmerge-ts@7.1.5: {} @@ -13036,6 +14086,8 @@ snapshots: detect-libc@2.1.2: {} + detect-newline@3.1.0: {} + detect-node-es@1.1.0: {} didyoumean@1.2.2: {} @@ -13161,6 +14213,8 @@ snapshots: embla-carousel@8.6.0: {} + emittery@0.13.1: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -13228,6 +14282,10 @@ snapshots: entities@7.0.1: {} + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + es-abstract@1.24.2: dependencies: array-buffer-byte-length: 1.0.2 @@ -13483,6 +14541,8 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@2.0.0: {} + escape-string-regexp@4.0.0: {} escodegen@2.1.0: @@ -13498,7 +14558,7 @@ snapshots: '@next/eslint-plugin-next': 16.2.7 eslint: 9.39.4(jiti@2.7.0) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.7.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.7.0)) @@ -13521,7 +14581,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.7.0)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -13536,14 +14596,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.7.0)): + eslint-module-utils@2.13.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) eslint: 9.39.4(jiti@2.7.0) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.7.0)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)) transitivePeerDependencies: - supports-color @@ -13558,7 +14618,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.7.0) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.7.0)) + eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -13731,6 +14791,18 @@ snapshots: dependencies: eventsource-parser: 3.1.0 + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -13743,6 +14815,17 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + exit-x@0.2.2: {} + + expect@30.4.1: + dependencies: + '@jest/expect-utils': 30.4.1 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-util: 30.4.1 + express-rate-limit@8.5.2(express@5.2.1): dependencies: express: 5.2.1 @@ -13842,6 +14925,10 @@ snapshots: dependencies: format: 0.2.2 + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + fd-package-json@2.0.0: dependencies: walk-up-path: 4.0.0 @@ -13880,6 +14967,11 @@ snapshots: transitivePeerDependencies: - supports-color + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -13939,6 +15031,8 @@ snapshots: jsonfile: 6.2.1 universalify: 2.0.1 + fs.realpath@1.0.0: {} + fsevents@2.3.2: optional: true @@ -14014,11 +15108,15 @@ snapshots: get-nonce@1.0.1: {} + get-package-type@0.1.0: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.2 + get-stream@6.0.1: {} + get-stream@8.0.1: {} get-symbol-description@1.1.0: @@ -14087,6 +15185,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.2 + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + globals@11.12.0: {} globals@14.0.0: {} @@ -14206,6 +15313,8 @@ snapshots: dependencies: lru-cache: 10.4.3 + html-escaper@2.0.2: {} + html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 @@ -14257,6 +15366,8 @@ snapshots: transitivePeerDependencies: - supports-color + human-signals@2.1.0: {} + human-signals@5.0.0: {} iconv-lite@0.6.3: @@ -14278,8 +15389,18 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + imurmurhash@0.1.4: {} + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + inherits@2.0.4: {} ini@6.0.0: {} @@ -14321,6 +15442,8 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -14373,6 +15496,8 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-generator-fn@2.1.0: {} + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 @@ -14427,6 +15552,8 @@ snapshots: dependencies: protocols: 2.0.2 + is-stream@2.0.1: {} + is-stream@3.0.0: {} is-string@1.1.1: @@ -14479,6 +15606,37 @@ snapshots: lodash.isstring: 4.0.1 lodash.uniqby: 4.7.0 + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-coverage: 3.2.2 + semver: 7.8.2 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -14498,12 +15656,324 @@ snapshots: dependencies: '@isaacs/cliui': 9.0.0 + jest-changed-files@30.4.1: + dependencies: + execa: 5.1.1 + jest-util: 30.4.1 + p-limit: 3.1.0 + + jest-circus@30.4.2: + dependencies: + '@jest/environment': 30.4.1 + '@jest/expect': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.7.2 + is-generator-fn: 2.1.0 + jest-each: 30.4.1 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-runtime: 30.4.2 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + p-limit: 3.1.0 + pretty-format: 30.4.1 + pure-rand: 7.0.1 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@30.4.2(@types/node@22.19.20)(esbuild-register@3.6.0(esbuild@0.27.7)): + dependencies: + '@jest/core': 30.4.2(esbuild-register@3.6.0(esbuild@0.27.7)) + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + chalk: 4.1.2 + exit-x: 0.2.2 + import-local: 3.2.0 + jest-config: 30.4.2(@types/node@22.19.20)(esbuild-register@3.6.0(esbuild@0.27.7)) + jest-util: 30.4.1 + jest-validate: 30.4.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + jest-config@30.4.2(@types/node@22.19.20)(esbuild-register@3.6.0(esbuild@0.27.7)): + dependencies: + '@babel/core': 7.29.7 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.4.0 + '@jest/test-sequencer': 30.4.1 + '@jest/types': 30.4.1 + babel-jest: 30.4.1(@babel/core@7.29.7) + chalk: 4.1.2 + ci-info: 4.4.0 + deepmerge: 4.3.1 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-circus: 30.4.2 + jest-docblock: 30.4.0 + jest-environment-node: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-runner: 30.4.2 + jest-util: 30.4.1 + jest-validate: 30.4.1 + parse-json: 5.2.0 + pretty-format: 30.4.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.19.20 + esbuild-register: 3.6.0(esbuild@0.27.7) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@30.4.1: + dependencies: + '@jest/diff-sequences': 30.4.0 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.4.1 + + jest-docblock@30.4.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.4.1 + chalk: 4.1.2 + jest-util: 30.4.1 + pretty-format: 30.4.1 + + jest-environment-node@30.4.1: + dependencies: + '@jest/environment': 30.4.1 + '@jest/fake-timers': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + jest-mock: 30.4.1 + jest-util: 30.4.1 + jest-validate: 30.4.1 + + jest-haste-map@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 30.4.0 + jest-util: 30.4.1 + jest-worker: 30.4.1 + picomatch: 4.0.4 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + pretty-format: 30.4.1 + + jest-matcher-utils@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.4.1 + pretty-format: 30.4.1 + + jest-message-util@30.4.1: + dependencies: + '@babel/code-frame': 7.29.7 + '@jest/types': 30.4.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-util: 30.4.1 + picomatch: 4.0.4 + pretty-format: 30.4.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + jest-util: 30.4.1 + + jest-pnp-resolver@1.2.3(jest-resolve@30.4.1): + optionalDependencies: + jest-resolve: 30.4.1 + + jest-regex-util@30.4.0: {} + + jest-resolve-dependencies@30.4.2: + dependencies: + jest-regex-util: 30.4.0 + jest-snapshot: 30.4.1 + transitivePeerDependencies: + - supports-color + + jest-resolve@30.4.1: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-pnp-resolver: 1.2.3(jest-resolve@30.4.1) + jest-util: 30.4.1 + jest-validate: 30.4.1 + slash: 3.0.0 + unrs-resolver: 1.12.2 + + jest-runner@30.4.2: + dependencies: + '@jest/console': 30.4.1 + '@jest/environment': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + chalk: 4.1.2 + emittery: 0.13.1 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-docblock: 30.4.0 + jest-environment-node: 30.4.1 + jest-haste-map: 30.4.1 + jest-leak-detector: 30.4.1 + jest-message-util: 30.4.1 + jest-resolve: 30.4.1 + jest-runtime: 30.4.2 + jest-util: 30.4.1 + jest-watcher: 30.4.1 + jest-worker: 30.4.1 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@30.4.2: + dependencies: + '@jest/environment': 30.4.1 + '@jest/fake-timers': 30.4.1 + '@jest/globals': 30.4.1 + '@jest/source-map': 30.0.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + chalk: 4.1.2 + cjs-module-lexer: 2.2.0 + collect-v8-coverage: 1.0.3 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@30.4.1: + dependencies: + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/types': 7.29.7 + '@jest/expect-utils': 30.4.1 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) + chalk: 4.1.2 + expect: 30.4.1 + graceful-fs: 4.2.11 + jest-diff: 30.4.1 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + pretty-format: 30.4.1 + semver: 7.8.2 + synckit: 0.11.13 + transitivePeerDependencies: + - supports-color + + jest-util@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + chalk: 4.1.2 + ci-info: 4.4.0 + graceful-fs: 4.2.11 + picomatch: 4.0.4 + + jest-validate@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.4.1 + camelcase: 6.3.0 + chalk: 4.1.2 + leven: 3.1.0 + pretty-format: 30.4.1 + + jest-watcher@30.4.1: + dependencies: + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 22.19.20 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 30.4.1 + string-length: 4.0.2 + jest-worker@27.5.1: dependencies: '@types/node': 22.19.20 merge-stream: 2.0.0 supports-color: 8.1.1 + jest-worker@30.4.1: + dependencies: + '@types/node': 22.19.20 + '@ungap/structured-clone': 1.3.1 + jest-util: 30.4.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@30.4.2(@types/node@22.19.20)(esbuild-register@3.6.0(esbuild@0.27.7)): + dependencies: + '@jest/core': 30.4.2(esbuild-register@3.6.0(esbuild@0.27.7)) + '@jest/types': 30.4.1 + import-local: 3.2.0 + jest-cli: 30.4.2(@types/node@22.19.20)(esbuild-register@3.6.0(esbuild@0.27.7)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + jiti@1.21.7: {} jiti@2.4.2: {} @@ -14516,6 +15986,11 @@ snapshots: js-tokens@4.0.0: {} + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + js-yaml@4.2.0: dependencies: argparse: 2.0.1 @@ -14528,6 +16003,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -14592,6 +16069,8 @@ snapshots: leac@0.6.0: {} + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -14660,6 +16139,10 @@ snapshots: pkg-types: 2.3.1 quansync: 0.2.11 + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -14742,6 +16225,14 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + make-dir@4.0.0: + dependencies: + semver: 7.8.2 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + marked@7.0.4: {} math-intrinsics@1.1.0: {} @@ -14884,12 +16375,13 @@ snapshots: dependencies: type-fest: 2.19.0 - next-safe-action@7.10.8(next@16.2.3(@babel/core@7.29.7)(@playwright/test@1.58.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.3.6): + next-safe-action@7.10.8(@sinclair/typebox@0.34.49)(next@16.2.3(@babel/core@7.29.7)(@playwright/test@1.58.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.3.6): dependencies: next: 16.2.3(@babel/core@7.29.7)(@playwright/test@1.58.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) optionalDependencies: + '@sinclair/typebox': 0.34.49 zod: 4.3.6 next-themes@0.4.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7): @@ -14987,6 +16479,8 @@ snapshots: css-select: 5.2.2 he: 1.2.0 + node-int64@0.4.0: {} + node-pty@1.1.0: dependencies: node-addon-api: 7.1.1 @@ -15011,6 +16505,10 @@ snapshots: npm-check-updates@18.3.1: {} + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -15170,14 +16668,24 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 + p-try@2.2.0: {} + pac-proxy-agent@7.2.0: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -15209,6 +16717,13 @@ snapshots: dependencies: callsites: 3.1.0 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parse-path@7.1.0: dependencies: protocols: 2.0.2 @@ -15254,6 +16769,8 @@ snapshots: path-expression-matcher@1.5.0: {} + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} path-key@4.0.0: {} @@ -15363,6 +16880,10 @@ snapshots: pkce-challenge@5.0.1: {} + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -15446,6 +16967,13 @@ snapshots: pretty-bytes@6.1.1: {} + pretty-format@30.4.1: + dependencies: + '@jest/schemas': 30.4.1 + ansi-styles: 5.2.0 + react-is-18: react-is@18.3.1 + react-is-19: react-is@19.2.7 + pretty-repl@4.0.1: dependencies: ansi-regex: 5.0.1 @@ -15530,6 +17058,8 @@ snapshots: pure-rand@6.1.0: {} + pure-rand@7.0.1: {} + pvtsutils@1.3.6: dependencies: tslib: 2.8.1 @@ -15629,6 +17159,8 @@ snapshots: react-is@18.3.1: {} + react-is@19.2.7: {} + react-promise-suspense@0.3.4: dependencies: fast-deep-equal: 2.0.1 @@ -15830,8 +17362,14 @@ snapshots: require-from-string@2.0.2: {} + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} resolve@1.22.12: @@ -16115,6 +17653,8 @@ snapshots: sisteransi@1.0.5: {} + slash@3.0.0: {} + sleep-promise@9.1.0: {} smart-buffer@4.2.0: {} @@ -16205,6 +17745,11 @@ snapshots: source-map-js@1.2.1: {} + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -16234,6 +17779,8 @@ snapshots: split2@4.2.0: {} + sprintf-js@1.0.3: {} + ssh2@1.17.0: dependencies: asn1: 0.2.6 @@ -16244,6 +17791,10 @@ snapshots: stable-hash@0.0.5: {} + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + stacktrace-parser@0.1.11: dependencies: type-fest: 0.7.1 @@ -16265,6 +17816,11 @@ snapshots: strict-uri-encode@2.0.0: {} + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -16353,8 +17909,12 @@ snapshots: strip-bom@3.0.0: {} + strip-bom@4.0.0: {} + strip-color@0.1.0: {} + strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} strip-json-comments@3.1.1: {} @@ -16492,6 +18052,12 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.6 + glob: 7.2.3 + minimatch: 3.1.5 + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -16530,6 +18096,8 @@ snapshots: dependencies: tldts-core: 6.1.86 + tmpl@1.0.5: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -16597,6 +18165,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-detect@4.0.8: {} + type-fest@0.21.3: {} type-fest@0.7.1: {} @@ -16787,6 +18357,12 @@ snapshots: uuid@9.0.1: {} + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -16862,6 +18438,10 @@ snapshots: walk-up-path@4.0.0: {} + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + watchpack@2.5.1: dependencies: glob-to-regexp: 0.4.1 @@ -17002,6 +18582,11 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + ws@8.20.1: {} ws@8.21.0: {} diff --git a/seeds/keycloak/master-realm.json b/seeds/keycloak/master-realm.json deleted file mode 100644 index 51be35c4..00000000 --- a/seeds/keycloak/master-realm.json +++ /dev/null @@ -1,2216 +0,0 @@ -{ - "id" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "realm" : "master", - "displayName" : "Portabase", - "displayNameHtml" : "
Portabase
", - "notBefore" : 0, - "defaultSignatureAlgorithm" : "RS256", - "revokeRefreshToken" : false, - "refreshTokenMaxReuse" : 0, - "accessTokenLifespan" : 60, - "accessTokenLifespanForImplicitFlow" : 900, - "ssoSessionIdleTimeout" : 1800, - "ssoSessionMaxLifespan" : 36000, - "ssoSessionIdleTimeoutRememberMe" : 0, - "ssoSessionMaxLifespanRememberMe" : 0, - "offlineSessionIdleTimeout" : 2592000, - "offlineSessionMaxLifespanEnabled" : false, - "offlineSessionMaxLifespan" : 5184000, - "clientSessionIdleTimeout" : 0, - "clientSessionMaxLifespan" : 0, - "clientOfflineSessionIdleTimeout" : 0, - "clientOfflineSessionMaxLifespan" : 0, - "accessCodeLifespan" : 60, - "accessCodeLifespanUserAction" : 300, - "accessCodeLifespanLogin" : 1800, - "actionTokenGeneratedByAdminLifespan" : 43200, - "actionTokenGeneratedByUserLifespan" : 300, - "oauth2DeviceCodeLifespan" : 600, - "oauth2DevicePollingInterval" : 5, - "enabled" : true, - "sslRequired" : "none", - "registrationAllowed" : false, - "registrationEmailAsUsername" : false, - "rememberMe" : false, - "verifyEmail" : false, - "loginWithEmailAllowed" : true, - "duplicateEmailsAllowed" : false, - "resetPasswordAllowed" : false, - "editUsernameAllowed" : false, - "bruteForceProtected" : false, - "permanentLockout" : false, - "maxTemporaryLockouts" : 0, - "bruteForceStrategy" : "MULTIPLE", - "maxFailureWaitSeconds" : 900, - "minimumQuickLoginWaitSeconds" : 60, - "waitIncrementSeconds" : 60, - "quickLoginCheckMilliSeconds" : 1000, - "maxDeltaTimeSeconds" : 43200, - "failureFactor" : 30, - "roles" : { - "realm" : [ { - "id" : "e2068803-d2fb-4955-928d-35afa1b552cf", - "name" : "admin", - "description" : "${role_admin}", - "composite" : true, - "composites" : { - "realm" : [ "create-realm" ], - "client" : { - "master-realm" : [ "create-client", "view-users", "query-realms", "view-authorization", "view-identity-providers", "query-users", "query-groups", "manage-users", "manage-events", "view-clients", "view-realm", "manage-authorization", "manage-realm", "view-events", "impersonation", "query-clients", "manage-identity-providers", "manage-clients" ] - } - }, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "1c6d4bb7-a9f0-4bf8-9780-d97e99de3c3d", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "composites" : { - "realm" : [ "offline_access", "uma_authorization" ], - "client" : { - "account" : [ "view-profile", "manage-account" ] - } - }, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "26712408-59c8-463f-bce1-d8f961b4bf51", - "name" : "create-realm", - "description" : "${role_create-realm}", - "composite" : false, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "546e3598-8de5-4e05-8823-5abe2efebf43", - "name" : "offline_access", - "description" : "${role_offline-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "b8bf1864-b840-4377-9f6f-373a7f645dcc", - "name" : "uma_authorization", - "description" : "${role_uma_authorization}", - "composite" : false, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - } ], - "client" : { - "portabase" : [ { - "id" : "180dc40c-1c09-49a2-a86b-782f1a2182c4", - "name" : "uma_protection", - "composite" : false, - "clientRole" : true, - "containerId" : "7b8c7b35-8ffd-47b3-82b5-b152b521cd77", - "attributes" : { } - } ], - "security-admin-console" : [ ], - "admin-cli" : [ ], - "account-console" : [ ], - "broker" : [ { - "id" : "695d4423-e83d-403f-baf1-35076a456366", - "name" : "read-token", - "description" : "${role_read-token}", - "composite" : false, - "clientRole" : true, - "containerId" : "af9b43bb-1902-4ed8-b4f6-caa7ec27efd5", - "attributes" : { } - } ], - "master-realm" : [ { - "id" : "27fbd47b-0350-4f11-a83c-a0134f9079b1", - "name" : "create-client", - "description" : "${role_create-client}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "672a49fe-69f9-4371-b945-8bb539a76fa7", - "name" : "view-users", - "description" : "${role_view-users}", - "composite" : true, - "composites" : { - "client" : { - "master-realm" : [ "query-users", "query-groups" ] - } - }, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "3df2803b-1be3-4446-ad55-de4a1654f0f1", - "name" : "query-realms", - "description" : "${role_query-realms}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "963cdf89-9884-493f-b553-d095a190db70", - "name" : "view-authorization", - "description" : "${role_view-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "0c7db742-fb5a-41ca-816a-ade107446ee8", - "name" : "view-identity-providers", - "description" : "${role_view-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "9741b23a-9efa-4fbc-bfae-683f84997e8b", - "name" : "query-users", - "description" : "${role_query-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "65439bfe-de32-499f-9f68-44ecd96ff49c", - "name" : "query-groups", - "description" : "${role_query-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "ecaab7fc-da4b-4613-8b7c-959ed4e225cc", - "name" : "manage-events", - "description" : "${role_manage-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "e260a5cc-91c5-41db-86f8-01b494c4e66b", - "name" : "manage-users", - "description" : "${role_manage-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "db6d0e0a-4193-4f6a-9343-d1f182fdda15", - "name" : "view-clients", - "description" : "${role_view-clients}", - "composite" : true, - "composites" : { - "client" : { - "master-realm" : [ "query-clients" ] - } - }, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "f8bc7291-d450-48f6-820e-67a8ab2a6b5b", - "name" : "view-realm", - "description" : "${role_view-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "3444137f-0938-4340-9d5b-ceef2f7b1e97", - "name" : "manage-authorization", - "description" : "${role_manage-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "a39bf436-1fa4-42d2-80ed-a010b43853aa", - "name" : "manage-realm", - "description" : "${role_manage-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "baa18f46-7d1d-4298-b3b0-9b0ecb945557", - "name" : "view-events", - "description" : "${role_view-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "91298b5d-5182-4056-8240-8fdb188f865e", - "name" : "impersonation", - "description" : "${role_impersonation}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "a5a58b82-32eb-4c78-993a-cf9c7e37eabb", - "name" : "query-clients", - "description" : "${role_query-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "c8c85c54-7bfb-4d45-8ccc-6253e429f649", - "name" : "manage-clients", - "description" : "${role_manage-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "baed486e-dc69-44a9-9630-9a88987142ee", - "name" : "manage-identity-providers", - "description" : "${role_manage-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - } ], - "account" : [ { - "id" : "8085c714-b840-4539-823d-a8df8bab3db3", - "name" : "view-applications", - "description" : "${role_view-applications}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "12089b7a-e685-4c87-bb81-997ecc04ed17", - "name" : "view-profile", - "description" : "${role_view-profile}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "ea9e72d8-1d23-4f50-86b3-1795067da29f", - "name" : "view-groups", - "description" : "${role_view-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "2bd8114a-75cf-4d6b-8f42-229f6a5c66a0", - "name" : "delete-account", - "description" : "${role_delete-account}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "7303b334-e9e0-4236-89b8-e1c9d6562138", - "name" : "view-consent", - "description" : "${role_view-consent}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "12c6fe35-ec80-4ca2-b2a8-9d6eae4c3a92", - "name" : "manage-account-links", - "description" : "${role_manage-account-links}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "e56b828b-7d5d-49a2-b686-c1bd535900ac", - "name" : "manage-consent", - "description" : "${role_manage-consent}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "view-consent" ] - } - }, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "98e19002-4144-48fc-bcca-4ac6f19a6a37", - "name" : "manage-account", - "description" : "${role_manage-account}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "manage-account-links" ] - } - }, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - } ] - } - }, - "groups" : [ { - "id" : "f523647e-76b3-493f-bb1e-f2a3f7deebdb", - "name" : "Admin", - "description" : "", - "path" : "/Admin", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ "admin" ], - "clientRoles" : { } - }, { - "id" : "f3b7286d-8169-41eb-b3a2-6241bf58907d", - "name" : "Default", - "description" : "", - "path" : "/Default", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ ], - "clientRoles" : { } - }, { - "id" : "eda8d5c9-d29a-4b35-9372-2b088b9a9d8d", - "name" : "Pending", - "description" : "", - "path" : "/Pending", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ ], - "clientRoles" : { } - } ], - "defaultRole" : { - "id" : "1c6d4bb7-a9f0-4bf8-9780-d97e99de3c3d", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd" - }, - "requiredCredentials" : [ "password" ], - "otpPolicyType" : "totp", - "otpPolicyAlgorithm" : "HmacSHA1", - "otpPolicyInitialCounter" : 0, - "otpPolicyDigits" : 6, - "otpPolicyLookAheadWindow" : 1, - "otpPolicyPeriod" : 30, - "otpPolicyCodeReusable" : false, - "otpSupportedApplications" : [ "totpAppFreeOTPName", "totpAppGoogleName", "totpAppMicrosoftAuthenticatorName" ], - "localizationTexts" : { }, - "webAuthnPolicyRpEntityName" : "keycloak", - "webAuthnPolicySignatureAlgorithms" : [ "ES256", "RS256" ], - "webAuthnPolicyRpId" : "", - "webAuthnPolicyAttestationConveyancePreference" : "not specified", - "webAuthnPolicyAuthenticatorAttachment" : "not specified", - "webAuthnPolicyRequireResidentKey" : "not specified", - "webAuthnPolicyUserVerificationRequirement" : "not specified", - "webAuthnPolicyCreateTimeout" : 0, - "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyAcceptableAaguids" : [ ], - "webAuthnPolicyExtraOrigins" : [ ], - "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", - "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256", "RS256" ], - "webAuthnPolicyPasswordlessRpId" : "", - "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", - "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", - "webAuthnPolicyPasswordlessRequireResidentKey" : "Yes", - "webAuthnPolicyPasswordlessUserVerificationRequirement" : "required", - "webAuthnPolicyPasswordlessCreateTimeout" : 0, - "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], - "webAuthnPolicyPasswordlessExtraOrigins" : [ ], - "users" : [ { - "id" : "9bd127a6-a29f-4a3d-a530-9b7284cf9770", - "username" : "admin", - "emailVerified" : false, - "attributes" : { - "is_temporary_admin" : [ "true" ] - }, - "enabled" : true, - "createdTimestamp" : 1772178626982, - "totp" : false, - "credentials" : [ { - "id" : "731ce7c2-9141-4ff1-8856-3e8625cf1929", - "type" : "password", - "createdDate" : 1772178627073, - "secretData" : "{\"value\":\"quuOeVW9VVoilChYLmvjJWCnAM23OA/gK54tYoJ6atw=\",\"salt\":\"khqIggSOfCNLqP1i9qiwvQ==\",\"additionalParameters\":{}}", - "credentialData" : "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "admin", "default-roles-master" ], - "notBefore" : 0, - "groups" : [ ] - }, { - "id" : "c62607eb-fe31-4ea4-b8cb-56c37039c1b3", - "username" : "development", - "firstName" : "Tech", - "lastName" : "Portabase", - "email" : "keycloak@portabase.io", - "emailVerified" : true, - "enabled" : true, - "createdTimestamp" : 1772179382148, - "totp" : false, - "credentials" : [ { - "id" : "b1cedcac-5207-4479-bc29-065ba849e414", - "type" : "password", - "userLabel" : "My password", - "createdDate" : 1772179391727, - "secretData" : "{\"value\":\"IXr6L3pvO2BAkn/cH3rh3v2tg1R83u2f8SWEZK2fq5E=\",\"salt\":\"XWV8/yKm7Rw/YXiwXZZUig==\",\"additionalParameters\":{}}", - "credentialData" : "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "admin", "default-roles-master" ], - "notBefore" : 0, - "groups" : [ "/Admin" ] - }, { - "id" : "718dfe46-dbef-41a3-9120-78aeac240431", - "username" : "service-account-portabase", - "emailVerified" : false, - "enabled" : true, - "createdTimestamp" : 1772177793553, - "totp" : false, - "serviceAccountClientId" : "portabase", - "credentials" : [ ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "default-roles-master" ], - "clientRoles" : { - "portabase" : [ "uma_protection" ] - }, - "notBefore" : 0, - "groups" : [ ] - } ], - "scopeMappings" : [ { - "clientScope" : "offline_access", - "roles" : [ "offline_access" ] - } ], - "clientScopeMappings" : { - "account" : [ { - "client" : "account-console", - "roles" : [ "manage-account", "view-groups" ] - } ] - }, - "clients" : [ { - "id" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "clientId" : "account", - "name" : "${client_account}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/master/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/master/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "b07531b2-43f4-4487-8068-46001dd1abf7", - "clientId" : "account-console", - "name" : "${client_account-console}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/master/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/master/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "ad646174-e521-4bd5-8f78-eb8eed2befb8", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "8ad89892-6f85-4f07-b6b6-1fcb1eda58e2", - "clientId" : "admin-cli", - "name" : "${client_admin-cli}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : false, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "client.use.lightweight.access.token.enabled" : "true", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "af9b43bb-1902-4ed8-b4f6-caa7ec27efd5", - "clientId" : "broker", - "name" : "${client_broker}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "true", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "clientId" : "master-realm", - "name" : "master Realm", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "true", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "7b8c7b35-8ffd-47b3-82b5-b152b521cd77", - "clientId" : "portabase", - "name" : "Portabase", - "description" : "", - "rootUrl" : "http://localhost:8887", - "adminUrl" : "http://localhost:8887", - "baseUrl" : "http://localhost:8887", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "secret" : "**********", - "redirectUris" : [ "http://localhost:8887/api/auth/sso/callback/keycloak" ], - "webOrigins" : [ "http://localhost:8887" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : true, - "authorizationServicesEnabled" : true, - "publicClient" : false, - "frontchannelLogout" : true, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "oidc.ciba.grant.enabled" : "false", - "client.secret.creation.time" : "1772177793", - "backchannel.logout.session.required" : "true", - "standard.token.exchange.enabled" : "false", - "post.logout.redirect.uris" : "http://localhost:8887", - "oauth2.device.authorization.grant.enabled" : "true", - "pkce.code.challenge.method" : "S256", - "backchannel.logout.revoke.offline.tokens" : "false", - "dpop.bound.access.tokens" : "false" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : -1, - "protocolMappers" : [ { - "id" : "3e8f8909-e718-4ebe-80b9-ed6501e94cbe", - "name" : "groups", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-group-membership-mapper", - "consentRequired" : false, - "config" : { - "full.path" : "false", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "multivalued" : "true", - "id.token.claim" : "true", - "lightweight.claim" : "false", - "access.token.claim" : "true", - "claim.name" : "groups" - } - } ], - "defaultClientScopes" : [ "web-origins", "service_account", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ], - "authorizationSettings" : { - "allowRemoteResourceManagement" : true, - "policyEnforcementMode" : "ENFORCING", - "resources" : [ ], - "policies" : [ ], - "scopes" : [ ], - "decisionStrategy" : "UNANIMOUS" - } - }, { - "id" : "320637e2-0aa2-4601-8862-fe465e887167", - "clientId" : "security-admin-console", - "name" : "${client_security-admin-console}", - "rootUrl" : "${authAdminUrl}", - "baseUrl" : "/admin/master/console/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/admin/master/console/*" ], - "webOrigins" : [ "+" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "client.use.lightweight.access.token.enabled" : "true", - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "59aa4c07-4e3b-4abd-947c-94e4840aab0f", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - } ], - "clientScopes" : [ { - "id" : "1c5c7377-5552-4f36-8073-5b7c50ba0b58", - "name" : "microprofile-jwt", - "description" : "Microprofile - JWT built-in scope", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "d26ac380-69ea-47c8-9342-f8108b8b1c7a", - "name" : "upn", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "upn", - "jsonType.label" : "String" - } - }, { - "id" : "47e583ab-95d7-4b9e-83c3-37689f6808ff", - "name" : "groups", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "foo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "groups", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "b92d26a9-7930-4f6c-add6-082374546966", - "name" : "roles", - "description" : "OpenID Connect scope for add user roles to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "consent.screen.text" : "${rolesScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "0bf151da-a754-460b-bc53-1d78249c3ac1", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - }, { - "id" : "a806de62-0e08-456f-9e16-76e8b186c724", - "name" : "realm roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "realm_access.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - }, { - "id" : "9063017e-d52e-4624-acff-22833103a577", - "name" : "client roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-client-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - } ] - }, { - "id" : "dce5baba-c90f-4347-8b84-3162868c7ffa", - "name" : "basic", - "description" : "OpenID Connect scope for add all basic claims to the token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "1457d324-6006-4141-b8a7-c45d7ab8814c", - "name" : "auth_time", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "AUTH_TIME", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "auth_time", - "jsonType.label" : "long" - } - }, { - "id" : "0d3b31e5-31f5-4778-adbd-36a06b301af6", - "name" : "sub", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-sub-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - } ] - }, { - "id" : "f65dc085-328e-41d8-a3f3-933eed32c804", - "name" : "email", - "description" : "OpenID Connect built-in scope: email", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${emailScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "084130d1-642b-4b44-8643-60962e0a01d0", - "name" : "email", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "email", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email", - "jsonType.label" : "String" - } - }, { - "id" : "894569d9-bf66-425e-a07e-892e97d4ac3d", - "name" : "email verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "emailVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email_verified", - "jsonType.label" : "boolean" - } - } ] - }, { - "id" : "ae961041-beb6-4d8e-b9f2-b0a1f88423f6", - "name" : "address", - "description" : "OpenID Connect built-in scope: address", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${addressScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "84d4f934-f761-4741-bca5-b48581c6b2de", - "name" : "address", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-address-mapper", - "consentRequired" : false, - "config" : { - "user.attribute.formatted" : "formatted", - "user.attribute.country" : "country", - "introspection.token.claim" : "true", - "user.attribute.postal_code" : "postal_code", - "userinfo.token.claim" : "true", - "user.attribute.street" : "street", - "id.token.claim" : "true", - "user.attribute.region" : "region", - "access.token.claim" : "true", - "user.attribute.locality" : "locality" - } - } ] - }, { - "id" : "5e1cf5ad-00e6-4092-b8aa-76bb293a3efa", - "name" : "saml_organization", - "description" : "Organization Membership", - "protocol" : "saml", - "attributes" : { - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "10efbc9e-4f21-42b7-832b-f5de7b3a666c", - "name" : "organization", - "protocol" : "saml", - "protocolMapper" : "saml-organization-membership-mapper", - "consentRequired" : false, - "config" : { } - } ] - }, { - "id" : "a1c75182-21f3-4e70-83f4-67e42f28267c", - "name" : "web-origins", - "description" : "OpenID Connect scope for add allowed web origins to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "consent.screen.text" : "", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "1a570c6f-6f1a-4503-8677-5762b7b5578a", - "name" : "allowed web origins", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-allowed-origins-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - } ] - }, { - "id" : "4e350025-c16f-4a34-b132-4c6c07d0d90f", - "name" : "profile", - "description" : "OpenID Connect built-in scope: profile", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${profileScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "7b1a561c-f0d0-4979-ab02-0e9d564cb5af", - "name" : "middle name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "middleName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "middle_name", - "jsonType.label" : "String" - } - }, { - "id" : "ed49a16e-928f-4882-a8b6-835b83445349", - "name" : "zoneinfo", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "zoneinfo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "zoneinfo", - "jsonType.label" : "String" - } - }, { - "id" : "0fea1c8d-77a9-4325-a414-ca503a702ea1", - "name" : "family name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "lastName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "family_name", - "jsonType.label" : "String" - } - }, { - "id" : "4ec1df3c-803c-4b3d-a96d-054f17b3745c", - "name" : "gender", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "gender", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "gender", - "jsonType.label" : "String" - } - }, { - "id" : "b066efb7-76f4-4a42-97ae-39cb8883898a", - "name" : "nickname", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "nickname", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "nickname", - "jsonType.label" : "String" - } - }, { - "id" : "0ef7cb1a-75f4-4b57-8614-3d35d7f93fc5", - "name" : "birthdate", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "birthdate", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "birthdate", - "jsonType.label" : "String" - } - }, { - "id" : "dd8c2607-67ab-4f25-96cc-19c9751a0e03", - "name" : "profile", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "profile", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "profile", - "jsonType.label" : "String" - } - }, { - "id" : "f2fdb527-5bb8-4c41-a260-7b8f2653baa8", - "name" : "updated at", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "updatedAt", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "updated_at", - "jsonType.label" : "long" - } - }, { - "id" : "672a0701-67a0-4aa4-bbeb-93fa325d2921", - "name" : "username", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "preferred_username", - "jsonType.label" : "String" - } - }, { - "id" : "a3ca4541-9326-4b34-b59d-5f6f366e2ff9", - "name" : "website", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "website", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "website", - "jsonType.label" : "String" - } - }, { - "id" : "ccdc393d-6aee-4c88-b071-b708f4cf2b05", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - }, { - "id" : "cbf3d8ee-c2d9-445d-8662-279fd1160c80", - "name" : "full name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-full-name-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "true" - } - }, { - "id" : "fc8b06a9-e4fc-4381-830a-2e03f8982ff6", - "name" : "given name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "firstName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "given_name", - "jsonType.label" : "String" - } - }, { - "id" : "a46cc2ac-d92c-4b61-b119-910b4e96e456", - "name" : "picture", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "picture", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "picture", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "2b7175c7-d59b-4dea-9759-405299298c21", - "name" : "organization", - "description" : "Additional claims about the organization a subject belongs to", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${organizationScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "cd6a70e3-ebb8-4892-975e-4bece535c387", - "name" : "organization", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-organization-membership-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "organization", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "074912fc-e8b4-4369-8842-d8e44479e5d7", - "name" : "role_list", - "description" : "SAML role list", - "protocol" : "saml", - "attributes" : { - "consent.screen.text" : "${samlRoleListScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "8e4761c8-96b5-422b-b9ef-f18970f9a677", - "name" : "role list", - "protocol" : "saml", - "protocolMapper" : "saml-role-list-mapper", - "consentRequired" : false, - "config" : { - "single" : "false", - "attribute.nameformat" : "Basic", - "attribute.name" : "Role" - } - } ] - }, { - "id" : "8b3b526e-ea3d-497a-b346-5852ddd29d01", - "name" : "service_account", - "description" : "Specific scope for a client enabled for service accounts", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "7e347974-b093-4a66-8fe0-8bdbab526232", - "name" : "Client Host", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "clientHost", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "clientHost", - "jsonType.label" : "String" - } - }, { - "id" : "0a4fe9bc-c5b1-45fc-80c1-7de78eda92ab", - "name" : "Client IP Address", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "clientAddress", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "clientAddress", - "jsonType.label" : "String" - } - }, { - "id" : "9b86ae58-d68d-4be7-9e48-3113a22caf5f", - "name" : "Client ID", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "client_id", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "client_id", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "09e32dbb-120d-44bc-89eb-803b2caf35fc", - "name" : "phone", - "description" : "OpenID Connect built-in scope: phone", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${phoneScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "83dc1340-1f91-47eb-8bb5-d324084687f2", - "name" : "phone number verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumberVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number_verified", - "jsonType.label" : "boolean" - } - }, { - "id" : "014dfa26-791d-414b-bfb6-0b08605bf30f", - "name" : "phone number", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumber", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "e582a1a0-4ad9-4bbd-b41e-a503b435da3a", - "name" : "acr", - "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "f762a161-89f2-47a7-83cb-686362280a14", - "name" : "acr loa level", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-acr-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "true" - } - } ] - }, { - "id" : "b288b9a7-e8a8-4b0a-8972-af6083835858", - "name" : "offline_access", - "description" : "OpenID Connect built-in scope: offline_access", - "protocol" : "openid-connect", - "attributes" : { - "consent.screen.text" : "${offlineAccessScopeConsentText}", - "display.on.consent.screen" : "true" - } - } ], - "defaultDefaultClientScopes" : [ "role_list", "saml_organization", "profile", "email", "roles", "web-origins", "acr", "basic" ], - "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt", "organization" ], - "browserSecurityHeaders" : { - "contentSecurityPolicyReportOnly" : "", - "xContentTypeOptions" : "nosniff", - "referrerPolicy" : "no-referrer", - "xRobotsTag" : "none", - "xFrameOptions" : "SAMEORIGIN", - "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "strictTransportSecurity" : "max-age=31536000; includeSubDomains" - }, - "smtpServer" : { }, - "eventsEnabled" : false, - "eventsListeners" : [ "jboss-logging" ], - "enabledEventTypes" : [ ], - "adminEventsEnabled" : false, - "adminEventsDetailsEnabled" : false, - "identityProviders" : [ ], - "identityProviderMappers" : [ ], - "components" : { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { - "id" : "c7eaaf0f-7650-4fc1-968a-889667759858", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "1f0661c3-25de-4ff6-92bf-dbb36264a71b", - "name" : "Max Clients Limit", - "providerId" : "max-clients", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "max-clients" : [ "200" ] - } - }, { - "id" : "a889dafe-f9d0-4728-bdf5-9421d1077d1f", - "name" : "Consent Required", - "providerId" : "consent-required", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "4790f0a4-3450-4dbf-9153-0a1805e02d98", - "name" : "Allowed Registration Web Origins", - "providerId" : "registration-web-origins", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { } - }, { - "id" : "4084bb89-71f9-4363-a5dd-dfa74e638d80", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "oidc-full-name-mapper" ] - } - }, { - "id" : "dba96a52-5743-47d2-b5f5-42452892b0bd", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "85b9458c-d890-48b8-87b7-7d3d5f331d5f", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-full-name-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper" ] - } - }, { - "id" : "181cd220-28a9-4a5e-b2d7-c9092c26ef67", - "name" : "Full Scope Disabled", - "providerId" : "scope", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "be0c3922-b432-408c-935b-81923b0e7018", - "name" : "Trusted Hosts", - "providerId" : "trusted-hosts", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "host-sending-registration-request-must-match" : [ "true" ], - "client-uris-must-match" : [ "true" ] - } - }, { - "id" : "81fe5bf6-4e18-40b8-8cf6-46028fb6704c", - "name" : "Allowed Registration Web Origins", - "providerId" : "registration-web-origins", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "bd8f87c6-ffc2-401d-baab-cccb228e9b50", - "providerId" : "declarative-user-profile", - "subComponents" : { }, - "config" : { - "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}]}" ] - } - } ], - "org.keycloak.keys.KeyProvider" : [ { - "id" : "2068dd28-1706-4fc6-8751-ead7dc26cf90", - "name" : "aes-generated", - "providerId" : "aes-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "81bfaacd-ca1f-4b68-a1b2-80102555f5d6" ], - "secret" : [ "XEHl3aG9cESD4wedDu3uAg" ], - "priority" : [ "100" ] - } - }, { - "id" : "4bc97a67-b5fd-4bd5-9df9-7366efc0e091", - "name" : "hmac-generated-hs512", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "31342681-e4fb-428d-bd54-07a77581ec75" ], - "secret" : [ "UhZlVtujVRkaFsvdVAOGPTEsNIwAJIOfmJDjQeciaQuWIGKWd-RBdKcS0II053kVswbJRGitqc-e0iqBfhZrUBrQyUmmcrCJT09BiaKCicdgRwYrb8fhYagiIg-70jk7fc3j3VINu5eeKjkTiDyfAf_0HS62-8eO4e98A5IW6QE" ], - "priority" : [ "100" ], - "algorithm" : [ "HS512" ] - } - }, { - "id" : "1cf333a1-b495-47b5-94f4-138e34e92ec7", - "name" : "rsa-generated", - "providerId" : "rsa-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEpAIBAAKCAQEAvQ5kJj9mHLGm5zMvW5kYgSbEVvZYWcmMJKMQRWni4RdvbrKpkgsLv6gkH0xiwKU5aaUmk/e6hAZO2UvZ8Tp180VBhk2BXtS21Jm7KbZSVtQBFf33zVqjEXB2d89E1R6RlopzF4+Y6X1xxPnJ1UGxM0yT8uSrGB4CbJaNO4YH6/vUsJWoNXS9MJKFIvm0HP6t+o6DvWGn5HjLK7jhhF6iATZpp0JwqkG5Y+xo6TObx3m11aCR1HrFqlVg6zC3Ht4lhlQh3VhKcoO80gRAURU7WjOOAwauJViYrOF6eAsbMbpTD8EAyXL/4KCFWoITwRpHYNXwSzdR/BvgFlsJwLxJGwIDAQABAoIBABTzpleyyP8/FO8kdgghtFyDzliQ3oO82WIqDCCVNoaZkUjkVfSQctHfsXkifwM4jF9P5TGaz7nX9R8Rz+py/yVhtHxM1JyM2GJBU0OxJ/jlb+VfCvpgJBhHrWljuA4iYCId39lpmZmuxE//GsYejKPRxceyXd/DW6NrH+XL2c7mHe0AznAEfDeIsKWRDCoOjgm2xfpjU204HGLGmU+qTzH4EeZPWvpCnXWZiNBrxSiBUdauCMz6jWBZXW173rfd430t9JMu7zuPqFpcZ/RsLw3blHoPWpbpeULloxfSgxcYD+KP+oCk8t2oubTDGX2ES7OVfSbgy5yMYPbg7g+G97kCgYEA7Jj4d4tdTCOfk5kdqU2R7LB5IX3gsCohmp6FH3yPA2JBQ95Mk6IK15mIvvCXF4zyDvESsevjjQSlEhmYOQ1Us5MdvKZVtM/EgIZmI+3Z+r5M39QWQ8XYkOJr1DT990ed+QVF7H0khT7nmvmVzDYjPE1qtTtzadhwxY8r0Kcmew0CgYEAzI9bpm5rvpf3jfTPZeKb8pc1/4zlUqV0kH+P5BHnssXBX8nVJNgUxcv5xFZrL3MVr5BIYrXSh5qzYduGXkjsjCvo0zdhPmGvRYeL13xJi8EijbK78eORpdx5dN1Oht36+THtWSYnOyFU1gYZEdb3JC0Sc9TwjDPh5RWWLp2MqscCgYEAq85xLy3uc+myaVXYqiZ//qYvb9ieno4ZlNPjy3eBym1BA22boeEbinAdUroWna1l4N/COZ0XwkFLNReM6HD7vuLnxyPqPMBa6xGtfg2sKl6iKC80c8ZpetxQfOp2OWiyGDByFEbTjEafnHP9CSuO7q0w/aXMK2JWkb9ji8K1OMkCgYBmFPB2uMn5/hpi9BV/0btjL4SZ9/UE7l6iMZZcCXdn5noe1DkSvuZ24tjM2xd4QWVEDKui3vumAlScdBG1AY1SUiNJLGzR1avC9eaabYLCRGp67gQOrTMk40aVRE+IzEQPkZPRllGjl3mfqMFf/resjPWVamF0hfun98LPln35RwKBgQCrD+b/1kcSdHRUsaG04vEK8Qpm86E9GV8eLorMJv+gaOAAQXAgxQTp1QXlK/1A11Fj5CYTYg5vQtI16K3KYuF2tdhRR5LRlp0NDK7wf4QNhuK9OQfroHoETngOXGnA2p/RMaDKkAgh49GLT7vMo98ztjsrcRQqNOMGya8L1k48Jg==" ], - "certificate" : [ "MIICmzCCAYMCBgGcnhPYNDANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjYwMjI3MDc0ODQ2WhcNMzYwMjI3MDc1MDI2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9DmQmP2YcsabnMy9bmRiBJsRW9lhZyYwkoxBFaeLhF29usqmSCwu/qCQfTGLApTlppSaT97qEBk7ZS9nxOnXzRUGGTYFe1LbUmbsptlJW1AEV/ffNWqMRcHZ3z0TVHpGWinMXj5jpfXHE+cnVQbEzTJPy5KsYHgJslo07hgfr+9Swlag1dL0wkoUi+bQc/q36joO9YafkeMsruOGEXqIBNmmnQnCqQblj7GjpM5vHebXVoJHUesWqVWDrMLce3iWGVCHdWEpyg7zSBEBRFTtaM44DBq4lWJis4Xp4CxsxulMPwQDJcv/goIVaghPBGkdg1fBLN1H8G+AWWwnAvEkbAgMBAAEwDQYJKoZIhvcNAQELBQADggEBABWqPOyc4ReF3EnjSaD3n6Fk0ZVGDJZ6/du2cqlFm9rFEVlnJ0GS7Cz8an88PTge098gxM3+NSCjfgDN3B2QO//H3SdwjmGvKm1hghQVYvfFafW/Cat/nNqm68K6MCGNGP67OeNMLyl3OAL68SRNM1hoNbCplDt6HhX5s1Cn/iZPEQ7t4o6tt/aO/07E+3WfS3+PNqvt7jPrf0y5OlZ7oCAN0cnegSkbanvZehBlRpLkWhxphlAR90PomrW59Ok60EITscXr1jD1vlOgrvnw41y1L5eSvO3g19rKgqB5NrniavRdonP605109SQacZ31g7vmH/2qvV3MUuT9UBoRRFI=" ], - "priority" : [ "100" ] - } - }, { - "id" : "b68cba6a-7e0b-42be-a3aa-25d5c342801a", - "name" : "rsa-enc-generated", - "providerId" : "rsa-enc-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEowIBAAKCAQEApFfSvqZKE30r0gu77DbLv5P6NBiEsCC30KlQp4gbyyHgQuHFWhPyUNJKi0NJGjyFzkw7cztmB7uJOa9oc54QQITdlzLEQ1Z8zvsv6hG5aNDwSLgCNiKHaIAxe6XmCYwhQX3LNGaUidf/a9JS+Kr/WMjQb9Y2NGbKqM5V2vAskq/p7CR2TLVShX2iGlPVO34qYbJSA6nF98n0x2ZxAdj8P77HqWJs0z/wRGxEFPmoWP4QR+b9q9f2ewr7EmIXOi7ZsxNF4g0CCo4zqUD4VGnGABl158zx+9ONedgBTnZNwnb9iM++bFt5exuvjbQ86jpnPrMR1yhIVKGSAddUlbV9IwIDAQABAoIBAE569BSAM7K/3SvG17yTZFQ99cdoCAFV9oHKQU5nxKIKMN6vkz+Tc+2dpuR/QsspKNrd86vxKyW5LGxkNBS2YFt3N5yrLSddB2gOcxCr2ydPU9feK4wvjAte4IKENGjNxtnQGTiSXg+/muWiAGZovlznNQabPLJkfhYDxuMxO4/mdcNSX3riJ/u6MtUS2BZMxOZWvZZ+t1boakJsn7LUycXngpMlZBrivZ9+bckD75iEAsTlwAzj2Tm1VgycmtwcOwvNAL/Eb35yqemBggYNqjxpdi+3Mm2OgHdWmWIdXpHbuYcw/FaKUKIFJ9JiBZYeDYK2Adb8pHQh050assU6m+ECgYEA5Xe0M6a/yL+j+0lpM9xrz4R21c67uy9Tg70l8/8N1rtam+M7hqtHYMwvtWZ1pSFSoxZ+6iVlI2xg5BqSX1tkV5QNtHcOlrrgysBWPXzz6oyrG+j2pAJ2bvNd+haCu2WOANPbs03bIc4/PUiPevXGKBf0ZuJ22P78GCp+/VZt4YMCgYEAt1hq2ufPSlbYJ3uItmBBPoIHvHDm4MELqjCSPqTo4BKrPdmlDv7p3pAG8+D/8K2jZEDRMyOatEnUH64RqQBuCs9YgcrRqkrzxhnqLGKllH+Z3QOwT+xCntkAnxI8fULeAbOJvw8Nb1dAtTODY+wrvmUEhvbyYQ76guzqtSTfQ+ECgYEA09acf4qTRurUoel1u7DjvqIVavD9kqLwQJBf908hIXm4/mzayUpaDNyzto2uUhHfTjw4UkTPh9JH6I03T9z5V3iQ5md7Cl/foo3Jj95I9+GBHbUF7Qdw+qClw3kAm6v3WoA7NN7NS/oxm4vfGa7Hjr/+mvS6rz1G0bB5p7sgma0CgYAtXwoCZf8cLGWNT7rDNwquR0tWzLG1yM/0K9Tk/7ZJTRVnVubL0TVayFWQIIv1qWKXupqKhzMPjn2Z4V+pbNvOfQUwCVrdQ3MUAPG8TiUfnHwc/36wKI1L9fN7ae3iKZv6280opLb0aKkwrjDDl3wzv5fhNldAwY4ovCxQ63D8wQKBgE6ZR/2bPYAa0O5pA7lPGSKfKYZY4U4zNwhgTAgzm2b7ONyJSP00yVwXoBX4j8qHbotVQY+8VMfFo49t3JCJ61g/Q/T3Uyd43fz1LzoQKFInDe1B7yXfPkEL4R7rllVmEvhoszgivYtevIoE//ZeHiMAn53nBJFgGuQyk7BMx7z0" ], - "certificate" : [ "MIICmzCCAYMCBgGcnhPYrjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjYwMjI3MDc0ODQ2WhcNMzYwMjI3MDc1MDI2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkV9K+pkoTfSvSC7vsNsu/k/o0GISwILfQqVCniBvLIeBC4cVaE/JQ0kqLQ0kaPIXOTDtzO2YHu4k5r2hznhBAhN2XMsRDVnzO+y/qEblo0PBIuAI2IodogDF7peYJjCFBfcs0ZpSJ1/9r0lL4qv9YyNBv1jY0ZsqozlXa8CySr+nsJHZMtVKFfaIaU9U7fiphslIDqcX3yfTHZnEB2Pw/vsepYmzTP/BEbEQU+ahY/hBH5v2r1/Z7CvsSYhc6LtmzE0XiDQIKjjOpQPhUacYAGXXnzPH704152AFOdk3Cdv2Iz75sW3l7G6+NtDzqOmc+sxHXKEhUoZIB11SVtX0jAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKNZLkRF4xSD7KltDoHn3ND+ouDaK5AQH4uZtbp5Rl+3beqwOpnPEJmCzhuhvij6eVngviL0Ga8pFIBzX7zQu2v8oxTFIbGvAYBH9NNkA8R/qsaosC4C/mEmY/H9UDGUXp1VSFI8e08n2GlnVoll9t1wCvhyaMqpFqglmD8SccGTKiBKeSD4v+SWN19+Wi4KOvI5wqR0KKrvlmNWDxbsYzsUbU/gII7Y5nsUB3L2RvugXssX8+zgTYuyBoygEgdXcOKsyWRQ/vmGr9ZE+8RuBsWTS0at8m3SN/nCkarboVFLhnqbRVpV5uLrx4LVRkGNmVCXKccf3Poh+DbxgLD/kNU=" ], - "priority" : [ "100" ], - "algorithm" : [ "RSA-OAEP" ] - } - } ] - }, - "internationalizationEnabled" : false, - "authenticationFlows" : [ { - "id" : "f1ec49bd-55dd-4584-9438-bedf328b356d", - "alias" : "Account verification options", - "description" : "Method with which to verify the existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-email-verification", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Verify Existing Account by Re-authentication", - "userSetupAllowed" : false - } ] - }, { - "id" : "72f9d538-d665-468f-8c06-cc6ef863d699", - "alias" : "Browser - Conditional 2FA", - "description" : "Flow to determine if any 2FA is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorConfig" : "browser-conditional-credential", - "authenticator" : "conditional-credential", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "webauthn-authenticator", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-recovery-authn-code-form", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "b7e3c8f7-17bf-4a76-8921-2afb316272dd", - "alias" : "Direct Grant - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "8bb954d6-800e-4ff4-bea8-d5fe51a101e6", - "alias" : "First broker login - Conditional 2FA", - "description" : "Flow to determine if any 2FA is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorConfig" : "first-broker-login-conditional-credential", - "authenticator" : "conditional-credential", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "webauthn-authenticator", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-recovery-authn-code-form", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "9459afd7-9f72-4702-9f60-989664925fd3", - "alias" : "Handle Existing Account", - "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-confirm-link", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Account verification options", - "userSetupAllowed" : false - } ] - }, { - "id" : "f78ffd37-a52e-4c1a-b524-e7e30e8b59b0", - "alias" : "Reset - Conditional OTP", - "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "221d25d8-15e0-44f0-ab87-890091819de2", - "alias" : "User creation or linking", - "description" : "Flow for the existing/non-existing user alternatives", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "create unique user config", - "authenticator" : "idp-create-user-if-unique", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Handle Existing Account", - "userSetupAllowed" : false - } ] - }, { - "id" : "3abe4382-9087-4654-9f6a-13a882af038c", - "alias" : "Verify Existing Account by Re-authentication", - "description" : "Reauthentication of existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "First broker login - Conditional 2FA", - "userSetupAllowed" : false - } ] - }, { - "id" : "bb681a9f-3bfa-4fa8-a8b6-74463a6cf493", - "alias" : "browser", - "description" : "Browser based authentication", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-cookie", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-spnego", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "identity-provider-redirector", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 25, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "forms", - "userSetupAllowed" : false - } ] - }, { - "id" : "f02d0da2-4f63-4ec1-ad1e-1bf5b9388e44", - "alias" : "clients", - "description" : "Base authentication for clients", - "providerId" : "client-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "client-secret", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-secret-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-x509", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "0326d889-4cc3-43fd-94eb-fc05ae1277eb", - "alias" : "direct grant", - "description" : "OpenID Connect Resource Owner Grant", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "direct-grant-validate-username", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "Direct Grant - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "5cf04370-c12d-484f-befb-47fec450afc7", - "alias" : "docker auth", - "description" : "Used by Docker clients to authenticate against the IDP", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "docker-http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "e9abe54d-edc6-4c80-b72a-e6603fb03a02", - "alias" : "first broker login", - "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "review profile config", - "authenticator" : "idp-review-profile", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "User creation or linking", - "userSetupAllowed" : false - } ] - }, { - "id" : "39318842-fb7e-4356-a97e-69db12d00280", - "alias" : "forms", - "description" : "Username, password, otp and other auth forms.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Browser - Conditional 2FA", - "userSetupAllowed" : false - } ] - }, { - "id" : "725e0d82-e0b9-428b-88ed-d11ddab6159a", - "alias" : "registration", - "description" : "Registration flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-page-form", - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : true, - "flowAlias" : "registration form", - "userSetupAllowed" : false - } ] - }, { - "id" : "ba6f9d02-2a96-4220-9cbf-d3f64718923d", - "alias" : "registration form", - "description" : "Registration form", - "providerId" : "form-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-user-creation", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-password-action", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-recaptcha-action", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 60, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-terms-and-conditions", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 70, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "3a53ff54-b0cb-465f-86c8-e243d4ec0004", - "alias" : "reset credentials", - "description" : "Reset credentials for a user if they forgot their password or something", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "reset-credentials-choose-user", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-credential-email", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 40, - "autheticatorFlow" : true, - "flowAlias" : "Reset - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "b977c3de-2d43-4759-ba01-3fc5af17b0dd", - "alias" : "saml ecp", - "description" : "SAML ECP Profile Authentication Flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - } ], - "authenticatorConfig" : [ { - "id" : "c10561b1-ae3f-4cb4-9608-72fb3d83a98a", - "alias" : "browser-conditional-credential", - "config" : { - "credentials" : "webauthn-passwordless" - } - }, { - "id" : "d22338ae-5ecc-4b20-b781-fbcd610ffcb6", - "alias" : "create unique user config", - "config" : { - "require.password.update.after.registration" : "false" - } - }, { - "id" : "4338fbaa-8922-4274-9b3b-f6c9c00002a3", - "alias" : "first-broker-login-conditional-credential", - "config" : { - "credentials" : "webauthn-passwordless" - } - }, { - "id" : "48dfd05d-b3be-4d5d-a704-e1a1ac93b8eb", - "alias" : "review profile config", - "config" : { - "update.profile.on.first.login" : "missing" - } - } ], - "requiredActions" : [ { - "alias" : "CONFIGURE_TOTP", - "name" : "Configure OTP", - "providerId" : "CONFIGURE_TOTP", - "enabled" : true, - "defaultAction" : false, - "priority" : 10, - "config" : { } - }, { - "alias" : "TERMS_AND_CONDITIONS", - "name" : "Terms and Conditions", - "providerId" : "TERMS_AND_CONDITIONS", - "enabled" : false, - "defaultAction" : false, - "priority" : 20, - "config" : { } - }, { - "alias" : "UPDATE_PASSWORD", - "name" : "Update Password", - "providerId" : "UPDATE_PASSWORD", - "enabled" : true, - "defaultAction" : false, - "priority" : 30, - "config" : { } - }, { - "alias" : "UPDATE_PROFILE", - "name" : "Update Profile", - "providerId" : "UPDATE_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 40, - "config" : { } - }, { - "alias" : "VERIFY_EMAIL", - "name" : "Verify Email", - "providerId" : "VERIFY_EMAIL", - "enabled" : true, - "defaultAction" : false, - "priority" : 50, - "config" : { } - }, { - "alias" : "delete_account", - "name" : "Delete Account", - "providerId" : "delete_account", - "enabled" : false, - "defaultAction" : false, - "priority" : 60, - "config" : { } - }, { - "alias" : "UPDATE_EMAIL", - "name" : "Update Email", - "providerId" : "UPDATE_EMAIL", - "enabled" : false, - "defaultAction" : false, - "priority" : 70, - "config" : { } - }, { - "alias" : "webauthn-register", - "name" : "Webauthn Register", - "providerId" : "webauthn-register", - "enabled" : true, - "defaultAction" : false, - "priority" : 80, - "config" : { } - }, { - "alias" : "webauthn-register-passwordless", - "name" : "Webauthn Register Passwordless", - "providerId" : "webauthn-register-passwordless", - "enabled" : true, - "defaultAction" : false, - "priority" : 90, - "config" : { } - }, { - "alias" : "VERIFY_PROFILE", - "name" : "Verify Profile", - "providerId" : "VERIFY_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 100, - "config" : { } - }, { - "alias" : "delete_credential", - "name" : "Delete Credential", - "providerId" : "delete_credential", - "enabled" : true, - "defaultAction" : false, - "priority" : 110, - "config" : { } - }, { - "alias" : "idp_link", - "name" : "Linking Identity Provider", - "providerId" : "idp_link", - "enabled" : true, - "defaultAction" : false, - "priority" : 120, - "config" : { } - }, { - "alias" : "CONFIGURE_RECOVERY_AUTHN_CODES", - "name" : "Recovery Authentication Codes", - "providerId" : "CONFIGURE_RECOVERY_AUTHN_CODES", - "enabled" : true, - "defaultAction" : false, - "priority" : 130, - "config" : { } - }, { - "alias" : "update_user_locale", - "name" : "Update User Locale", - "providerId" : "update_user_locale", - "enabled" : true, - "defaultAction" : false, - "priority" : 1000, - "config" : { } - } ], - "browserFlow" : "browser", - "registrationFlow" : "registration", - "directGrantFlow" : "direct grant", - "resetCredentialsFlow" : "reset credentials", - "clientAuthenticationFlow" : "clients", - "dockerAuthenticationFlow" : "docker auth", - "firstBrokerLoginFlow" : "first broker login", - "attributes" : { - "cibaBackchannelTokenDeliveryMode" : "poll", - "cibaAuthRequestedUserHint" : "login_hint", - "clientOfflineSessionMaxLifespan" : "0", - "oauth2DevicePollingInterval" : "5", - "clientSessionIdleTimeout" : "0", - "clientOfflineSessionIdleTimeout" : "0", - "cibaInterval" : "5", - "realmReusableOtpCode" : "false", - "cibaExpiresIn" : "120", - "oauth2DeviceCodeLifespan" : "600", - "saml.signature.algorithm" : "", - "parRequestUriLifespan" : "60", - "clientSessionMaxLifespan" : "0", - "frontendUrl" : "", - "acr.loa.map" : "{}" - }, - "keycloakVersion" : "26.5.4", - "userManagedAccessAllowed" : false, - "organizationsEnabled" : false, - "verifiableCredentialsEnabled" : false, - "adminPermissionsEnabled" : false, - "clientProfiles" : { - "profiles" : [ ] - }, - "clientPolicies" : { - "policies" : [ ] - } -} \ No newline at end of file diff --git a/seeds/pocket-id/portabase.zip b/seeds/pocket-id/portabase.zip deleted file mode 100644 index d312ddc3b366a4c0733246d0f135ed2ebdf08305..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273583 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%0D@H+h;%^+64eoCC@m`2r%yO)`)3{wZ^k+2%Y} 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

&ppbE8{F0e@ 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

-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

Q6_1(0&Tb>QRR$jA4e%mHhHXtU> zLfvflqL43`3u$s;Oo=YRr>fVM%DNrAaLA?bFqlhv7JA${u7i$b^aDI7pESB1Ho9Me zAmG0~KLa>~LUa=Mj2pxq<3`(w5z?>kFRL54-#}tch?7*;H_Km0Y71J4w(n=8dSLCm zZJoG(btIr9Xu}MGqzc15!7y~VCF>m6DtE)0nJdzp(drCwO`Wf>(>nR^E-s4}|a@q&+CQK%UId zoGQw@`w6P1s|Y1;ZvoIjbM=KN`#b#}KvPPM1hK)p(|UENGh5sgB{0@N&UN~=L$3W@ z<{{N@c058^S^0plGvvCBB4{4BD2H798bt!`$f3Q@u0uz?vpGO)4lH=43?1I%ib4LU z+R%|Fwv)~=oSqRM1M?Wnk+6<1Dlo@EhR@_C1X;}nqd%^{h3xUM@_OLV}jtL{pi zj9;X!GI-5uC7jlX;!^q&`HwO3U;C@&zinVe#UGE|>v+(ai78$T!WO?(qajt`Vcki5 zVXiojoZb5)tsFR#9AsmLC$!6qf5xiPcpvvxYhprkd0Ve>IgEgXcQNrZ4f4aEB$piX zgp+pzF-Bp`qK1< zY4day)I$YO>n(OsvO46#8r^1Wh3E?=Cfn4L`8_BJ2HugmEm)}Oe*%(%uFO2R45J3v zMbX~u-Yu5O%xA!yZ?h=YR#mj^LPPM!Y?A3*lurkyvr4n5$sNN})=0HZ<8z6F*`(KotQB7tn8762N72JXlFA~bg}biq-~5`1R6HS< zZ9k@jX;-<+Eh_NNC)RXx1}ecK!-UCzpaUjVrobdC*2HEUrP6wg z89nn^r_mxk@-4HR+K-t%SXVGCP@|XSG$n9!8@sA(>N9GUJ}we)K2#fB&Y(|oALMsw ze?BCEUeVT{ep8MTGc)azL>44sU>yd@=_R=en0(fWAO^sXVX(THp)7(HFg z!A2;7jzCk)__R;o@ZyWHw&uh=!+5g=8izRhahEFN-{stFs)X!+=#j zr5craj(513S_iJ*S|7F5RM(MYD$~7x8^gqPdT=7@zQfu^_P12KY9feiwK#0gCUY2c zSeLZpC15&u%Tn5L4ImOkuQ1e6H71N)*YR@^uIrL7_{0m5&&g@~>-!ZUN;L6^%Jy-x z*6HhaAA@-Z-+UZZsPcNGSr5M9Ck^Ip?qiCCmV=k77#pL)%<3cJ7s|VmJ)ft{5e~qb zQLPy9tX;m)wmHdI2^f#rHlh%q%x0Y}uq2R|k;!9{*2ilm@5n%5mSOVyJH|_mS_NgJ z$Og~VR&)l^f}p|;{~?|@!2+GZnYTb2W&DkAponyzJd}_=%w^KHTDIfSpx`-UV4*4I zla3G|f4=>sLNCc>Jb)~g7%3O%^taz*LU;oM?ogm<(Q}59>qa5|uo2Mw0%D7a= znwD%wIR!DzLLHZ(q6aUDP&zo~IuFv{#@BS>_m$UprZ+GvF&$*&JBAhNIV61FOD z|4lJBG22Q8wtlQ)u%cf)yW+6Fixk`K%87c7hcRuavzm0 zbO?9;gRdb(U~thX*j{8gNR= z1a5?94}n767XN&s=j?NHtb@OhDCIqIM1&o}$0>YmAgK@*CH@_d{iw!=+6=9g6eU3` zmv@Pzojid0Ff4y{<|#?pp54qk}{6wrZn0>t^n*xn4{6 zAi%ZT4rvld4Y0sDK@GuX&AuXhlahJyO#vHk-QH)x6ghUQ3kr;&Uy9dff#49jK__yP zp^B+$?h;$@h=WyBamSFr%Q%u=OzEB%0jx_qjbbiCkX0yryFx&z&422VR7`{4+N z_d7>pyX*2JN! zv^5K)Jl^>hZr|vI1J@-YI1S(5v31$}`lL$mQAXPW2e z@kfOshX;2c+-M0>-NLO&uuqc~oFR0Z=q9+}( zr3p!<%_v4_{SO%ry1!~=d18FCmpzPG>f+WB-(Prz!6J{@MT2pQs#fjc7I^?;=mxo3 z`>()?@L}K?h%{Fb4~IeAP%PfPKAbxD!SSXyx)!of2mX;zzVb&oE!HSZi?}xe%}WUk zkHYp4exq3pGM^S$$(UY8z467$CSriFqK_s(h#$h8IjeZp144HucEKF=)bfJf+otVQ zk(%HhBW@o;951jTZ ze>c+fiDQDisvbcxqDMjKEG%b=TfUf#TsVCuCPWW+k$(|%t%K#eT^xoN)P=~_%7W;% z!M%WbSS|dR8;du1(U8U~j_eX~`&U|42xhfzy);(EWzNg5$->=PXPF2I0(2Z>N+ZL# zq5TS((R=Map`Rstmyg{c+^$)j`thM>j+FSHAAze<`P<$2j$0U2CCCWL?iH16`8QT! z*LLs|_w~i-C(UL$!DG9P*xV;H;xRrW7;Os%Nb7ENRaP6-ew5f^COUUWkgqGtTB*?@ z9rV_}V+KJTjCQ&K!lF8|!OPlJxrquiT1)Zx+ngOGPwY#`hfW#m<)I(Mu$J$H0gyNc zuhMb8B$`{NG}q#_Te04!fzsGSqZEmo4RkW=8R@r|Zbl#Djj*fr^M*$giEleYM%2)0 za)5^uw~8OG5!0~T!PA_G1R^9clObQ>WbdP}SdX=#%)-=vB;*}k|vCc6Qg<=-Ek=uZ&xVq565 z5NZ+ae;b#oM#B!pBrOl$P4y#Sabldx=W2N|_hb&p3!hjnT;g}Y= zJ!_fQW)@u6d?vxgSXiKu>Y9ug8u(jfS`GDmtTNwo#8k%UK5!0pR0j2aipg+zn$}ii zSfJ8rr2J<=sc*fBaQe3P;*QL-*y|oo#Wxiv67FV_gw`?*y4wX|9abWB*^`zJlv~UK zGXT0gP1HooXAq}ruAw!^ROAw}b#~_dg)YB9?UtD1i^}|=3VXTbjX^JmqT;H14d1

{FtX8BG#eC$(ICTz4H!o=v_ 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 z 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�KkP-4f>$F+yHzce!k4m zAQ3f(w>U(hP<8tW#eb+oYfh5+^65!V?>;rxCRzE8b)k&=Y5O)-i&UQ1?Z7k?%Zf98?ibOn>0*9?zXYKDl zO;`jd3Z@p0HhXAgZ_)BTAC*q@@nnwQMwl5<_|Ls7i{b$m;)U=BR|X$2*5!reQHexX z2&#;*V>yd@vKac@YpyEh^jLW7WpTgUl$h*omm`g){Vhq%wo5;vp%H566#kGvf7uXQ z19$Vw@+9^EOSj($s z6l8UoLUy6|I&%dC%tR>E@TUhpNh~lqC38a|`c2+j6x?u54FPi6+F}QspL5!V%I&Csy-~!+$Z*GOsja5+6l9ldTSGE?0;|C=D~zx zjZBZxs?gNqWtDA{AeyBRf5vYz510n)=_4+@Oq0^w!SqN~-?%f6ej>S1*{^!#MFjQP zdPG`DL*5p`+6mYn zcf7C&#BjfLW)KWP!^kqVh>tuo)*L;B4Wn)Q%D)%L?k}XnvbWk0Ck)mIIzT7GG$W<- z0&ZMNn`M&&qE2ij6?$8N#Sa60P{ulM*CjmqM3i3FwVliryAeK@y3`oa84u$9`+{6F)YO4vXdNS=qf>3I)Bm^ zvv^XAP3$>Z6Az31ky9SmkXESE5|v1NO4Mg=xDKXnNjL;X11@{SXl;TOr!^VgO{^`x z*$?fCmMJ@5)5PhVqL}=Q2h7@wBnOtAj=)#s7|w_6`_2E2lcnUl#OD47Z zA1358n%;|;`i{>pY%`7UL2bG(ytWBTXyUX(k?@rb-Qdq99kgUANC^H{<4~VR4$bW) zctVE;&kzhzj5M>t>Vs`JpdnfDFQMS~Y;>RVFP01N?(9@W87=dw7->GD=~*pKw}2)a zdD+|+%xo4#W0#k>538oE14Bhv^PG0^P1+?9wI}E%c3B!;Rxr~D`qof$NZMiB(n*Fw z7T)sD%o`B7kt2yqDcG>E1Yk4gg|bf`=iD`nDnl6?L;2ww@d(;Em*we!4)-J9Um0eg zq_QWXdk~a0xeIcJUSb&L;w5|Wa*aJEP0>lZKG_1bZcQ*n^$RNr=6308P(R&)r@707 zFyMW6R#2^(nr7&aOymF31ydJ}5JjvXsm01p|3cF}J%KdH6SLN2JO&ZD`8FW)fHKfK z`T@5qNM9)ykWFjrO&FFeDqt)&df&Iu?r7m}6KW6rWfkB~t4B9fMkx-0lps8|lmL-8 zKIMZO*N$c1LPCi$x0W6c*9Htz)WX+scllOEYZpbx7FlF7E;={fqM7P~R%su&Bl-_T z!H9aK? zIiCa;+LMVQ?8?>cNNjojDZU+4o2QN??+i|SH1Xxb%u*rND(otd)+F<2( z6~sVG<$eu?N(+hjcAN~B5;!IkK3q2%*A`@i7*tXIxWmNqAw!ma6Snanhm~CmTa$h1 z`Lg&cO%LSPScRBw4ozVQM_!|el;ZLy1ZjzcW4U^!qSVK|{WlZa!3?*oosa7i#o^mRwaMh6A5T^1*Gg@>;yMpzZytMYlZ$xn{2Xf-A0J z3COaDkMKes__hl(_kRv<|v>YLiA2L>mJGDTH%X81JlT)AC6;W;rMVTB*KR; z2ig80+kn_b;LHq?V>tYX$NsPMC0^j%N8KH`z*CX5WuQ=)Hd3-jv0#>oB5Ate+z4T` zk}siY65pldNek9$n2j}t4#CQ)vSWz-cA7SL4d<#ay^AzC3r zqJQZbXjtawDJ=Vv(Z=FdO7=d0_l%jA_maI=j>uv=KdDITWG3l_8dV=RpEC9hur^Hm zURxY5(?Rr5V3=UI|BiSKDg!*DCglsnblPg66oSF{!pr{`aZWi@nY2Q?eDEWeUdY`k zhQ|IGHR4nA2N(`wt>it6&H*Dd8o!q!(WYNZn1@g;n?MkIQ3=JhI@LflAWM;04WPn7v$w0cuoa!dg& zyPHs-YY*t(s(-iEHHG;en{Hlew#Ek4u=MsO2F+B4JNb_GH#uMGs$O8V!73u6kc^Sc zcSYSOl&)mSJ4M9}C(y*rZrax3UK|Oq2TBT%yXC5Z&eA~di?}NCNeM$n^MajY-e^B& zmU_m`mA$oXmm5l%9YXu~#lB}Me(dARW0c=u=BIleT_E{jz32F7n1&GhP&uM$*9_v< zoly%$bEHp-HW8%pa;j9YP=Fud{bryt_KQ%~tDGd>t0#FDGvZKg_%e?)1f)NhRd{2^ zuOz}TBo9)hA6?i>{6FPJQB~i6%d`85;ZDuerfnFGZ5<`dG`%XxQmVxoq4-RiGc7x3 z_|&wb*=a--P2iS!uozB@!qZdwqQc~HVcF0yrYtE-n6sQ5lGDEuTuKRtt~Yy9@4>q~ zWT@muY%PCyGM^xif0R75?sQB{lQyB~Wr`#W=7<;LtV;G8h65b7^=m|-$-2K^h%2m{ z`;iUD10;A<76x8hzwdZN(I+_*eI-{3)n0Y+A5E>xqHnqp44$nuP+F3(byun)bgiPo z!XeB}9T1yGapIMZntF*#HdG__LuSTb_ zaJ+y}Jorj3?o^uq@74pKo2cGi3Vj;@Kjwd(ej&+E*`a0{5P@Q$rOYd4Yg9kgGj-10lW9f0nrlXI@~kcI8wyRy-T&JJEBZO z4r1rae-Z`)-G$@s)>JO~Z6a&SveT|_-#CL|u`v0dnH1`VFyty@r_ANZVh zvei+?3lI}(0Qs3z1Jsz8)hTY;L=RCrZli_E*5;JA9EV$xoogHo17?W>Xr`df8P-d9StZq6 zNVNsB&#|ILEUz6ozRf53DWLX4$^X-cgj+Ud9%16<12>}jFx-h8Op^BC+1+PdJF!xQ zWY^-_;c<@)TrQoM0&IPLSfzG5qm$d8s0=7q*<7e}pNr8MF7~cZEhglz*A%q$TA>|h!05ki#CDraZKaa|b;*dQ3 zW`&;Gdg6LW%~?TZTnp;7$L3Cby!!XC4g@^_Ifa__&!>4$kHG~s>U>g~XmApM9K?G1 z1@7VIiMzGrtk6|{Bqz-Y&-C8`YM`PPPUa3GTalF$b~s>ph%e-pXnfS~*~B2DwbWG$ zkQ2A85|Kb6brvO7;h83()hH%u)H`cq&x!BePx;xVT^-_AB&mwNT#&1j;E}InXj(e> zDU;F6RdsdAr`7Add}Xb?D63Dv#kKFkqxWfv?ImYZRPPBWnfHPCg$%xI4iGPV(i9kE zrEpCNO0I&VAFpsw%YyrNKUn0T#LrdBN3ZV-`grfYrjU+`1WLq_*5{`?E*fI7?brU0 zZYP6Kw7q}h{?kd$WkO#r2W&NC!UOAz@L~_# zXZ(9(@CcuNJa+g&DZizE*DO2!RIVK9Ve)|gWbGHDgliDU3klF*O^B?Ii$58(!dW;? zf(r)p)WpWVUK~TdExjx>Sf>Wml}%bNx;t}9Qi;9~oFrPkS~5k(>>F$R|nuhlu=^lCW)^svD-> zL_tBkeS^7c=-k4q+nke_VJKKGx~bt3|4W)Hv4UW`k>arybQ}k%DE0HjMnltv9D!e3 z4q<0rWPkLPN{!YKBF$03GHp<;ko_YrIN!=5;w+2`_FEzakv+ylU~@MjYYr#@@pv?p zn~7Q+{nEf5?)V`Tw}!JZTJ8_!v8brY>&My5z&d}aa(ThZDpNXzbDm}!DuxA9DMCb@ zh3QA;9yn~%%8*NQlCA4sYGj}u7TJ=xlYXKFLDdp(9KGe5bmx*hEX^ZOE@EsN4>^Di zOgyeTdjYA;qko_hepm^FV!1F$VcI}pO0!>B(k+s*2E$xVnoy)CqG0Llvs7_3B-tKREzud>^hxgx01>n4ujc(iV;dXfUszVnQC0aE&;?J5zt%HCLr-4e^v>-BAg?5rSP_K=9Mvcx8kvnR}S zK75W&seXhZ9}dk!oftRdzPRPzR=~%4nrTnT6_AVJ00Q}VRAZYq1QU7C5w4VN9hyb% z2LzrF$-u2y=4$owI?|!ou5)haTKNzKv)0hT?)bl)b(m!LA`$VatNu`J3N;VCx1QjI zDga54)m_r0$F8Zp9?>qRF+%hV%B1-k-6-yYe>~(TstlRc4g@U7_T8u)krGF(?4J+F zSC8cwBp>u@0O?A{O+G~vDBYj# zzx1GUl>Zl30{ObDb;osZL*%C9rdNmQmc9zlpjLEKGX!$oC$8qFz?r=R2f;9&^4${` zepbc(0t|cnuPc+deEsPfiC}^t7Xh}Jh0CU~Zk4P9v#`srd3W|7D5z*-z_0c<^xI&Q z$_nG3dZn$y(0}j|ouDGyY~T!>Z4miH-DMj_v4Ktce*6mm8>EAHMNZHAi>x0uCfGVy z_1O^L3#1lL%^~wLIiF6Zsg!6-4qHSIA85^-{;-CA8LKLs(?5fP=}s&t=v%4>n$)dg zU47_hI>ZSerJ^jeYRX9ss&~mPt6)p)U@eT}UvCyQFJ|M-T;fAd`?u2Z^z&?2sXh`M z{w58P^zRS)2#Nt~n|RtMIZDTUR?)mF%Q+buV{g8jBPYD+4lG+>g9r#Hp>=Ssn@_a7 z=YO(esvLyt1GWj~Y?q<-@uCmkG~;A+PQ_59RZ!rEdEmM`!ntDBHH5VUl-N@sGsO2f z>~hHFL?2fKl!0L{#E9B>h36wHErLA?KjF_WWxk< z6-3OTDlnRV@)Vr({el3}Tz~)TD0set{X{UIt)(54RFoawB^r(Nzm+jxdu^g%MN*#& z?Z_xc?6*1m?y44V{Z1{WqWU?l0YZ~p-S#e?kqF3*T50oXLb*)`09mUN9QvxdC9UmAh;)@_;pvwPe1#KBbb33%QI89 z0(f?ebaY4W^-b5%J0rBq8!gWM`AHQXq?G^HIALcQ3k!BW8myczbLHLAjTc1R!v01g z@8?NlpYN};AHhZMr$hXnTki%d@y0gy+%@9`_jfu9G-S%Io;&TA0pwXajqx-^)Zi#M zvXR>wr@@CJ9<9BOjAHU-`Bz_)Fvsx__xrqXs5=kDiWV7J%gPS*r1TTo&u)u|>POc6&|RDd3aT z5b6&Gk=cRwun8;Oz~gkwRUub|keXB_tzGZZ*{SUXkO1o}0GnHV`<*JpRs0ie>z7&$ z8^~P01YiEnF>0AkSJp87e$DR)-B;OMdiin_RB2{fyX)AizdHcvcakq-htHV__mFn+ zbO51L9UeDDL2Hh}qK*t@`_FX2dsC#B3Vaup1m#}~#l5I!a^D^VCfF-IPQMdK9gO{TT zr~3G^!$nQkVdNVzAULJU;doDZ%|Ai)o?2^l$<-@Y;cz zD>gms7fNBz?f?lm3U&tb8%{a*+y!DcloxhCO!a#pQ)07SU=mjy8`f!Yv|Xb2oN*s3 zEkD;NnHU4l7=}9ssNc=!HhQCJ^MqyPVmD0^c`=fSbyrDjz5AYJQIm^aln0de^hBgS z>9Q@tD>I#MgX6$Sv;Uj|N8#3B1EAw#d9qP%J0{Jq)v61y5vzgp5kRC^?b3gv&8BB* z{*lpkgC3<200zt|r1pjvc#I8Og!71fCD+k`T!EA!Z&U;%+Fh3N^r%v!aY+&^u;g@~ z>;5(#ko3HRzOtWzrO>N1-G4(0iJ!cI2RSgbLBP~EBf$wyl7*L zr+R_;%%*@@W9W(-74DA?#k%dit?JTIb9Nv&jbVcj&Twzpl0P`5EDl~~mCgg-M^61- z+kt1H%gRB47n3&$ZbY^d^$N@SpPeR=Q;Qlk*S;}ZAuSdAKu`I%5;9M`GW0Ub*Xml` ze&L<7^#j;TctE0;0C%RSt-!cBMWjA-w_eG7YQ7gwVA4q2@rY-v*9R?$MVBu4cgkSx zkGVPjd3izSiS9LP{gnRm^B8@9Lv-`;WBuPZ-E5XJN4e%aE$;Kr#ghfDZWp)dL`k+N zhp<00n3eOONh!xJwrC-uoKd%+rRdigUR6?gL^2eBd)u|`Ocki}O>2IF55&A$;?8x) z0H^im1Rva25b&>ivd9_-V8mB=v<@Z;yWU}X!&%W4u&3|V;eF*dK*bLy;tfP$!9E|> z?veVvW&4TCk5n<2TOL#(GjbVM+RAX+>UWiw_xzr8@FUmWJev36%tz_-_D1fJz%Myo zrbTI`<(b%Yyacj0K43s!9o&Y2Gk(0ok|-!i?6%i{Ja@Wh*F%5q5JMCi?;8Firpdz3 z^_;zdY(u!ljCT2)4!{g=zU5@eg@}%%l;KI70Su2AXQ3KfP5h9%tb7xX$=MFh*5*Qc zPE+bWi5pbQ;I8k=gK(U!b#GESF}$@imf5cWoD9wSJEdLH*W6fk< z56KB$Zn_+p)?SQKdwO8&*Qs<)pC1k)d0n7VRL#4v4+@nnXZ1n#xz&7(JtsCLw?-T7 z7HEuPEIDiZOcR^p6G4WO%H@FqsY8YQoG3oOS`lRVNXzDU(UzRMiqp|^a?ol%Zb^9f z#iw(ySGl6}8<52t%M0TkqyL)mIZg}I>M+dH_VZZt|MWA*$oKwj zzvg0qUbpJr=RZ7}c3DYs!sSiu2vJ07BKFjtBmw4HAVp`cY?o4g4hB-)dVLD5I^u*U z{sXhE75tOPn5>-cplgF20?7^n$0)pnS#&I-ZYZ9> zM;I#!-0;-#ju`|Mfc#sf%lHhdV{MdyVMi>pXxlsnnrc-KNX>o6H~F40ftafxrLF)1 ziVSMSMzCdj_V^j-;H7&v1SCdgr?uXY*FFcG%~c$VW3cLW>i*w>YnClXtlwt;TK%3n z-SQbs@g+ImOQXpkcL)(a88lwJs#Yl{o`?1;UGYi_=DQVY+MB^0;rb~io<@V;@MC5i z^ZNYn63@6cLI0H1-tZPrW6Z>DJ{PN0Ua(h$X!Nwviq*3zQ7ZmYdb^o_C$kzH>b58!7XEu}ZJ`0eA^9S8ODdvk!EYHW5 z7Tg_f67FG+m-*J@TQXL<{@zR2e+>x|Y^aqt%N@MWkJJt%QSEGe+IybiBskG#E&Jk? zx%3n6S8^R~<3R}JR-5ZEG_@=otEDQ`F0u!@GfIM{>xD<`#QDcE0Tj>N6Y!n+!y>Iv zZ}rl&>Dmn#&iCWpG{R=Zq^YrUCUHFRHJXL{O8MUvJ`oSP+*us*8Twn!FDny0af|ba zenKQuh9=Io$bR045EGKWi0icZ=aQrBpMo>#mG)b@YsGWv8#LlgDUNt4#0Kx1D`_ci!3OV(?jf;fG^>X%*5 zKIm4P@tGX)UCop#D0x`VFzA(_lb*anoN3zOz`{u5UBF&pR&!*+(onr6r%!Cl+&o_= zb>F4jL)$MbrAj#MDI}y2F-n0-mCg%EoBr`%ce^&{r(UcV2}RVOv*;}VbYvaHYjfbr zUA)s_QmZ=0U$g1m-pe{__>B2otg(s^2>NR3Acd1@ae}Iz@YyCJt%pOZ_Gihs0L3k8 zz50$^vd9T}!lGlsb?s7RS`XkN#!XM6SO?r;>4O1)xK)SzXS zZNs;7)HFg$=xHog8@Z<-U-ZW~>Ou)|){?Bi*dwv##c+R*!h@KkRi+Wc=x zEJ3KHZ=Md>a#wBKyTDKJ#;Kk8njQb_`_!E@@UR8|{sYs@#fbfWfB1ir$DK9uc0~v< z-gVpeNWE%GYI2D$t#SwoA58HPE3t{>HvYPCrbvh-oX-yr+UP`sLW zoAAA&07FDOm03Vgs)@_#nt1};08U{!G$Ass|P(y|2?`dPig zmBg4tI4`BIG`_&p<)0}KEm97Nc$f1x*5$uMoGmee)V65tc6+soRM)~LfgbooN;}t8EiBODA44lX!6Qy;K$*dt{-QSd zs4qxiaGqw^jnQzcW)OKeIonCCBp^x#V6tiMJok$9Hl+_?RP=?9F~2jUdco8(AUhX8 zh$={;2)a4vNKcvV5#<6u8ZzOFK#LuC&8?x_jrwtwLu`?k?`cE3TE%mH&&JH{?T*Rp z(cF8tYS%6pQ}1m>7(&)r4>A+*=l16!HCP;Yb#N-ETx3-w?mT9A!CJCo>3@8cne2u4{V(F&bo~D5PyW1twE>3eu%|o~2m3PgFnK*Ng&!v^ zp^zXr@XIYD&ri_Qu+E)1L}-aJWTLu(qjf4>C6mXIK15*#-!Dgd@eyw~CL@uLpK}Dqs3raS2 z>yDko9u&*y&$#~(U^)UJCmc-a-bAhKhu@3dGL&RIAWZS$YxJn?DRYkG{PGpN2l9$X zmP23KYF^X8gPenR0W; zhC-AtTM=kgfOtrb3f5LUIlv;_&|HVvN5@}m zkLak!%Pf`5G%l!^>!a;hrV>?=6jTmakO{HkuQRy$`!4LEu2qoKQKjDFuC^97kG!!o zmocjGUU1F^L|OrNingeBz1FXko3wbk|7HImaMy2rOfc7Z;WKRcPreFU%ToDxH+64i zsV9trfbvM}3C^}MDCh+mTV@tt-r9&!H_vGGXH0_b{Q0fxha*EuVdK5_ORmI(IW#V< zA*C4SgP9&5ol)wMs%>1iQkvI4`hbegA$EvilEm$dp|n9c+%V-xJ|@OvDrWf96sdns|*Ir#%;$ z!A!$ehXY63xo(cOL5Ph+Ene)Vy;qaFyEK(2y$T=d2(cwuKAU?$hKurO!KVK&evwW& z;*$rR*}4r^Ek(}`g<*MxN5iL{h%)l}d%}^Ts*7O&IvHa%G5#GjbL*n8&9@kJb$q@? zW85pPpzN4**I*Huc_(}=b$!0FP9DBcFHYz}uiyKey!mf;6mfko)L@y%hy;Nv5bbO@ z;WlyO^|GP2d6BgqKUPSKj=yDStS<@{mYP0PSvRmeVmq2%mmsI2>6G8<~m`R)!d1#H~Pbp;m!Z?miEj#)7T;R&h?r;JJoW zdV)kf$9(3wY4M;W65t0#EJ=?dU1z#Ax1Je>YEAtx&{kP8RPF^U*-vS^wWF{+%f=CVHx3U9QeNJoW}uRpICM`H?t zG{PW!_Z7l>{uRuTPqW5C0o4>JVM&RC=Y=$)~Wn@1?=J_1YM1l8n#EGgXr2xSC2^c zw&8U7eq%C1aQ@j6l%i;bxJ)_3N*^jc*6z+PXgnIi4qImmoxd365>`$vf|=bHr;fD!V%&SK*f3O0Z@JLa= zrM)PN!GeNrGU!Jko3?7NESm+(b=096hyk?I?M2?OS8?{%@4jp(8N1N1qri=aPa0~6@RM?u3ctRcMKC;@+zTR~ga&{Cn>o);$djBkL5 zU-2iUiJ&ZpD?9R$g$;(HBM<78g=O9qSf{T- zx|6Y3=(Ni0&jf!_ywV;Gl(Kz;s;-K7&PQ32k%Yfod+Zid_Qmz!wms7;-emlbepLD#Y1o^$4u6_c{X|9-?9dB z@8y>XrZ52EFfPRhx)RwdpR{tEmV@KZct!sYh&x}Ugxzjf;6Y|hPzQ!O>x>WqiIukp zVoI+(k_w_W5zWqsnfzz?xb=2kj)R4^J6Ea@)JG^Q<{b7G5SWPM7N48ux&>X~ner4l zzm9>GnN*R=-Hy!Ckj<<5(>!~uN@QpNozIW~(Zzv*%aKBTl<@PP=!gQGhNlkNraRV1 zgVKKVr4jXgaJOg8eV8*MMNPs@S&xcL=X&6qXT1)k(S9EH$Dfb)Lv5M**HgvnzWUEj;He%`h!o} zD{#=)IjX%*gP5~b$#vgz0{MqE!Ti75o9n3v{9K3#?ydXMboH8W0;wHA{Img)ZD6$5 zZ5rYhuL1P-g}5dyfWsHOX9YOhb6h?LKkX8dWcT-VdC5qE1=n1tWKi-gWT|j&p3vMN z5Sdn?5c@seq?Q?D^XcNHHkr_|Qy%S1X)yoRW;P;)6daaD@s`9hj6IP;j6cWZqVb`d zT^(~w$PTNVYzSoIka?!LXL=owXcz%7^xcl^n<>%H0f}b!JiNtbQ!~l1)^w{Nw6#{y zRZh(nn<1X$94~UgdvidKy%hL4^tSZ%M`o z-wEE;GkDjDrPi zspMP3Wmx0H3UzKkTWsLtjgYEO3H{FoMLMKipCcL^VrpFp(Wl&AuqNQaoLdAW0l!Q{FceQgS^*hSq~{l2YeywX2J5 zkaGQpzSqL=tD&i>f(HXb#0g+%^*;qOSf<1;(ROqMAGTfeL{PynL5D2Gu&8%3D!eqi zqw7iYWZsBoP&Nyg>y%NTjZ`~T*^-6t&tInF1ec4K_wdFl?Cz~t`t{LyqQWC>NRM;D zcF$0ua!p7u-}E$Wt^7$S$Vs3pq@Bxz?>?H`wB-uEn?CGIxnxB>aads2#_-xPS+7uE z-{lT9*Ja6c!6v)`^MN2jlVchV4k;`#oo{zsSI%pD1H(f&Mm1dFW^WX=p*=D6(ms7G z(-tsz61Ala;sE!b4s@dMQ3ZEj8 z-M~EzE+!?O!3!nf5yY51glPD)ZTYNT1+RdmSF3W|^>{mx?bW6{Toc*%#e$8PFF3w^ zF?AcIRz1aXq0Bqn5H)_reFst3i)vGQ%6-r6E9a};C}xmJ7+dSy%q~^_i*6$>qf|gk zVD{=ieNyZPLsX}V?HOMd;#NV1Jq%Sws?qJsG>O--PTQQMqDyspeFRazi=>_F>KVsw zt9430nWD?P@rC}eCtl{A<^KCGirUQJ4BdOFh-?c$^NcIGU~Y;h0+g&yL}FCuD$e}< zw!$Papx)!@4C5NP^a@dx3F-#VLdKPikeNV!Q?lIX{}T|M13b&SKxc5gtMn__s_=ZnB@&FFV}ehe2-!B1nlqvQ?CJ9n`ZIG( z^ZWOBt*Dg1jx^VMyjRlZmx^}{DUkCmCM9@s>e;lKOYQ&Wc3Rwo*4U}gyc!EYGfvqaoocf|fgeAbkABml=TkrE>p60Fr^9rq7UvV4Ueik z>982A7N<`>(EtVwC5zl=Vz9`?E90W@iuB5G#vS09mWo$wLD+k0Ard*1B^~FN8CX?} zQqqXUURW>~wI3J$#WCAHH4TXBzd9$V?!CbrCp=>DH$NPUSHqSe26JiLUnwlm^L+uB zLwfoF+EGH{eXT!j(wl|-*BE9<-vLBVxStf!0V zg`--1L55pc;RIUinZ}`jMpLxB1UUN{1#q3eGWGFk^drI&!qlw6R8p<38qpEBqZS2l zbE5yKg_;AwTejY5?_mHkCXnQ%Se8C|`9vySbC_Uz=1@eT)@m3&_4^0pT<;tyYdV?C z-_Tud!g^xd^Y`u&R~_+ZO;OC&#$B% ze-c33!x*xmhcz`~Z*P=|a=&O(@t9r_y@r_t4(s7;>28 zP+H);xB;nGqc>EAeI4Y#VLBC{ILG3vKa}=ddx`UZoe%g=4%G;YGTT&8Lj2~n`OsWx zDyPIC?y)~8&*RNjr}?iPXhuX1O|NxPZ~v*dKfKdS83TR)QtUnJ>_5`fA()9I;DGJS zHoHDjE%6#^EAT78qj?FJUaw1nW$rfM8Ur~R&Z`jZ1eOE^X0Y(H$|D>Yv6&Z+1Spk)hJ){E+jEz&bc#QI{0ED%oL zzb-Zd^|lORPf2Ozh9*V%XhRCYn{J2+Y~Q<|Pjkc+`Ud-4dg+%d92*`w;l<3Bsm0ZI z1Y{fQSQf|UPEiN<5HKJ^+o5Hs@Fxx4NpdG@vWbyRpHNbF_fXF;Z*C=jFzv;!re_(Z zjWp>7HFKs8oGst%V6y(^w`rp}Yy+U$)-o4<1SIwnaCIpJ2o^5y#{kzhI1goGzhljS z!P2ZA1d+o$@k$qHE<{Gk7F?Fr@p|lDQINqMbtzZ`9aKXSc|vI+HD}b8uuK%H%sDG} z+%K9F?9=}@I@eHFC%a$)KyP!doPwJgz}Dd>@3XgY`P*h!kY!V1I8R%mS16VJs5Spl za2St1Sy@RC6!yNGIFIUs{OYFt9;%|81Mjs{F8g5Ou}MUI6=I*=ROrR8O%BVR*s+u_ zFbP%V!i@J_UJLy6y1+6#>i7vZLCBWkvDE;p0K-_k@FPz&%R%*POfiHp2%ZdiQ=3Y? zWVs!8P{I+|uPqAws1_nDq^y`r3(=+O^n(TmtHNI3RY6#Ph~*KD%Il8%@cSTFo_Jmb zc`LWn>%_Y+<)X0Uto6&!c&<>`3|PPT`GakH);MS>rII7}a#d=glUeO`qxWgjKf`Ru z(bBvBnQr_y`4F@3*?ZmG5%rP3Vb}3FA0*il8&`Sraq0bSd9`+VXpR@J)rcMmbI(EQ z)^*5`im=EikmMBq+Rf3ch~{R&8HuXiZ2$m3|G%;+1Ws)SjNv^$arsos#x*^R#F4DZ z1qx79)+I?p4}0S$XOc^a&hd>)u{9;|_Rm~PwMrPrxD8C&Sblix3h6+L)gmO-Qgdjyl3*9082Hj?}^h} zKmsdFDxVpn=qGku;&U=DDRg{9T<_L}0DKt_akvavzcmy&?g>c+95oTOADY#yi;ft> zPBNEgV|?*Pc|O=>=&6LGpXm0`GG~apRlX^bl#_pz+)O0%NY3x3QHWj9bsNfurrR|p zPxW8`8k+5Wqf9Bq8Qm9ON+56hpDFJ8vs=`Gh!iUKVNd)=kbr9lq<~FpgHMGIv*-9C zE7;JUvCnSrVCAX!f1dGAuJ&tHXY$Z>{yP%{|5)CKEuIaqIKbUXBf~Uua&w4T{pjgv z?G{UZ?uppCXTFFEQ4rDek4^cH(Hyg`4d>crdI-)IXOTQw5o$ z5vP~!Ap4M1Z28^DmhY9p`}7l0^Fp7c1vvok1l)o#%$w12Uy`2c92-E!P!N$;c7a;uAL<(oCPu#l`;NXF!s(~A8U z201A)k_juHt5np6{Oy?{ZVnv!#i&soTF4>(SzWU@*f=eSV)C{fl0tP@!w` z9X9?ZXT?BvJB1&p!(JB#ymF58MjB+rNIA)|i-l623y5N=r*Zl9p(j$Qtbg{0K@m&Z zZO&{b1jug9C2!D)?sz|C3T=n;OJk|LQ9?5>TPUFm)$(n0(} z_40XL5(eq&MYM1agxkYrqJ{cqSubO0DFAb-AU^&`Xk(AtccITy;J59^AWP5#qD~@W zLCVozWP0$R=dcC-<$qAR9X88gQ+vm-`*r3)^HF``5mRp0dIiqrU zW1o7G#0h{NIz|;^^d4-@X>9Dk??r}#&N=gY@NZmXGfYd-yu{tU{fSr(Psp#iq5l_1 z--IIIgkmkHDN*CG#cL`XF z-cB=j7GKH1ERs_wH{qnln7+nn~QxglVmFySD}hD>V4or<3Et)$Ez?I4UKG_VI8 zlqj@RaaAQlPu7=pyjX7aM5?9P0y|QYh;rd=a5O@3Sd>r-H6jm*r>1ge0CI+YJ~Y|7 z(^0z0e*+A;E;~I^|6|j zewFIYjNYZuE^B}%L*w&~0aNwD2}!_Utza_hdreF!bxedMS!lGpd6)(W`s#2!?D zLs?>kldy07jbXXEbbJP0_G3p>CSLQA5cZsBc%g03bb+3ZB!wY6Fx^>cRdlx*F+47R zZopkDBR?xiAUYcNrsJNput66Ck#L;ja)EbS+fK9M5Hu$Pxcm-N=eYkh2&$n^zSHA` zbBjzcOwAnH51rXQqJh_GB(k{1BzW~;U1+GW{C<(T!XVafCZwa@iMImFUVErT;C!G* z->f#v8&hID}J;s+C*(H}n3I20ZmxdyYW}TJCJ+;8ePK zfu2LdW0nx$^bPu_l;l||VPJAU>`XLua@Zf6k?zeV_947cQXn#8_OOZ!2h$_n8p!>n z2)mu%xQW${h@++OQjI?M*ZsX~v*w6A&3hF>ItX){IK`ruD+q(lEVwl|4eZc2UoL7LiDy)e*N~=1a9oI{g9=vC2FVI2G z1v-+!&(=;$ybl{$-0w7+R+9%14lt*14lU4V7jRY@DQ4D&CsD}IjIQKTnU~G$I!Px4 zKzPCp!c4bcf?@2YKzdzLgh{g&|En$)=3)Kt$V2-F8)P4m0coVO?QKIYJ_ zZtmi06+~GL{f~60zR^%Td$CPI`;x$AC-lhs>eO4keipE+#*x-Yy@7RNYxqr*JDd^6yHy zCz~LevZb*j_kiQAVRBF2Zy z1^~KEpEtWiXyo5hcXa`~x#rN;3*3=-p$Y>0H^L05u^l-m6}aPDnIISPmq51VTk?XH zw5k5+4!^e}d!DzZpjm#k{3@pOq}s;*uS-2xaRdymmKwYL=>nl1QtR&EeN&DfgoQFh ze^w3XBEssz=!zJ*-*zAPy&-mh4vsZ_FlQO~0BJd6`f-S1V7;eKlq$x12giAL3@75_Cbm`ND(de7s@BlR<@lUVwa-LC!i?dNo1y|$)$4j)>9u^E3lv#PT8cPC1nX$7>-N8CgK9c8I5y2 z@Vh{h+`*}Tl2BsT`s#Gg@#070DArQhqfXQBUcJJ`cBI{CN8dPk`5Nr@Q3j->ZRMC& zZpLsli&pK*Lpzv|lKAjTS^*3D7Aj;YpAx99B4>;KHlw^}(wHt5*1qU)y19ty97OCr zUq@YfIlx|DBu~>jBXM$;zWwqeQ*RPVrVS_3A4 zluCePo$`0C9zaj~pUrOxBLhugA?Hlz_{N}&awvuEu}yX$6l)$1N*}#LL9KGKogy-P zn&tQ8_~Ysg-f`#A(C_ge0NiLf#4uLWy`D7#X$^{E{92l(!=acBP32W!9fwX?ZGnU( z!ubG5AB!eIc4>D6wnutCmdF37_;8T>y^exor{0vQTYV}CfcL?TG}w4h3^x40Yxv37 z#Rp^&@kuT1Y^W(0`{@hw@u1K50SpfBe3+l$p2j#oE)S~3dN&N*z+CHE6Ryjb*r0VI zy2$w%Sg{A_rxUMr5ge}TGD>%-I#oTT~_ z%Nfrm&G7GkQJ>;hhCl=PO$a|Lpfl6`Gl!B0th^jbrs!jkrAQqBVj5wu{)oBMZHOA@ zDEsq~bPcD5z43C+zWqu$e$wyG-WOT1<83Ja}2 z_aVnIbSfa7BZ^%u?!~<<)v0=!sSq09xAV;&3E0WWJ=PaSxPD{vwO(Y8J1XnXM0+zQ*zf4S)Byc?&O_IYCYa!9>H;oY zJpTh)*h_Hv`r{N{xKZ7iM@MPVdN`E+ARFPw!NvBF4!}Qn%c=J%|*t##MHB@K8oVNHM);a<;`Z>kUFst@Ga?EaMQzbU-ade4XXy{mt2j{PFCCQc?fB_3B16b!_ zwD!B)9#5Mccb& zARw3;iUy5t!Ty)7hM3a|66Ny1ir8h8hEz4UuHNn6|q2y>)_+oEYUd14j9HlHKt3o|s?Duvh z(4ouG4#UI9@yFBz4m<{J%zW!Co<1jrRLIC+&a*J$16)?b7GFuUtg&u+LiOK9!C88z)w#!R~REvBt-R6ao4}#!WhbP>_CTeB3u+$Ud6L|BaOsX(R zDo$QaNM&Z6k$#zV;I2Wv*AxvwM^wt`Y_LWPxy za^eF3$9M03**HkRbMmJ*FV_Xtj4mh^`kxS%GAF6Sc?CLOMJxs{Yk8WG0qY1rnMm)&jd;fWbHr8MHj~(n7 z^rc^NT;U2(e25Ik;?0w*z|fFf8wUQ<$^oJs%3G-Ps-@l=0VDdBD;ZUGzZr6OxPBVapBmH& z*8V&N`lpS+6%7?BhRl(!;r_r1s(o)ZyZ_D+aq&QD49|@3ortr}HWrL4`5c+vhM-;5 z#q+*hSQ#?(T1B?XghoF6w8&|46*d_=u_oSg;HhglRgf7^yMxYYC##)c;sGTl7e(B< z<(;mcIjg)wII97nFvBDMp+K^A_FB@ktQbBYY#M8Bs^9$|#+<3^mpGhU*COt2b6xFe zi#Z;z`itg0`0Wg@Xk6wEt{WX&tG0GymM4~W@$fr$lwy|9ExL5xI1y#U`Q<&J!`eXA zjJ)10D4FBAG)6UjP*P>u(PY{WJ@lSTi&M`b|CjTjC}oIu1mXvngbVCbZ1Q(8`jEoO zAOZ02+nNGcS++uA7KA6I%3@gMMDODbDBAG&FZs4Gk_+tlrcwN};eqsf8nX10k3^lUfJ3l_ga@B#D(9-=h2` zc6CTof6({=_wx_dnV^3J&g=Fo!u>UqVGR?~^s3aWUpsi6drKtzS?f0qW#F|#j13B? zdK@DS3Hi3gw6XIz&+-xtYCYlh!DUPpRauDztJf_;H_jNTDVEp3hD!XA(!TXsdE7~e zr);kKrUQdp->=?Yg-`_}>LoYRSlavGao><4J2fwV4ruGdE5jU$_^pL^7sv&kF)mh3 z9i6bi%sdE~n_)b>PFTt_nZA-tN1GVMR(RQ;EcmKq#FKLlraq?hmG{WnprZA&7R_h0 z>lJ(d<1*}!2J$SBe~VaFrK|`_$y(mE_6N$62_e3UTFM55SbD&OFRSU4Y z;i5CAGhIhH@hRsyyps6nEfdjC?ZjA*S6AbVLU!`{E8(*d{Ush6x&J z$q53rOeHsk#w$;`eC#|H|g0GYvG)st&J zSO#4QSG9B@?1z1b!YSiES^k1Sf13ckRelR5RoM(L%^{&*(_cw4gJDfjCq)l;!DN7j z;#lB_VPwoGw$A9b<5krd*a2G0zuw5k)}M9|vZT9(XeqN!%sa~=vaP?h_fIY@V& zmI9?n%8r_SWhXB$)ll)WB=FBSR1tmz`Pb+x!|TIjM&yn3(or@Q5A^^}j{(3R5r3bw zH`8TbnPC5b`7P-!We>hx)>7*oN_CX?*zjO7UK0#Ltf=36~H!Fgk;oX>jVs} zJqMzhxUYh4C}sXiI`|mgMtMMYMmk1rFlL9Ez~Hk-&6pTwhq77WaePm6;-x$$S#-I% zi-)g>SXrqbR?p!F7$XJ~%WQBn43QU*qyI~UvCEjS0t*n<7rmgnFcG=p@NZvq!sx^D z6yZoiM_P?9Z(QV5Vqbi2w*6r~0E(+MgES2_D;6^Yg4p&xdBvIyaENR2p}Ng4CV4$? zg0%zzgh8&InWobGpf2`jCj-O4JP&x+J6eGX0!V(!4{?1OW7$M`{PWbNJB0~#mRDvW zHZa0C$c7hnrgdhZVSepGQQm>sGXJC` z`4DsR#dIJi*(S?N8V`G4QrB{1WFaU<$VjZNDB=;bn$2sNJVT%T# zKxY${cjkULQH*i6Xiz@WYo}k+3vNZN*L(69Rxe^D5A_X3$84z?qk^)K*TB-^tOr(M z8w5_-xCYvB%Xqr>dv|zbv|~xd=R-BjYBK%;A&FNyiCdiUcE*kq!L{d>1J`uMWUhBY zaEDME>BAn*j6NlZ*yR{9{RAa$9?i9*=J-}AI*i@_KNg^&h5+$4}KgR6h{XuOdtkd9UP&;Kj{h)!(UecWhQDjlE7_|#eyc! zLTsxV2tK9PYssZF0x^sCPdE0oM;1b?_NhIX%o64Y(i2JRZfh*`@eAPTxjnjngr?Xs zttp_Yo_0_D`R2QQ&cRxh@ABsF=nD_BSO+ze)NlELc&XTKM_f>$Khz^P*;H z|D7Z;@siAAVdqUAe-mR4b{aEuzpjlwkz)hNFLbUD%?EQ~qERh!KW(mb85%|M4j9fH zFrXLDU@JplAOCz>)EW(z*uDsb98p`z*5*)|{4t*g*_uFJ?qV@Vx0=k{OV2 zug>o4X2Z2nzii)&Ju_w}i-w5S`VY2V#=!^2J5&~}ybwc{y%xnp@YuBDU+(Z@FnYp- z4Ir8QzJ>P(hBQu=&%>$0Q(MOAcH?Or39;HHhY?vxF)|o< z5OzeG6oe_YZ(KNI@hx?Ldh+{EYjBte3%k(N42T`$+RBwtfax|0sAUXaAE(b*02L9Q zS5>gYCpf@d2?Z1y5_74nf!S2e%gcXce`jnmv%4o6OhO0thpS)Nm8K1DoXQaT-k8ic zBNPV45`M*9p$VAVl_!NDqDvWTWyBwAG zjjd|KzZw`pfGzlVOpQcajB>*Fv+}$}iw4v(C3V|!p&1M71uVyi8v!3srI|3D#jH{W zdIITWiZNwawb?LyzKd4SReFg7U`Js{e-6NO;8>|#Y+t)`!SD@Oy*Z4{U2$D5RZ6+C z$N=-R#%$uZsx0R%;k`SEmombWfrL z>m7?~<40FMx9UN`(=8F0bcz;>f?ZJ&(PIaRS81mQzZYRH5D!U`Gjk!CL1Ir(HiY=_ z#5Z2qKBW%MOklj{F1M^%A*O+;WMT1nW0Gm~wi7(OeIVc(18zQcvk4fIKb2o7C`&YDJzW#{P=q9U@MV;Q>1%=B zqT9VsBlr&H>Tw#)`NbDQ!QuyGUZL7P`HJ#91Edlqe+L)#tj}2~-{j>*b z`TOJ*&;6ck3(B}WN5Z!rzm9>)C25r-{f}dOdi?o&BDh%0kcWgJ_g6Pf6Y$~eh;rU-r>iczMOGJKiADOUcN8!=F@XMm1)sbzkc=@z`u90qD{kdjXqItdH9eK8 zNo3aztI0>fjp~yu!osm;^L9BMN8^h3kVZE757!7-stC2inzQS=mMr9dkKrxy=2EeKWYMa^&!9v6P-jpuE4z$Pa2 z%2JW0Q48l9F?~AN+4bY=tx%yAVw>U?IlO5i7X85Zh5{bix$F>dxfbw*+iD+k@)XNv z|EE$XOLr$HOUAa+c@uN2Rb=EA3zzu%twK*5xn|=`Z__Pa>*QbiAGy3G*EPaMLT0C) z!XuyDqKxDgr;3sHb%!>;a-lepS-@BcG02kWgDB=!P2F(~w*4}5sZX#wr!@xiE)*OJ zv_1z)c#jz`jfYM2z+6q!1wQD-h%x{qkR)^Jb-AxQIVwq3oqe?!pKs{@|R6=7(wIN!Ig`CU<8hQaN zfq5FBwwf`ka{CaDq|l?pT|3(BL8_|5d_pA`^AkfTUOIY%MB1t`d>gqrGL-IO$QM$` z^4{`pZ@+1w!gIX*RzB?_?fRrNCwB~Pyk$aaa;R6_QFIF9W@+J7G|az5s?b^MDN+je z7Y3joCb z67uBii;ydSI!|QkT~P0#kFU3~ZRn}EJGUSA@@#X3_7HYvv0f~85G&m&0@=1A0&iyM zNCbV8&DGSb&6MBizH#@7{$;QiRKNCKfrP{&p{;FadUMWck1r4{oe#C&Pnsr~5%zW8 zZ{?5YWM{l`*rfdwkuUd3g~2y^-y|4Z1Bk3>&tj)q)e*rlJH9HTo`bHBb@F3P)Guf3 zQ-&v~Q;ogk5L_ILshL>wy?V;l8X|{yf`LUcvwK%q)#(S7RTATt-sp*`NZ<{=5tNAH zH|B6fR(`u81q?+$@3BU(?Vr9OxVdTQ7mG=MT5%*)@18sLIeGAfXQJJIk^<*G`AGpA zkw&EsxXil*q;57wO`V4w*!L;O;Zy!H$;%z#R>{ujXLbJbYC`vnH-1PJj6yrOC6ycE zc6!q%2z)KHXjepQ3$s;6XT3WCel)d-+P5Xt0IvWqn1mK_ zDY`P&8EG5XDqOfEoCud?ScSHYOR%W!3r3-AcGo^X?LIp@^q2C#fwYNvSp7#UqFAjG z6wfkDw2IpuJ}#W_(Y$!?BfFkJhaMVg;#NH|nsfmq+e*jH-XXF)&6WjaRh$WZVrUnYw>qGMjfI6h@YpHg(F55vsDkf zu{1(!M|vpSTpRep4R64B zSwOw2()Y>K$Uh45^!Rol)oad7dw`1se?)yMqP2B&YrA8uJ0i-t8G88a998aYNdAw1 zi;=Z%vSo%M*`>S^!CI>llsU@be$vRJ0q^dBND>eSO=BXIfn|uxkIcF9f43((u6M|9 z%!Nuem>`27xGav&4SesjxJH=dWt7v;i)li*?v#WKu5`$v>5Sd=^&8904w&gD4GUDc zT0mY`b?mTmSwN!4N^!*8r}tVuanP)TYWy5BJOdY&D~Tm zP0ajX-NSwMioz*qHf8Oq%nNuw!I`-9x1m0hROG0d(%O7j#YDlI=f7&j!StNUri=Yv zklO>ue18a^)X_Xm0$k1BrI%Gsf_onZK3Sz82BRIFuKAJw5J^8-q~?K1dy~Zkb&E8E zN_^FgVA`48zrq_ zs82JmunRk@bqO#&s)s+>goa9lo+4y)>$+N6!$v*iEIIsUZPD*M9^Q1T$W4YZR#NU( z?}`@DLBIbnh@NR_tRRw*DmZMix=cEyhVNWO7tm)pN(#&UMq7mp2)X?Z_>wYb$i@Q> z$mKCXe0iCJUjd$^R(p?+2FPPm&S-c3zdRD)E+8T1ahy=ty@f6^t~D7fcK}3c7MMZS zrjVz6B?T$o1?k8#w?^yE)t6JejEL(wQ1tE?KEWJr=`FD*_krklQN8us*vu>&C9(am zTv&+2#QP3&IQ~gi{G0;ec|n90UAM>AVKLO3uA(Y^AcirZr4)MzpjGm>IDZzqO-Od+ zxhmge+}XXF!><9ypUYnk5(I3{Nb6t|Y8}rUeAW^kMtFVjYuRQsM)e^qn)p&(b*L}n zS&7JD6RC_KLWmtjv42`{uDWKUZ~J?-rnjZZ*N6W79U5i;V?_6C&E6K75&6 zHBlx~Gg!B1VXC6A?2k{u*60Tw&jX8W7>Ifb15C= znrH+VggR4Pq*eKD4MiGENp7a@XmBYP)brBekG%0TX0m?=`s4pjHM{TMePp3)<2gO6 z(-tND1S2Dzd$pCE7eq(ng-Bc=+zOjZF#%w_4O_i$o7FiKqiZQ<40*VC|hTo zv!ofn(}n)fRRdE_sHE5F^TH1W#zWQUeJ`j}R%UwQO34@Yy{NOZ(kF?Kw0+U1GXhXj zvDj;)AtcSlz}=^#PM!C~}(@ABEv`;m%KH=ClBR{bW@IL_2 z2uOkoSmR~m8BQR~VJ{lxT?2eP@+7eq&vlKb!$cldBLnVi1?hHK{=%d_<21K(*G36^ zg)Z}l6v{A8&uv?(G1eB;vO6BEk2g=IHm2|OrWYF_o%N`sz##(=BC}yLrrt-(eJxPB zQR!|IUV1DLstG0KGhIqR6ATC41s+>##6)2Yv^&Hew5+ucIa5IP4J?kxr>w2}*#HO= znKYa~6j2V#y2IJ8!nTHuSsr_?{42#A|xBD~2K08=jj1CXS2# zhiEM#&5TV*hm*!HD39y86jXfR-IS1g{ckZSkeS~jPm1#UEn*N>AG-U(_53v5dh!Z-JTAEkpota4 zH{^dLD$Xo(0izN$pOx^BWN+Sp@Rwd=M9g|4tJ5g4YpMakS<#1WAnpkaFn=EuiO(AG zr&#NS`%f%pYbB+3-p^+7Gi5DI-mPk7Sejt8Pc{#VrokDH(8V?;v#C_5^7lx3Ii^eR zhx^5plbCDOq4QbOuEknKp>apQm;w8MB)?QEFOi}2aBpzvd3ca`hM}2CqW#)he6R6l zkyoj;^%u5=cfU&k)a#_eR#Z(IG+KH+v(A~Y_5RM0s~Ln@9-)Q?*g#ym6F z(+cmJSn(14hz42nkoOR0foPD08m!AhCdmrM+==wn2#Pn2)_4nm@-yh*nBo;!PhRaL=x3)zhW z0iYS&V3NSl+o1B+k|5x-0AXkCJo?@9iVxgyMVH&zM-l-d>ostHKk2-g!nq!^gn7?L<8i@onIC;}=v*~z z2D;yB6f9`i=;%ngnlo;JLhaMKN(_JZApl1=qY(A0QmAZcx#fA5g=?`d@f9*#jQ$uY<7cr+f4G~WeeBg+R%vJK9P zN9-*+`leyg&kPc+q0Bqa3Tr5@ZKTKbw@>Mg@s(j92@{e$2K7kb^lcgWCV?4$$M((3 zFJXu>^XQ$yi+TKUA{^3xs4dI8wU^MF@9m+fTc-jrrrxzFxLrO5&Rj#rM*v(?b>&eC zSOCIaAJU;S2Iie^pu1?Baj-*2LYt(xfHO^hWFI5!GmYDo(9yx3ORG)RP-uO2rCG+C z)+4?lSVK;yWxCcTAN&?DkgA*4co4TUbyk3bWGS_v7jR+^9Hfb}8 zth&#fpvOLqhv1_S7-Exm~wsD1shj!I_Xk=WwxT#=cR91oyrGi$_q>iP6M zpR<|ls56kBZHwE~P4E&}qfyGQK|>?!_*3l$=HU06O!SfQg7*_=ZD19=R91o?6Opqp zkK6>qujAECG2bxcElGDLVg5x3v9EQ)IR=meVvT@!%3xT|I#PK+ZOzxxMF=&Do60KdHNMK2bOU(+?!9dowg$lNTbx}GOn5}P^ct|8#R;|Qx z-+LDAurI`}KP&dt`Ly%YU(BXxlWpZi9eIr@?l>^Y%w7 zUk|mLv|Cb_IZLO#~&sQGqn&4I{7m0Z~gQqdJ^56Itihbaa)`5`xT zw>ttwf3;7u=0Z@Dasv{^aJ0$N&SL^8){mMWYIET&l9uLwT(o5(+5 zWLLE)`X#Dh0z^tS;~2PV7L*vb)R9w*Qbxee>lfL&UKns!3^mr7w4EzQ z0V|~0aIH5)=1_5pF%{DK@!M7HhD1POMv(0cen?esSC-yrLX7gE9pNFG#L}}Y?u|1{ zI-!Vi+i28}9Ub^R4*RNZb`e~vU{Fo%hf?vj#arw8Qr^O;jiFz;e?@ZA#dn+!>D+-kgo$E21rb&}&Pm^jrf}lSTTP#SlvE(&l!iW;N z?1&z%1L9N35;3pj1NHDE##Q(J8FF%!7z$@K`ei|GA)f3|@G}7IV{e^bZHQ(cW+&xj1u3}w zgFiRkHlttU72Q6oXN+%G@8u=oLETWP2*V%RHEUbJ1hS=NFT@Z6nuhEr8h}0rzYCa+ z$rotAphtNKc<`I=?!7T#C!8fx8N%u#EcU=~7&<90)8^XMl|tPBABZk>JFuN5xD;0i z^Rj#-a=LH^LE?qZ3}u1~Cc7F(jC1m8{=%;%P6|p5E+UI5^Ky1Go2=kj1kT~Ti7B|J zXK`)66z!}&I9waJLPU~(*sPG&^QoLVH=UBi)U)O-8bg&o$<+|e!(d&*73s!V#;qfZdlt> zS2%hmnMFA6u~{(Mvr0v!I z`JZS~mBeh*1}C+M`$1$!J*tr62=;suw$)GD`$4FaRr1hU9duWn3SnBjWffb{%?JoMkwN!bFN>F@h9PdcS@1Ivan4oYbXyPYEB@kHy@%-T)}a@2@-f zO`38Xh_dG#XKgv{YdvY?aQm-zp$XBVHAl8p9K6juMGTzUkAbNe++%>Jx(so?qP6Aq zQnFTTpO=5|MtR?nE_k9Ij++6@>I0Te{09LiUpLG&ck9WI$05?F$zq-`twfyA(MuWc)h#W7S#)t^Z zjt>`n)bBorsT%%d5NXGC3EO(X)7>GMkYsfgMuA9yuv;dv_F2r)`6u+ZMT zajrik;?q#~L{U>2{1`EhJb7dA;!a@|nv8epz>~Pb{Yu<^(|sLJY|B__*@^E~K-kbH zbA_$+RpO?isj=#pB&-P!paKJ~lV6i)GRj)}ce;k+NP2WIH^ys#zV>e$z+jw^^ieJ&8k28xMJDFqeq)C3V7=|N073{_*RWA#;iJgmqgaiSjPztsw5NplM*v&^gBL5``Pt#thFWVFei8-^BCP;fez z92nPAfHq`(sBF$z@h|xh2@Q42!6BtMwI(*;kzU0&j#^W#+B3%8x-4e^zER*aM!Wpm z8@e^&k5{eik^AQHxL2qVGB@kZj10BOQJ-$>TIJ@h7N7Ne!NN>7XhO*r;okw6D} zkLZVI|4`AzW2-HGS4&trXBddb8aEBF2XNU8eB*&*?(IMAW5FtHN0P^e-M>M ze*3Q}>JqzSr(mN>!>OuF0DvrN)hpmK!~mp+uDW+V?Ty7Ta7Gp(u$7gZmXZ;)YP1o7 z8RZw>bWZqhY60)=0?38e?uX_wb;WnU`;N-4m)^o|kU8_gw5r2|T&rqwTP*C1lex*IXJtEPh|Q*J z*D=;*bE1;Q;C5dev*q~!fo+m8r%5GU@^<;LZicXjgqhl0L7#btPmMORpXe5eAr-KU zuvIB}IDFLk4_x!;4EYM~Kg^hu9k5F9<(j!bs1fUZd3o_~*&+;;UYE1nh5$Yj_NP)> z0avU{c{QDh!}2RsuEsvbK{(Sd<@w6~QbQjCG+bbQNFv1q%Z||?I)Ii^WPy^eKUx9f z+@o08Irnj*3ds$ZPHBVPY{T5K!rP(Q?r;~g&!EruElSq5p813}!e$IacO|p-%A*E0 z^TM6)-ppY=C_nFs%L}itZRrem!@Z+Y8qEZK1n6O?Y=uk))HPgOJWALQAvu@$PkU-{ z2bg&oME+tza3(6zFq7so1&&dDxg1!`M+%=r;$^mSQvy)syyW*PmcN_J0X`pii94!& zyv}-OG<>bYiAG)PsZK=Cc9(e}cN8yk(2PK1(@(|aw>1WKxqRM`lT=FEmUM043_>%DjO-Tk>mTi- zNp@|KTPyeIaliOZ%esW^CnHRjt_*XnwFrGI3DXd2uF@7M z@ooKubjhPR%Qj&@;5`J+5s+=@mL%r6Jz}1F8QR|nNE}!!-ELF}4Y}SV??53Pgx-mU zXN*J==vjHul>HTYqX4`Pm@ zQ0|>PR)eH?t8~aXXQDm_M8mq(w6Oe!+V zvWjrV?#WF?IqEkyFUytC<(b3Owk)Fpt7Y#nEwQRdfh*LXbW~FkVT~Y5YcsMoR^{zJ z91sVV@Lov2*6RDpJwP#(jq@rlvub8*2%8AW2v z#apV?6b3_E->%dR@9~!zQ=f#?0#QGvglKR63)>xh+ghI|VNL>!HAe#-I)E z@}_8brskJ(8&a+}+(i&YNuYuvxW9YF$OhszJBJU_RN9gZ9g|J0$<8@hN$5yQ4>R$m zu}QC9sw-vGuAxIM_!F-d1TSoEse3KWboe^JWL#nZgq87SjUwK&(;d6qz8WnpeAjA& z0@R2=AnlSQYBO~G4ogYMA`&I*cIN~B;pMP)`|qdSN1H`BBdDp^&saxq^Z0obbsv%O z*7zIIbXA_Eh_cTe%^fhKXnJg6MJyQp)+tLN=%Jpd&r?|s;j^XRMdF}$bG8xsXl?^G zTcV%DTBX?EyUzky{QC$9{v!Gz@5n073$r{Hl~Ql4mp?Of%OWo?cW!>HS2O%9gsRQd z$=1;ChU;!Ck=JFwaz2>w=%{MO<_MCW*L5xJ$&1x8B(wtM#{v7zTbA ze8B3$RMpDOm;~27%0y?$0x%gXvmR+xA(;GLo?rV&B9Dh2r&1nMFBX+I*^JHdAEK)M z0#^Q_r~Lv}qdBn^h1=Ded~Y5TqP^2Csy#}s)@DKyPjr{w3Gkf;SP447<- zBCvEveJ_-kgqPZI5!4i>Z97^ZR%TTp6Rw**cG#U(Q76*0E3E196cr>K#Tw+lS1u5R zcI8jsxn@M^439{r605TljYnT$T@@uFJl1QWyE;+*%YU7 zTSroje-L|J2URBNkQ`KoR$vqo0^65{Ud;N!VCho$G*O3M$PqwS{Eu@iVXEz=vn}slT6NXcZ1JA8zG1IhZXhj`iA?Wddd$}rGaU$ z$8r1CW(s37(Zb_y*gXx-U;p|kTm$WKK&_HMA!H`33lM{>!rF;A7VHNR)yjD4oWn6KFfkoEQN6?8S9Q$rH1@S z2kczGSD2nm^3MC~mTJ}feq-G?iae;Ecx>1icwWEwX$NB`koFi9uut>H{x9~(cw;Z$ zE#{6_;va@K#5{qP4si0T{H1O0CItHke#puduqHcobO~kds~nZ(ZUuY?4J|IM^6w_n zX9P`t&%yf|HBGVmz)4GdWCR?FX<)?y=mNkfjXp%SBByJp`s6|^;EkE@;a(d$s3E$J z!8LzsiOU$k=XrVmgZI%ZT4~xU8t-ErJKs^eH#fBr(a^M6ZBXwk!U~=)W0Die6YIdG z3Ro(^fJmmZ(D`0O@dIHjH+mZa@hqEg0ozl4P5f<#vU06_o00|Zp)cm^0U zwZ;&Qtt&O1b-nFJEvI^Q?s<>TX{H1FzAH4SmW{+!7MMn$;306!LpM^}iS4?vAA{qO zYDsl*9$eB86rb5zpRM?Yo%K7W>sel%tL&{|1LZm|#y+gF^j=b>H5vC zMY-i&g*L@{bQyZNbJ?E9V~B^K1@czuQ28gIfkIRNjK%e~wf*1|(B0$fj+~CYsfkER z6briKENPW5d|g(!(I^|FYL$Zq`W0$UYD7-9j(=TtsGvR&m-ug@N|(S2idb5ruLlKY z;h+fMbti8dO-^zPH37*|@F+<#8lzjQ7iCNLn3p4ks9=N*W#1BiJqn?1r*JfS{l`Xy zKH}IXSrO?>&@lEMEb>Y<_-d#21MqS~nQKQ1jmiE!F8uC9+XVJ1&HtfQBc())fdxgY zndwY8iK#yOL{d!3^Xw7vjn^Y}qzaEw<)XZQ$gFJ6MSF*K9%%iLSVei!*7D4+eCg}R zT5OJyjW5QA6cZq01$WATPjXq+vRIfNPbiJq_TV4+^Gprsv>Azu`)>SBsfPhY+Q8Wn zb*kpqkMc5Lj=TT~i}{SwGgUTYe83w|qSz{1HxHF%+Q|s?p;H4e(na>B^w=>{l3SRH z`?BsG>_>^Rh0&yF4VuC5Gr=G>U^Ttnw_i3|03fuzH1=t@<15Z)h?Ltpy_s_L^RCyT`+~a&ZZ#3{R6dcgxzVw2<_oaGf6>NCgft+euq5W3wWSIMO!>5_6 zenTi`;hT*GkL5O4Eb2QOom!CSYFoW1ELKcxzM#%B|vi&{s*mfRj||@FA!`SN%Ryh zvykq&-8TYWkWr(^3vm0_1^!sG<-Gkl(%ct_Zka4QqE1=iVcS+x- zX(CHtuD?wR8YEps0p6Qcw`;8K;R%w^}^zZ=#q zr_%f1!mWV~m=YLig4;A;_TfQlkv1haB%ss;0pV!a=Z(s5%l;^SAkJpYklEAH?oP2` zfT_|i^vg=sl6kgoWHKT60XCpfy@j!)#F?^qpr2J%1;Bo5*On5?<<6s2zhGiomM6U)6&-|@V*aE8rOqZwcDu+{C> za|G^BWpp`w*s5-1dnThXvOl#F?f`!RxvE=qn2RXHdn#lqbD#yijj&BM`!H2)_+amK z9m*P7RefJ!Y!@hj^^4t5-rDp;B?+gGY|1AFY@lPlLjT4In@ja7O>pjhM)wr1i^`UP?s z!Dk#P}VwjlqOjg7{{%muUyHZ2d5gD)l29xl1M$olArB=>0+@&kJ+{VH}(hEUEo4FX=>SmN|9-acJ zaDmCGP==`Gu(a|cUAptvVBXQ#CZE--;FGi0JG!vAarO53#%r}&WjOt#W~vFaJ2-{kIn32 z@~#s^J)s!OBvsvZw3(XIsZeEvL6Xjoc?9T7hC=6(^rHt}0KIr$ZgJUA-Vr>EBwHqU zj_kte3Ziq{WfRLJ*e&V1qpgPmJ&|w*b} z_X3pabF}#@1H{RXM3s)#M+sr7mb2&QXV$SYtfmT9PUz_ zV_MxNl~~%bCis}0x#U+MqKfh}R=X{^ZD4l~G3J`3q0Zc6*EL@gpQ{Y`{pqVSrB@Wh zKD6PxPs=|?$G(DPwy_DeLyi=Wn|s&6AO<8;2%LMk3kXs%YSuaYV4=v`sVFE&*~W&A zO)|06)LU7-xw8!@QaH@P-(J7FHczb|%QYP&xuMN0oxbKDT3~jBpbjs~po!N?z3g!K z_3-&yc@X?;3!wx5?ezM z#24ut24%I|2!#XN_-wP}n$629~$G+vyyfa5?*ak6aCo*(t@CLFg)w50*hc@R< zVEb63R!M)+_E%>!LYCK$HxYjB3yKa;jzG9&zYz7a>tY#0=y5376zM`&xf#c5m?Xc5 zU4Knq9jhl9QW2SbyGTIm5SYo44FxsksVs0UaZ2UlVpB3d8NkKn?{U@-=-X?v-qaLM z#qG@AV?;G6?LL0MZ=(#SJDv0p8l3Ep+N!^VuY!m*_%yn?-s6cx;N$0u>SL(SKKKVuF#1g#R zx6X`rJKq7eAaR2v5Md+E-cdN{LvZ*Vv@F_EdT#oJ^%eI2)zLbmFWX*ZHFpa<$@;Q4 zkw=%nRpnu5u^pUA@&LAxmJziWN-eiX4}#19BL|G;4HMW40Xy1Ib~G6 zsrjbx*9q`KV#F-5m%Jr1IN47iSpwNTO%S;^`B4K@&{aVEgw3iwWgYZO^8mNR=C_Bk zDdf39Y}iQ@;|z60tmQRp*ab>Jzl557b2)`TT6K^n;cJ#Vg9cT4jJ$tlbyeYt<0dq3 z+;pR_=BxlSdj@?&dN)Oh#lF|RTXnuVhd8?JmVA`%))}jdk5jo3$)l<_J|@i-Fk{56 zeH4gba>AygQdrK|(}xipU0j9J-Q9o^8Bb*bhP76Na{L&g+JqDfF`mSsF?^!~$hZYu z5A#h@98D6^Jhv#H$|%sm#DR5nwBW)7?-j^Yi-C;vdo8()Ddyy?{N)-8`^B}jWEkOq zoO$*tT;$gth(U|~DLbJJqa`{xJ_TH*@zG{!HKwr<1Qt}jNX6+_6h1KrVZN5Oh3`9| zxA7mns7}b5h@@sh_7QGLlk9805u^V2B8p#2S<@6sS(Uy&&t@A*O{v;3`lnx}%+7Cz zPaSRu)yhExm#AwO7DT7_7u(~NFAINH8wjJRVU5y^q@Q{8#IpSQM1e;GoE@GY;g4xHF>Jtfxr{rO~xhOMw48+yaV(++qk_9aH5gvqhWTeH`%NcOT#oQr_3m${oa9-xGyn}^%R4yvY_pK`C)4xM!m zccC%88o=>;ZKqmqP$|DGi0eu9vI4N%ct{)$7xAq{?}p&K*dw1?xpF01UUa7A7naOh z$=1jQ=5fwX8lVQyyJ@JDhHz@0yC2tuS75pzCFI3Gvg_x!+|(?+FTs3%R6e#?D5AS) zP4IflN4>IINt&l*q+kMxbIzVsZvVvmnri&+Imhn0IqzN&1<3+nBb&@{IRT9oN`=@x zZzN=-{WR%tcDXQw^;Jk(t$oz0VDA!@mU!}qB1iDgT60RKn9u(!wf`nmXmZE+9er14 zbzbm`<4j=<|4zi~vFHfPak!+UDng4;xleuhPanq;udo?U)EIW4Wb#&)=)_PiDrH0b z8dYy>Ur~2gWE^;F=)pa%Z5ne{^y{W!=HA!%0!m;zx8-c*;X(KDR5{oQQF?fz>AqBkDM0rannNVB}pn;2Bj zKyLgrQ5qgrciEWLF~A5JX1-5lD}!rYBlI(@|%i=oE z80AX@OGYR~1*qQ%@f1MUkLg=RCk^eV>!6|S4XBUjU~y;Y^WJ}Wr}So!I!U)r2c1_Y zY+c`Of8_)YyP_`VL$Sc0@AisP8nFm7m3TMo4v;ezMKjv3;!dd>pe4l~cPmC*P3<}t zwX$TR(6=nWddJnzUn+(ARknVUTPI_DPNqNOayY6u?B`m3b&N*FDx%LFfDd(%?N#0} z1l44f&pW^y!hd^u?DXw_=MjUB*J1@oM?`o6pAfmo$6+5ByzohI+H#QK)fQ$;ETHx zuAZ)LVUD6q_5pT(l2Ye6KA&c=dr%ryIn{g!<@n8_ee@IV?UXw{i^6ED9-H1x#MoP? zKT5}(L`(R|GKq(7BAfZ_$@LKa3REI@_%AHK3$qdKWGi{hB88*<=HKYne#Q;RPP(y8 z#%u5W>L3XehTr8v=jyks?Gaz2v_WXHwkhu zgI;TG`<3qnwBLARZ7gBi5Cld20gia(L}Ou#);a}Ns0@1z`}s2elM3Z0hi{utG(dP!_aMpwh3?8RL2rc51w7~E5!I=PROFq+-EA|23X+ueXz(t|pF*sAq7_K$vyv^C zSf~7k-;B)PrhCu;2^>D>|>#(MOz(-52zT6kG(I_1B5!>%SguF z;rh5}aq$9;bkp7*xbA2YqHQO*+_NS>MB+8qXxeGcF%na^^Ue^Kqc-l0Cy+bsxb zOF3)o2X#jVox;4r%bl(qL)_gi*>go#A+KirCm5?m3J39i7!f8LEW@ck=X&GBd*m_7w4|1qw~3#E~Gj%v>NLy)WOA6}XA4H@ms+l5CRcsvzXz<2`KU`|#AHoU!o4whxTZs1# z(`iWc%=UkOk>Jf|l2CG6^LL$zem@Tx)wfg)V;XyY zIq`Xv&(Q3T0!yB2mCLxd3C^vy&4NzsA+`sOj}X*Ts7ciPe7m~qRt>Lipfg9{HQMPOglyER_O zx9&GDS@AFbcl^omn$zIx@ODB&e5k{M5nmg9*JsPju@uF6Re5l`4PPV`ccZNfon<9z zQ@XT=?|PeHmT*AgEE7Mf;G(Ea>G4#6;iKV!SLQdVgi;Tb*n&L+FgTrPp#$i?*F1U4 zk7ofC{-p^C@%LsJ#PHv3R#3ubHgl$ii$gDV83YK(DygI%6%V5h7G zU>=;_^w_#`L@Wu#VY4>~aLTob)G=g!2Lkwxvz zIxJn(87d|Z)PVHT6X)M~XMZFsy(hvV6VY$F0=MKf7)SD5vAPH;`MAH#e3*7RnL7Y!mQXQ<*xc-+_)5Xz|4`A1Vd+Jet4`*t&_gwM&}MU8yID!;it zfww|}(ouK38drF!yE+w%rb0x{4qd77z!xn%=>tWVmdpR$R_n!S!v$&wi&7p#%~f}I zshej1`H53VpJr;2vn+3Ka~C97c!!m1kNabP6ar~R!5+`p-W3u(l36ZtIj`l}I?O?DfP|Le z=|R3yc(B3(`wDFv=0h=DqftM?dbgPacmeZ^xAk)l$bv5-&)xsU zPBYv?>&`l;#=E>gj7p{Ovhe|F^MQ}t zfGD{b+9V^~*5}hgN6HKEO4bAvLRQ-i=WCrv(JSqTP|jJqXt6C_ZXkf4FugJOi&|WM z(}tTg37GR%Obpr$?LCY;|FpgvpAXlQRi`*N`^kOYpVz|Fl?LP=cqvzsK;I>Zvu>E@ z4iZiaV9C6t^^1(Gu9pgyBA68W8J2XvI~pVGl_b2LV8*5=hDY*nyr9RH8*6|F^Hrzw zAOoH1$xCWdyGp4ncWvY4JUzQ4QDJlW?AkCroW;qp-G zr`&6UU8dKM!^P>1P>hmGFJ+L0tg@1^vAbm-!9H2+v@5w-22XkF0=x@&X3QMExa+(r zyFiS#T&wkOOX{VPHWPq4wrG}>+ffZZcOWkqL17@aNLdyt?4+Sk2{)`A50X5GL-mny zh8#~{;y9MI{OJ>79;CkjbdC0&^1vb7EWnDLNiIA|@+v3md)@p1D$n2NC8Q|G@O&?8 z9H-5I7R38@i^$g5PHu#1lsOXY#Urq$B(Ak3mBmhXZ*d_MW%ck{d!^uI1lX+vnqSm^ zf|_^SRkHnA-n$Wbz>=Jyb>sCFF#?!-@4|$^-fTnUmfirDtewLXNz-Wte@JF1iTR@8 zckmVu&S(RyO;jdJ0awEV^247cv+XgT8)i}VrT?Qhn|gw{duS9}aswM5%ELiLAd)|_ zkmj_U){lZaBHH#ka^mTgYCs(&8frD5djpOm`ZJl6}mZJEOw4XlSP5FAX9u!E27*{op=o zGl1N{Qpf2N(2GcPqXOp|rJNl%hHH0iUWxCOLt%(B5hY7>Y@cgnf|pD$!6K1)-=XHf zBSNVNb#;Ga;vv3yY%doJRYv!QpL3z0J5=rHmV~Bne$^05c!-KA0TQ(ott~E|phnx< zgco_{h#kW}_@A*$b5-ON#R6EhSsv7)m8ZBZDRoHhl z-~3DB4CWCQ*y#psVOcq;4fHEuRZ=JzO^JF?PVLG%R>_2zOOC4T-9CahE$Hc*F0)8h zgpB}*oUrZzt1^;}QE&EUO*U!_t5iFJ^d%_9bs(FsvsZBgQ|@Ic&Sn!<1k{}RnB(%k zrNVo(AY(Q2M}o$&5-ae_gd+IZ*;X!2T*Em&2Q?s(T!_01XciWn?lB?>T${(BPuje! zsy;c<{)rQ4MmRSSUmt#+{si70PhiN_r!%Cc)jdfd3P-;k$|0>HN|g=F)kPwV^1|tLa&>2icaW zvTNj~q@*P`-*Qh@x3nB0bl}wdZ}wu|k@qgu>xT!oeIc5&RxUfzMyDB5I#h&tO z(5SNk)}EAiatS7MBs(e6nbbU+88Nz#^%t@5DS*9`V;{Ws&^5zY zstjGQa-cJ`+$)uAFPsc~`ao|4!4{q9Gj)lsKSpxq8h(pG*dTpHt3~gew9!5i|FBo6 zBI#}o_YJM`0KZrsK&UyCQ;hu%o2%+7E*WbC(gp6sMXGI9g(~s=9K16{b(aG1^qkSs z{k)d8>avsjOdw9Djn%3X^|j^HY%Hkt62&vt8(T-w>cc#TIYJIk=J+=smVCDlP|-S< z2CJe(SnsQP*;t}DgoYhL4a!)O+pyR(|w@oTL!6tRO6xBAE#ZDC|>|jrFNU7X5 zr)O*Hs!1)(7=_nbLT!%~fE2B-Zutktj%>vvpyb#sO580c**c3ulnx7$PAAdbrSKhI z?7o8;mEMp9!ZP?W{W#Pq7{Rba0!szpSZW$j)yT;}Lw(r~q_~$yCOI@Y%J*L^7fX9B zN3e@BrniRue_i;7*zq5u=Uv^;WR95X)gitU-RQJfzdpRA@|w;N2qNgkGF=OSX)8(A zG+M<=V~H!dy&9$$?iaZO-Ut%_i3&VQAM|0_NI$!|3{o>8_Vz$=OQf~WQ`9_;@L0p# z)3nb?S_{UyufY>3jf&nUuk_WETTS6U8vEbHxJyb_t224$1ygn-^ldxBjB7)-;x5Y> zL=+aKX|qE>BEKX~8jKY)?1cx3f9r+vF~Ok+1p~&ZTMU!)$NG-952xE7h6-}uGPEOy z_rpc4LqY1VOwoCwPL|^(SC19I95XGU47U@5Aw5jIeYGw$m;)IN-k@lhOLCp-?`@&L z=W7%}zGe>ko5#jOR*tmOy@%hG|6GSN*)`6n;y3p~Z7xzi;Yh_D_a+0e^NQYv$J1?4 zj&KJw_tMjrIYr+z!#}W`x*}4(;@;4~yrtiy6}&WB105L>}ml;8M!VuPmeS!fAMK&kEdA z(=A7czpvV`M1ItHNzGHj8_p7$aRj)~OD~lZN)6^&GC{*eUz^-tTaJ)oJ3+~-BwW4j zYHc*ZTmHh;=-1`lL?tqK(7fJa+l9f;vv#Cn^$%=>4s(T6(`yETcoL7e_g!XbMQ zv-|fvr~d6x(x>adimIL*nybCsFr&c^!)H^fKC7P+Hl{X^fl@G3gDaWasdS)CYCsXE zYO9ZJST_Pj(g%H>$6Gw9D)Ifr#uU3?M(3YSF)kWqx87DHV;Drm1caGTXsO;Hr0403 zFOjcvEZtT3fYgx%fdLxb0TH{#jc&3fRV}< z1Ypjufei?j-;=c%y2vF4umI=&8)PLY|0uJ%2*eVolr^6G5a>QV#7}=p;D|URV&Q!h zDMcmJE#b@X=;&(BO&aHKhU>hmV~wa`v|QK4$48X1wBteC9DNtYy9}#bBU(2pvA8#u zA^!edQ@8L1*Z|qV&Pf>V%gh=7lVdD|BN!=~<>;hL$I7M~$8}$p7)IUU?W(}cBiOgS z?kwI=uZeOo5x(FqGam>o`v5#}X5{FDQL_9lZV9={n?Zh%J4!Vh>Q`;D5k1#(9@$)K zXT($b!VvldGiSzf{}t35bpDB&z_dg@?4h;q)$OZ~>8tYV9ORkb3NRk*garh+*$u^t#oKNP3tf4&U(ii0E+PU&KZ{69 zZDmZ|=-%;V>kqVRJTo&2y0m7@-69QE6DIm*O3BE+mcsUMT|_KggRn5NUkpd{bp*`8 zAzB?^k$8ApN7FN%{xdW=!%VXclc^w`yG>Cw#AtB|GW$~7p?H%S>ca7v(kj*f z<%k@=AQW1|82YF*TNZjZeBJ4XZb+)u#2HqWp#`~Ce*?|hbQ~tCSwoA@UkBi{?QnM% zu8i8UUs3}C(X);i(%liK%S`L>np72@4^V z3yO)o!)IhLAkKp!YM9EDizlN}Ik6D#lhaALq6h1eWk89bWp$yfHs<&p=@AMP8UgN4pXl?KaxAsrUGEl$q9NUA)1 zG8=NBGEF3R?l3UuqVN@O>cerd%j!#AzIb9zMM%a`tpzD}C}cB2vd0$imq;|Aa`65%zSL7B?Dp*N3nB^)^q~&;o6jU zQPc%scG0^Az?5Y5&4pDw&=^Iralso}_H;8J9(!?7&b`KO^XTQ!!YYKElOp@eM|h2QV2_RL=^yb zk`Q)S$iDf(gi-5K;E3`1Ah!VjfiP`7B|{e-&awT?A1mk`MO}ugX{}A_Z9EfEvx$c* z)UIxsulOlR;THuk<~EmsvAFx?uL1ZxUml`riGmz!vrNB3q61_svGS4#3+$QHsX+%C ztG!j!>3LBAU3Y4CW8XG=-BD8pG$!ST@^2klyQ5TY*K4*_2^ynO^!{0t1SGrrwJffNZEmd`HXi;?hJi|HU-S%q(&NFOnqKMH_JUHVEQ+(xYtVVv*?`NF2Z9$}SGga*aSVtRRuhVtK%_5w=t&kma!7nz(@NP2U-LJpuD7Kijg=vYTd{X0eIybA1xLB z%j5?>Q1i*Fk7UsSkv|%w~^pzG8fB}V+J%WD< zj>|sbZIJN8X4#zE`iTK3sK*E6zXGiPz1q$-ny2BjB4$!=grx^*kcgTS&x{HpWM;hF zB;Sg*a?}$TaQIBsX25N;AacxKO#me7#%EBd;VW50bmgo&n`EuyTHe`{oDwy%+>2!T zsAP*{7Ygq-EcuL*N~NP<_HAM|r%A-kB=unI>UAR*ero%a1>IiIS=d)6Xo-$5tbFUz zy7oo~+rF2kv*LzPxL0$N6m*7ER{}gecau9B*?z)^;Ik(vKJr8!#As4KfNXX6Wt|xU zd57A=JD~~#rMG_Ip5$x&VO+?pDrC3!LJ%MP;~?d0qE3K--x`PvZxE+yiWdC#`XZJA zbn`S7OUVPzbMd^5YZlBAm4QC!5f_h3e1g#HH=(AX`yHrQS%Xol#~|T+>~gZX;uBQ# zeJh}Ik!KYLs+q^0?{|FvJ6gAoMdEU|a~wXrQ$c7c#{cOH#pceFHANv_q===V!GWNu z-J4>kr$==&*zXYb+q`d?@=pGk?jP{dLln(<1s?Q?Ag@mni~NfDD12tobffGdEGmFB zF=WV{>RBlJB!uQ(!gT5UK{>M(h2)8?>-x#jQ1AtYCeL8xQ4_3N>F`Z0BSB;!?5e2z zy{WNwePeK(t8*SPuHoBWGykzH3a$Ks@HE1#SP~P;fxL`%Ez`{UqvcL_+4XOko7`;p zKAW~?F~zT|-tKuf7r7bIclf-l0e>j~A&1aH?0`oclI9K{TczFT-J81{Yd3oDJ#$M$v z*bd&q+-&Jq#(I=diy`DC=|Q^&DU^5U0X+wto9*c?(?Sav_B4b8e`wTX2$r;YlxN`3cmo z(wm4&8tie`2!sbDp`ROW8fY#Ye-23pz3M=Yqr{E9$;-eZ^+g>Qy+=44>qL~+m*GSG zjlxA4r$&EH4%t}e2f9A4_^>LUs-&~wjTO)3D7^EL@hxlMd<@T(Az5iDbByUueBzAj zSMEDbNM)xI)K^r4wwFpin`~6sbcvX~GBbQQkDC(#tKw&N;p^wrdpPj+Z|wbHj!)BO z<>(I)4BPH|47ZZ*q)4110JVf*&oWu~oNbuTe<6cbOy=$zypr@mv2TaNK6@3xGPTxX z)7XspvEy1>M}n7LxO4{+5+e!G!Ky49_J%z->ypL1Ivg}VCtFPN$*|isl9KlkaLgqd z#zber%Fel8R-VE0oDHhfQZ7>dFZASx@0`i|;R@=^xA}1grj4OEE;VD5DkV@!(KJeE zR1KkKxW@Ee4$_wm6g48kG|PmEt+8qYk&RSw$fK!H8of`8CTOJFpX4^6l1b7tH~GW0 zV7yvK=`fELzsMn5My*wQ*m7pJ&sCLB?makOKZq!I5skJ3&`jcf626`3)2Xf_bRJhz z0xVY;No}j$Mb_mu6|dq5@Ai& zQ|dYhnvJIZX&`W~5|3ucB(%0R*0I~+v2=BbdagW&3(!S=ZC)(9jkbsk9txPycNgA; z8t3b3U6eqp=Ii zCqT@%^lgyfUWqZl=c4O5CE+fwmnVM#R@5k`q&`TE5vr#N)5MO0KHQ@=gI7a)UYom! z#`r|@?58&(M?g$b3o>jGVMu+U>~2*Cb=f0@N!G4OkJZT;uM^MNn%lOJ=1UAioG!aF zINsENubj;p2clvuhFwmJ7u-Ek|G)e^ACVCT*u`xd2Nw@im?`sHhXzU_JZfITdZ%AD z8J41cv-cAJ{*@n4G+*8W{bW?XR6$%zV0hK0%=#QpGs{-3NBD6yi6Y-9b=akg-E@Fs zH2T~p!O_RM#COTFCr2}EkXYnD4h(3yt1o~Uv_vD^XlN^#+_Gl1bFAasGN2bbuLfqL zgImW0@3D`$0BL^$+j%?_>`^hS6gr&+ z$g=oieTmUX`P#Jt7pJjeJpZc^A%D5M0UhI@gS*&8NYBme&+5*C^zZkPz5tvT?FOAD zu|2Yvc!_D_x`eQq=yMbWlNQgeIj3)h0o#kx$Ajf3coIVg<*JUI-w;?cvF{2oY2F6~ ziW3D(T+;6$i1u^X4&WXElz@8}iGC}Jp(ZI3Q;Vq3D1t3Bk_DI+G@z8m=wCkU$;`9< zFlCsRUN!WLdn^)c;Su9;G=iv}%gYQ#10O0u0sOhA5M00|i)tvtV7pMAU=~n%&SF~y zjc&N7PY(zJEgzI&OG<&8P?=}+mXq{x(z5AUZz)O)Dk8=9X>fpRJK`w6YL5F({QZSv z{Yiy0Ce+rb+3L;m<7>VlhU#fne2)D^gEMMyuQ#XLg|8)bcyLWa@<-n1Z_Rl?A0ww|lQV-CL=l z=*G`9!r{AA;)=$2t~{lXfm?!|`e*KgNXVLcSN+UnnrU1%4|>Pw4tXA*tXTs=E$hZR zJ-h02ZdpSmToKr24B+&4Ow-gHq@!^7zb(pcDCN!Nb+sh29yY6Hh%S$6i!ADhuCBc- z-9pRwX*wc7t>4>F>cjkE6bil>CLyZ{H#Kt84t(vj2NAr|TK`lG!@E?u9v!$ypR*y5 zEuRyQ@T++TU934jpEP7I&B?S=tH*E1x;$K5}_@BVO5E%abj z&;;fa5ylZPxi>n8h-T3zLpT5%#wsqw#CB>oG>KBwQQlV94UlI3X>gszG{ySQMVxX> zIJtFKh^x^hY;-01fR$lWVLe$ipf{ZceX3MOh8Ma|8mo6P?_}vo6ud)2B)HbQlr>g< z;XfHjHFcXJoH%y)ak?#~p}dwg?g2pB&s#(+8@O54 z*&tCeXun)K{Urx-AxLye@QsMBS*OnFEHPm^&!9T?tD>7pUa7s4yQG*q!vbnd>KeEluf#7w?Jy+n!jw zE#}=A_v7{}QMUl6+Dr%>P%}aWUZru}cA(Yf1 zw5!J@W!YTy>~XZo1AG!W#DyBwRG5@w)dM>~R4HVO5W50Tp|V*>t3rOc%yS36pi z?rRyiI7aP)azYH*?DL?)uI*pBUw*kmj15NC$-)uA>X7@bYe6o%p^MO|9(%8RUn%Qq zIeHvumv_Wru;JU{j8TG^w_oLePxJ*gz^%T&!{5jjwmNC*Q`u)>x36(_lis2xIR{eR zP_tO4!5C+8v$uQ9bir=kQmltJyMkDaFHXPhQ zVDNgX#KE<0l*dn;Gp`DG%Hnv)*2dt~;MF}$6spG9IEiVK>;x%k?7vY{dgE4I@A71q zX=Gd3JqJNw*q#)J2&rjrTB($up2YxjKyo~eY_EW{18uuID@sK$Q9xN73)0I!07>;Q zs0dGBxM8GRjCZpqzgrXoA}^k$p9rv1~9VLmx;~d;m5jTBkNfNRhaM zZUwufg)82MouCbxrkR61y4HKiL{701zjJPD9&|Wb9(Ze3)^)Fvm4|u_e?c6%!ODK^ z%gfqQK7IJQn*l9`YqC8Y;73O`pQ@lk3It^dSbR)^g?V!KBqBSKXs>ugq~|1+@+{zD znz{8eNr3Xd;`HIXI#t?n@afDrOYM204}I5Xlz;->XapLS`OiobS&T`ZB%m$cVf;hw zad+LetTNiW$!ff>e60sra2{U{yOyR?-%_tSi84Mu+Ia>Z{l3h)XMQwvI4#b9I9fzu zy@)iU4Cg1d1VGs+K>C<)7*u?G-rVvffj{GtSl!zh=dU{Gf{_+Rws#6((?jfTBvmpN4BUDa=fZ~C}O68;i;JFymhILu(RvMZAt!d zH3k6YQ-ErcU6`gZ?b{F9AFl6L|-FLwO+KM(Hd+3jQ_McIopX||SP;UbyELGrB z{qUZ1lL+bG#*`@sGFZX_^^e%-Yz&>K$dxyLIINNsA9L{u@qHk z164zh6XJlo)?t875saj)*RvLv<#?hNf}B5$3>)Jjqq44F3QmOBAe!vBd+q&VDNI;_ zR^BDXYzx-c>1z{^>0;IntTywPJew!>4DM??_O3^}CD}pL?(Rg*VB@TAyACnM^HO$F z@av-(#(?5(@j225Rihl14T>}>N|C2AN--jV3 zkpLo$1-D1>sNmQR;ea&v%gV;4y9derL0HY6D@B?V1@Djm3|Gac2a+6jjID|B`mKn_ znbfGiS1!;yJ{fOHg5=AEy!J@(Mjvj&`_x4w_3b+{5Mbo69R&SjnUvdyxOF`ztZ>eV z>RhirXaH=S=%Q+FS zMIy83$GU9xxjIk(jQ4GT-Li(jU2wrsUsX$K7h|TISUX(Ks<|sg`jc8&AU-*6<*3n4 zblsNdTKx7`GAoq-svMbxml1uG&kFb(akcbhT#twf!oFoGl|YdXO_sm~)tfU@Ne9GAYVFCl*p$pR5M!Q=n2aGyq(loSJeDxdUpY~0q2I0m zL-dTpG`8)bnjv8OOZKY6VqSX!M^B;<#zKsZtB9QFvqdg%<9}mo1KlL;D+53LIq*(F zDUJlS3P~@kqfXiQXiU_-9l$`}T$i;s0cdi1*%^W6 z5c)Wyi)Z0LLv4l7vbskjlx_r67QuJhnr%{rMLZi3Jdc15ms3E2{Dq0uLY$chJ%yun zrjHA5pZZnM>pQQrpqLdoSily?v=V;)S>c`T>u0?29M|yGX>!2bAgT3|Xeb&D5j@kO zOJmCqA+r-HkT`vB#BxoQ$az_6}4>!|uLnm-F3gF~k zZ%GkOTa#fplPt*kmka@nkq5U+QM_m~w9l59YMmq#5O>;cLvSGmCAc+l5=j{My`KV? z@yr#+LaiB!1L-w*$M;(GCwmKp8eLwTC1X-%;@aA6K zDt)#(re~ix0Szzry)f*>O$-F&wlQ9Am;QoCHw`c*ZGW(!(XL`APl;K>1UL);h~1`x z=Kx$aqsnlkToIQ%aViON3=!(JyCiKW3wY@z!Ys>Eo{XY63J&69=&If`GvoC@G-$hiI$ z$LT}`MXQk=nM6Lj1k{ix6u4%%{`2>6cSS9|`;4ths!nBakuaZ5q`od<7>2#O7VArU19( zbc{3^f&Vdck6j*HZN#TXaq3Oba1azZ-}wz)Tl#k0Muj3y2Z9!f{JWhU2)p5YMxulnI1e)PQ2oN2n1f2{C292j9s%K*>IdMxIQ#1Sz5K zd{@Ys0-KF*PbsuiA;}j^5K1YS#i7lZ@vY1l8XkpNa0yIdW}aG8mv$Ls%OG=)0m^YX z2OggC%3`2s!!nW@k5IV@CLW+>(mqas-bK0<=5NuclWYQV`6pmkz{j*7l_O1p_Bc#l`G7fJc0~Ywb@ld)11i7<*s_pR{L79E zV$W`bV256Ab@cjAT3r%9J7bApg9t%=L}r>%%luEVr5HF_Vu}w!>qf~v0la?-t+rYT zL0>vX)%>f#l1XV!3-kU#if666<+J_ z1eD5hAN zNmDh@?1TZwe-#bQud&voA;=r|T~voM$EHYus4~kXi)l86(s#T(IIph%XsQZd?gXm; zdIbx-EZw&O%I5YpARDA)II@=iHEv|(y$wo@D9`}DhL8N!XY`OH%}F3i_9 z82PQ-{A7PrX?oKsz_mz3O|6Pdm$lfzvBe?Ul2`1KVm5~q?P`#Lw^W|B;WUu7xyjz~GE&mh&A4k*MOs>ihDOX_0^5noBRSU3!~|Ozp#%BR)~;Y8aF^ z6tGz6rj>Ys(;mBHH0Z#7k7`BJnP|kuzeW{s7f!Kk=-$+MHFW`Sxrw{`?G#ll)r&WZ@>SXrwsYUREm#WZ5jbt|2zqT#T z-)mIG+9)@Wcw%}i?U66(p0Yrept-qJH6#-cU z=#R3^1UBo1{?r?yJy>5sCjj01y= zCq4j$zZ;z$mjwD$mM6v0BCR$a4W~Ef%cuGouH%fWg?mEe_a2;jMXU`6R{)z?@|wPL zc#*1~H$%+j~9#G-x$4jqeDc+Y%aOkqwavo!@< zbR+z~0Z-doJigi^QorHHX6U_Q6c&)FYC@8EyrFl4k8l|5P9ObzDB*47RE@6SK8qTM zq^n@%4`Mb@TT>*Zj0L;!A3u|Ete0pN{ySJU6pl4)twdWvP_Wh&UYbDt&d*>sf6FXV zGs8+j2~ikJu<8c;wVAr1cSu#n6ql&zi*3VqQ8n>66cD6sfZ$rSnQN1Y6V1fEvZT#v z(hlEER-Bo$Qoi?B>QTvw5ltKKKNHXZ%XE)puT@()MasF%>iI`S_^OGS+|Z2%Tfd7s zWu9sNN&BG(0QicvE8}?%n*qO=NKB?ty|>2~Qr|k4jzr!gAgU#t3Vc-vkDl8r!dE4c zzp#7YMgK=9j(4*0isd4v9#>|TawI3VLZSJ#x3^%DEihZK%+>Y_>4-W+PPiW_b!TA> z+*1=Jk_P0u0uZPc8twRB*FmV@^J2J+7=P{UErPzMSVN2^xf5Cmsv#Kh#5M$%n?;>l@xDo|#vk|2#vv0YS6ApV3ri9^dE;>eYls7Ui?c(<6*5)ZeHl;u|&0Dg73bZA!x{zwXD( zujV%J9#Qr!55-85VCZW7w`Coz$2!&>gO_BuI}v)3ty5b_O|K;kxUHl6bivZF#HD@% zl3ab1wI4V}F3K@Moimu1ILB;(u0q9Ien1?^;5Y!&#IJei(O2iyUlL}+ilvj@S#nZ> z9X<_tPeD#uG6)T`Q%FqWGshLPL<0MZtG4zMxmOlXxc>RckRIEiXvI^SL&4pBrz<}o z^|0NBb92?h`o=4cs+(0f@T`?UtsCRfaG5~(6`<@^9Zv>b3nL7x2zdacy|4=l>E~kN zu3PqWD$k74tlYzKW7|S&!dWdny>v#PAte!_)5sj5gjj=D#zf(BemASJQW)56xp+a; zR!nlkq)mWM9fn7oqOt6Qr=v2pnKkU%6ZidEyq}r0f6RQHkOLj#xtamZ)^032sz+io< z#2XyZd5LOa85Y$%HO~vEPs5iHPVZX1)$D%r#87n+pdiOAhy8TpCfE4|rVuB! z^F{LK>;?a(4cc-_!;fMdg*a7Xh;vlk+;Fk9ftt(_mjSc3Rt}}+)=~3>UKH5<&eL8p zC4`Ylyp1&VhMJv)^Q<8ux-|EeUmu%aPM2B{8nU8>0E9fLN_O$whG+TMbDytl7^Lyn zCeT>qSi<$D#XbB*hJ8P(a+Xk)b9Hw?R3G4&^U6%gRMIi$eIa!WIW;5QEekY9h&V9N$; z)FZ=fD>lock-a!Q6Y4NAwrefgcQ0TfX4q|ruqpo(8vu^c)1tAs;9wg4#EgoOBj6ju&R;p$nG|H z^(BoL< z)8OOJJzK({du{W2rDtYcau~?8NQ;AE$i3%k2AVpmFHx2E*Z)kd(L+bWRDUMESJ{nu z@pXRcw^gh3eDy%`rI0WA?i$(aJ9pr*bw1{TYwX*IOE-@H-s?Lq#)D@at?o1 zh^s9CBuZ?kD77&11T;!eq{_M?b)Mg8itEhp2OIK%FzWbMPp;-5h_aIu>VW^5kC(p# znC8=gEk$woDpODcTrGrY`8Oa$#Ehp;OgQ|uppqliV$Mp^s4V`Eky2Iy-ngeOV{$VY zQD~};`8oWnxPqR#*HR-ygupSZmWjowa3Rto0P9GmfXX|*d{RmKQEFI|!5)%`k~`a3 zr$1_$N|f@7crG-5$KG9r7t~#o^bSE`RM``nkx50ni?9CNG(!Q7De<&BceUW@3{ z|0S^@Z{VfJfLhd*Y zrO6$V|5`0PFiSvWQvJw^XDNt8cgGzNJ|jIS{H6yQVwPES2B;0rRk}z1v^1c|f+5`c z{nJ$@>@?CD_?l{1(N3)}tdoMSw^nKYEZO{V)5<2@QmzjzAQi zdqciFtJIH8H9A-IVuyJIz((6hfCQI!06>$!8sqozXXDM4k!V3Jq6;>cM? z=;Tt#f~g_G4@d7~d?fsg<(rd8c#qL&HRcg+vqSY`Z$50t}< zvR9VI$h0q{k(4nKonxc8#%O$wgkDov0-n_!MPto+wL#Se$a{q0<1?Kr8s&uBgDEb- zNo|<`c5FSbC(}5~U+g2o;cS&IRt_MSh#BvhfQ137sG)?jsrF>%2N9`1SH!4RF`qpW zeuif^=<{Lt+PSKCc?d{IggGuDRzeEL`%P;cA(eqX)Uc&KM5;*=DvY| zj~}~qB@n^NE$Njz25lnj4=he)-Xp0jo0#XvJAK@ysVuAZ=6x-dV|<2TK{NJ-op-MV z{94jl&jGgu9Mvh~Ge-3k`ID6PN@5r}LsIQr{eAMRQo-`#ABi{U&?y>VdV@*mN=^2H zA9Y$FJG>)H&L+?jA-6iCeR2r+!ZLGEug=T1pa@#s%3!e+6n25;c?01_o3mDPv>0Ij ztAf)3c&5<8H2;%-^JT=kEpu?U6DvB@oU<6`8^4J_*Tx}e75eNGH!=L6xd{a@zI?9= z3>;-X5fM{}&5NwQJEk%ZMs_oki`S?|5KpSeKDex->=0>nBGLUnd8<0{z`=(7)gY;g8k^0vQaajfVwS4!B# zNEn&!z@+^M`CweAcH_NCWrx@HJb~!kHS?#sO#ovkB0%7?-YPIM-Hhj2;DhU{zn}%M z`AP|?%!gM3JgFHx?(A4}wKxsz{_d54N$tuMsfB0gMS=Dvun?rxnuQ@nf0ZYuX=KBn{&}x1U#>q5NZUjVO1PQ@hR;s^4aD~C z)7Oe-Kz!Ooo``0!k1&1G-2$qbmW_FcX!Og7-XVhN?qFdH{);T#v6xxfeLbG?7o09a z2xp+(*A2Y6M@+n;>e$1q5toE8lB|>xa~yHaWW*Sy3qCA15CB1&sAN~n+?`^Eo5+Pj z!J6K(NYlsOkw$&pgYW*$sdN0IM$TpC5pHqCTh_E2@n}YdA_=Q18tH1 z*4G#)`j9s=-QhS`WzF~yE7E8)&wH~F)$A^JAcTq7frO2+7lx55HWMsIfWu;uB~QpZ_i8-xtClDZ6$8wfU;1 zI3ahuOO8=ai8G~a@DqMAkNT=D=!9=4u7INXwOt{?APz~f-v-5;?M+LAk}+dzPhv2- z%`f8%1M|la6BW&Te>?y}ePp5JKuQAlFeiKTp(+_$)101{j-gbHb((1VZ`nTlG#`Ok z7+Ag$vFN=?(Lu#@h#);ynd4DXW#_(7Vs;BLfs!zSmJ)>1X=y4oZ* z5rfma7VEk1$DG37ze4-xRSGT+YzsB+w5X5~(cHt-lV*;_tXm80%2Y&|=I}V`^)%zw z?IwRPAKjw}F#YII>l^(tb%ykBA&)QjY>Dt(EFS^ruv0M2WHgl=^=q$(y|TZ1;{w-< zlX(k5e{~_}CFr^1ZD^V!A9!3VQ9MX%ICy=_CIQ=PnFcgF&Jz|NFMJ~1OOct(R2XcE zf9-$P<>Xb4T>_60rfx`#3o`HxxzeYI)x95hcHywMnNcss(5(nhS5gyIbkF=Q3c(F< z=ipO4>ZtahsM6>A0waMK!^t-ikEDd~rdg3^Z9g-;rO($F<(;%|Y-ntP*zYHgN+gh5K7ndt3)v9j% zB!kFuPI2oEw?EKuY@=MnQsYhwWMMl^tz^9E@UiG4JG0nY8d!^KCc zGP__{+8y5;C4q-$P(!?ITFb`J964Jdxk(_4fosG5faxXWIW_34x+ew4Yk{Cw%O5vp7hC;5p4k z{i|dj+#+tGuA%Y&j}6z@o=`Sta-@qlE%q|hstUBg0greQ~4i+ zYgJt=iL|tmkM{YCE&%oPR!dX?Z;e<9UJ}{j$4-w`K67BS?0+@4u#mjsBNgn>0QV#) zuiFrW>DvM*r-t0ZF?|Cq#yfwF!l7|I4i!{a-_VTz{>V6gEJP}C4`!kCwpI+VseH_q z#pESfrB%zB+{|U36SYl>&Ns!#L|Q*nv14@d4Oto!NVR5#%#OI6Ve0MlYo6X1-MN`$W;f4QYN}ZU z*Gw~I5-?lBl)e^dG3ou6#B!S;k18q3ae#s9ZY-B}59kb)g2#Yj?)NR-K(F2JNk>vK ziB%mGXJA$;>FEr1nbujGq8L=>89GU%rw>QT{r0A3X(z5{Nh6pkiGlB>8rf27i_8GB0Lt4tdVvx^ImYPBpZ>6Y`H6C~S8rY=B%By1gct%% zdf847RbU4SfP|Xecw{mLPfSU~DpPjf#&fTnaMVlPEj+ONX8vO5<}GH5nobw6AL}QQ zm&_SI3t=X!8WkeBS7?3%& zsWrL0cNilWtnEe5u z8{YT769B;fAwqMRL~?$}>J%_T^7nQE?xu$N|7UHr76FNsJ7d#&s-M+!yjH5HORy+A zO!RH}PgycIrwn*9#qLKKz$n8tZc*(`13f_8T#f76;<^mzE^aQ7#QDz|Dgi1W`Ip51tdR(LtV5|I?m5gyGK~4cTC< zw@UXpNkU_2@*fVTlF!`~toKa7s==mFT!_AJ&lDOB025mH(uy}g7LP^O_K11kw008> zCBx}yrb{(`pW;^ z3>kL|YaX$skw%u?uYb-e zL-i2_8bOoRE0e||Y&QqC^d{%5#Q_d8qt_LVVyWbw8b%HQCseA?5Lsh+q(ic0IJjZplk zy8GuM*eu)3<^v|hz2*H@PbMpxEN9oV@WQh;!TYg_vA$do6<h3VDSp|`HtZOMjEnB<-D-Yc0?y|tHIB({PS)6;FkC{);3vqv8W zqxvuL`0gwo?gzLu-Lrl&j=H{93Jb~~=ueU+?b}`?VV{4XoC1+;%ZBhfiH52H;0~g3 z?RQP)RPnAznPyTwvB#}f5;PjP(JeyqeR!xRr$nqPlGH}Iw&$Aa4CDwVZCTTZ3Of8? z2*5L99W!MP{AT<6YO^B+?1JuBA>jbTt+3OtZJgcf zzOS$3`atv8U0!}ekyvR)F3vQ(0^b$&Z-LD+#WX9Q$MEq=bzDh+n2wZblG}m0Tq^C< z4pduE5|L%LOK{e$4*v$ne~Z;l``r=V|Jd)&!5g=yrKw%>zP_`&kk%xD_aE z(5AAd4^N&-B!ojp&sPMkD)YJ#sN6Tv>hvG`=D;60`OTl-kg{y;H=5znQD8ARBwa=D z(p&hFhp6E5n1~p|w=J2PXbhI{?nji>^IU(6zl1#H&dVSB-M$aSxQ!Vvuus`@a{9E0 z&8TACJ1fXS7qJ0o85vi9g0+-DLT|HL8jwsN*!e4#u*I%MP31RKY3Mk1mcC+MPN!WK z%C0~^`S|B9ko5;gGN2tu>g%B?lVyEur#?dCFk5G&BFU5|a{@C!Fk8@kX7h$c+zM&^d`( z;!GU8AZZSEBfG2&`Vwl_rc;{jA^as_GoXPh^=#wHNtm4f{)qz#V{dmC()23vyBkO9 zrm8nIk;b;K^UmsK` zj-RypGk1YYHw0SRz$kC%8YO-i5p(iCw z@#JuI;$og)(BOoRj`>f6kVahDulfHmtx2E8xZasp6?uU)kOM@kZ>JBbb?FFy-E^5y z;k|X8rVL@Q1j@^MsG22C{7SY zde3oYO6K^Hgy_&#IvV-RLPK&C4&^ov#IU&0xEcA|z-D5{oSt}Bns;r^rlQt${;_&n z7ZYdwA=FwMO5a2&OQP*`VO>m?k4NF=Yzz1H(-X^7uj7z}46Q~K8Cm(u>H7_GK4-*N zst}~%YDm}LKy)h3?lfDX*k5ul4&b8rfA9Co1FW>YTRtmRSDXTDjx&`|6~WH*Ab#-a ztYB3Ux5sgqo+>b%4Xgj2Ok}%$TXS3*DLJ{ETjIh|!k3y;L zX<*j9l@3qgG;pnRlqV`dfkbTum?^}H3n8)Hj7O-$zzG3MLF)?-vo{x5Y;Y#3LlW<6 zQ6Wrkk4RWnpgcdcgvj8()@UKfFu5OAN48Xiw% zrGy!CWThs+^e6o_byw&#(Vr+g6FH=N&1gz=S|bxAL%Z zp;yh)7yo!=upa+iJ)(-`F8Ij-{2lMXEPI5NI8)2NGiwFy@$cZt%N!X@y=RQZWp@MzJ7{mxG z(2mB3t~MuOiD>q=&`Jw6iKw-@C(Wlbo5M$L#922^Y-K~%Y7%@85w`DBjkK%hRB(Sb z;|iL=jAM4bX2qDyCN*+-TnBB}tG5lSCI`qSO;+EZ4mon@e9cM`ep}mXEj6(7*mQ#X zH>kPG4cjG`t*yIgMe{a@5>tQwOvl>Rh9Q|!IN;|PT^nKGWQE1NZJRb6`HgkE3tJdR zE|tBXXa{BS(U`0QBIDew6H6bnTJG=A^Ej?V#Wy{1D^FGQ@EZ8rhCEVZ9p%;&WGhdK z`j}+nTVdGHy_bbNaTJl-dGojlEfCJl?4)$q;(%h7mjstHv1SolXDkOgi2Yw~jFXaT zmX)bqo|pTZFOJP?Mw;+0X7La?H$Tqj!T%W@0O34$mj;6?<31p9gHypuuhOOPUmy6I zk3rKYTIEwB10R%>wQu$4sKEy~RW4)v0L8g1dAyED0;n%%=*W78C zEUVsRAgTltKEmYMg8J0?IEQthwL84A@{Kv9( zbdwFXV2=%|HKna>PH&)96T;pQtKEP3KH_5s5==VOG>VS;kGRY^?gWOWZ8y(4wO8L_ zSF{k%A;LSE1)3qt_&20jW^+F4_t}?C+YDU+%MnrA+Yd&&F|Hp8Us?={$|GFi*QQe~ zJFH&y(qmv>=x%TEGj6ufg9-<;>P=c@F6y{{Ub4@xd>V(gEU!fu$Rrh6k5kEkrq#DH!6L?sbzv3`_?Lu|af-rqSmaEzM z4tntR3|j})Aee4FaUK}~JAw#v4|nMaa?t{|%ri^S&r|o}>7&T<=Y=8J6ewK}Nep@Q z{m2GcS`yA{6L>}4JR7DhnpBTGd{OCUU*ju#8Ub19QXogc)>{%tV*};4BFnr1+hhi0 z#61G`*!4w{g*VHZ%$B?n!`8Y?UKsJ(Vz;hCu{pK+lqSsKODK~A1#1PhePfNcpK;x97NIm_AsLNiR6ZnFo+`XI2J zM(YW%$4tjjB*2`Vs_19>2Nd`QFkv12GZ+sjy3-@24WWQ>$ol9ha9)CJ-=sTzaa(XG z9cqAIU{$0hdLiGbDw^Y2-$HpydEjF*QWr5z=u%HcBJOZ?GOi^IrkQE{&ypZ`u=zcY zJ6*%gECg@mK>S*^IrUdPP3~)5a#YP&dqrUix*VtBBLnE<0*dW?HK@p;{(`Q6!GzO= z{n}+q{?}-0&9tD)9h;aRQe%vKr&1e*L)RcXt(DS$!VuM)957zuhy!(va-7}Kw6IRg zo}>!`6yGuuBDP5K22;%+5oFKcHXIt-mp-boCA)pdJZKo$t15HUuEm%nBz1 zZlg2_Zx)tq3U=e+AU@2|GZdKdbWmLx<^IoQL^dnx#-abLBwv=6VM~6s$Pq zjle|A>Vxv+Y>VK5kqREfpBrd~?^n^pNw)F4uCQHiNa}4S4Kv&jmzQOY5Upq6S{PVD zdI()E=XCI{Bb&xFY$4Nh`tNfKIqhIkOfvaqH;k&=x?_K8nao2GbXYs!i5a#8FKCZm z(V9?hHS!r|6GF&82sAP{akaATAt_s8lydm_mtU?95rKbfw1c05V3tk8laMn?bI{(B za))6?<_^LjskN+cqp_k@e{q)&CgxX)g*XLnIRRyx!`%n#(pov(P0m&}mkfj%H9WlN z9Q@kK@7c=&^}T@FHhW-Rw$hLpKSwWHKu4ycsN@3Z$Y;|~3IpxMbjA=^OK%3cGhIeI zu$L8hvnGvCZltlnIkQ|!kCu2o_DZ|9PbQl$gUfeH<;F#W_`P{=D&rL$9l|KQI|2stw(Tqs z!NK(Ldm|ewc(V=rbr3)FIL5piXeK4ET*Tv{>HnjaJKwr4CWL0KvTE1YiEGcc{%Ise zWPqg(j#8KE`#-`7iaBI@sKVoC|I06zT42~q9}#f@Tk4x2T?b;)PjH&$;- zwj*ot(*+$iYD$Ybp`-Xjh=3AlL;|` zyp$JXRx3el&AZow)|b6pEPrOFqEwiB=0XEkl#;_{-#4yi*1=!@1C!<2e!!=&t@#6d z#>>?Evd)hGa}@yyv}VfFFMe}B}Q+!h=|SL0Cv7hZ8@?M6jMGhl*$%$R!mZ00-x3!}Zv(5Pr* zmeIb{>w4q(5GYmPh1C>bwI%?m<@`~NQg_|D>{RxiURAM*H=72O-i5E zk@~L@AXN$s_srt5PUm^<3v}{P$5~qk)ecLR!Zg}lEo5PK_^Ig$Q#Nn}a&m&weGuLDs#yj_M z%yvnH>0nR@H~qoX*7Ua&1kCRy04fbn&Geq^OhNwEG+dR3N3n#e)`GuyOS&M*MasE` zntt=(sLNVd7ZL&zCvXjBR%kzb!1Cn1$9*N#IDIx`+)F_yEL+dKC_ks^9nCr6%LXp- z6GN$JncF9epsP4SIWlK|7}GWO=38GFruBjy z)M(0kTvA74LUc2xY7`1w%>6A(dM27pz)_T;(P?Q_EfFD`G>Oe2kaHpvQ)1xn2qJH` zP&RyiYg)K52pR1_!MiVx^|Ncb{VwHUaWybXAY`8xKE%@`u#Smf?&++s8gqU}c#}j) zTvb1d7vdMMal_gvFHLRIiNsPT&4 zfM4vKRUdfQhji?Yb-o=CV_&$=S<1`5VGUnOHBz05yKpQkEhJU$!YZFy+sI*Tmhu*f zuA4FKDGlR>gX1UBr8PnW?}6*Fxv6Yd@&xIWB&Zps-kL1l8W;$?lxg^T#p;|*J&LcG z3ia)0^t5_ia@1+F}a|N}jksW|F zcauCu9mo9m#}jWRqTc8vL5l!RyzD+GnD4>clOnpTwvOHsLHqcnL7*aAM@G}5kEw1m zHAPUDtVUs7P&~)7tC_IzCH+jSrnpG3jp@GTNT^D$CCud0^EasBD;Peu^h`_ibL` ziX#Ae*sWx&Yt@AoW^459rGWT>y-6#tAWFOK4T1`jkN;RsrXl_md|R(|szs zDc?Pf6IIhnPeaw=vSpYShgu!1Wb1s*uEaZuzbSmLQEXXmdvPWkb`uoRGH@0X5o%A} z%bW=c($V97<+593gsC9WKI$|x3Vn6R#k9SAqs7gUuq zA6jm!+q^gXjnR73U?+fg@=9|6Ia(_k65yw;7kAI3c;!0@;2CElE7HHA7tr?~?XO>U zs;yqq8qS~Y-sod~hM;}4myX8$zfHNkf}KjX`Iv_vTJ|cmpB`f`O?4L}NLPs`_U4u(*eh$!3fY6sIC%Br|za6g48GkrA|O9zUuH6}pCB**R< znVzF3X_QW3xw<(tFtfq^1g2ce4?_IFvJlLRGd}FfUViRLuE2QOF`T@NfB*pi0RR6`O9u!6 zlf;R!bprrqbprrUO9KQH00;mG00000000000000000000044wc0CjL|Z((F}FJW+S zY-wX*bZKvHEop6GXJvCQW?^<|V{dLQX=88fT8zC@kSEczE&OZSwykN~cK5Vx+qTVV z+qUhVc2C>3ZQTBUCr-roa?iOB6}2m3*Gp!tojYsg&SfQos)m{qx;af-RyST42&^h7 zAXKLk#P~yWw_ryhRFtVmOYD>U(~Q!OZq}dkSE*Oo4?=CqAl9_9l#;0);U|tzjY5#< zOB32hAcH1GLR~#%d8Tiq?{s_GSWS27_e^96&c4sSUQg$CyOu`WLi`BMBfMkRRJTA3 zh6*GU5num`V}=nb7eq`<@~Rny7E%c(9D)i&6uARkKbA6J%LE}CbC*GdlNbF5$a0tB zfY+wYg-W?Pn#$aHxpkzZ=L^5n$eGFc1d&j$R>kDuK-}*XI7&+6Z~)G@j?GPP&+=7O zZbCVlmKAQF{;*kx9^(yMT2g)UlbZ%t`Is;D3mWv~!7*{IRT*KqH4xi&W3s!m&Hy;{0(-R|VK_FAc0y|dR?P+krt zBpmj08pzf*bYbCH9oO{zkD}@mbGO-GD4dC7a}U4fw%%}T0P~*bTiSDiuNZvN7%EZZ z2ycP;hZ-uJDtxV_LGvQp6_IA_S|X`z3aK!RIGm0^Q+UZow_Zt0VHn0U?#wg%#f%ms z1s@;!-2Cz5Kr&Slr{z7s&T4h_TxaWbZSCh>ZGm-8>E6ah6kuQ(bsL?&If{hjok2zc7gYNJ_q z4HCkEhyEjD+kEP^lhnBT(PK&qIwS&uFe}gEcH2MKIJH{c^0cJf+%QY`0zF+{SRvsc z3px8bEOlcUWJ7nntbO22nkUZ0~_5Aq~PcH0g6F|zxZyu5(2SnSVkujgM*FfcIM zj*`*1oWP5Ug?c%dO?v(qwxUdEX!-}07 z-H3corZXd=qem}Y1)SYd(EPoYRZ&4RHl|gW->S}u?#*WOc~cG#cZZob>|-Msyzc^A z*PcziXV9DBe;@dG|HgF)BqW6iyumu=l9YduOhl!N99c{>ZkwHV?cmG_Xq~mOQVNA( zlSh6f_J!UeQ)H<@5;clRT}xM0x7mue3Req#_9-woKQ7z1YC@@n-|nAr-F^>o!@A_1 z5wyK##m(XaH;VbFdHVMh+fV(>jN9%C3Mzq!#)>Nz9d0ZXSC7Sj`zFDnCMGkvZhyNc z+UDDx5mBwxJY}`mm-OW`nda{PaFVd+Ufq<+i7?`F?aJd%fP7yv34|k5p**7*Y zU2^^)(YcqN&W5d`oWlKs-|q{zp|RI-7afDZd93*dc($7u8B2+a{-gY}PB@~@RmXqH zu32f;*4Fet-xv&L^8m_vH140d91dAm1b@3`XNj7oD2Ia}5R#|8PM~$aQ|VO(Zg!De zwh1lJoSUGTUaN8=Wj zlz_tI-gi zBkXh(8WJ*luTnIl488VjYk%qW2z>N?@~=?lnyExiws>Y#=i;pg61a=Sci^M6bjE3d z;!|2jC!07|L~<-n_nmj}VSv$gGx6q%g7-iU}X?=HznV1 z>yNtK&sz`Q2V*D_^S9nB6A$tuB4A+KLi#)ZG5o`meAo3#y-xkiB97--Xi_zSjV?-H%Y*&)1L1b9cOo{obFD z_g^9M)6IQt1{?sO=K=f=A(G^O4w2S&W_I*Wu4di|Q?Z%9P($><7&BEn_%_b9DHnEmiAu2POpfHnIrkc^)|9MMdGVL>&+}a$zjn|>nrPHvYL6)8 zr?;osmh#}lzIRPGuFukMGhDxCF;52%^QL?#=$yCD#J+!o86n7Tn8(^@q{)PblS%5U zKT9FF8&b1IE3OeGx`#5T)P)OadT~@*L$w^xX)62?9d}YF&H`(%O?{cl9lQJG&g=VQm+O^85#TbC})n6UV}8 z>iLT6B}e&DB7I>-Mh|amrxEYh*W0bC+4;Gjv#?ZWYt8x9vwSs6*4wM!j}rZJ#R`1& z5zfUCLN~ z=H8tWKg*46rhG`HBj*dV|bl38px;jszDR!hb+d00VzL-@JFFk>i=nzic<+GqFEn-al{0q5S?4x6|i2INihi?O=88qIFFI z4{VKKZF4Cf(NVR2Unbh=(L0#o!pkIE{yS3M3N0o3)%U6^Z9Ka1J%=}n8Sn-MI#Cs``MaHpL>-^`eKM@$tel<%^A9+-df6y zXKDcptL{~xD1J1Z-1LgF9wkYgvt3@6ukLx|N`c-=xQ6>U^MRea2gQT&JZTe}3OxJH z^gAxvb@e(!1G6OE&)286)ndkj7yXt#L@jf09?P!ud>xb$UxJOBXZdv?E|m!S1Lgp8 zTa0gIVr%qmY0jkuVLz;@kG|)tR5~3Qec1flG)=qbDP|1+ycRwh;!f0voX?|cXZvVW z(kpd>;Pg3-!DQ%Pb=`nwh6SV29H_ji%5?}VzBm>>s$=OEXO*j(#75Mq8|*yL(tY+; zsP<)2bUVjdkSdcz<{w&1bwZzFzlQWF9V=CoQKy6|HTWL7Upt<+=hqG1zN!g>^B5+zc$-%+hLCm@ciA`yk0_+6d6e|}G2A7{xq~kVcT<3B!MBf?V3x472+>2044of z$s6F=$m5&C5lAEq^KxOEAUygBS4xvpyWT=sRPXz@Q2L)%AYgerJZcxXdM`8#}7Yrh9ewc=o!D!=z2GCBd*hIP12y zin_8c3G{cp=dk!d?|H?GdCbJ+ANf%f1K(8X*D9-D?bp1A(>wKHK}C2j@b&I_yq_y{brMqpLsA8g1lWyJ0^EG}l@rT$SDKMH48esJzX^SEnAxVt=sa1Fj zW!*gQ8N~42S6m(j#fN2VuU^u7H@{5hcsM`7)Kp=h7GuzSzPQP|bz4 zcXKV@TTSh#)&FcL-?UUx)*Q2}uyE zC~UuFbI9$c|C!Lf*2-T^l7d_if|_ESSoNFIIQ7o*S+u%XLpsKgL&lcZJ(J~Ia`o~oNWsxJ<{dS%DRK0>LjcRB z-q+Ge>q2O3Z+L^t6$qC@pe_J=`O5^}_kIAMv#?ubhCnB$6)7_uJ>rvNVH2HeVY86Q z6HkOA3&xTo1VQP3j5M-Oc#S=bqiyhEau!!a0azQ1<*OFy<(Psu}dm+l+D^(!+>n z@|0yzsZ(Z4^Y25)7si%LDk_f>klsHuXqF6}$3p$bn3HgQ4gT@R^};)oBtD zxm+%A`9nbsToL>WlF&E${L)Na9njcRMFubcu_^j*6uKexaX}u!!nmuM!Qw=YMNw!8 z!%T$23KRghyy^$|7Ox8)C^{%)4j&lknefv0J=N$30^eVs`;e+Wmb3HtWg_!JTo;62 zo?c+ZjnvPQrsFF5V+1G4TtB&lhdHGY?sP)YFLV~t6BM|!s9?h=9(;mX1R&(%4KFlV z01|K%0pLafVXRxEBxl}THhX1h=zt_a2?x)1;wo$?^x_+!1!Tn(HxSXgng%3+0DHB9 zJmUEDaWfZQBNF48-$V@P!v58cp)kWW-Y-?(b&l^6Z2n*vLf|Q=A!@v=^XHzKTMK#~ z#brAT4Q6Hj?N*1s4UDDXBHDeHp;@CIpH+4!iT;Ia!$GlITAkbCf|#$1K_=A;A?0{a zYe~R)^K@$XgI1vgoA$H6sve6J#%A1*ro;feFo;sqSbL>Dm0Qmv7FZFqwf78!Y}L$! z#hnoH>o5hscsq**l^s?s&BtouvOJva(kb&Qva)UX(K5X&23u}-8BkEo;x6n!D0Kzv z)V7z!8B|wUpZ4o&?>tDy>9jd=10@ls8OqvE=dOA98{wh%*xGSFLXzsoX~lbNv~ zD3ZXaVry~9x9+PclRnri$0%wkFI-Z{JgaCBnb`u2jtNP3#|Gv;J7^-xXDVsk`RhZ9 z@iC5l7@%%@1pU3pR4>)fOp}3|0p>@6wr)u%U=&FL*>qW?^(=?A9bL6Hzj893h z2!S4diQ>DY0xf&m(r4mwB1Vq3TOqJ2Um!3hdNE#d^~s-=Q2is@q*mt~OBN7qx#Lpc zx0d|nQrgQMN3t6}jz!N`{~?z+IX=(Hn(lCPk7~@FhKL06B(EO+*{&1$&|UxM&6q>T zU*Q8I8)wRROq_UpEZ>0B_ohVA&Ox7OxL zC*m8^!l_GTGYc?xsB{X5@b6vhXzi+ID~=jOgcVOga)ARyD#2M!Da4g2qB^^g$!#V0H%CWujXV~lY)O;S4L@-nV#3JLSxKm z!h|y&jf_6z&T|E+pq0P<%FXT0D3OA8zF&Bn+-oC(MBkpHsvYi~Dg)}PBH^nZ>~?TQc|6RZq(U3Rpu?+BGzGHOQsFow52312g5tO*bO4A8>8nF?kDu0)N?)W7^P3-EnC5bLeT?u&%fJ_t;3N-Ei& zVAc8hs26}hOdeGMrl2NDKsQH@w%BIG89>!`+J%=hsEzq^vUXe zZ&wPOA)60k+a`mlpjpvk^)dkux&(Lt0tj9>jMe2{xas+xu0KzC9iU3S z&aH3GpNEj90v!jb?<-PAwKDlqCY3GTxAs6LAP5`ke~Cxdxv8tI@5Os^I0VvpyQ2=U zGTfkQyNK}*b;=qvDlBvM4}<|_s?G(?*=&W^$)#`I2gwqL1Je5Ai!8(b8K+^*4*Aa@ zJ2i+0$R=vZb#VfnQ1Dg`8O<0kX8KMjQ@rnN(hcDCrX&OOhkF7BoiQwp3Xw#$r?7~^sF97}SMj-Nb8TsiJQZ*ioi13K|AqIs z@S!@BwrxrkK9@!UBRFED0VF6o)hb!)qn+P95}5lgb$)@5!a9zApdJx?oj(Q7KyHDA zJ?pyD>}V@bGz>7*HR#pK-S37+hY3!00JG2(VBHGU{f_M9y+#}$zv1lVdmKV54j_|y zPx4{rYd1g(^asNw=&6|kdBK7WNPzg9$uI+72CCXrGkkrJp2h~He3;B^l~^%dMxp7{ z!Ru-xyw>kFA1F%4;wG+JOWUg4ze4e(Z^Qm0;rX&IQpF$6wVCpn zR03EjUIc7Jw08gP5e5J@^0*y`iwZhoVbS;g@s>+9V%m!aw0>VrrsL-f`d2`{STO*} zBd-e)4Q!I(MzcCj4g*+O3D;lS*6Nflq!8-Yr(%Prd2I<0+=*mmw0{IV{=+pBLirvT zk9g;8OEyMtEl1uKxlEr%CKIN7Fu>}{TG4hD%p9MH+{#|Zdv_h09Rif)3YUfePaDFW zApbVxrd#jy*JiwKVmdrxI}q5#1IGRX@0YQ8l4AEJv<&M$ET{=BX1fD< zU;{^%T)GlVpek_7OTI}(Cj6vH@KNgCksdF2+7<8T8W^T>Fs$>3sed7?|2D~lP^wLz zr&}acRlfz9|4=ntt8k+s(#x4MIM8br0Q7FFQpIYRSe-fs$ohC4T8zD{k1ctPZ4}Vb z-Ap>rq4RpX;m_*tzo8-y8@(!mU%CblG#5@G21?XWX^OaP0cE=^R`8#kR;AN^jya#BhCi`)P!(+V&U zTLA;iHgKZS z$P7TonjzNVvxC&pxlM31rH*h08dk#V;xkcz&~MUBWD5alVfUNsxk3V)7dgX&DDXq$ znRSpGXWP|bs4@}#Qi=t%Sc0Kg(n+Yio8qH{q2I`m6=@4vZ^?0#*c2XF0>SDd^b4P5 zCi*;J(D#x4MkNCT6m4<{?9Y~}^u_*qV&8;qLr^qk$e;v~p>R3}@eC6RGejv4f}Hd? z;d>?@*O+s~)t~7ZVA}n_HSlj|47x_GI~4qzw~~fx1GXX_BG>*ZhwaXtSf=lF^d8zE zj;h9Ck<>+P$KGeeFzj);NDKzTAUMYCs_}n@85S=oU-{mbj1X@zD$p;R5Zcq7YQcg)^lKblf4u2bM00~(K>KJQk^qGa8wh{KM z7L5o{fu?FA#+Jg$GL`cUyl*ssi^*8h&s$Rs9xH*k&93&RjBPR+mZQ*Xb~ z7{G8wTx?*-5CPqbH4p*F{Z!6je$^ky@zOrdkOqu~g2zd_ITzGksK)8u$sZ+9rjG#Qf>?0dfC>khhp6dPqU_E0zKBv_ zC;!cjPb~(}8AznRonVbHi$R5#j06==4_Bof;vd~_0QmU8p3+Nl0nEXkNTaglK)m>z z8%DsGBjvmBHfO@W1jzA~T;1oz%r=F@1!upxPU#ijG6Swmm+RQ7RkLtlGbxSDHCb1H z?f0D{U=Uq~B$>bD^MwS!!TPM#N~w)Ivjp}3mBeGd+{mpWQgg{3geJuj_Wklw2JKYs z2nfAYNt1W5?QM+$RX<%yS@#R%%GNBMTPV(>6UqRJz5_W##!z$D+YbZQZfIta9e*Z? zXpRsHo8V=X$-%&eOgZ5?1wEnTMqs+%(Z3m_ii4&0pF;|PWGLYMr2;6{$?V^gS?;$G(4H*v{_UF_GN zDR(7<6+7PVk|@1L98!#F{|?C-jEKgs951GvF2rwzcT+so^-M=HR1*tT;dVg*>4ZcQ z+)KKW_*)+ZPIu0TYk3anW;~&nG+8Jgq}%O-mO-FDz>_(agE9hIvARDIfc=TK5f+dy zc;QO)AZ0a=yd$)Yk_qn`OXD*o2)I{@cNI>tXDQiY0t_j$Pf5R!oR9!tB8o%A^gC@l z^(hGbMYK4qeXGC*u=C(AjD|eIFa=ns(G`IzTu>r~=W*0ekbCt4^cn3efy6Cf^(oWE zNoGgzCIO+eg8PDb^`(@3UaWXrvnannow8)~0l}OpRU>jROd9ED5>cZ$y`=sXRrio3 z^8UyMD;36YeUP=Y!g+ebh*e@W`}M7blzkEp+MExRfNhv~sV+&=#GgP-U7Nl80OcUjW z;~rRw@{4@(v+v`Kgx08;38{&!CFVKm*9xb%@;Fpih~*eP>YLud0|k zI@D+f#ftjxW|Im2Ht2;-SUt!yx>9fej|izu!5qTV#|_ts?;smIy#jC86%qC}E0w=A zu<^^AO(rNGsK$Y!2|?4C7DgckLy-F%Vh7jO&-BU1utz7~eXW;Du z3G6)}bzbQc4>pz(zY$odmEBuDA6DWU6=blMdZpKWlb-YPK23Gfw@!k7idOb1e1J|X z$5J=;x|F@=Jc}$aVXu@}fQ?u|;Co&clYp|S4>^>oLyLs?Ea2pgpZr9c1r>D;nvMxvG*j<1|u;g7c02f&HJN~b7{AW?6y619=AsT?8F}=1SW&f zEo=eij_`pxnj`*Qytkg(07Z|XYjap2z|$Hq6NXmK?AtsZnSU8?Fd-ago6hhML5B~U*E*hfI4Od+C5>zfkFvU2SgXO}$lwUiD<|yPtB(Y`+ zm17X^P|Dd8|BL}?v6^#2=}Et`c(t&Ga(3{(g%JeIc%?qri3xAuXx{pzl)RI8J6GWX(i48B5eacnUc8^nx0S zFj%O6Nn7Dlj6s9W^RKzo%{&HPD-=hPRes{`Dz);H(+K zyy%6_7qb_I>pgXym&vH!5Tfo)7>36J6`w|^*Ejg2vJ+n~-L0&=_c+~CDErbchxd9C zijG?O#KX7Ud)nuM{k3sB`I?3NCqEEPetKulnBMd8oPT$bFHU#Ms=V)IDoSenf4uzG z=%f_}5kSYG8R=6W92HG0Eu*z5mTdF?g?W;I9#Y6{9c{XsJf40(LF4e{+qs|2<7J%A zjV;ZtePqGE4DE(CS33ViHzwke?ncH<8tIZ!2nm0C3&!?)r?fqs41i2{7*{d)D(U5+ zM%P7s{5ZXNd{#`}axZp#Ej230{ozY$~i4?1_u<=^>Fi4$p)R`uu!ib8QrrvSKAPuoV9Vcp+k0~AQU5J zO}|}xzkNfca}Ts^DylF4y|d46IOFWfh)KoYh1K)#`^8o#1pSgkO}x5;rW?1OKw6;g z%~7emtbQaTtn2o&KG!7Xpcf+NAT#ib^|W<*SSdT{b~4e{_) zskq5m!aGJoTz6`OxMDyV_??UT`8bIX)n@1d({;&CZ?t0LS(1oYp8vRhw3{q0Vg9?> ziTlqn78pQFhLb`6?c8!=YngxbrzdE_<-(yA0@kg6)I1hx-QS~!r?>OkIe`6}rRW$O)rH%}FMST%T~ldDra90DNpU1`^b z_h6~X{m}YU^CbH>aN%8e0P^+Dc4{4^+Vyb>Ph$(*n%I!K!g(|e7}@NV$crR0TQyA{ z>umOyBwK1DTs|U*F`CcR?5XBC>^d>@e3FPs9qUu?_gs8~xXdj&0fn$P^G6Ta8vox4 zyxb3l0GVjO3D>(5PjMl{ASIv*g^I5)kL2JphvwjN>kt@VW&byE+uKFe<}`j84cRJd zM88s^78o#cn#X5aGIM>;F;G)7ODBhM1V(lkr{nFm1`O1v3TfH@paKikL-Qr@y}ED` z1i6obU`*SB6kx~SI`*y@IH~F|yAlu-Ymz^|AM&!gZmTT<)P{$uXvM;W#C`B64XmU$ zZJbV_jCSP0M+oGz!ykH`fR5BKo@c~HDj>VdWwa{E1K`6l>M-U z%5{>fOt-~@_O65IziIG9Tj9d=8BOz+DD-^Po-DSq$lmr@_NrUzWL%ikuZFl=c~u;^go6)s~n- z!~4lJK0s3^{nO^2%Rt-17)n!0Q^Js>Qmv6>SPGabKY*6sqn&(0XjANepKCrAEfW@OoJt;(c`Z1ZUPO z`SLxuQQ7oLR3rkEo1G)Rbu=|@M4{aFAHsKn#4?>hxxS_3KGRwp_|xs1r9ZEusBpe) zd2Ksf@(Y^~LTdD%S@_5#$$trTfG5z{FR`0X@oOEyHS zds@^=H(dLjj_n&jGz~Vp-2K~clrY5BY<)Ftx}6*7rbV|yiItbRH9Ei8Vpa%%W;9Ul zp;kBF<4A;7J9DesA&9xCIzW=s{nH}Bf+>YGzDnE#LB+j<*r|lWcT|2i!)bQClowYR zy(k5%*(1KpwDmRklfv!}3gd#bNURcCX2uwji6S~HnYFWqfH>T6>Y3HNKa^v7s(n3$ zvhed4i9{XP&m?c{>8v^eo|n2xx2c7BCtKV$;eb=Dh{MSU8tJbb5<_gU@uJ7^vvDU8 z1r_K|$)%IL)vg&wL!#QNt@v&XcBJc5vUJ;N-jUW3NDdm>0F_KBqozMj;DwcY!tY%y zGj_WSTW)_7oL~shNw;R|ovWW0ck_an`F^)KK##ZaqwucrFiR{53osN}c8<6_LKs8?C0n1eI~k^tRHQNXf`Ap) z#7N(9pbfoglk3xp(2dbcN=dsOb4cw0_o@vWKg8|NZTgyVL!`%15W6ipecmw2z_mFa z%0{i(X697t2$XEyk?2yBu}BuGve?|;(D0l{Dv+C)D&?S9jB#nQO`%fSf{fqS(c9i*6vrxofpEzBaY{7;yT5c(0nYHe2TStAkDG5AQ z=>l<5yA)pntd#x%b)iT|_=p>JOF)15mIkQb$k`IjjEKC)0{fbmA_&P;BmL_mf7Ft$ zm^IzevB7htH1ol>iq}DKPbky<6~r%>?F3+bvdtAGz0uu?IJt)W5&*7vNX<4-0dL8;l{9 z0pv3^)8M7lT%QlrB-t*~$lX$|auqnRz7le%hMwdM7M5+&9-|Q;PCb=_6D)UM)(z=v zgaU@2HcRVWVUWvm(>A5Uo<(eD{iy*%>HXcfLKM8@cBecxcE)(6v%|E|pGVu0$!ash zPF=J(35`B9h28oKhai90T_rI$jLhp6wK=A;ri3GZf4^O9070b=ALEidrORcvv$7}uzmWauljXQSl4Vwq`j^H(c?ECVY z@Zj6D6S(_rXn)fcj5K)tkIcdkNAynD9m$J0w5V{Tp{rv!&54f|mQot3T;(w%V!8h@ zO_gk!Sxvh)``ev2kH2}Js`prB@^+6uM%3j?C!r^d^@cfT2VLVTyLR*v92!@#}{qjnhi_G~>g)clCHo8?0S1m!hhm zq%&5nNu!=p5PJ57TimBDvgjDTa{PV7SKX84G3Xd|zP$&FLWUB1V`BxP>h-{}RWcjq zclFxiL`71%ZLKLkohsHm?T2As^Ssx0^wc#Ja~SB{Xa@SVynD0w?&D_kYC%PG6qAu@ zhY+2V=iZ#G!3`ikWE;!Tx$et;`2CrgwSAegMAb|tyBb=u3ui^~>7B&CA4pQR)V-TC zfGnp2c>d&Tt<*Fl2qBFkueZ0$>2I=CgYb=Qr5%r}rC`Trbf+uCq{W>+g>7qfEqqjZ zz7}rSGM$6nls9?Tws!H8uz#RiEdN?u73Mpp`3uYH@rZdWd2kWW#w*^+9rc)mb1|HZ zEXHZ3`S4HUErz9Bc3%Sscc1BZ122U1WEtHIWpfy{nVib4t{edoG{u=k!QQ1zB(+}n z`qLTX*Vlx{Qw{%@Yar`+e%mzy0(z(RuvP}@VuJmE*(gVZ%BRF@`GK1xU@N5{PM9tE zM>MtEbgG?X-Om95%b2HXt1cNmb$+s}<1u-SSBaoK#SpjGKxC11VEsUtTBL$Q5Jc4C z__Q9bv|T!=LJ#dS<(l$TBYF8~pZ155)O{{rnR9NC=j8^$i=au3)hTe?a^jF6zEt17 zoq1X=dG`LE$(}c7yqBxJ-OyiWnVP^Z`>C*4vx@B}e9-S+t$JW!vU{TBN?bcbCjByv zXr9O{#++WV&KITItmZ3EnpzMBXxie_5Inw{(EPqVtLyRmV*OXRmPI#EdiN8bIr)BR z4>!f^ia6YUT`JNHanVa2>Fw*2`qW=pFPLrkn%wnb;xJ{8n+cN^JVj#elyR8>`eT-1 zPeLr(KBwee=Zf&@aY(p4rdY=CF=dTOlBDRG|DKt3M+`bcr4(UD zJPcON47?*-lxjEtaa<>1Ejn^+f(CBx!%Jw# zWl1iWrR`ii54AyE=y3{Sxx`MCKeJzHGsUK{0_({>t?m$-jrUxbtGd_v3Wary?*IJ#f%F zyw~9IHJv0Uz>=$P%;@d{@>NxzPKMrW=7`opeN(wzLlmQ3kq!zxCfD<3_mLIW5lb5-iUJS=C<*#Oqmk5$*#6&!Q?Ji5j$4 z*KX76B3Y$lrJ5gUd5;O!#^R#C<$qQyG?f{sx1O(5m19b>JD5=e{m&TQH?Vqsj6u=3 zt9lP%|E;6hzS@FkBX6;VON7m2yhq&hts})csU!qZ-d@XRyi^hKJzM;QgRJGNN`*0e zHnJ3EzKNtPm5>wgUI~C#sK~OwR`FEyv)X)BF^43(fj@$F-@cliS0accDt`l6X6&IQ0^{ZLI*VR)stBqop(zUA-s0rt6 zu%c(cZ9g+Vj9ce>nG-6tYhw!6$5&8u(YC&HdFpiHX^FfR78C|Q+1Vv>=dj@`Ly;@e z(VPsx>3g&L(90abR`H~0HGWzUYfScBGRB;|7)qyTH=yx^Tsl?WG9;e1K^*^Cr(X|9m7;Ul;r_nl#PLJGsKmaf#6`HEDe)N!5RCu{b_7ULhS zC+rDqJQleXG0+eE(J-2NCc0IR2pmtw>&Y}r+}O1FPf2^H!YsF+$JnL^EP(EPTg}bH4HPCX3z%D=Z zBcfG#UFy{w>^qP!d^BE7yHsn(ayF_9Gq7OLZ%)$<+*%vq%-Kz)O9R&V!^_M;5sw#eWOCbPNpE ziGthg+Q*awOAB8Q=FO&Lxm#krzO+^gua5=ki=Y%9Yiw7i(Kb`89tO|c4-j-`waJ@_ z(5=y*I2g@5lv2nt(<&~Ig|X23?hh$sI_mxor_nHd;uH>y0I|tvTZK~f>p>Y^de4VX z^*#Gxwq6&In|6H8tC>IWyU!Mi4zIysxmzG*&-k4kPBZ+=sqRcoE~{Wkykmm)e?y1yMN$3hbo7;KHy%tCg9nYAvxVcp zd0PEr!_QMXx6YgIJB9Nts29KXw#kHvZXh>;IU)xZaQIaGCmKXeC+ru%o!RYS-v& zuH`B&@>seQ4(~cOJS>ecSy4i=+g+2x3S};}&DeZ*Ji2&|495HX`)`@R&CbGJ&q+&7 zpHir%u*fofMQO%TXNHRvTXzz}z1&YZe2d%O?+;R?sw!?Ug@hLvOeio~-}-Ap1cNnsr7PtL6L_m=IF@9{Zk%ZP4x zWUpc$l{Z63e}|*w*ta0Y8k{QoMsV$1mqN`GeEFocqA@WayEdmGZqhjWb;&gLG1Duv zK03^vm&(>Jd%ct-XPC*0hFXV&Og$>?Aw-U=5VE7#RFZS;j|n#xU%NJXq7htKRm6p;0wZ^*$y5M(ca(N(Z$`*lj1XZ@CN=g?>w$K+W9&pHI5R>KMbjgYDb z?1)5A#wcnhrf)suSAVCpQJRu*YjJjJ=x^gWQE&dR(KEk+US9|m8K&?HpnKuc!!1ai zdwn2=OI=yjz-pVbvwNH?*<=15{Am1It!y2Hd*Rn_i2f-kUt=*>#!B)f`o4!*va8b< zIM~L2)Sb6)zlS6#{?+^4wfQXdFZj}USjTO=5U;m-;k`%()W76ZX>TDy=RJeOGPg;m zgvWt6}Mot|YNMKN{oEuX1O>id`QBNMniK$1F_oVq0tTNx4=uO{V zob@OxG<#&ZQ*M#g@-sxa zS^@Bpu#S(gjRzDq{}t`(ZoD_c|1PuZgf1O?;}7OAbh~Scujh_M%TWQ?=ZCJVD1@h$ zyPXJLXzQ6Ep{5PtIb+v<)y;{3PdBwV!lbn-;7pc6;A$f3tIDFR*2{Qo1KVt`oBDcW zy!#g4;egk^;||wu^@#v5%Db#LBA!>msaR9yor;uEi;7(F!uaiw1W|%>Dp{&%rj0;_>>du3W`6iLN>P*P;~Mh%|SEyo2%M1%{-N z+>Ul>9eVLrkG#rHbmPK=$U@bM>$+++sDU6}@p~l|b8pVPv=I4jH-tS*c7A`nH{2-| zVZ;n?*==4W#7y{h_)%NeP6_}jmDR2b`j{HjAPDnN!2{*Fkb z%O>&MJzx3Y?knw=C#R0`R|>kmq2tA-ldX0}0#zpr;(qQ1zyq637^_#TfxB=0hLfEk z%1goK&5m&@J%;c!x^pQ1+RAO@{bOZrQH?nwn7(|c+k~2NN`*K8>{_uX4Yl}C z^u_!`(b)B_ase_^?RJDmTxxlB_Gp=&DFD{Lt;PB&vkI6dPI`~W4i~0L;_gOF1e3TgN<;BVTG@*RNz_6*C?j(EWtu{q^O*T^^js>yG%KX^ zPQ~?FV7gANtC(FM;nn+*A7_T9NCa&|nKeY8@2wB_0>hhpi6`VRD)q=?bEno5RJ#9b z1fbSMT@YVZWep38pq}=tar!^8F5?Expzg&1e-Z$5XLG)l2wb-9Y`iyfTT^ocT1NLR zzCT~$B19)FWgA0b+21pns|Zgiiuc0#8 zB04VJr?|7`^u3O76=K4r*N3X_`+RXfnC0?`@c&eSRVf2O{-yedimK)<0U+wwQ&Hj! z>(UnHrBYjRZaNyW}FH4`}C9yT^Dg0>Fqmntu%*EgNiQ zsT&s_+fj*Sjrtob7uys`95FWJUjy4q2D7DCk&&Xf{51Ix-4yiEv0wzS6&}y7s%`md zycI!>RfW@r{me{rfWC4^>s$>d-2;sWcu+0CsVwz)er=>?G5 zWLitp)I&s=CS(8$Rf0ym*FmqvijBu$?pFQv1Eu$#SN}FA=4~rZexm7T>8$al4#}~i zfMnF;hw{S>G=RJ}e_ph#C6*UB%k7V)>n}+XJWahc&o^iU-J#)IX(CugMXLI~NjkvW z{QAh57cG&vf)sp{J_f%(Y7%cXB>MNO$?&ZkSHEij17DuWXm35h3tF{7?*ql}Qu9Vh+7Yy>)NK zK@tT3_ao|pP$hE=G~7)+;vRlb_8}40;U6W<(Q3swjgwFA!RqZ9xZXS!u zJOC`dA@egNmO<*;DaGf*!o`S3@{wYW>gV3=hW&SVMIKK2LHnHn<1Myh3lW^eU)**e z=9B_h+|iJXXnPtehW$(#aOiB|IZmiJuKR7qhRk}mT4#GXxmZcTK3**o{Y?bk+}-+s z=3hapfq^~W`LPxXcGM>paN>?#ohn{d=Ljh4!&S%fh0qW|>|I*I!ssyr3LStIp?)bH zVdVX7u{nH|zt~;j#*z2#fBTIy5Wp7QCeghYXb?#x%>03Xim(uI%<7<{KyBz5eVlp9 z6o9QHlYcD%B{5xl5WybSQ0}FoiPjIKjd0@Z zwpWpiV0);SLe!N6|)+5P; z!*EA@BZ6J?2yZH#8T5ywd&hFckHtv|5)8vobwN;+4Wn8Q1^JimBnYCV1%@OnVBztC z=i53^JQS}?!27lr*l~f9r@bo;o@51G{rr566-LJ=6FilDP2(`+_oJch5n|ByIaS;B z`;ZY}0gCP1UynkPTU>@4g#z z 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