diff --git a/README.md b/README.md index 59181cf..b7c959e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # 📦 StackPulse ![Release](https://img.shields.io/badge/release-v0.5-blue.svg) **StackPulse** ist eine kleine Web-App, die über die Portainer-API deine Docker-Stacks verwaltet und aktualisiert. -Aktuell funktioniert StackPulse nur mit der Business-Edition von Portainer. Die Communitiy-Edition wird in einem späteren Release implementiert! +StackPulse funktioniert nur mit der Business-Edition von Portainer. Die Communitiy-Edition wird nicht unterstützt! Sie besteht aus einem **Backend (Node.js/Express)** und einem **Frontend (React/Tailwind)**. Ziel: @@ -124,9 +124,8 @@ Ziel: - Notifications (z. B. via Webhooks oder Mail) - Monitoring (Status, CPU/RAM) - Verbesserte UI/UX -- Erweiterte Filterungen udn Sortierungen +- Erweiterte Filterungen und Sortierungen - Multi-Server Verwaltung -- Integration Community Edition --- diff --git a/agent/Dockerfile b/agent/Dockerfile deleted file mode 100644 index 33714ab..0000000 --- a/agent/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:22-alpine - -WORKDIR /app - -COPY package*.json ./ -RUN npm install --omit=dev - -COPY src ./src - -EXPOSE 7070 - -CMD ["node", "src/index.js"] diff --git a/agent/README.md b/agent/README.md deleted file mode 100644 index 60a63d1..0000000 --- a/agent/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Stackpulse Agent - -Der Stackpulse Agent stellt Docker- und Host-Metadaten über eine REST-API bereit. Er verbindet sich lokal über `/var/run/docker.sock`, validiert alle Anfragen per `X-Agent-Token` und läuft standardmäßig auf Port `7070`. - -## Start lokal -1. Abhängigkeiten installieren: `npm install` -2. Starten: `AGENT_TOKEN= npm start` -3. Optional: Port via `AGENT_PORT` anpassen. - -## Als Docker-Container -``` -docker build -t stackpulse-agent ./agent -docker run -d \ - -p 7070:7070 \ - -e AGENT_TOKEN= \ - -v /var/run/docker.sock:/var/run/docker.sock \ - stackpulse-agent -``` - -Der Agent liest nur Docker-Daten und verändert keine Container oder Images. - -## Stack-Image-Checks (CE-/BE-Parität) -Endpoint: `GET /stack-images?checkUpdates=true|false` -- Liefert pro Stack (Compose: `com.docker.compose.project`, Swarm: `com.docker.stack.namespace`) die verwendeten Images. -- Optional `checkUpdates=true` für lokalen/remote Digest-Vergleich (`updateAvailable`). - -### Portainer-Version -- `GET /portainer/version` – liest den laufenden Portainer-Container (Image/Tag/Labels) aus, ermittelt lokale Digest und vergleicht mit Registry-Digest (Update-Indikator). Funktioniert ohne Portainer-API. - -Optionale Registry-Creds (für private Registries): -- `REGISTRY_TOKEN` (Bearer) -- oder `REGISTRY_USERNAME` + `REGISTRY_PASSWORD` (Basic) - -Hinweis: Für Swarm-Stacks muss der Agent Swarm-Services lesen können (`docker.listServices`). Ohne Swarm-Manager-Rolle bleibt die Swarm-Liste leer. diff --git a/agent/package.json b/agent/package.json deleted file mode 100644 index 0c559eb..0000000 --- a/agent/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "stackpulse-agent", - "version": "0.0.1", - "description": "Stackpulse Agent for Docker metadata and update checks", - "main": "src/index.js", - "scripts": { - "start": "node src/index.js" - }, - "dependencies": { - "dockerode": "^4.0.2", - "express": "^4.19.2" - } -} diff --git a/agent/src/index.js b/agent/src/index.js deleted file mode 100644 index a5ad68e..0000000 --- a/agent/src/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const express = require('express'); -const Docker = require('dockerode'); - -const infoRoutes = require('./routes/info'); -const containerRoutes = require('./routes/containers'); -const imageRoutes = require('./routes/images'); -const stackRoutes = require('./routes/stacks'); -const portainerRoutes = require('./routes/portainer'); - -const AGENT_PORT = parseInt(process.env.AGENT_PORT || '7070', 10); -const AGENT_TOKEN = process.env.AGENT_TOKEN; -const DOCKER_SOCKET = process.env.DOCKER_SOCKET || '/var/run/docker.sock'; - -const app = express(); -const docker = new Docker({ socketPath: DOCKER_SOCKET }); - -app.use(express.json()); - -if (!AGENT_TOKEN) { - // Keep the server running to allow late injection, but warn loudly. - console.warn('AGENT_TOKEN is not set. All requests will be rejected until it is configured.'); -} - -app.use((req, res, next) => { - const token = req.header('X-Agent-Token'); - - if (!token || token !== AGENT_TOKEN) { - return res.status(403).json({ error: 'Forbidden' }); - } - - return next(); -}); - -app.use(infoRoutes(docker)); -app.use(containerRoutes(docker)); -app.use(imageRoutes(docker)); -app.use(stackRoutes(docker)); -app.use(portainerRoutes(docker)); - -app.use((req, res) => res.status(404).json({ error: 'Not found' })); - -app.use((err, req, res, next) => { - console.error('Unhandled error:', err); - res.status(500).json({ error: 'Internal server error' }); -}); - -app.listen(AGENT_PORT, () => { - console.log(`Stackpulse Agent listening on port ${AGENT_PORT}`); -}); diff --git a/agent/src/routes/containers.js b/agent/src/routes/containers.js deleted file mode 100644 index 6134a65..0000000 --- a/agent/src/routes/containers.js +++ /dev/null @@ -1,76 +0,0 @@ -const express = require('express'); - -module.exports = function containerRoutes(docker) { - const router = express.Router(); - - router.get('/containers', async (req, res, next) => { - try { - const containers = await docker.listContainers({ all: true }); - const payload = containers.map((container) => ({ - id: container.Id, - name: Array.isArray(container.Names) && container.Names.length > 0 - ? container.Names[0].replace(/^\//, '') - : null, - status: container.Status, - image: container.Image, - ports: container.Ports, - labels: container.Labels, - })); - - res.json(payload); - } catch (err) { - next(err); - } - }); - - router.get('/stacks', async (req, res, next) => { - try { - const containers = await docker.listContainers({ all: true }); - - const stacks = containers.reduce((acc, container) => { - const composeProject = container.Labels?.['com.docker.compose.project']; - const swarmStack = container.Labels?.['com.docker.stack.namespace']; - const stackName = composeProject || swarmStack || 'unassigned'; - - if (!acc[stackName]) { - acc[stackName] = []; - } - - acc[stackName].push({ - id: container.Id, - name: Array.isArray(container.Names) && container.Names.length > 0 - ? container.Names[0].replace(/^\//, '') - : null, - status: container.Status, - image: container.Image, - ports: container.Ports, - labels: container.Labels, - }); - - return acc; - }, {}); - - const payload = Object.entries(stacks).map(([name, stackContainers]) => ({ - name, - containers: stackContainers, - })); - - res.json(payload); - } catch (err) { - next(err); - } - }); - - router.get('/container/:id', async (req, res, next) => { - try { - const container = docker.getContainer(req.params.id); - const inspect = await container.inspect(); - - res.json(inspect); - } catch (err) { - next(err); - } - }); - - return router; -}; diff --git a/agent/src/routes/images.js b/agent/src/routes/images.js deleted file mode 100644 index 9bf4c4d..0000000 --- a/agent/src/routes/images.js +++ /dev/null @@ -1,41 +0,0 @@ -const express = require('express'); -const { checkImageUpdate, getLocalImageInfo } = require('../services/registryService'); - -module.exports = function imageRoutes(docker) { - const router = express.Router(); - - router.get('/images', async (req, res, next) => { - try { - const images = await docker.listImages(); - const payload = images.map((image) => ({ - repoTags: image.RepoTags || [], - size: image.Size, - id: image.Id, - created: image.Created, - })); - - res.json(payload); - } catch (err) { - next(err); - } - }); - - // Accept full image name with slashes/colons: /image/check/ (URL-encoded) - router.get('/image/check/*', async (req, res) => { - const raw = req.params[0] || req.params.name || ''; - if (!raw) { - return res.status(400).json({ error: 'invalid_image' }); - } - const imageName = decodeURIComponent(raw); - - try { - const result = await checkImageUpdate(docker, imageName); - res.json(result); - } catch (err) { - const status = err.status || 500; - res.status(status).json({ error: err.code || err.message || 'Internal error' }); - } - }); - - return router; -}; diff --git a/agent/src/routes/info.js b/agent/src/routes/info.js deleted file mode 100644 index d4cf116..0000000 --- a/agent/src/routes/info.js +++ /dev/null @@ -1,33 +0,0 @@ -const express = require('express'); -const os = require('os'); - -module.exports = function infoRoutes(docker) { - const router = express.Router(); - - router.get('/info', async (req, res, next) => { - try { - const [dockerVersion, containers, images] = await Promise.all([ - docker.version(), - docker.listContainers({ all: true }), - docker.listImages(), - ]); - - res.json({ - dockerVersion: dockerVersion.Version, - hostname: os.hostname(), - uptime: os.uptime(), - platform: os.platform(), - containerCount: containers.length, - imageCount: images.length, - }); - } catch (err) { - next(err); - } - }); - - router.get('/events', (req, res) => { - res.json({ message: 'Events endpoint not implemented yet' }); - }); - - return router; -}; diff --git a/agent/src/routes/portainer.js b/agent/src/routes/portainer.js deleted file mode 100644 index 76712f9..0000000 --- a/agent/src/routes/portainer.js +++ /dev/null @@ -1,80 +0,0 @@ -const express = require('express'); -const { checkImageUpdate } = require('../services/registryService'); - -function extractTag(imageName) { - const parts = imageName.split(':'); - return parts.length > 1 ? parts[parts.length - 1] : 'latest'; -} - -function pickPortainerContainer(containers) { - return containers.find((container) => { - const labels = container.Labels || {}; - if (labels['io.portainer.container']) return true; - const image = container.Image || ''; - return /portainer/i.test(image); - }); -} - -async function getPortainerVersionInfo(docker) { - const containers = await docker.listContainers({ all: true }); - const portainer = pickPortainerContainer(containers); - if (!portainer) { - return null; - } - - const imageName = portainer.Image; - const tag = extractTag(imageName); - let version = null; - let localDigest = null; - let remoteDigest = null; - let updateAvailable = false; - - try { - const inspect = await docker.getImage(imageName).inspect(); - const labels = inspect?.Config?.Labels || {}; - version = labels['org.opencontainers.image.version'] || labels.version || tag; - const repoDigests = inspect?.RepoDigests || []; - localDigest = repoDigests.length ? repoDigests[0].split('@')[1] || repoDigests[0] : null; - } catch { - version = tag; - localDigest = null; - } - - try { - const info = await checkImageUpdate(docker, imageName); - remoteDigest = info.remoteDigest; - localDigest = info.localDigest || localDigest; - updateAvailable = info.updateAvailable; - } catch { - remoteDigest = null; - updateAvailable = false; - } - - return { - containerId: portainer.Id, - image: imageName, - tag, - version, - localDigest, - remoteDigest, - updateAvailable - }; -} - -module.exports = function portainerVersionRoutes(docker) { - const router = express.Router(); - - router.get('/portainer/version', async (req, res, next) => { - try { - const info = await getPortainerVersionInfo(docker); - if (!info) { - return res.status(404).json({ error: 'Portainer container not found' }); - } - res.json(info); - } catch (err) { - next(err); - } - }); - - return router; -}; diff --git a/agent/src/routes/stacks.js b/agent/src/routes/stacks.js deleted file mode 100644 index 4ef222c..0000000 --- a/agent/src/routes/stacks.js +++ /dev/null @@ -1,135 +0,0 @@ -const express = require('express'); -const { checkImageUpdate, getLocalImageInfo } = require('../services/registryService'); - -async function getComposeStacks(docker) { - const containers = await docker.listContainers({ all: true }); - const stacks = containers.reduce((acc, container) => { - const composeProject = container.Labels?.['com.docker.compose.project']; - if (!composeProject) return acc; - - if (!acc[composeProject]) { - acc[composeProject] = { - name: composeProject, - type: 'compose', - images: new Map(), - }; - } - - acc[composeProject].images.set(container.Image, { - source: 'container', - name: container.Image - }); - - return acc; - }, {}); - - return Object.values(stacks); -} - -async function getSwarmStacks(docker) { - try { - const services = await docker.listServices(); - const stacks = services.reduce((acc, service) => { - const stackNs = service.Spec?.Labels?.['com.docker.stack.namespace']; - if (!stackNs) return acc; - - if (!acc[stackNs]) { - acc[stackNs] = { - name: stackNs, - type: 'swarm', - images: new Map(), - }; - } - - const image = service.Spec?.TaskTemplate?.ContainerSpec?.Image; - if (image) { - acc[stackNs].images.set(image, { - source: service.Spec?.Name || 'service', - name: image - }); - } - - return acc; - }, {}); - - return Object.values(stacks); - } catch (err) { - // Not a swarm or no permissions; just return empty - if (err.statusCode === 503 || /This node is not a swarm manager/i.test(err.message || '')) { - return []; - } - throw err; - } -} - -async function enrichImagesWithDigests(docker, imageEntries) { - return Promise.all(imageEntries.map(async (entry) => { - try { - return await checkImageUpdate(docker, entry.name); - } catch (err) { - const status = err.status || 500; - return { - ...entry, - localDigest: null, - remoteDigest: null, - updateAvailable: false, - error: err.code || err.message || `update_check_failed_${status}` - }; - } - })); -} - -module.exports = function stackRoutes(docker) { - const router = express.Router(); - - router.get('/stack-images', async (req, res, next) => { - const withChecks = req.query.checkUpdates === 'true'; - - try { - const [composeStacks, swarmStacks] = await Promise.all([ - getComposeStacks(docker), - getSwarmStacks(docker) - ]); - - const combined = [...composeStacks, ...swarmStacks]; - - const result = await Promise.all(combined.map(async (stack) => { - const images = Array.from(stack.images.values()); - if (!withChecks) { - return { name: stack.name, type: stack.type, images }; - } - - const enriched = await enrichImagesWithDigests(docker, images); - return { name: stack.name, type: stack.type, images: enriched }; - })); - - res.json(result); - } catch (err) { - next(err); - } - }); - - // Always return local/remote digests with error details when resolution fails - router.get('/stack-images/status', async (req, res, next) => { - try { - const [composeStacks, swarmStacks] = await Promise.all([ - getComposeStacks(docker), - getSwarmStacks(docker) - ]); - - const combined = [...composeStacks, ...swarmStacks]; - - const result = await Promise.all(combined.map(async (stack) => { - const images = Array.from(stack.images.values()); - const enriched = await enrichImagesWithDigests(docker, images); - return { name: stack.name, type: stack.type, images: enriched }; - })); - - res.json(result); - } catch (err) { - next(err); - } - }); - - return router; -}; diff --git a/agent/src/services/registryService.js b/agent/src/services/registryService.js deleted file mode 100644 index 484fd29..0000000 --- a/agent/src/services/registryService.js +++ /dev/null @@ -1,372 +0,0 @@ -const DEFAULT_REGISTRY = 'dockerhub'; -const GHCR_HOST = 'ghcr.io'; -const DOCKERHUB_HOST = 'registry-1.docker.io'; -const ACCEPT_HEADERS = [ - 'application/vnd.oci.image.manifest.v1+json', - 'application/vnd.docker.distribution.manifest.v2+json' -]; - -function createError(status, code, message) { - const err = new Error(message || code); - err.status = status; - err.code = code; - return err; -} - -function detectRegistry(imageName = '') { - if (imageName.startsWith(`${GHCR_HOST}/`)) return 'ghcr'; - if (!imageName.includes('/')) return 'dockerhub'; - return 'generic'; -} - -function splitImageIntoComponents(imageName) { - if (!imageName) throw createError(400, 'invalid_image', 'Image name required'); - - const registryType = detectRegistry(imageName); - let registryHost; - let remainder = imageName; - - if (registryType === 'ghcr') { - registryHost = GHCR_HOST; - remainder = imageName.replace(`${GHCR_HOST}/`, ''); - } else if (registryType === 'dockerhub') { - registryHost = DOCKERHUB_HOST; - if (!imageName.includes('/')) { - remainder = `library/${imageName}`; - } else if (imageName.startsWith('docker.io/')) { - remainder = imageName.replace('docker.io/', ''); - } else if (imageName.startsWith(`${DOCKERHUB_HOST}/`)) { - remainder = imageName.replace(`${DOCKERHUB_HOST}/`, ''); - } - } else { - const firstSlash = imageName.indexOf('/'); - registryHost = imageName.slice(0, firstSlash); - remainder = imageName.slice(firstSlash + 1); - } - - const digestIndex = remainder.indexOf('@'); - let repoPart = remainder; - let digest = null; - if (digestIndex !== -1) { - repoPart = remainder.slice(0, digestIndex); - digest = remainder.slice(digestIndex + 1); - } - - const lastColon = repoPart.lastIndexOf(':'); - let tag = 'latest'; - let repository = repoPart; - if (lastColon > -1 && repoPart.indexOf('/') < lastColon) { - tag = repoPart.slice(lastColon + 1); - repository = repoPart.slice(0, lastColon); - } - - return { - registryType, - registryHost, - repository, - tag, - digest, - fullImage: imageName - }; -} - -async function getLocalImageInfo(docker, imageName, preferredTag = null) { - try { - const image = docker.getImage(imageName); - const inspect = await image.inspect(); - const repoTags = inspect?.RepoTags || []; - const repoDigests = inspect?.RepoDigests || []; - - let localTagFull = repoTags.length ? repoTags[0] : null; - let localDigestFull = repoDigests.length ? repoDigests[0] : null; - - // Fallback: search listImages for matching repoTag when digest is missing - if (!localDigestFull) { - const images = await docker.listImages(); - const matchByTag = images.find((img) => (img.RepoTags || []).includes(imageName)); - const normalizedRepo = imageName.includes(':') ? imageName.split(':')[0] : imageName; - const matchByRepo = images.find((img) => (img.RepoTags || []).some((t) => t.startsWith(`${normalizedRepo}:`))); - const candidate = matchByTag || matchByRepo; - if (candidate) { - localDigestFull = (candidate.RepoDigests || [])[0] || null; - localTagFull = (candidate.RepoTags || [])[0] || localTagFull; - } - } - - let localTag = preferredTag || null; - if (!localTag) { - localTag = localTagFull && localTagFull.includes(':') - ? localTagFull.split(':').pop() - : null; - } - const localDigestHash = localDigestFull && localDigestFull.includes('@') - ? localDigestFull.split('@')[1] - : localDigestFull; - - return { localTag, localDigestFull, localDigestHash }; - } catch (err) { - throw createError(404, 'image_not_found', `Local image not found: ${imageName}`); - } -} - -function buildBasicAuthHeader() { - const username = process.env.REGISTRY_USERNAME || process.env.GITHUB_USERNAME; - const password = process.env.REGISTRY_PASSWORD || process.env.GITHUB_TOKEN || process.env.GITHUB_PAT; - if (!username || !password) return {}; - const base = Buffer.from(`${username}:${password}`, 'utf8').toString('base64'); - return { Authorization: `Basic ${base}` }; -} - -function buildBearerHeader() { - const token = process.env.REGISTRY_TOKEN; - if (!token) return {}; - return { Authorization: `Bearer ${token}` }; -} - -async function fetchRemoteManifest(registryHost, repository, reference, headers) { - const url = `https://${registryHost}/v2/${repository}/manifests/${reference}`; - const res = await fetch(url, { headers }); - const body = await res.text(); - return { res, body }; -} - -async function fetchRegistryTokenDockerHub(repository) { - const headers = { - Accept: ACCEPT_HEADERS.join(', '), - ...buildBearerHeader(), - ...buildBasicAuthHeader(), - }; - - const url = `https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repository}:pull`; - const res = await fetch(url, { headers }); - if (!res.ok) { - const body = await res.text(); - throw createError(res.status === 401 ? 403 : res.status, 'token_error', `Failed to fetch Docker Hub token: ${res.status} ${body || ''}`.trim()); - } - - const data = await res.json(); - if (!data.token) { - throw createError(403, 'token_error', 'Token missing in Docker Hub response'); - } - return data.token; -} - -async function fetchAnonymousTokenDockerHub(repository) { - const headers = { - Accept: ACCEPT_HEADERS.join(', ') - }; - const url = `https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repository}:pull`; - const res = await fetch(url, { headers }); - if (!res.ok) { - const body = await res.text(); - throw createError(res.status === 401 ? 403 : res.status, 'token_error', `Failed to fetch Docker Hub token anonymously: ${res.status} ${body || ''}`.trim()); - } - const data = await res.json(); - if (!data.token) { - throw createError(403, 'token_error', 'Token missing in Docker Hub anonymous response'); - } - return data.token; -} - -async function resolveRemoteDigestDockerHub(repository, tag, localDigestHash) { - const accept = { Accept: ACCEPT_HEADERS.join(', ') }; - let token; - try { - token = await fetchRegistryTokenDockerHub(repository); - } catch { - token = null; - } - let headers = token ? { ...accept, Authorization: `Bearer ${token}` } : { ...accept }; - - let { res, body } = await fetchRemoteManifest(DOCKERHUB_HOST, repository, tag, headers); - if (res.status === 404 && localDigestHash) { - ({ res, body } = await fetchRemoteManifest(DOCKERHUB_HOST, repository, localDigestHash, headers)); - } - - if ((res.status === 401 || res.status === 403) && !token) { - try { - const anonToken = await fetchAnonymousTokenDockerHub(repository); - headers = { ...accept, Authorization: `Bearer ${anonToken}` }; - ({ res, body } = await fetchRemoteManifest(DOCKERHUB_HOST, repository, tag, headers)); - if (res.status === 404 && localDigestHash) { - ({ res, body } = await fetchRemoteManifest(DOCKERHUB_HOST, repository, localDigestHash, headers)); - } - } catch { - // fall through - } - } - - if (!res.ok) { - if (res.status === 404) throw createError(404, 'tag_not_found', 'Tag not found on registry'); - if (res.status === 401 || res.status === 403) throw createError(403, 'auth_required', body || 'Unauthorized'); - throw createError(502, 'registry_error', `Registry responded with ${res.status} ${body || ''}`.trim()); - } - - const digest = extractDigestFromManifest(body); - if (!digest) throw createError(500, 'digest_missing', 'Could not extract digest from manifest'); - return digest; -} - -async function resolveRemoteDigestGeneric(registryHost, repository, tag, localDigestHash) { - const accept = { Accept: ACCEPT_HEADERS.join(', ') }; - const headers = { - ...accept, - ...buildBearerHeader(), - ...buildBasicAuthHeader(), - }; - - let { res, body } = await fetchRemoteManifest(registryHost, repository, tag, headers); - if (res.status === 404 && localDigestHash) { - ({ res, body } = await fetchRemoteManifest(registryHost, repository, localDigestHash, headers)); - } - - if (!res.ok) { - if (res.status === 404) throw createError(404, 'tag_not_found', 'Tag not found on registry'); - if (res.status === 401 || res.status === 403) throw createError(403, 'auth_required', body || 'Unauthorized'); - throw createError(502, 'registry_error', `Registry responded with ${res.status} ${body || ''}`.trim()); - } - - const digest = extractDigestFromManifest(body); - if (!digest) throw createError(500, 'digest_missing', 'Could not extract digest from manifest'); - return digest; -} - -async function resolveRemoteDigest(registryType, registryHost, repository, tag, localDigestHash) { - const fetchDigestViaBuildx = async (ref) => { - const { execFile } = require('child_process'); - return new Promise((resolve, reject) => { - execFile('docker', ['buildx', 'imagetools', 'inspect', ref], { maxBuffer: 4 * 1024 * 1024 }, (err, stdout, stderr) => { - if (err) { - const msg = stderr || err.message || 'docker buildx imagetools inspect failed'; - return reject(createError(502, 'registry_error', msg.trim())); - } - const match = stdout.match(/Digest:\s*(sha256:[a-fA-F0-9]+)/); - if (match && match[1]) { - return resolve(match[1]); - } - return reject(createError(500, 'digest_missing', 'Could not extract digest from imagetools inspect')); - }); - }); - }; - - const fetchRemoteDigestViaDocker = async (ref) => { - const { execFile } = require('child_process'); - return new Promise((resolve, reject) => { - execFile('docker', ['manifest', 'inspect', ref], { maxBuffer: 4 * 1024 * 1024 }, (err, stdout, stderr) => { - if (err) { - const msg = stderr || err.message || 'docker manifest inspect failed'; - return reject(createError(502, 'registry_error', msg.trim())); - - } - try { - const json = JSON.parse(stdout); - if (Array.isArray(json.manifests) && json.manifests.length > 0) { - const candidate = json.manifests[0]; - if (candidate?.digest) { - return resolve(candidate.digest); - } - } - if (json?.config?.digest) { - return resolve(json.config.digest); - } - if (Array.isArray(json?.layers) && json.layers.length > 0 && json.layers[0].digest) { - return resolve(json.layers[0].digest); - } - } catch { - // fall through to error - } - return reject(createError(500, 'digest_missing', 'Could not extract digest from docker manifest inspect')); - }); - }); - }; - - if (registryType === 'ghcr') { - // Use docker buildx imagetools inspect for GHCR: tag first, then digest fallback - const host = registryHost || GHCR_HOST; - try { - const digest = await fetchDigestViaBuildx(`${host}/${repository}:${tag}`); - return digest; - } catch (err) { - if (localDigestHash) { - return fetchDigestViaBuildx(`${host}/${repository}@${localDigestHash}`); - } - throw err.code ? err : createError(502, 'registry_error', err.message || 'GHCR lookup failed'); - } - } - if (registryType === 'dockerhub') { - const host = 'docker.io'; - try { - return await fetchDigestViaBuildx(`${host}/${repository}:${tag}`); - } catch (err) { - if (localDigestHash) { - try { - return await fetchDigestViaBuildx(`${host}/${repository}@${localDigestHash}`); - } catch { - // fall through - } - } - } - // Fallback to manifest inspect/HTTP if buildx fails - try { - return await fetchRemoteDigestViaDocker(`${host}/${repository}:${tag}`); - } catch (err) { - if (localDigestHash) { - try { - return await fetchRemoteDigestViaDocker(`${host}/${repository}@${localDigestHash}`); - } catch { - // fall through - } - } - } - return resolveRemoteDigestDockerHub(repository, tag, localDigestHash); - } - // generic - try { - return await fetchDigestViaBuildx(`${registryHost}/${repository}:${tag}`); - } catch (err) { - if (localDigestHash) { - try { - return await fetchDigestViaBuildx(`${registryHost}/${repository}@${localDigestHash}`); - } catch { - // fall through - } - } - } - // fallback manifest path - try { - return await fetchRemoteDigestViaDocker(`${registryHost}/${repository}:${tag}`); - } catch (err) { - if (localDigestHash) { - try { - return await fetchRemoteDigestViaDocker(`${registryHost}/${repository}@${localDigestHash}`); - } catch { - // fall through to HTTP - } - } - } - return resolveRemoteDigestGeneric(registryHost, repository, tag, localDigestHash); -} - -async function checkImageUpdate(docker, imageName) { - const { registryType, registryHost, repository, tag } = splitImageIntoComponents(imageName); - const { localTag, localDigestHash } = await getLocalImageInfo(docker, imageName, tag); - - const remoteDigest = await resolveRemoteDigest(registryType, registryHost, repository, tag, localDigestHash); - - return { - image: imageName, - localTag, - localDigest: localDigestHash, - remoteDigest, - updateAvailable: Boolean(localDigestHash && remoteDigest && localDigestHash !== remoteDigest) - }; -} - -module.exports = { - detectRegistry, - splitImageIntoComponents, - getLocalImageInfo, - checkImageUpdate, - resolveRemoteDigestDockerHub, - resolveRemoteDigestGeneric -}; diff --git a/backend/db/dbs b/backend/db/dbs index f796b11..8056df0 100644 --- a/backend/db/dbs +++ b/backend/db/dbs @@ -69,6 +69,21 @@ CREATE TABLE user_group_memberships ( FOREIGN KEY (group_id) REFERENCES user_groups(id) ON DELETE CASCADE ); +CREATE TABLE user_server_assignments ( + user_id INTEGER NOT NULL, + server_id INTEGER NOT NULL, + group_id INTEGER, + use_global_group INTEGER NOT NULL DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (user_id, server_id), + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE, + FOREIGN KEY (group_id) REFERENCES user_groups(id) ON DELETE SET NULL +); +CREATE INDEX idx_user_server_assignments_user ON user_server_assignments (user_id); +CREATE INDEX idx_user_server_assignments_server ON user_server_assignments (server_id); + CREATE TABLE permissions ( id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL UNIQUE, @@ -100,13 +115,15 @@ CREATE TABLE permission_sections ( CREATE TABLE permission_groups ( id INTEGER PRIMARY KEY AUTOINCREMENT, section_id INTEGER NOT NULL, + parent_group_id INTEGER, key TEXT NOT NULL, title TEXT NOT NULL, sort_order INTEGER NOT NULL DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE(section_id, key), - FOREIGN KEY (section_id) REFERENCES permission_sections(id) ON DELETE CASCADE + FOREIGN KEY (section_id) REFERENCES permission_sections(id) ON DELETE CASCADE, + FOREIGN KEY (parent_group_id) REFERENCES permission_groups(id) ON DELETE CASCADE ); CREATE TABLE permission_items ( @@ -118,6 +135,7 @@ CREATE TABLE permission_items ( sort_order INTEGER NOT NULL DEFAULT 0, default_level TEXT NOT NULL, available_levels TEXT NOT NULL, + is_global_scope INTEGER NOT NULL DEFAULT 1, is_required INTEGER NOT NULL DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, @@ -210,15 +228,6 @@ CREATE TABLE server_update_scripts ( FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE ); -CREATE TABLE server_agents ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - server_id INTEGER NOT NULL UNIQUE, - agent_url TEXT, - agent_token TEXT NOT NULL, - created_at DATETIME DEFAULT CURRENT_TIMESTAMP, - updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE -); CREATE INDEX idx_server_update_scripts_server ON server_update_scripts (server_id); CREATE TABLE user_settings ( diff --git a/backend/db/schemaEnsure.js b/backend/db/schemaEnsure.js index 3bd0194..9478cef 100644 --- a/backend/db/schemaEnsure.js +++ b/backend/db/schemaEnsure.js @@ -2,7 +2,6 @@ import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { db } from './index.js'; -import crypto from 'crypto'; const BLUEPRINT_FILENAME = 'dbs'; const PERMISSION_BLUEPRINT = [ @@ -16,6 +15,7 @@ const PERMISSION_BLUEPRINT = [ key: 'stacks-redeploy-single', label: 'Redeploy einzeln', sortOrder: 0, + global: false, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [] @@ -24,6 +24,7 @@ const PERMISSION_BLUEPRINT = [ key: 'stacks-redeploy-selection', label: 'Redeploy Auswahl', sortOrder: 1, + global: false, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [] @@ -32,6 +33,7 @@ const PERMISSION_BLUEPRINT = [ key: 'stacks-redeploy-all', label: 'Redeploy Alle', sortOrder: 2, + global: false, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [] @@ -48,6 +50,7 @@ const PERMISSION_BLUEPRINT = [ key: 'logs-access', label: 'Bereich & Navigation', sortOrder: 0, + global: true, defaultLevel: 'none', levels: ['full', 'none'], isRequired: 1, @@ -57,6 +60,7 @@ const PERMISSION_BLUEPRINT = [ key: 'logs-export', label: 'Logs Exportieren', sortOrder: 1, + global: true, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ @@ -67,6 +71,7 @@ const PERMISSION_BLUEPRINT = [ key: 'logs-delete', label: 'Logs löschen', sortOrder: 2, + global: true, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ @@ -85,6 +90,7 @@ const PERMISSION_BLUEPRINT = [ key: 'users-access', label: 'Bereich & Navigation', sortOrder: 0, + global: true, defaultLevel: 'none', levels: ['full', 'none'], isRequired: 1, @@ -94,6 +100,7 @@ const PERMISSION_BLUEPRINT = [ key: 'users-edit', label: 'Benutzer bearbeiten', sortOrder: 1, + global: true, defaultLevel: 'read', levels: ['full', 'read'], dependencies: [ @@ -104,6 +111,7 @@ const PERMISSION_BLUEPRINT = [ key: 'users-delete', label: 'Benutzer löschen', sortOrder: 2, + global: true, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ @@ -114,6 +122,7 @@ const PERMISSION_BLUEPRINT = [ key: 'users-security-phrase', label: 'Sicherheitsschlüssel', sortOrder: 3, + global: true, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ @@ -132,6 +141,7 @@ const PERMISSION_BLUEPRINT = [ key: 'user-groups-access', label: 'Bereich & Navigation', sortOrder: 0, + global: true, defaultLevel: 'none', levels: ['full', 'none'], isRequired: 1, @@ -141,6 +151,7 @@ const PERMISSION_BLUEPRINT = [ key: 'user-groups-edit', label: 'Benutzergruppen bearbeiten', sortOrder: 1, + global: true, defaultLevel: 'read', levels: ['full', 'read'], dependencies: [ @@ -151,6 +162,7 @@ const PERMISSION_BLUEPRINT = [ key: 'user-groups-delete', label: 'Benutzergruppen löschen', sortOrder: 2, + global: true, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ @@ -169,6 +181,7 @@ const PERMISSION_BLUEPRINT = [ key: 'maintenance-access', label: 'Bereich & Navigation', sortOrder: 0, + global: true, defaultLevel: 'none', levels: ['full', 'none'], isRequired: 1, @@ -185,8 +198,9 @@ const PERMISSION_BLUEPRINT = [ key: 'maintenance-server-manage', label: 'Server-Sektion', sortOrder: 0, + global: true, defaultLevel: 'none', - levels: ['full', 'read', 'none'], + levels: ['full', 'none'], dependencies: [ { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' } ] @@ -195,8 +209,9 @@ const PERMISSION_BLUEPRINT = [ key: 'maintenance-server-edit', label: 'Server bearbeiten', sortOrder: 1, + global: false, defaultLevel: 'none', - levels: ['full', 'none'], + levels: ['full', 'read', 'none'], dependencies: [ { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' }, { dependsOnKey: 'maintenance-server-manage', requiredLevel: '!=none' } @@ -206,6 +221,7 @@ const PERMISSION_BLUEPRINT = [ key: 'maintenance-server-delete', label: 'Server löschen', sortOrder: 2, + global: false, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ @@ -214,6 +230,58 @@ const PERMISSION_BLUEPRINT = [ { dependsOnKey: 'maintenance-server-edit', requiredLevel: '=full' } ] } + ], + groups: [ + { + key: 'maintenance-portainer-group', + title: 'Portainer', + sortOrder: 1, + items: [ + { + key: 'maintenance-ssh-update', + label: 'SSH/Update-Skript', + sortOrder: 0, + global: false, + defaultLevel: 'none', + levels: ['full', 'read', 'none'], + dependencies: [ + { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' }, + { dependsOnKey: 'maintenance-server-edit', requiredLevel: '!=none' } + ] + }, + { + key: 'maintenance-update', + label: 'Update durchführen', + sortOrder: 1, + global: false, + defaultLevel: 'none', + levels: ['full', 'none'], + dependencies: [ + { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' }, + { dependsOnKey: 'maintenance-server-edit', requiredLevel: '!=none' } + ] + } + ] + }, + { + key: 'maintenance-duplicates-group', + title: 'Doppelte Stacks', + sortOrder: 2, + items: [ + { + key: 'maintenance-duplicates', + label: 'Doppelte Stacks', + sortOrder: 0, + global: false, + defaultLevel: 'none', + levels: ['full', 'read', 'none'], + dependencies: [ + { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' }, + { dependsOnKey: 'maintenance-server-edit', requiredLevel: '!=none' } + ] + } + ] + } ] }, { @@ -225,6 +293,7 @@ const PERMISSION_BLUEPRINT = [ key: 'maintenance-superuser-delete', label: 'Superuser löschen', sortOrder: 0, + global: true, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ @@ -234,58 +303,20 @@ const PERMISSION_BLUEPRINT = [ ] }, { - key: 'maintenance-portainer-group', - title: 'Portainer', + key: 'maintenance-mtls-group', + title: 'mTLS', sortOrder: 2, items: [ { - key: 'maintenance-portainer', - label: 'Portainer-Sektion', + key: 'maintenance-mtls', + label: 'mTLS Sektion', sortOrder: 0, + global: true, defaultLevel: 'none', levels: ['full', 'none'], dependencies: [ { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' } ] - }, - { - key: 'maintenance-ssh-update', - label: 'SSH/Update-Skript', - sortOrder: 1, - defaultLevel: 'none', - levels: ['full', 'read', 'none'], - dependencies: [ - { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' }, - { dependsOnKey: 'maintenance-portainer', requiredLevel: '!=none' } - ] - }, - { - key: 'maintenance-update', - label: 'Update durchführen', - sortOrder: 2, - defaultLevel: 'none', - levels: ['full', 'none'], - dependencies: [ - { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' }, - { dependsOnKey: 'maintenance-portainer', requiredLevel: '!=none' } - ] - } - ] - }, - { - key: 'maintenance-duplicates-group', - title: 'Doppelte Stacks', - sortOrder: 3, - items: [ - { - key: 'maintenance-duplicates', - label: 'Doppelte Stacks', - sortOrder: 0, - defaultLevel: 'none', - levels: ['full', 'read', 'none'], - dependencies: [ - { dependsOnKey: 'maintenance-access', requiredLevel: '!=none' } - ] } ] } @@ -381,7 +412,13 @@ const tableExists = (tableName) => { }; const dropDeprecatedArtifacts = () => { - const deprecatedTables = ['user_endpoint_permission_overrides', 'endpoints']; + const deprecatedTables = [ + 'user_endpoint_permission_overrides', + 'endpoints', + 'server_agents', + 'agent_tls_material', + 'agent_bootstrap_tokens' + ]; deprecatedTables.forEach((table) => { if (tableExists(table)) { db.exec(`DROP TABLE IF EXISTS ${table}`); @@ -453,20 +490,24 @@ const ensurePermissionSeeds = () => { `); const selectGroup = db.prepare(` - SELECT id, title, sort_order + SELECT id, title, sort_order, parent_group_id FROM permission_groups WHERE section_id = ? AND key = ? LIMIT 1 `); const insertGroup = db.prepare(` - INSERT INTO permission_groups (section_id, key, title, sort_order, created_at, updated_at) - VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) + INSERT INTO permission_groups (section_id, parent_group_id, key, title, sort_order, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) `); const updateGroup = db.prepare(` UPDATE permission_groups - SET title = ?, sort_order = ?, updated_at = CURRENT_TIMESTAMP + SET title = ?, sort_order = ?, parent_group_id = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ? `); + const deleteUnusedGroups = db.prepare(` + DELETE FROM permission_groups + WHERE key NOT IN (SELECT value FROM json_each(?)) + `); const selectItem = db.prepare(` SELECT @@ -477,6 +518,7 @@ const ensurePermissionSeeds = () => { sort_order, default_level, available_levels, + is_global_scope, is_required FROM permission_items WHERE key = ? @@ -491,11 +533,12 @@ const ensurePermissionSeeds = () => { sort_order, default_level, available_levels, + is_global_scope, is_required, created_at, updated_at ) VALUES ( - ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP ) `); const updateItem = db.prepare(` @@ -507,10 +550,24 @@ const ensurePermissionSeeds = () => { sort_order = ?, default_level = ?, available_levels = ?, + is_global_scope = ?, is_required = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ? `); + const deleteUnusedItems = db.prepare(` + DELETE FROM permission_items + WHERE key NOT IN (SELECT value FROM json_each(?)) + `); + const deleteOrphanDependencies = db.prepare(` + DELETE FROM permission_dependencies + WHERE permission_id NOT IN (SELECT id FROM permission_items) + OR depends_on_permission_id NOT IN (SELECT id FROM permission_items) + `); + const deleteOrphanPermissionValues = db.prepare(` + DELETE FROM group_permission_values + WHERE permission_id NOT IN (SELECT id FROM permission_items) + `); const selectDependency = db.prepare(` SELECT id, required_level @@ -536,6 +593,100 @@ const ensurePermissionSeeds = () => { `); const itemKeyToId = new Map(); + const dependencyQueue = []; + const itemKeys = new Set(); + const groupKeys = new Set(); + + const upsertItem = ({ item, sectionId, groupId = null, sortOrder }) => { + const existingItem = selectItem.get(item.key); + const itemSortOrder = typeof sortOrder === 'number' ? sortOrder : 0; + const levelOptions = Array.isArray(item.levels) && item.levels.length + ? item.levels + : ['full', 'read', 'none']; + const availableLevels = JSON.stringify(levelOptions); + const isRequired = item.isRequired ? 1 : 0; + const isGlobal = item.global === false ? 0 : 1; + const label = item.label || item.key || ''; + + if (!existingItem) { + const result = insertItem.run( + sectionId, + groupId, + item.key, + label, + itemSortOrder, + item.defaultLevel || 'none', + availableLevels, + isGlobal, + isRequired + ); + itemKeyToId.set(item.key, Number(result.lastInsertRowid)); + console.log(`ℹ️ Berechtigung ${item.key} ${groupId ? `in Gruppe ${groupId}` : ''} angelegt`); + } else { + const hasChanges = + existingItem.section_id !== sectionId || + existingItem.group_id !== groupId || + existingItem.label !== label || + (existingItem.sort_order ?? itemSortOrder) !== itemSortOrder || + existingItem.default_level !== (item.defaultLevel || 'none') || + existingItem.available_levels !== availableLevels || + Number(existingItem.is_global_scope ?? 1) !== isGlobal || + Number(existingItem.is_required) !== isRequired; + updateItem.run( + sectionId, + groupId, + label, + itemSortOrder, + item.defaultLevel || 'none', + availableLevels, + isGlobal, + isRequired, + existingItem.id + ); + itemKeyToId.set(item.key, existingItem.id); + if (hasChanges) { + console.log(`ℹ️ Berechtigung ${item.key} aktualisiert`); + } + } + + itemKeys.add(item.key); + dependencyQueue.push({ itemKey: item.key, dependencies: item.dependencies || [] }); + }; + + const processGroups = (groups, sectionId, parentGroupId = null) => { + const list = Array.isArray(groups) ? groups : []; + list.forEach((group, groupIdx) => { + const sortOrder = typeof group.sortOrder === 'number' ? group.sortOrder : groupIdx; + const existingGroup = selectGroup.get(sectionId, group.key); + let groupId; + if (!existingGroup) { + const result = insertGroup.run(sectionId, parentGroupId, group.key, group.title, sortOrder); + groupId = Number(result.lastInsertRowid); + console.log(`ℹ️ Berechtigungs-Gruppe ${group.key} in Sektion ${sectionId} angelegt`); + } else { + const hasGroupChanges = + existingGroup.title !== group.title || + (existingGroup.sort_order ?? sortOrder) !== sortOrder || + existingGroup.parent_group_id !== parentGroupId; + updateGroup.run(group.title, sortOrder, parentGroupId, existingGroup.id); + groupId = existingGroup.id; + if (hasGroupChanges) { + console.log(`ℹ️ Berechtigungs-Gruppe ${group.key} in Sektion ${sectionId} aktualisiert`); + } + } + + groupKeys.add(group.key); + + const groupItems = Array.isArray(group.items) ? group.items : []; + groupItems.forEach((item, itemIdx) => { + upsertItem({ item, sectionId, groupId, sortOrder: typeof item.sortOrder === 'number' ? item.sortOrder : itemIdx }); + }); + + if (group.groups) { + processGroups(group.groups, sectionId, groupId); + } + }); + }; PERMISSION_BLUEPRINT.forEach((section, sectionIndex) => { const existingSection = selectSection.get(section.key); @@ -568,190 +719,41 @@ const ensurePermissionSeeds = () => { const sectionItems = Array.isArray(section.items) ? section.items : []; sectionItems.forEach((item, itemIdx) => { - const existingItem = selectItem.get(item.key); - const sortOrder = typeof item.sortOrder === 'number' ? item.sortOrder : itemIdx; - const levelOptions = Array.isArray(item.levels) && item.levels.length - ? item.levels - : ['full', 'read', 'none']; - const availableLevels = JSON.stringify(levelOptions); - const isRequired = item.isRequired ? 1 : 0; - if (!existingItem) { - const result = insertItem.run( - sectionId, - null, - item.key, - item.label, - sortOrder, - item.defaultLevel || 'none', - availableLevels, - isRequired - ); - itemKeyToId.set(item.key, Number(result.lastInsertRowid)); - console.log(`ℹ️ Berechtigung ${item.key} angelegt`); - } else { - const hasChanges = - existingItem.section_id !== sectionId || - existingItem.group_id !== null || - existingItem.label !== item.label || - (existingItem.sort_order ?? sortOrder) !== sortOrder || - existingItem.default_level !== (item.defaultLevel || 'none') || - existingItem.available_levels !== availableLevels || - Number(existingItem.is_required) !== isRequired; - updateItem.run( - sectionId, - null, - item.label, - sortOrder, - item.defaultLevel || 'none', - availableLevels, - isRequired, - existingItem.id - ); - itemKeyToId.set(item.key, existingItem.id); - if (hasChanges) { - console.log(`ℹ️ Berechtigung ${item.key} aktualisiert`); - } + upsertItem({ item, sectionId, groupId: null, sortOrder: typeof item.sortOrder === 'number' ? item.sortOrder : itemIdx }); + }); + + processGroups(section.groups, sectionId, null); + }); + + dependencyQueue.forEach(({ itemKey, dependencies }) => { + const permissionId = itemKeyToId.get(itemKey); + if (!permissionId) return; + dependencies.forEach((dependency) => { + const dependsId = itemKeyToId.get(dependency.dependsOnKey); + if (!dependsId) return; + const existing = selectDependency.get(permissionId, dependsId); + const requiredLevel = dependency.requiredLevel ?? null; + if (!existing) { + insertDependency.run(permissionId, dependsId, requiredLevel); + console.log(`ℹ️ Abhängigkeit ${itemKey} -> ${dependency.dependsOnKey} angelegt`); + } else if (existing.required_level !== requiredLevel) { + updateDependency.run(requiredLevel, existing.id); + console.log(`ℹ️ Abhängigkeit ${itemKey} -> ${dependency.dependsOnKey} aktualisiert`); } }); - - const sectionGroups = Array.isArray(section.groups) ? section.groups : []; - sectionGroups.forEach((group, groupIdx) => { - const existingGroup = selectGroup.get(sectionId, group.key); - const sortOrder = typeof group.sortOrder === 'number' ? group.sortOrder : groupIdx; - let groupId; - if (!existingGroup) { - const result = insertGroup.run(sectionId, group.key, group.title, sortOrder); - groupId = Number(result.lastInsertRowid); - console.log(`ℹ️ Berechtigungs-Gruppe ${group.key} in Sektion ${section.key} angelegt`); - } else { - const hasGroupChanges = - existingGroup.title !== group.title || - (existingGroup.sort_order ?? sortOrder) !== sortOrder; - updateGroup.run(group.title, sortOrder, existingGroup.id); - groupId = existingGroup.id; - if (hasGroupChanges) { - console.log(`ℹ️ Berechtigungs-Gruppe ${group.key} in Sektion ${section.key} aktualisiert`); - } - } - const groupItems = Array.isArray(group.items) ? group.items : []; - groupItems.forEach((item, itemIdx) => { - const existingItem = selectItem.get(item.key); - const itemSortOrder = typeof item.sortOrder === 'number' ? item.sortOrder : itemIdx; - const levelOptions = Array.isArray(item.levels) && item.levels.length - ? item.levels - : ['full', 'read', 'none']; - const availableLevels = JSON.stringify(levelOptions); - const isRequired = item.isRequired ? 1 : 0; - if (!existingItem) { - const result = insertItem.run( - sectionId, - groupId, - item.key, - item.label, - itemSortOrder, - item.defaultLevel || 'none', - availableLevels, - isRequired - ); - itemKeyToId.set(item.key, Number(result.lastInsertRowid)); - console.log(`ℹ️ Berechtigung ${item.key} in Gruppe ${group.key} angelegt`); - } else { - const hasChanges = - existingItem.section_id !== sectionId || - existingItem.group_id !== groupId || - existingItem.label !== item.label || - (existingItem.sort_order ?? itemSortOrder) !== itemSortOrder || - existingItem.default_level !== (item.defaultLevel || 'none') || - existingItem.available_levels !== availableLevels || - Number(existingItem.is_required) !== isRequired; - updateItem.run( - sectionId, - groupId, - item.label, - itemSortOrder, - item.defaultLevel || 'none', - availableLevels, - isRequired, - existingItem.id - ); - itemKeyToId.set(item.key, existingItem.id); - if (hasChanges) { - console.log(`ℹ️ Berechtigung ${item.key} in Gruppe ${group.key} aktualisiert`); - } - } - }); - }); }); - PERMISSION_BLUEPRINT.forEach((section) => { - const sectionItems = Array.isArray(section.items) ? section.items : []; - sectionItems.forEach((item) => { - const permissionId = itemKeyToId.get(item.key); - if (!permissionId) return; - (item.dependencies || []).forEach((dependency) => { - const dependsId = itemKeyToId.get(dependency.dependsOnKey); - if (!dependsId) return; - const existing = selectDependency.get(permissionId, dependsId); - const requiredLevel = dependency.requiredLevel ?? null; - if (!existing) { - insertDependency.run(permissionId, dependsId, requiredLevel); - console.log( - `ℹ️ Abhängigkeit ${item.key} -> ${dependency.dependsOnKey} angelegt` - ); - } else if (existing.required_level !== requiredLevel) { - updateDependency.run(requiredLevel, existing.id); - console.log( - `ℹ️ Abhängigkeit ${item.key} -> ${dependency.dependsOnKey} aktualisiert` - ); - } - }); - }); - - const sectionGroups = Array.isArray(section.groups) ? section.groups : []; - sectionGroups.forEach((group) => { - const groupItems = Array.isArray(group.items) ? group.items : []; - groupItems.forEach((item) => { - const permissionId = itemKeyToId.get(item.key); - if (!permissionId) return; - (item.dependencies || []).forEach((dependency) => { - const dependsId = itemKeyToId.get(dependency.dependsOnKey); - if (!dependsId) return; - const requiredLevel = dependency.requiredLevel ?? null; - const existing = selectDependency.get(permissionId, dependsId); - if (!existing) { - insertDependency.run(permissionId, dependsId, requiredLevel); - console.log( - `ℹ️ Abhängigkeit ${item.key} -> ${dependency.dependsOnKey} angelegt` - ); - } else if (existing.required_level !== requiredLevel) { - updateDependency.run(requiredLevel, existing.id); - console.log( - `ℹ️ Abhängigkeit ${item.key} -> ${dependency.dependsOnKey} aktualisiert` - ); - } - }); - }); - }); - }); -}; - -const ensureServerAgentEntries = () => { - if (!tableExists('server_agents')) return; - const servers = db.prepare('SELECT id FROM servers').all(); - const insertAgent = db.prepare(` - INSERT OR IGNORE INTO server_agents (server_id, agent_url, agent_token, created_at, updated_at) - VALUES (?, NULL, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) - `); - const updateMissingToken = db.prepare(` - UPDATE server_agents - SET agent_token = ? - WHERE server_id = ? AND (agent_token IS NULL OR agent_token = '') - `); - servers.forEach((server) => { - const token = `sp_${crypto.randomBytes(16).toString('hex')}`; - insertAgent.run(server.id, token); - updateMissingToken.run(token, server.id); - }); + // Cleanup obsolete entries + if (itemKeys.size > 0) { + const itemKeyJson = JSON.stringify(Array.from(itemKeys)); + deleteOrphanDependencies.run(); + deleteOrphanPermissionValues.run(); + deleteUnusedItems.run(itemKeyJson); + } + if (groupKeys.size > 0) { + const groupKeyJson = JSON.stringify(Array.from(groupKeys)); + deleteUnusedGroups.run(groupKeyJson); + } }; export const ensureDatabaseSchema = () => { @@ -762,7 +764,6 @@ export const ensureDatabaseSchema = () => { dropDeprecatedArtifacts(); ensureTablesAndColumns(tableDefinitions); - ensureServerAgentEntries(); ensureIndexes(indexDefinitions); ensurePermissionSeeds(); } catch (error) { diff --git a/backend/index.js b/backend/index.js index c8b2797..91d3e0b 100644 --- a/backend/index.js +++ b/backend/index.js @@ -3,7 +3,7 @@ import dotenv from 'dotenv'; import https from 'https'; import axios from 'axios'; import http from 'http'; -import { spawn } from 'child_process'; +import { spawn, execSync } from 'child_process'; import { Server } from 'socket.io'; import path from 'path'; import fs from 'fs'; @@ -43,13 +43,11 @@ import { removeServer, setServerApiKey, getServerById, + listServers, ensureServer, getServerConnection, updateServerDetails, - getServerStatus, - getAgentConfig, - setAgentConfig, - generateAgentToken + getServerStatus } from './setup/index.js'; import { listUsers, @@ -64,7 +62,9 @@ import { markSecurityPhraseDownloaded, ensureSecurityPhrasesForExistingUsers, verifySecurityPhraseForUsername, - setUserPassword + setUserPassword, + getUserServerAssignments, + setUserServerAssignments } from './users/index.js'; import { listGroups, createGroup, getGroupById, updateGroupDetails, deleteGroup } from './groups/index.js'; import { @@ -73,8 +73,11 @@ import { saveGroupPermissionValues, clearGroupPermissionValues, getSuperuserPermissionMap, + getEffectivePermissionsForGroup, getEffectivePermissionsForGroups, - hasRequiredPermission + hasRequiredPermission, + applyServerScopedOverride, + isServerScopedPermission } from './permissions/index.js'; dotenv.config(); @@ -105,9 +108,91 @@ app.get('*', (req, res, next) => { }); const PORT = 4001; - const agent = new https.Agent({ rejectUnauthorized: false }); +const crc32 = (buffer) => { + let crc = ~0; + for (let i = 0; i < buffer.length; i += 1) { + crc ^= buffer[i]; + for (let j = 0; j < 8; j += 1) { + const mask = -(crc & 1); + crc = (crc >>> 1) ^ (0xedb88320 & mask); + } + } + return (~crc) >>> 0; +}; + +const buildZipBuffer = (files = []) => { + const encoder = new TextEncoder(); + const entries = files.map(({ name, content }) => { + const filenameBuf = encoder.encode(name); + const dataBuf = Buffer.isBuffer(content) ? content : Buffer.from(String(content), 'utf8'); + const crc = crc32(dataBuf); + const size = dataBuf.length; + const offset = 0; // placeholder, compute later + return { filenameBuf, dataBuf, crc, size, offset }; + }); + + const localParts = []; + let offset = 0; + entries.forEach((entry) => { + entry.offset = offset; + const localHeader = Buffer.alloc(30); + localHeader.writeUInt32LE(0x04034b50, 0); // local file header signature + localHeader.writeUInt16LE(20, 4); // version needed + localHeader.writeUInt16LE(0, 6); // flags + localHeader.writeUInt16LE(0, 8); // compression (0 = store) + localHeader.writeUInt16LE(0, 10); // mod time + localHeader.writeUInt16LE(0, 12); // mod date + localHeader.writeUInt32LE(entry.crc, 14); // crc32 + localHeader.writeUInt32LE(entry.size, 18); // compressed size + localHeader.writeUInt32LE(entry.size, 22); // uncompressed size + localHeader.writeUInt16LE(entry.filenameBuf.length, 26); // file name length + localHeader.writeUInt16LE(0, 28); // extra length + + localParts.push(localHeader, entry.filenameBuf, entry.dataBuf); + offset += localHeader.length + entry.filenameBuf.length + entry.dataBuf.length; + }); + + const centralParts = []; + entries.forEach((entry) => { + const centralHeader = Buffer.alloc(46); + centralHeader.writeUInt32LE(0x02014b50, 0); // central dir signature + centralHeader.writeUInt16LE(20, 4); // version made by + centralHeader.writeUInt16LE(20, 6); // version needed + centralHeader.writeUInt16LE(0, 8); // flags + centralHeader.writeUInt16LE(0, 10); // compression + centralHeader.writeUInt16LE(0, 12); // mod time + centralHeader.writeUInt16LE(0, 14); // mod date + centralHeader.writeUInt32LE(entry.crc, 16); // crc32 + centralHeader.writeUInt32LE(entry.size, 20); // compressed size + centralHeader.writeUInt32LE(entry.size, 24); // uncompressed size + centralHeader.writeUInt16LE(entry.filenameBuf.length, 28); // file name length + centralHeader.writeUInt16LE(0, 30); // extra length + centralHeader.writeUInt16LE(0, 32); // comment length + centralHeader.writeUInt16LE(0, 34); // disk number start + centralHeader.writeUInt16LE(0, 36); // internal attrs + centralHeader.writeUInt32LE(0, 38); // external attrs + centralHeader.writeUInt32LE(entry.offset, 42); // local header offset + centralParts.push(centralHeader, entry.filenameBuf); + }); + + const centralSize = centralParts.reduce((sum, buf) => sum + buf.length, 0); + const centralOffset = localParts.reduce((sum, buf) => sum + buf.length, 0); + + const endRecord = Buffer.alloc(22); + endRecord.writeUInt32LE(0x06054b50, 0); // end of central dir signature + endRecord.writeUInt16LE(0, 4); // number of this disk + endRecord.writeUInt16LE(0, 6); // disk where central dir starts + endRecord.writeUInt16LE(entries.length, 8); // number of central records on this disk + endRecord.writeUInt16LE(entries.length, 10); // total central records + endRecord.writeUInt32LE(centralSize, 12); // size of central dir + endRecord.writeUInt32LE(centralOffset, 16); // offset of central dir + endRecord.writeUInt16LE(0, 20); // comment length + + return Buffer.concat([...localParts, ...centralParts, endRecord]); +}; + const resolvePortainerBaseUrl = () => { const envUrl = typeof process.env.PORTAINER_URL === 'string' ? process.env.PORTAINER_URL.trim() : ''; if (envUrl) return envUrl; @@ -299,13 +384,72 @@ const sanitizeUser = (user) => ({ avatarColor: user.avatar_color || null }); -const buildUserSessionPayload = (userId) => { - const record = getUserById(userId); - if (!record || !record.isActive) { - return null; +const resolveServerIdFromRequest = (req) => { + if (!req || typeof req !== 'object') return null; + const candidates = [ + req.params?.serverId, + req.params?.id, + req.body?.serverId, + req.query?.serverId + ]; + for (const candidate of candidates) { + const numeric = Number(candidate); + if (Number.isFinite(numeric) && numeric > 0) { + return numeric; + } + } + return null; +}; + +const buildServerPermissionMap = ({ basePermissions, assignments = [], isSuperuser = false }) => { + if (isSuperuser) { + return {}; } - const groups = Array.isArray(record.groups) ? record.groups : []; + const list = Array.isArray(assignments) ? assignments : []; + const result = {}; + + list.forEach((assignment) => { + const serverId = Number(assignment?.serverId ?? assignment?.server_id); + if (!Number.isFinite(serverId) || serverId <= 0) { + return; + } + + const useGlobalGroup = + assignment?.useGlobalGroup === true || + assignment?.use_global_group === true || + assignment?.use_global_group === 1; + + const rawGroupId = assignment?.groupId ?? assignment?.group_id; + const groupId = Number(rawGroupId); + const normalizedGroupId = Number.isFinite(groupId) && groupId > 0 ? groupId : null; + + if (useGlobalGroup || normalizedGroupId === null) { + result[serverId] = { + permissions: basePermissions, + useGlobalGroup: true, + groupId: normalizedGroupId + }; + return; + } + + const overridePermissions = getEffectivePermissionsForGroup(normalizedGroupId); + const merged = applyServerScopedOverride(basePermissions, overridePermissions); + + result[serverId] = { + permissions: merged, + useGlobalGroup: false, + groupId: normalizedGroupId + }; + }); + + return result; +}; + +const buildPermissionContextForUser = (userRecord) => { + if (!userRecord) return null; + + const groups = Array.isArray(userRecord.groups) ? userRecord.groups : []; const groupIds = groups .map((group) => Number(group.id)) .filter((groupId) => Number.isFinite(groupId) && groupId > 0); @@ -314,22 +458,75 @@ const buildUserSessionPayload = (userId) => { (group) => typeof group?.name === 'string' && group.name.toLowerCase() === SUPERUSER_GROUP_NAME ); - const permissions = isSuperuser + const permissionsMap = isSuperuser ? getSuperuserPermissionMap() : getEffectivePermissionsForGroups(groupIds); + const serverAssignments = isSuperuser ? [] : getUserServerAssignments(userRecord.id); + const serverPermissions = buildServerPermissionMap({ + basePermissions: permissionsMap, + assignments: serverAssignments, + isSuperuser + }); + + return { + groups, + groupIds, + isSuperuser, + permissions: permissionsMap, + serverPermissions, + serverAssignments + }; +}; + +const getAccessibleServerIds = (req) => { + if (req?.user?.isSuperuser) { + return null; // null = alle + } + const assignments = Array.isArray(req?.userServerAssignments) ? req.userServerAssignments : []; + const ids = assignments + .map((entry) => Number(entry?.serverId ?? entry?.server_id)) + .filter((value) => Number.isFinite(value) && value > 0); + if (ids.length === 0) { + return null; // keine Zuordnung -> Zugriff auf alle + } + return new Set(ids); +}; + +const userHasServerAccess = (req, serverId) => { + if (req?.user?.isSuperuser) return true; + const numericId = Number(serverId); + if (!Number.isFinite(numericId) || numericId <= 0) return false; + const allowed = getAccessibleServerIds(req); + if (allowed === null) return true; + return allowed.has(numericId); +}; + +const buildUserSessionPayload = (userId) => { + const record = getUserById(userId); + if (!record || !record.isActive) { + return null; + } + + const context = buildPermissionContextForUser(record); + if (!context) { + return null; + } + return { user: { id: record.id, username: record.username, email: record.email || null, avatarColor: record.avatarColor || null, - groups, - isSuperuser, + groups: context.groups, + isSuperuser: context.isSuperuser, securityPhraseDownloadedAt: record.securityPhraseDownloadedAt || null, requiresSecurityPhraseDownload: !record.securityPhraseDownloadedAt }, - permissions + permissions: context.permissions, + serverPermissions: context.serverPermissions, + serverAssignments: context.serverAssignments }; }; @@ -639,7 +836,39 @@ const applySelfStackStatus = (status) => { }; }; +const filterStatusForServerAccess = (status, req) => { + if (!status || req?.user?.isSuperuser) { + return status; + } + + const allowed = getAccessibleServerIds(req); + if (allowed === null) { + return status; + } + + const servers = Array.isArray(status.servers?.items) ? status.servers.items : []; + const filteredServers = servers.filter((server) => allowed.has(Number(server.id))); + + const apiKeys = Array.isArray(status.apiKeys?.items) ? status.apiKeys.items : []; + const filteredApiKeys = apiKeys.filter((entry) => allowed.has(Number(entry.serverId ?? entry.server_id))); + + return { + ...status, + servers: { + ...(status.servers || {}), + items: filteredServers, + count: filteredServers.length + }, + apiKeys: { + ...(status.apiKeys || {}), + items: filteredApiKeys, + count: filteredApiKeys.length + } + }; +}; + const buildSetupStatusResponse = () => applySelfStackStatus(getSetupStatus()); +const buildSetupStatusResponseForUser = (req) => filterStatusForServerAccess(buildSetupStatusResponse(), req); const isCommunityEdition = async () => { try { @@ -651,26 +880,6 @@ const isCommunityEdition = async () => { } }; -const pingAgent = async (agentUrl, agentToken) => { - if (!agentUrl) return { online: false, error: 'agent_url_missing' }; - const url = agentUrl.replace(/\/+$/, ''); - try { - const controller = new AbortController(); - const timeout = setTimeout(() => controller.abort(), 5000); - const resp = await fetch(`${url}/info`, { - headers: { 'X-Agent-Token': agentToken || '' }, - signal: controller.signal - }); - clearTimeout(timeout); - if (!resp.ok) { - return { online: false, error: `status_${resp.status}` }; - } - return { online: true, error: null }; - } catch (err) { - return { online: false, error: err?.message || 'agent_unreachable' }; - } -}; - const LEGACY_PORTAINER_SCRIPT_SETTING_KEY = 'portainer_update_script'; const LEGACY_PORTAINER_SSH_CONFIG_KEY = 'portainer_ssh_config'; @@ -1457,28 +1666,13 @@ const fetchPortainerStatusSummary = async () => { } const errors = {}; - let latestVersion = null; + const latestVersion = null; const { summary: containerSummary, error: containerError } = await detectPortainerContainer(); if (containerError) { errors.container = containerError; } - try { - const githubRes = await axios.get('https://api.github.com/repos/portainer/portainer/releases/latest', { - headers: { - 'Accept': 'application/vnd.github+json', - 'User-Agent': 'StackPulse-Maintenance' - }, - timeout: 5000 - }); - latestVersion = githubRes.data?.tag_name ?? githubRes.data?.tagName ?? null; - } catch (err) { - const message = err.response?.data?.message || err.message; - console.warn(`⚠️ [Maintenance] Konnte Portainer-Latest-Version nicht ermitteln: ${message}`); - errors.latestVersion = message; - } - if (!currentVersion) { errors.currentVersion = 'Portainer-Version konnte nicht ermittelt werden'; } @@ -1530,6 +1724,45 @@ const maintenanceGuard = (req, res, next) => { }); }; +const verifyCurrentUserPassword = (req, password) => { + const userId = req.user?.id; + if (!userId) { + return { ok: false, code: 'UNAUTHORIZED' }; + } + const authRow = db + .prepare('SELECT password_hash, password_salt FROM users WHERE id = ? LIMIT 1') + .get(userId); + if (!authRow || !authRow.password_hash || !authRow.password_salt) { + return { ok: false, code: 'USER_NOT_FOUND' }; + } + const valid = verifyPassword(password || '', authRow.password_hash, authRow.password_salt); + return { ok: valid, code: valid ? null : 'INVALID_PASSWORD' }; +}; + +const resolvePermissionsForRequest = (req, permissionKey) => { + if (!req) return {}; + if (req.user?.isSuperuser) { + return req.userPermissions || {}; + } + + if (!isServerScopedPermission(permissionKey)) { + return req.userPermissions || {}; + } + + const serverId = resolveServerIdFromRequest(req); + if (!serverId) { + return req.userPermissions || {}; + } + + const serverPermissions = req.userServerPermissions || {}; + const override = serverPermissions[serverId] || serverPermissions[String(serverId)]; + if (override?.permissions && typeof override.permissions === 'object') { + return override.permissions; + } + + return req.userPermissions || {}; +}; + const requirePermission = (permissionKey, requiredLevel = 'full') => (req, res, next) => { if (!permissionKey) { return next(); @@ -1539,7 +1772,7 @@ const requirePermission = (permissionKey, requiredLevel = 'full') => (req, res, return next(); } - const permissions = req.userPermissions || {}; + const permissions = resolvePermissionsForRequest(req, permissionKey); if (hasRequiredPermission(permissions, permissionKey, requiredLevel)) { return next(); } @@ -1830,9 +2063,35 @@ const performPortainerUpdate = async ({ script, scriptSource, targetVersion }) = } }; -const fetchPortainerStacks = async () => { - const stacksRes = await axiosInstance.get('/api/stacks'); - return Array.isArray(stacksRes.data) ? stacksRes.data : []; +const fetchPortainerStacksForServer = async (serverId) => { + try { + const { server, apiKey } = getServerConnection(serverId); + if (!server?.url || !apiKey) return []; + const client = createPortainerSetupClient({ baseURL: server.url, apiKey }); + const stacksRes = await client.get('/api/stacks'); + const list = Array.isArray(stacksRes.data) ? stacksRes.data : []; + return list.map((stack) => ({ + ...stack, + __serverId: Number(serverId) + })); + } catch (error) { + console.warn(`⚠️ [Stacks] Portainer-Stacks für Server ${serverId} konnten nicht geladen werden: ${error.message}`); + return []; + } +}; + +const fetchStacksForUser = async (req) => { + const allowed = getAccessibleServerIds(req); + const servers = listServers(); + const targetServers = allowed ? servers.filter((server) => allowed.has(Number(server.id))) : servers; + + const results = []; + for (const server of targetServers) { + console.log(`ℹ️ [Stacks] Lade Stacks über Portainer für Server ${server.id}`); + const businessStacks = await fetchPortainerStacksForServer(server.id); + results.push(...businessStacks); + } + return results; }; const buildStackCollections = (stacks = []) => { @@ -1894,8 +2153,8 @@ const buildStackCollections = (stacks = []) => { return { canonicalStacks, duplicates }; }; -const loadStackCollections = async () => { - const filteredStacks = await fetchPortainerStacks(); +const loadStackCollections = async (req) => { + const filteredStacks = await fetchStacksForUser(req); return { filteredStacks, ...buildStackCollections(filteredStacks) @@ -1915,12 +2174,14 @@ const isStackOutdated = async (stackId) => { const filterOutdatedStacks = async (stacks = []) => { const currentSelfStackId = getSelfStackId(); const results = await Promise.all( - stacks.map(async (stack) => ({ - stack, - outdated: currentSelfStackId && String(stack.Id) === currentSelfStackId - ? false - : await isStackOutdated(stack.Id) - })) + stacks.map(async (stack) => { + return { + stack, + outdated: currentSelfStackId && String(stack.Id) === currentSelfStackId + ? false + : await isStackOutdated(stack.Id) + }; + }) ); return { @@ -1948,14 +2209,30 @@ const shouldFallbackToStackFile = (message) => { return normalized.includes('not created from git') || normalized.includes('no git configuration'); }; -const redeployStackById = async (stackId, redeployType) => { - let stack; +const redeployStackById = async (stackId, redeployType, stackContext = null) => { + let stack = stackContext || null; const messages = getRedeployMessages(redeployType); + const resolveClientForStack = (candidate) => { + if (candidate?.__serverId) { + try { + const { server, apiKey } = getServerConnection(candidate.__serverId); + if (server?.url && apiKey) { + return createPortainerSetupClient({ baseURL: server.url, apiKey }); + } + } catch { + // ignore, fallback to default + } + } + return axiosInstance; + }; try { - const stackRes = await axiosInstance.get(`/api/stacks/${stackId}`); - stack = stackRes.data; + if (!stack) { + const stackRes = await axiosInstance.get(`/api/stacks/${stackId}`); + stack = stackRes.data; + } + const client = resolveClientForStack(stack); const targetId = stack.Id || stackId; const targetName = stack.Name || `Stack ${stackId}`; @@ -1974,7 +2251,7 @@ const redeployStackById = async (stackId, redeployType) => { }); const redeployViaStackFile = async () => { - const fileRes = await axiosInstance.get(`/api/stacks/${stack.Id}/file`); + const fileRes = await client.get(`/api/stacks/${stack.Id}/file`); const stackFileContent = fileRes.data?.StackFileContent; if (!stackFileContent) { throw new Error('Stack file konnte nicht geladen werden'); @@ -1987,7 +2264,7 @@ const redeployStackById = async (stackId, redeployType) => { if (!imageName) continue; try { console.log(`🖼️ Pulling image "${imageName}" für Service "${serviceName}"`); - await axiosInstance.post( + await client.post( `/api/endpoints/${stack.EndpointId}/docker/images/create?fromImage=${encodeURIComponent(imageName)}` ); } catch (err) { @@ -2008,7 +2285,7 @@ const redeployStackById = async (stackId, redeployType) => { updatePayload.SwarmID = swarmId; } - await axiosInstance.put( + await client.put( `/api/stacks/${stack.Id}`, updatePayload, { params: { endpointId: stack.EndpointId } } @@ -2021,7 +2298,7 @@ const redeployStackById = async (stackId, redeployType) => { if (isGitStack) { try { console.log(`🔄 [Redeploy] Git Stack "${stack.Name}" (${stack.Id}) wird redeployed`); - await axiosInstance.put(`/api/stacks/${stack.Id}/git/redeploy?endpointId=${stack.EndpointId}`); + await client.put(`/api/stacks/${stack.Id}/git/redeploy?endpointId=${stack.EndpointId}`); gitRedeploySucceeded = true; } catch (err) { const gitErrorMessage = err.response?.data?.message || err.message; @@ -2118,21 +2395,21 @@ app.use((req, res, next) => { (group) => typeof group?.name === 'string' && group.name.toLowerCase() === SUPERUSER_GROUP_NAME ); - const permissionsMap = isSuperuser - ? getSuperuserPermissionMap() - : getEffectivePermissionsForGroups(groupIds); + const permissionContext = buildPermissionContextForUser(userRecord); req.user = { id: userRecord.id, username: userRecord.username, email: userRecord.email, avatarColor: userRecord.avatarColor || null, - groups: userGroups, - isSuperuser, + groups: permissionContext?.groups || userGroups, + isSuperuser: permissionContext?.isSuperuser ?? isSuperuser, securityPhraseDownloadedAt: userRecord.securityPhraseDownloadedAt || null, requiresSecurityPhraseDownload: !userRecord.securityPhraseDownloadedAt }; - req.userPermissions = permissionsMap; + req.userPermissions = permissionContext?.permissions || {}; + req.userServerPermissions = permissionContext?.serverPermissions || {}; + req.userServerAssignments = permissionContext?.serverAssignments || []; req.authToken = token; touchSession(token); setAuthCookie(res, token); @@ -2143,7 +2420,7 @@ app.use((req, res, next) => { app.get('/api/setup/status', (req, res) => { try { - const status = buildSetupStatusResponse(); + const status = buildSetupStatusResponseForUser(req); res.json(status); } catch (error) { console.error('⚠️ [Setup] Statusabfrage fehlgeschlagen:', error); @@ -2199,43 +2476,6 @@ app.post('/api/setup/portainer-stacks', async (req, res) => { } }); -app.get('/api/servers/:id/agent', requirePermission('maintenance-server-edit', 'read'), async (req, res) => { - const { id } = req.params; - try { - const config = getAgentConfig(id, { autoCreate: true }); - const editionFlag = await isCommunityEdition(); - const { online, error } = await pingAgent(config?.agentUrl, config?.agentToken); - res.json({ - serverId: Number(id), - agentUrl: config?.agentUrl || null, - agentToken: config?.agentToken || null, - online, - agentError: error || null, - community: editionFlag - }); - } catch (err) { - res.status(400).json({ error: err.code || err.message || 'AGENT_CONFIG_FAILED' }); - } -}); - -app.put('/api/servers/:id/agent', requirePermission('maintenance-server-edit', 'full'), async (req, res) => { - const { id } = req.params; - try { - const payload = { - agentUrl: req.body?.agentUrl, - agentToken: req.body?.agentToken - }; - // Token ist systemgeneriert; wenn keiner übergeben, wird Auto-Token gesetzt - const config = setAgentConfig(id, { - agentUrl: payload.agentUrl, - agentToken: payload.agentToken || undefined - }); - res.json(config); - } catch (err) { - res.status(400).json({ error: err.code || err.message || 'AGENT_CONFIG_FAILED' }); - } -}); - app.post('/api/setup/complete', (req, res) => { const { superuser: superuserInput, server: serverInput, apiKey: apiKeyInput, selfStackId: selfStackInput } = req.body ?? {}; const hasSelfStackInput = req.body ? Object.prototype.hasOwnProperty.call(req.body, 'selfStackId') : false; @@ -2320,12 +2560,6 @@ app.post('/api/setup/complete', (req, res) => { return res.status(400).json({ error: 'API_KEY_REQUIRED' }); } - if (targetServerId) { - // Ensure agent token exists for CE servers - const agent = setAgentConfig(targetServerId, { agentUrl: null, agentToken: undefined }); - created.agent = agent; - } - if (hasSelfStackInput) { const normalizedSelfStackId = typeof selfStackInput === 'string' ? selfStackInput.trim() @@ -2337,7 +2571,7 @@ app.post('/api/setup/complete', (req, res) => { created.selfStackId = nextSelfStackId || null; } - const finalStatus = buildSetupStatusResponse(); + const finalStatus = buildSetupStatusResponseForUser(req); res.status(201).json({ success: finalStatus.setupComplete, status: finalStatus, @@ -2371,6 +2605,9 @@ app.post('/api/setup/complete', (req, res) => { app.get('/api/setup/servers/:id', requirePermission('maintenance-server-manage', 'read'), (req, res) => { const { id } = req.params; + if (!userHasServerAccess(req, id)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { const detail = getServerStatus(id); res.json({ success: true, ...detail }); @@ -2390,9 +2627,11 @@ app.get('/api/setup/servers/:id', requirePermission('maintenance-server-manage', app.get('/api/setup/servers/:id/check', requirePermission('maintenance-server-manage', 'read'), async (req, res) => { const { id } = req.params; + if (!userHasServerAccess(req, id)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { const { server, apiKey } = getServerConnection(id); - const agentConfig = getAgentConfig(id, { autoCreate: true }); if (!apiKey) { return res.json({ success: true, @@ -2454,30 +2693,6 @@ app.get('/api/setup/servers/:id/check', requirePermission('maintenance-server-ma // ignore, CE ohne endpoint oder Fehler } - let agentOnline = null; - let agentError = null; - let agentVersion = null; - - if ((edition || '').toLowerCase().includes('community') && agentConfig?.agentUrl) { - const { online, error } = await pingAgent(agentConfig.agentUrl, agentConfig.agentToken); - agentOnline = online; - agentError = error; - if (online) { - try { - const agentRes = await fetch(`${agentConfig.agentUrl.replace(/\/+$/, '')}/portainer/version`, { - headers: { 'X-Agent-Token': agentConfig.agentToken || '' } - }); - if (agentRes.ok) { - agentVersion = await agentRes.json(); - } else { - agentError = `agent_status_${agentRes.status}`; - } - } catch (err) { - agentError = err?.message || 'agent_fetch_failed'; - } - } - } - const effectiveCurrentVersion = statusData.Version ?? statusData.ServerVersion ?? statusData.Server?.Version @@ -2494,12 +2709,6 @@ app.get('/api/setup/servers/:id/check', requirePermission('maintenance-server-ma updateAvailable: false, edition, build - }, - agent: { - url: agentConfig?.agentUrl || null, - token: agentConfig?.agentToken || null, - online: agentOnline, - error: agentError } }); } catch (error) { @@ -2540,9 +2749,34 @@ app.post('/api/setup/servers', requirePermission('maintenance-server-edit', 'ful const client = createPortainerSetupClient({ baseURL: normalizedExternalUrl, apiKey: apiKeyRaw.trim() }); await client.get('/api/status'); + // Edition prüfen – nur Business Edition zulassen + let editionLabel = 'Community Edition'; + try { + const licenseInfoRes = await client.get('/api/licenses/info'); + editionLabel = extractPortainerEdition(licenseInfoRes.data ?? {}) || 'Business Edition'; + } catch { + editionLabel = 'Community Edition'; + } + if ((editionLabel || '').toLowerCase().includes('community')) { + return res.status(400).json({ error: 'PORTAINER_EDITION_UNSUPPORTED', message: 'Nur Business Edition wird unterstützt.' }); + } + const server = ensureServer({ name, url: normalizedExternalUrl }); setServerApiKey({ serverId: server.id, apiKey: apiKeyRaw.trim() }); - const status = buildSetupStatusResponse(); + logEvent({ + category: 'setup', + eventType: 'server', + action: 'create', + status: 'erfolgreich', + severity: 'info', + entityType: 'server', + entityId: String(server.id), + entityName: server.name, + message: 'Server angelegt und API-Key gespeichert', + contextType: 'server', + contextId: String(server.id) + }); + const status = buildSetupStatusResponseForUser(req); res.status(201).json({ success: true, server, status }); } catch (error) { const code = error.code || error.message; @@ -2558,6 +2792,9 @@ app.post('/api/setup/servers', requirePermission('maintenance-server-edit', 'ful if (code === 'SERVER_NOT_FOUND') { return res.status(404).json({ error: 'SERVER_NOT_FOUND' }); } + if (code === 'PORTAINER_EDITION_UNSUPPORTED') { + return res.status(400).json({ error: 'PORTAINER_EDITION_UNSUPPORTED' }); + } if (error.response?.status === 401) { return res.status(401).json({ error: 'API_KEY_INVALID', message: error.response?.data?.message || 'Portainer API-Key ungültig' }); } @@ -2574,6 +2811,9 @@ app.get('/api/setup/servers/:id/ssh-config', requirePermission('maintenance-ssh- if (!Number.isFinite(serverId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, serverId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { getServerById(serverId); const config = getPortainerSshConfig(serverId); @@ -2601,6 +2841,9 @@ app.put('/api/setup/servers/:id/ssh-config', requirePermission('maintenance-ssh- if (!Number.isFinite(serverId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, serverId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { getServerById(serverId); const config = savePortainerSshConfig(req.body || {}, serverId); @@ -2629,6 +2872,9 @@ app.delete('/api/setup/servers/:id/ssh-config', requirePermission('maintenance-s if (!Number.isFinite(serverId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, serverId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { getServerById(serverId); const config = deletePortainerSshConfig(serverId); @@ -2657,6 +2903,9 @@ app.post('/api/setup/servers/:id/test-ssh', requirePermission('maintenance-ssh-u if (!Number.isFinite(serverId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, serverId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { getServerById(serverId); const override = req.body && Object.keys(req.body).length ? req.body : null; @@ -2677,6 +2926,9 @@ app.get('/api/setup/servers/:id/update-script', requirePermission('maintenance-s if (!Number.isFinite(serverId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, serverId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { getServerById(serverId); const edition = (await resolveServerEdition(serverId) || '').toLowerCase(); @@ -2711,6 +2963,9 @@ app.put('/api/setup/servers/:id/update-script', requirePermission('maintenance-s if (!Number.isFinite(serverId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, serverId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } if (portainerUpdateState.running) { return res.status(409).json({ error: 'Aktualisierung läuft. Skript kann derzeit nicht geändert werden.' }); } @@ -2753,6 +3008,9 @@ app.delete('/api/setup/servers/:id/update-script', requirePermission('maintenanc if (!Number.isFinite(serverId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, serverId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } if (portainerUpdateState.running) { return res.status(409).json({ error: 'Aktualisierung läuft. Skript kann derzeit nicht geändert werden.' }); } @@ -2787,12 +3045,28 @@ app.delete('/api/setup/servers/:id/update-script', requirePermission('maintenanc app.put('/api/setup/servers/:id', requirePermission('maintenance-server-edit', 'full'), (req, res) => { const { id } = req.params; + if (!userHasServerAccess(req, id)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } const name = typeof req.body?.name === 'string' ? req.body.name.trim() : ''; const url = typeof req.body?.url === 'string' ? req.body.url.trim() : ''; try { const server = updateServerDetails(id, { name, url }); - const status = buildSetupStatusResponse(); + logEvent({ + category: 'setup', + eventType: 'server', + action: 'update', + status: 'erfolgreich', + severity: 'info', + entityType: 'server', + entityId: String(server.id), + entityName: server.name, + message: 'Serverdetails aktualisiert', + contextType: 'server', + contextId: String(server.id) + }); + const status = buildSetupStatusResponseForUser(req); res.json({ success: true, server, status }); } catch (error) { const code = error.code || error.message; @@ -2819,10 +3093,26 @@ app.delete('/api/setup/servers/:id', requirePermission('maintenance-server-delet if (!Number.isFinite(numericId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, numericId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } try { const result = removeServer(numericId); - const status = buildSetupStatusResponse(); + logEvent({ + category: 'setup', + eventType: 'server', + action: 'delete', + status: 'erfolgreich', + severity: 'info', + entityType: 'server', + entityId: String(numericId), + entityName: result?.name || `Server ${numericId}`, + message: 'Server gelöscht', + contextType: 'server', + contextId: String(numericId) + }); + const status = buildSetupStatusResponseForUser(req); res.json({ success: true, removed: result, status }); } catch (error) { const code = error.code || error.message; @@ -2844,12 +3134,28 @@ app.put('/api/setup/servers/:id/api-key', requirePermission('maintenance-server- if (!Number.isFinite(numericId)) { return res.status(400).json({ error: 'SERVER_ID_INVALID' }); } + if (!userHasServerAccess(req, numericId)) { + return res.status(403).json({ error: 'SERVER_ACCESS_DENIED' }); + } const rawValue = typeof req.body?.apiKey === 'string' ? req.body.apiKey : typeof req.body?.key === 'string' ? req.body.key : ''; try { const result = setServerApiKey({ serverId: numericId, apiKey: rawValue }); - const status = buildSetupStatusResponse(); + logEvent({ + category: 'setup', + eventType: 'server', + action: 'api-key-update', + status: 'erfolgreich', + severity: 'info', + entityType: 'server', + entityId: String(numericId), + entityName: `Server ${numericId}`, + message: 'API-Key aktualisiert', + contextType: 'server', + contextId: String(numericId) + }); + const status = buildSetupStatusResponseForUser(req); res.json({ success: true, updated: result, status }); } catch (error) { const code = error.code || error.message; @@ -2885,7 +3191,7 @@ app.put('/api/setup/self-stack', requirePermission('maintenance-server-edit', 'f try { const nextValue = persistSelfStackId(normalizedSelfStackId) || null; - const status = buildSetupStatusResponse(); + const status = buildSetupStatusResponseForUser(req); res.json({ success: true, value: nextValue, @@ -3147,7 +3453,9 @@ app.get('/api/users/:userId', requirePermission('users-access', 'read'), (req, r if (!user) { return res.status(404).json({ error: 'USER_NOT_FOUND' }); } - res.json({ item: user }); + const serverAssignments = getUserServerAssignments(numericId); + const servers = listServers(); + res.json({ item: { ...user, serverAssignments }, servers }); } catch (error) { console.error(`⚠️ [Users] Abruf der Benutzerdetails fehlgeschlagen (${userId}):`, error); res.status(500).json({ error: 'USER_FETCH_FAILED' }); @@ -3177,6 +3485,40 @@ app.get('/api/users/:userId/security-phrase', requirePermission('users-security- } }); +app.put('/api/users/:userId/server-assignments', requirePermission('users-edit', 'full'), (req, res) => { + const { userId } = req.params; + const numericId = Number(userId); + + if (!Number.isFinite(numericId) || numericId <= 0) { + return res.status(400).json({ error: 'INVALID_USER_ID' }); + } + + const assignments = req.body?.assignments; + + try { + const updated = setUserServerAssignments(numericId, Array.isArray(assignments) ? assignments : [], { actor: req.user }); + res.json({ items: updated, total: updated.length }); + } catch (error) { + if (error.code === 'INVALID_USER_ID') { + return res.status(400).json({ error: 'INVALID_USER_ID' }); + } + if (error.code === 'USER_NOT_FOUND') { + return res.status(404).json({ error: 'USER_NOT_FOUND' }); + } + if (error.code === 'USER_SUPERUSER_PROTECTED') { + return res.status(403).json({ error: 'USER_SUPERUSER_PROTECTED' }); + } + if (error.code === 'SERVER_NOT_FOUND') { + return res.status(404).json({ error: 'SERVER_NOT_FOUND', missingServerIds: error.missingServerIds || [] }); + } + if (error.code === 'GROUP_NOT_FOUND') { + return res.status(400).json({ error: 'GROUP_NOT_FOUND', missingServerIds: error.missingServerIds || [] }); + } + console.error(`⚠️ [Users] Server-Zuordnung konnte nicht aktualisiert werden (${userId}):`, error); + res.status(500).json({ error: 'USER_SERVER_ASSIGNMENTS_UPDATE_FAILED' }); + } +}); + app.post('/api/users/:userId/security-phrase/renew', requirePermission('users-security-phrase', 'full'), (req, res) => { const { userId } = req.params; const numericId = Number(userId); @@ -3452,6 +3794,13 @@ app.put('/api/groups/:groupId/permissions', requirePermission('user-groups-edit' if (serverError === 'PERMISSION_UNKNOWN_KEY') { return res.status(400).json({ error: 'PERMISSION_UNKNOWN_KEY', permissionKey: error.permissionKey }); } + if (serverError === 'PERMISSION_DEPENDENCY_LEVEL') { + return res.status(400).json({ + error: 'PERMISSION_DEPENDENCY_LEVEL', + permissionKey: error.permissionKey, + level: error.level + }); + } if (serverError === 'INVALID_GROUP_ID') { return res.status(400).json({ error: 'INVALID_GROUP_ID' }); } @@ -3605,7 +3954,7 @@ app.delete('/api/auth/superuser', requirePermission('maintenance-superuser-delet app.get('/api/stacks', maintenanceGuard, async (req, res) => { console.log("ℹ️ [API] GET /api/stacks: Abruf gestartet"); try { - const { canonicalStacks, duplicates } = await loadStackCollections(); + const { canonicalStacks, duplicates } = await loadStackCollections(req); const duplicateNames = duplicates.map((entry) => entry.name); const duplicateNameSet = new Set(duplicateNames); @@ -3616,13 +3965,23 @@ app.get('/api/stacks', maintenanceGuard, async (req, res) => { const currentSelfStackId = getSelfStackId(); const stacksWithStatus = await Promise.all( canonicalStacks.map(async (stack) => { + const redeployMeta = redeployingStacks.get(String(stack.Id)); + const redeployPhase = redeployMeta?.phase || null; + try { - const statusRes = await axiosInstance.get( + const serverId = stack.__serverId; + let client = axiosInstance; + if (serverId) { + const { server, apiKey } = getServerConnection(serverId); + if (server?.url && apiKey) { + client = createPortainerSetupClient({ baseURL: server.url, apiKey }); + } + } + + const statusRes = await client.get( `/api/stacks/${stack.Id}/images_status?refresh=true` ); const statusEmoji = statusRes.data.Status === 'outdated' ? '⚠️' : '✅'; - const redeployMeta = redeployingStacks.get(String(stack.Id)); - const redeployPhase = redeployMeta?.phase || null; return { ...stack, updateStatus: statusEmoji, @@ -3634,8 +3993,6 @@ app.get('/api/stacks', maintenanceGuard, async (req, res) => { }; } catch (err) { console.error(`❌ Fehler beim Abrufen des Status für Stack ${stack.Id}:`, err.message); - const redeployMeta = redeployingStacks.get(String(stack.Id)); - const redeployPhase = redeployMeta?.phase || null; return { ...stack, updateStatus: '❌', @@ -3661,7 +4018,7 @@ app.get('/api/stacks', maintenanceGuard, async (req, res) => { } }); -app.get('/api/maintenance/portainer-status', requirePermission('maintenance-portainer', 'read'), async (req, res) => { +app.get('/api/maintenance/portainer-status', requirePermission('maintenance-server-edit', 'full'), async (req, res) => { console.log("🧭 [Maintenance] GET /api/maintenance/portainer-status: Prüfung gestartet"); try { const payload = await fetchPortainerStatusSummary(); @@ -3910,7 +4267,7 @@ app.get( async (req, res) => { console.log("🧹 [Maintenance] GET /api/maintenance/duplicates: Abruf gestartet"); try { - const { duplicates } = await loadStackCollections(); + const { duplicates } = await loadStackCollections(req); const payload = duplicates .sort((a, b) => a.name.localeCompare(b.name)) @@ -3965,7 +4322,7 @@ app.post( console.log(`🧹 [Maintenance] Bereinigung angefordert für Stack ${canonicalIdStr}. Ziel-IDs: ${duplicateIds.join(', ')}`); try { - const { duplicates } = await loadStackCollections(); + const { duplicates } = await loadStackCollections(req); const target = duplicates.find((entry) => String(entry.canonical.Id) === canonicalIdStr); if (!target) { @@ -4205,7 +4562,14 @@ app.put('/api/stacks/:id/redeploy', requirePermission('stacks-redeploy-single', console.log(`🔄 PUT /api/stacks/${id}/redeploy: Redeploy gestartet`); try { - await redeployStackById(id, REDEPLOY_TYPES.SINGLE); + const { filteredStacks } = await loadStackCollections(req); + const stacksById = new Map(filteredStacks.map((stack) => [String(stack.Id), stack])); + const stackEntry = stacksById.get(String(id)) || null; + if (!stackEntry) { + return res.status(404).json({ error: 'STACK_NOT_FOUND' }); + } + + await redeployStackById(id, REDEPLOY_TYPES.SINGLE, stackEntry); console.log(`✅ PUT /api/stacks/${id}/redeploy: Redeploy erfolgreich abgeschlossen`); res.json({ success: true, message: 'Stack redeployed' }); } catch (err) { @@ -4226,8 +4590,7 @@ app.put( const serverContextId = getActiveServerUrl() || null; try { - const stacksRes = await axiosInstance.get('/api/stacks'); - const filteredStacks = Array.isArray(stacksRes.data) ? stacksRes.data : []; + const { filteredStacks } = await loadStackCollections(req); console.log("📦 Redeploy ALL für folgende Stacks:"); filteredStacks.forEach(s => console.log(` - ${s.Name}`)); @@ -4274,7 +4637,7 @@ app.put( for (const stack of eligibleStacks) { try { - await redeployStackById(stack.Id, REDEPLOY_TYPES.ALL); + await redeployStackById(stack.Id, REDEPLOY_TYPES.ALL, stack); console.log(`✅ Redeploy ALL -> Stack ${stack.Name} (${stack.Id}) erfolgreich`); } catch (err) { console.error(`❌ Redeploy ALL -> Stack ${stack.Name} (${stack.Id}) fehlgeschlagen:`, err.message); @@ -4337,7 +4700,7 @@ app.put( try { const normalizedIds = stackIds.map((id) => String(id)); - const { filteredStacks } = await loadStackCollections(); + const { filteredStacks } = await loadStackCollections(req); const stacksById = new Map(filteredStacks.map((stack) => [String(stack.Id), stack])); const missingIds = normalizedIds.filter((id) => !stacksById.has(id)); @@ -4409,7 +4772,7 @@ app.put( for (const stack of eligibleStacks) { try { - await redeployStackById(stack.Id, REDEPLOY_TYPES.SELECTION); + await redeployStackById(stack.Id, REDEPLOY_TYPES.SELECTION, stack); console.log(`✅ Redeploy Auswahl -> Stack ${stack.Name} (${stack.Id}) erfolgreich`); } catch (err) { console.error(`❌ Redeploy Auswahl -> Stack ${stack.Name} (${stack.Id}) fehlgeschlagen:`, err.message); diff --git a/backend/permissions/index.js b/backend/permissions/index.js index adf87e5..9a12855 100644 --- a/backend/permissions/index.js +++ b/backend/permissions/index.js @@ -13,7 +13,7 @@ const selectSections = db.prepare(` `); const selectGroups = db.prepare(` - SELECT id, section_id, key, title, sort_order + SELECT id, section_id, parent_group_id, key, title, sort_order FROM permission_groups ORDER BY section_id ASC, sort_order ASC, id ASC `); @@ -28,6 +28,7 @@ const selectItems = db.prepare(` sort_order, default_level, available_levels, + is_global_scope, is_required FROM permission_items ORDER BY section_id ASC, COALESCE(group_id, 0) ASC, sort_order ASC, id ASC @@ -39,7 +40,7 @@ const selectDependencies = db.prepare(` `); const selectPermissionItemsForMap = db.prepare(` - SELECT id, key, available_levels, default_level + SELECT id, key, available_levels, default_level, is_global_scope FROM permission_items `); @@ -81,6 +82,8 @@ const getLevelPriority = (level) => { }; let cachedPermissionItems = null; +let cachedServerScopedKeys = null; +let cachedScopeByKey = null; const getPermissionItems = () => { if (!cachedPermissionItems) { @@ -91,6 +94,24 @@ const getPermissionItems = () => { const resetPermissionItemsCache = () => { cachedPermissionItems = null; + cachedServerScopedKeys = null; + cachedScopeByKey = null; +}; + +const getScopeCache = () => { + if (!cachedScopeByKey || !cachedServerScopedKeys) { + const items = getPermissionItems(); + cachedScopeByKey = new Map(); + cachedServerScopedKeys = new Set(); + items.forEach((item) => { + const isGlobal = item.is_global_scope !== 0; + cachedScopeByKey.set(item.key, { isGlobal }); + if (!isGlobal) { + cachedServerScopedKeys.add(item.key); + } + }); + } + return { scopeByKey: cachedScopeByKey, serverScopedKeys: cachedServerScopedKeys }; }; export function getPermissionStructure() { @@ -109,10 +130,23 @@ export function getPermissionStructure() { }); const groupsBySectionId = new Map(); - groups.forEach((group) => { - const list = groupsBySectionId.get(group.section_id) || []; - list.push(group); - groupsBySectionId.set(group.section_id, list); + const groupsByParentId = new Map(); + const sortedGroups = [...groups].sort((a, b) => { + const sortDiff = (a.sort_order ?? 0) - (b.sort_order ?? 0); + if (sortDiff !== 0) return sortDiff; + return a.id - b.id; + }); + + sortedGroups.forEach((group) => { + if (group.parent_group_id) { + const list = groupsByParentId.get(group.parent_group_id) || []; + list.push(group); + groupsByParentId.set(group.parent_group_id, list); + } else { + const list = groupsBySectionId.get(group.section_id) || []; + list.push(group); + groupsBySectionId.set(group.section_id, list); + } }); const itemsBySectionId = new Map(); @@ -154,18 +188,26 @@ export function getPermissionStructure() { defaultLevel: item.default_level || 'none', availableLevels, isRequired: Boolean(item.is_required), + isGlobal: item.is_global_scope !== 0, dependencies: formattedDependencies }; }; + const buildGroupTree = (group) => { + const children = groupsByParentId.get(group.id) || []; + return { + key: group.key, + title: group.title, + sortOrder: group.sort_order ?? 0, + items: (itemsByGroupId.get(group.id) || []).map(formatItem), + groups: children.map(buildGroupTree) + }; + }; + const formattedSections = sections.map((section) => { const sectionItems = (itemsBySectionId.get(section.id) || []).map(formatItem); - const sectionGroups = (groupsBySectionId.get(section.id) || []).map((group) => ({ - key: group.key, - title: group.title, - sortOrder: group.sort_order ?? 0, - items: (itemsByGroupId.get(group.id) || []).map(formatItem) - })); + const rootGroups = groupsBySectionId.get(section.id) || []; + const sectionGroups = rootGroups.map(buildGroupTree); return { key: section.key, @@ -270,13 +312,24 @@ export function saveGroupPermissionValues(groupId, values = {}) { const serverEditLevel = getSubmittedLevel('maintenance-server-edit'); const serverDeleteLevel = getSubmittedLevel('maintenance-server-delete'); - if (getLevelPriority(serverDeleteLevel) >= getLevelPriority('full') && - (getLevelPriority(serverManageLevel) < getLevelPriority('full') || - getLevelPriority(serverEditLevel) < getLevelPriority('full'))) { - const error = new Error('PERMISSION_DEPENDENCY_LEVEL'); - error.code = 'PERMISSION_DEPENDENCY_LEVEL'; - error.permissionKey = 'maintenance-server-delete'; - throw error; + // Enforce dependency: "server löschen" darf maximal so hoch sein wie manage/edit. + const deletePriority = getLevelPriority(serverDeleteLevel); + const allowedDeletePriority = Math.min( + getLevelPriority(serverManageLevel), + getLevelPriority(serverEditLevel) + ); + if (deletePriority > allowedDeletePriority) { + const allowedLevelEntry = Object.entries(LEVEL_PRIORITY).find(([, priority]) => priority === allowedDeletePriority); + const allowedLevel = allowedLevelEntry ? allowedLevelEntry[0] : 'none'; + const deleteEntry = normalizedEntries.find((entry) => entry.item.key === 'maintenance-server-delete'); + if (deleteEntry) { + deleteEntry.level = allowedLevel; + } else { + normalizedEntries.push({ + item: itemMap.get('maintenance-server-delete'), + level: allowedLevel + }); + } } const runSave = db.transaction(() => { @@ -324,6 +377,32 @@ export function getSuperuserPermissionMap() { return result; } +export function getServerScopedPermissionKeys() { + const { serverScopedKeys } = getScopeCache(); + return Array.from(serverScopedKeys); +} + +export function isServerScopedPermission(permissionKey) { + if (!permissionKey) return false; + const { serverScopedKeys, scopeByKey } = getScopeCache(); + if (serverScopedKeys.has(permissionKey)) { + return true; + } + const scope = scopeByKey.get(permissionKey); + return scope ? scope.isGlobal === false : false; +} + +export function applyServerScopedOverride(basePermissions = {}, overridePermissions = {}) { + const merged = { ...basePermissions }; + const { serverScopedKeys } = getScopeCache(); + serverScopedKeys.forEach((key) => { + if (Object.prototype.hasOwnProperty.call(overridePermissions, key)) { + merged[key] = overridePermissions[key]; + } + }); + return merged; +} + export function getEffectivePermissionsForGroup(groupId) { const defaults = getDefaultPermissionMap(); const numericId = Number(groupId); diff --git a/backend/public/assets/index-027ca62d.js b/backend/public/assets/index-027ca62d.js deleted file mode 100644 index 8321581..0000000 --- a/backend/public/assets/index-027ca62d.js +++ /dev/null @@ -1,94 +0,0 @@ -function $j(e,t){for(var r=0;rn[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(o){if(o.ep)return;o.ep=!0;const a=r(o);fetch(o.href,a)}})();function r_(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function cu(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}),r}var n_={exports:{}},Zd={},o_={exports:{}},kt={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var du=Symbol.for("react.element"),Hj=Symbol.for("react.portal"),qj=Symbol.for("react.fragment"),Gj=Symbol.for("react.strict_mode"),Kj=Symbol.for("react.profiler"),Yj=Symbol.for("react.provider"),Qj=Symbol.for("react.context"),Xj=Symbol.for("react.forward_ref"),Zj=Symbol.for("react.suspense"),Jj=Symbol.for("react.memo"),e2=Symbol.for("react.lazy"),fy=Symbol.iterator;function t2(e){return e===null||typeof e!="object"?null:(e=fy&&e[fy]||e["@@iterator"],typeof e=="function"?e:null)}var a_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},i_=Object.assign,s_={};function Ss(e,t,r){this.props=e,this.context=t,this.refs=s_,this.updater=r||a_}Ss.prototype.isReactComponent={};Ss.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Ss.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function l_(){}l_.prototype=Ss.prototype;function y0(e,t,r){this.props=e,this.context=t,this.refs=s_,this.updater=r||a_}var x0=y0.prototype=new l_;x0.constructor=y0;i_(x0,Ss.prototype);x0.isPureReactComponent=!0;var py=Array.isArray,u_=Object.prototype.hasOwnProperty,w0={current:null},c_={key:!0,ref:!0,__self:!0,__source:!0};function d_(e,t,r){var n,o={},a=null,i=null;if(t!=null)for(n in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(a=""+t.key),t)u_.call(t,n)&&!c_.hasOwnProperty(n)&&(o[n]=t[n]);var u=arguments.length-2;if(u===1)o.children=r;else if(1t=>{const r=f2.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),mo=e=>(e=e.toLowerCase(),t=>Jd(t)===e),ef=e=>t=>typeof t===e,{isArray:Cs}=Array,Dl=ef("undefined");function p2(e){return e!==null&&!Dl(e)&&e.constructor!==null&&!Dl(e.constructor)&&yn(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const h_=mo("ArrayBuffer");function h2(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&h_(e.buffer),t}const g2=ef("string"),yn=ef("function"),g_=ef("number"),tf=e=>e!==null&&typeof e=="object",m2=e=>e===!0||e===!1,Oc=e=>{if(Jd(e)!=="object")return!1;const t=C0(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},b2=mo("Date"),v2=mo("File"),y2=mo("Blob"),x2=mo("FileList"),w2=e=>tf(e)&&yn(e.pipe),_2=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||yn(e.append)&&((t=Jd(e))==="formdata"||t==="object"&&yn(e.toString)&&e.toString()==="[object FormData]"))},S2=mo("URLSearchParams"),[C2,T2,P2,O2]=["ReadableStream","Request","Response","Headers"].map(mo),k2=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function fu(e,t,{allOwnKeys:r=!1}={}){if(e===null||typeof e>"u")return;let n,o;if(typeof e!="object"&&(e=[e]),Cs(e))for(n=0,o=e.length;n0;)if(o=r[n],t===o.toLowerCase())return o;return null}const Xa=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),b_=e=>!Dl(e)&&e!==Xa;function zh(){const{caseless:e}=b_(this)&&this||{},t={},r=(n,o)=>{const a=e&&m_(t,o)||o;Oc(t[a])&&Oc(n)?t[a]=zh(t[a],n):Oc(n)?t[a]=zh({},n):Cs(n)?t[a]=n.slice():t[a]=n};for(let n=0,o=arguments.length;n(fu(t,(o,a)=>{r&&yn(o)?e[a]=p_(o,r):e[a]=o},{allOwnKeys:n}),e),E2=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),j2=(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},A2=(e,t,r,n)=>{let o,a,i;const u={};if(t=t||{},e==null)return t;do{for(o=Object.getOwnPropertyNames(e),a=o.length;a-- >0;)i=o[a],(!n||n(i,e,t))&&!u[i]&&(t[i]=e[i],u[i]=!0);e=r!==!1&&C0(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},R2=(e,t,r)=>{e=String(e),(r===void 0||r>e.length)&&(r=e.length),r-=t.length;const n=e.indexOf(t,r);return n!==-1&&n===r},M2=e=>{if(!e)return null;if(Cs(e))return e;let t=e.length;if(!g_(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},I2=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&C0(Uint8Array)),D2=(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let o;for(;(o=n.next())&&!o.done;){const a=o.value;t.call(e,a[0],a[1])}},L2=(e,t)=>{let r;const n=[];for(;(r=e.exec(t))!==null;)n.push(r);return n},F2=mo("HTMLFormElement"),z2=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,o){return n.toUpperCase()+o}),gy=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),B2=mo("RegExp"),v_=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),n={};fu(r,(o,a)=>{let i;(i=t(o,a,e))!==!1&&(n[a]=i||o)}),Object.defineProperties(e,n)},V2=e=>{v_(e,(t,r)=>{if(yn(e)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=e[r];if(yn(n)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},U2=(e,t)=>{const r={},n=o=>{o.forEach(a=>{r[a]=!0})};return Cs(e)?n(e):n(String(e).split(t)),r},W2=()=>{},$2=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,Lp="abcdefghijklmnopqrstuvwxyz",my="0123456789",y_={DIGIT:my,ALPHA:Lp,ALPHA_DIGIT:Lp+Lp.toUpperCase()+my},H2=(e=16,t=y_.ALPHA_DIGIT)=>{let r="";const{length:n}=t;for(;e--;)r+=t[Math.random()*n|0];return r};function q2(e){return!!(e&&yn(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const G2=e=>{const t=new Array(10),r=(n,o)=>{if(tf(n)){if(t.indexOf(n)>=0)return;if(!("toJSON"in n)){t[o]=n;const a=Cs(n)?[]:{};return fu(n,(i,u)=>{const f=r(i,o+1);!Dl(f)&&(a[u]=f)}),t[o]=void 0,a}}return n};return r(e,0)},K2=mo("AsyncFunction"),Y2=e=>e&&(tf(e)||yn(e))&&yn(e.then)&&yn(e.catch),x_=((e,t)=>e?setImmediate:t?((r,n)=>(Xa.addEventListener("message",({source:o,data:a})=>{o===Xa&&a===r&&n.length&&n.shift()()},!1),o=>{n.push(o),Xa.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",yn(Xa.postMessage)),Q2=typeof queueMicrotask<"u"?queueMicrotask.bind(Xa):typeof process<"u"&&process.nextTick||x_,Se={isArray:Cs,isArrayBuffer:h_,isBuffer:p2,isFormData:_2,isArrayBufferView:h2,isString:g2,isNumber:g_,isBoolean:m2,isObject:tf,isPlainObject:Oc,isReadableStream:C2,isRequest:T2,isResponse:P2,isHeaders:O2,isUndefined:Dl,isDate:b2,isFile:v2,isBlob:y2,isRegExp:B2,isFunction:yn,isStream:w2,isURLSearchParams:S2,isTypedArray:I2,isFileList:x2,forEach:fu,merge:zh,extend:N2,trim:k2,stripBOM:E2,inherits:j2,toFlatObject:A2,kindOf:Jd,kindOfTest:mo,endsWith:R2,toArray:M2,forEachEntry:D2,matchAll:L2,isHTMLForm:F2,hasOwnProperty:gy,hasOwnProp:gy,reduceDescriptors:v_,freezeMethods:V2,toObjectSet:U2,toCamelCase:z2,noop:W2,toFiniteNumber:$2,findKey:m_,global:Xa,isContextDefined:b_,ALPHABET:y_,generateString:H2,isSpecCompliantForm:q2,toJSONObject:G2,isAsyncFn:K2,isThenable:Y2,setImmediate:x_,asap:Q2};function St(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}Se.inherits(St,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Se.toJSONObject(this.config),code:this.code,status:this.status}}});const w_=St.prototype,__={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{__[e]={value:e}});Object.defineProperties(St,__);Object.defineProperty(w_,"isAxiosError",{value:!0});St.from=(e,t,r,n,o,a)=>{const i=Object.create(w_);return Se.toFlatObject(e,i,function(f){return f!==Error.prototype},u=>u!=="isAxiosError"),St.call(i,e.message,t,r,n,o),i.cause=e,i.name=e.name,a&&Object.assign(i,a),i};const X2=null;function Bh(e){return Se.isPlainObject(e)||Se.isArray(e)}function S_(e){return Se.endsWith(e,"[]")?e.slice(0,-2):e}function by(e,t,r){return e?e.concat(t).map(function(o,a){return o=S_(o),!r&&a?"["+o+"]":o}).join(r?".":""):t}function Z2(e){return Se.isArray(e)&&!e.some(Bh)}const J2=Se.toFlatObject(Se,{},null,function(t){return/^is[A-Z]/.test(t)});function rf(e,t,r){if(!Se.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,r=Se.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,b){return!Se.isUndefined(b[w])});const n=r.metaTokens,o=r.visitor||m,a=r.dots,i=r.indexes,f=(r.Blob||typeof Blob<"u"&&Blob)&&Se.isSpecCompliantForm(t);if(!Se.isFunction(o))throw new TypeError("visitor must be a function");function g(C){if(C===null)return"";if(Se.isDate(C))return C.toISOString();if(!f&&Se.isBlob(C))throw new St("Blob is not supported. Use a Buffer instead.");return Se.isArrayBuffer(C)||Se.isTypedArray(C)?f&&typeof Blob=="function"?new Blob([C]):Buffer.from(C):C}function m(C,w,b){let d=C;if(C&&!b&&typeof C=="object"){if(Se.endsWith(w,"{}"))w=n?w:w.slice(0,-2),C=JSON.stringify(C);else if(Se.isArray(C)&&Z2(C)||(Se.isFileList(C)||Se.endsWith(w,"[]"))&&(d=Se.toArray(C)))return w=S_(w),d.forEach(function(c,l){!(Se.isUndefined(c)||c===null)&&t.append(i===!0?by([w],l,a):i===null?w:w+"[]",g(c))}),!1}return Bh(C)?!0:(t.append(by(b,w,a),g(C)),!1)}const S=[],O=Object.assign(J2,{defaultVisitor:m,convertValue:g,isVisitable:Bh});function T(C,w){if(!Se.isUndefined(C)){if(S.indexOf(C)!==-1)throw Error("Circular reference detected in "+w.join("."));S.push(C),Se.forEach(C,function(d,s){(!(Se.isUndefined(d)||d===null)&&o.call(t,d,Se.isString(s)?s.trim():s,w,O))===!0&&T(d,w?w.concat(s):[s])}),S.pop()}}if(!Se.isObject(e))throw new TypeError("data must be an object");return T(e),t}function vy(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(n){return t[n]})}function T0(e,t){this._pairs=[],e&&rf(e,this,t)}const C_=T0.prototype;C_.append=function(t,r){this._pairs.push([t,r])};C_.toString=function(t){const r=t?function(n){return t.call(this,n,vy)}:vy;return this._pairs.map(function(o){return r(o[0])+"="+r(o[1])},"").join("&")};function eA(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function T_(e,t,r){if(!t)return e;const n=r&&r.encode||eA,o=r&&r.serialize;let a;if(o?a=o(t,r):a=Se.isURLSearchParams(t)?t.toString():new T0(t,r).toString(n),a){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class tA{constructor(){this.handlers=[]}use(t,r,n){return this.handlers.push({fulfilled:t,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){Se.forEach(this.handlers,function(n){n!==null&&t(n)})}}const yy=tA,P_={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},rA=typeof URLSearchParams<"u"?URLSearchParams:T0,nA=typeof FormData<"u"?FormData:null,oA=typeof Blob<"u"?Blob:null,aA={isBrowser:!0,classes:{URLSearchParams:rA,FormData:nA,Blob:oA},protocols:["http","https","file","blob","url","data"]},P0=typeof window<"u"&&typeof document<"u",Vh=typeof navigator=="object"&&navigator||void 0,iA=P0&&(!Vh||["ReactNative","NativeScript","NS"].indexOf(Vh.product)<0),sA=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),lA=P0&&window.location.href||"http://localhost",uA=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:P0,hasStandardBrowserEnv:iA,hasStandardBrowserWebWorkerEnv:sA,navigator:Vh,origin:lA},Symbol.toStringTag,{value:"Module"})),xn={...uA,...aA};function cA(e,t){return rf(e,new xn.classes.URLSearchParams,Object.assign({visitor:function(r,n,o,a){return xn.isNode&&Se.isBuffer(r)?(this.append(n,r.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}function dA(e){return Se.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function fA(e){const t={},r=Object.keys(e);let n;const o=r.length;let a;for(n=0;n=r.length;return i=!i&&Se.isArray(o)?o.length:i,f?(Se.hasOwnProp(o,i)?o[i]=[o[i],n]:o[i]=n,!u):((!o[i]||!Se.isObject(o[i]))&&(o[i]=[]),t(r,n,o[i],a)&&Se.isArray(o[i])&&(o[i]=fA(o[i])),!u)}if(Se.isFormData(e)&&Se.isFunction(e.entries)){const r={};return Se.forEachEntry(e,(n,o)=>{t(dA(n),o,r,0)}),r}return null}function pA(e,t,r){if(Se.isString(e))try{return(t||JSON.parse)(e),Se.trim(e)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(e)}const O0={transitional:P_,adapter:["xhr","http","fetch"],transformRequest:[function(t,r){const n=r.getContentType()||"",o=n.indexOf("application/json")>-1,a=Se.isObject(t);if(a&&Se.isHTMLForm(t)&&(t=new FormData(t)),Se.isFormData(t))return o?JSON.stringify(O_(t)):t;if(Se.isArrayBuffer(t)||Se.isBuffer(t)||Se.isStream(t)||Se.isFile(t)||Se.isBlob(t)||Se.isReadableStream(t))return t;if(Se.isArrayBufferView(t))return t.buffer;if(Se.isURLSearchParams(t))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let u;if(a){if(n.indexOf("application/x-www-form-urlencoded")>-1)return cA(t,this.formSerializer).toString();if((u=Se.isFileList(t))||n.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return rf(u?{"files[]":t}:t,f&&new f,this.formSerializer)}}return a||o?(r.setContentType("application/json",!1),pA(t)):t}],transformResponse:[function(t){const r=this.transitional||O0.transitional,n=r&&r.forcedJSONParsing,o=this.responseType==="json";if(Se.isResponse(t)||Se.isReadableStream(t))return t;if(t&&Se.isString(t)&&(n&&!this.responseType||o)){const i=!(r&&r.silentJSONParsing)&&o;try{return JSON.parse(t)}catch(u){if(i)throw u.name==="SyntaxError"?St.from(u,St.ERR_BAD_RESPONSE,this,null,this.response):u}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:xn.classes.FormData,Blob:xn.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Se.forEach(["delete","get","head","post","put","patch"],e=>{O0.headers[e]={}});const k0=O0,hA=Se.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),gA=e=>{const t={};let r,n,o;return e&&e.split(` -`).forEach(function(i){o=i.indexOf(":"),r=i.substring(0,o).trim().toLowerCase(),n=i.substring(o+1).trim(),!(!r||t[r]&&hA[r])&&(r==="set-cookie"?t[r]?t[r].push(n):t[r]=[n]:t[r]=t[r]?t[r]+", "+n:n)}),t},xy=Symbol("internals");function rl(e){return e&&String(e).trim().toLowerCase()}function kc(e){return e===!1||e==null?e:Se.isArray(e)?e.map(kc):String(e)}function mA(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}const bA=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Fp(e,t,r,n,o){if(Se.isFunction(n))return n.call(this,t,r);if(o&&(t=r),!!Se.isString(t)){if(Se.isString(n))return t.indexOf(n)!==-1;if(Se.isRegExp(n))return n.test(t)}}function vA(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,r,n)=>r.toUpperCase()+n)}function yA(e,t){const r=Se.toCamelCase(" "+t);["get","set","has"].forEach(n=>{Object.defineProperty(e,n+r,{value:function(o,a,i){return this[n].call(this,t,o,a,i)},configurable:!0})})}class nf{constructor(t){t&&this.set(t)}set(t,r,n){const o=this;function a(u,f,g){const m=rl(f);if(!m)throw new Error("header name must be a non-empty string");const S=Se.findKey(o,m);(!S||o[S]===void 0||g===!0||g===void 0&&o[S]!==!1)&&(o[S||f]=kc(u))}const i=(u,f)=>Se.forEach(u,(g,m)=>a(g,m,f));if(Se.isPlainObject(t)||t instanceof this.constructor)i(t,r);else if(Se.isString(t)&&(t=t.trim())&&!bA(t))i(gA(t),r);else if(Se.isHeaders(t))for(const[u,f]of t.entries())a(f,u,n);else t!=null&&a(r,t,n);return this}get(t,r){if(t=rl(t),t){const n=Se.findKey(this,t);if(n){const o=this[n];if(!r)return o;if(r===!0)return mA(o);if(Se.isFunction(r))return r.call(this,o,n);if(Se.isRegExp(r))return r.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,r){if(t=rl(t),t){const n=Se.findKey(this,t);return!!(n&&this[n]!==void 0&&(!r||Fp(this,this[n],n,r)))}return!1}delete(t,r){const n=this;let o=!1;function a(i){if(i=rl(i),i){const u=Se.findKey(n,i);u&&(!r||Fp(n,n[u],u,r))&&(delete n[u],o=!0)}}return Se.isArray(t)?t.forEach(a):a(t),o}clear(t){const r=Object.keys(this);let n=r.length,o=!1;for(;n--;){const a=r[n];(!t||Fp(this,this[a],a,t,!0))&&(delete this[a],o=!0)}return o}normalize(t){const r=this,n={};return Se.forEach(this,(o,a)=>{const i=Se.findKey(n,a);if(i){r[i]=kc(o),delete r[a];return}const u=t?vA(a):String(a).trim();u!==a&&delete r[a],r[u]=kc(o),n[u]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const r=Object.create(null);return Se.forEach(this,(n,o)=>{n!=null&&n!==!1&&(r[o]=t&&Se.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,r])=>t+": "+r).join(` -`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...r){const n=new this(t);return r.forEach(o=>n.set(o)),n}static accessor(t){const n=(this[xy]=this[xy]={accessors:{}}).accessors,o=this.prototype;function a(i){const u=rl(i);n[u]||(yA(o,i),n[u]=!0)}return Se.isArray(t)?t.forEach(a):a(t),this}}nf.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);Se.reduceDescriptors(nf.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(n){this[r]=n}}});Se.freezeMethods(nf);const io=nf;function zp(e,t){const r=this||k0,n=t||r,o=io.from(n.headers);let a=n.data;return Se.forEach(e,function(u){a=u.call(r,a,o.normalize(),t?t.status:void 0)}),o.normalize(),a}function k_(e){return!!(e&&e.__CANCEL__)}function Ts(e,t,r){St.call(this,e??"canceled",St.ERR_CANCELED,t,r),this.name="CanceledError"}Se.inherits(Ts,St,{__CANCEL__:!0});function N_(e,t,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?e(r):t(new St("Request failed with status code "+r.status,[St.ERR_BAD_REQUEST,St.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function xA(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function wA(e,t){e=e||10;const r=new Array(e),n=new Array(e);let o=0,a=0,i;return t=t!==void 0?t:1e3,function(f){const g=Date.now(),m=n[a];i||(i=g),r[o]=f,n[o]=g;let S=a,O=0;for(;S!==o;)O+=r[S++],S=S%e;if(o=(o+1)%e,o===a&&(a=(a+1)%e),g-i{r=m,o=null,a&&(clearTimeout(a),a=null),e.apply(null,g)};return[(...g)=>{const m=Date.now(),S=m-r;S>=n?i(g,m):(o=g,a||(a=setTimeout(()=>{a=null,i(o)},n-S)))},()=>o&&i(o)]}const rd=(e,t,r=3)=>{let n=0;const o=wA(50,250);return _A(a=>{const i=a.loaded,u=a.lengthComputable?a.total:void 0,f=i-n,g=o(f),m=i<=u;n=i;const S={loaded:i,total:u,progress:u?i/u:void 0,bytes:f,rate:g||void 0,estimated:g&&u&&m?(u-i)/g:void 0,event:a,lengthComputable:u!=null,[t?"download":"upload"]:!0};e(S)},r)},wy=(e,t)=>{const r=e!=null;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},_y=e=>(...t)=>Se.asap(()=>e(...t)),SA=xn.hasStandardBrowserEnv?function(){const t=xn.navigator&&/(msie|trident)/i.test(xn.navigator.userAgent),r=document.createElement("a");let n;function o(a){let i=a;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:r.pathname.charAt(0)==="/"?r.pathname:"/"+r.pathname}}return n=o(window.location.href),function(i){const u=Se.isString(i)?o(i):i;return u.protocol===n.protocol&&u.host===n.host}}():function(){return function(){return!0}}(),CA=xn.hasStandardBrowserEnv?{write(e,t,r,n,o,a){const i=[e+"="+encodeURIComponent(t)];Se.isNumber(r)&&i.push("expires="+new Date(r).toGMTString()),Se.isString(n)&&i.push("path="+n),Se.isString(o)&&i.push("domain="+o),a===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function TA(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function PA(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function E_(e,t){return e&&!TA(t)?PA(e,t):t}const Sy=e=>e instanceof io?{...e}:e;function ai(e,t){t=t||{};const r={};function n(g,m,S){return Se.isPlainObject(g)&&Se.isPlainObject(m)?Se.merge.call({caseless:S},g,m):Se.isPlainObject(m)?Se.merge({},m):Se.isArray(m)?m.slice():m}function o(g,m,S){if(Se.isUndefined(m)){if(!Se.isUndefined(g))return n(void 0,g,S)}else return n(g,m,S)}function a(g,m){if(!Se.isUndefined(m))return n(void 0,m)}function i(g,m){if(Se.isUndefined(m)){if(!Se.isUndefined(g))return n(void 0,g)}else return n(void 0,m)}function u(g,m,S){if(S in t)return n(g,m);if(S in e)return n(void 0,g)}const f={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:u,headers:(g,m)=>o(Sy(g),Sy(m),!0)};return Se.forEach(Object.keys(Object.assign({},e,t)),function(m){const S=f[m]||o,O=S(e[m],t[m],m);Se.isUndefined(O)&&S!==u||(r[m]=O)}),r}const j_=e=>{const t=ai({},e);let{data:r,withXSRFToken:n,xsrfHeaderName:o,xsrfCookieName:a,headers:i,auth:u}=t;t.headers=i=io.from(i),t.url=T_(E_(t.baseURL,t.url),e.params,e.paramsSerializer),u&&i.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):"")));let f;if(Se.isFormData(r)){if(xn.hasStandardBrowserEnv||xn.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[g,...m]=f?f.split(";").map(S=>S.trim()).filter(Boolean):[];i.setContentType([g||"multipart/form-data",...m].join("; "))}}if(xn.hasStandardBrowserEnv&&(n&&Se.isFunction(n)&&(n=n(t)),n||n!==!1&&SA(t.url))){const g=o&&a&&CA.read(a);g&&i.set(o,g)}return t},OA=typeof XMLHttpRequest<"u",kA=OA&&function(e){return new Promise(function(r,n){const o=j_(e);let a=o.data;const i=io.from(o.headers).normalize();let{responseType:u,onUploadProgress:f,onDownloadProgress:g}=o,m,S,O,T,C;function w(){T&&T(),C&&C(),o.cancelToken&&o.cancelToken.unsubscribe(m),o.signal&&o.signal.removeEventListener("abort",m)}let b=new XMLHttpRequest;b.open(o.method.toUpperCase(),o.url,!0),b.timeout=o.timeout;function d(){if(!b)return;const c=io.from("getAllResponseHeaders"in b&&b.getAllResponseHeaders()),h={data:!u||u==="text"||u==="json"?b.responseText:b.response,status:b.status,statusText:b.statusText,headers:c,config:e,request:b};N_(function(x){r(x),w()},function(x){n(x),w()},h),b=null}"onloadend"in b?b.onloadend=d:b.onreadystatechange=function(){!b||b.readyState!==4||b.status===0&&!(b.responseURL&&b.responseURL.indexOf("file:")===0)||setTimeout(d)},b.onabort=function(){b&&(n(new St("Request aborted",St.ECONNABORTED,e,b)),b=null)},b.onerror=function(){n(new St("Network Error",St.ERR_NETWORK,e,b)),b=null},b.ontimeout=function(){let l=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const h=o.transitional||P_;o.timeoutErrorMessage&&(l=o.timeoutErrorMessage),n(new St(l,h.clarifyTimeoutError?St.ETIMEDOUT:St.ECONNABORTED,e,b)),b=null},a===void 0&&i.setContentType(null),"setRequestHeader"in b&&Se.forEach(i.toJSON(),function(l,h){b.setRequestHeader(h,l)}),Se.isUndefined(o.withCredentials)||(b.withCredentials=!!o.withCredentials),u&&u!=="json"&&(b.responseType=o.responseType),g&&([O,C]=rd(g,!0),b.addEventListener("progress",O)),f&&b.upload&&([S,T]=rd(f),b.upload.addEventListener("progress",S),b.upload.addEventListener("loadend",T)),(o.cancelToken||o.signal)&&(m=c=>{b&&(n(!c||c.type?new Ts(null,e,b):c),b.abort(),b=null)},o.cancelToken&&o.cancelToken.subscribe(m),o.signal&&(o.signal.aborted?m():o.signal.addEventListener("abort",m)));const s=xA(o.url);if(s&&xn.protocols.indexOf(s)===-1){n(new St("Unsupported protocol "+s+":",St.ERR_BAD_REQUEST,e));return}b.send(a||null)})},NA=(e,t)=>{let r=new AbortController,n;const o=function(f){if(!n){n=!0,i();const g=f instanceof Error?f:this.reason;r.abort(g instanceof St?g:new Ts(g instanceof Error?g.message:g))}};let a=t&&setTimeout(()=>{o(new St(`timeout ${t} of ms exceeded`,St.ETIMEDOUT))},t);const i=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(f=>{f&&(f.removeEventListener?f.removeEventListener("abort",o):f.unsubscribe(o))}),e=null)};e.forEach(f=>f&&f.addEventListener&&f.addEventListener("abort",o));const{signal:u}=r;return u.unsubscribe=i,[u,()=>{a&&clearTimeout(a),a=null}]},EA=NA,jA=function*(e,t){let r=e.byteLength;if(!t||r{const a=AA(e,t,o);let i=0,u,f=g=>{u||(u=!0,n&&n(g))};return new ReadableStream({async pull(g){try{const{done:m,value:S}=await a.next();if(m){f(),g.close();return}let O=S.byteLength;if(r){let T=i+=O;r(T)}g.enqueue(new Uint8Array(S))}catch(m){throw f(m),m}},cancel(g){return f(g),a.return()}},{highWaterMark:2})},of=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",A_=of&&typeof ReadableStream=="function",Uh=of&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),R_=(e,...t)=>{try{return!!e(...t)}catch{return!1}},RA=A_&&R_(()=>{let e=!1;const t=new Request(xn.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Ty=64*1024,Wh=A_&&R_(()=>Se.isReadableStream(new Response("").body)),nd={stream:Wh&&(e=>e.body)};of&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!nd[t]&&(nd[t]=Se.isFunction(e[t])?r=>r[t]():(r,n)=>{throw new St(`Response type '${t}' is not supported`,St.ERR_NOT_SUPPORT,n)})})})(new Response);const MA=async e=>{if(e==null)return 0;if(Se.isBlob(e))return e.size;if(Se.isSpecCompliantForm(e))return(await new Request(e).arrayBuffer()).byteLength;if(Se.isArrayBufferView(e)||Se.isArrayBuffer(e))return e.byteLength;if(Se.isURLSearchParams(e)&&(e=e+""),Se.isString(e))return(await Uh(e)).byteLength},IA=async(e,t)=>{const r=Se.toFiniteNumber(e.getContentLength());return r??MA(t)},DA=of&&(async e=>{let{url:t,method:r,data:n,signal:o,cancelToken:a,timeout:i,onDownloadProgress:u,onUploadProgress:f,responseType:g,headers:m,withCredentials:S="same-origin",fetchOptions:O}=j_(e);g=g?(g+"").toLowerCase():"text";let[T,C]=o||a||i?EA([o,a],i):[],w,b;const d=()=>{!w&&setTimeout(()=>{T&&T.unsubscribe()}),w=!0};let s;try{if(f&&RA&&r!=="get"&&r!=="head"&&(s=await IA(m,n))!==0){let x=new Request(t,{method:"POST",body:n,duplex:"half"}),j;if(Se.isFormData(n)&&(j=x.headers.get("content-type"))&&m.setContentType(j),x.body){const[k,N]=wy(s,rd(_y(f)));n=Cy(x.body,Ty,k,N,Uh)}}Se.isString(S)||(S=S?"include":"omit");const c="credentials"in Request.prototype;b=new Request(t,{...O,signal:T,method:r.toUpperCase(),headers:m.normalize().toJSON(),body:n,duplex:"half",credentials:c?S:void 0});let l=await fetch(b);const h=Wh&&(g==="stream"||g==="response");if(Wh&&(u||h)){const x={};["status","statusText","headers"].forEach(A=>{x[A]=l[A]});const j=Se.toFiniteNumber(l.headers.get("content-length")),[k,N]=u&&wy(j,rd(_y(u),!0))||[];l=new Response(Cy(l.body,Ty,k,()=>{N&&N(),h&&d()},Uh),x)}g=g||"text";let y=await nd[Se.findKey(nd,g)||"text"](l,e);return!h&&d(),C&&C(),await new Promise((x,j)=>{N_(x,j,{data:y,headers:io.from(l.headers),status:l.status,statusText:l.statusText,config:e,request:b})})}catch(c){throw d(),c&&c.name==="TypeError"&&/fetch/i.test(c.message)?Object.assign(new St("Network Error",St.ERR_NETWORK,e,b),{cause:c.cause||c}):St.from(c,c&&c.code,e,b)}}),$h={http:X2,xhr:kA,fetch:DA};Se.forEach($h,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Py=e=>`- ${e}`,LA=e=>Se.isFunction(e)||e===null||e===!1,M_={getAdapter:e=>{e=Se.isArray(e)?e:[e];const{length:t}=e;let r,n;const o={};for(let a=0;a`adapter ${u} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?a.length>1?`since : -`+a.map(Py).join(` -`):" "+Py(a[0]):"as no adapter specified";throw new St("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return n},adapters:$h};function Bp(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ts(null,e)}function Oy(e){return Bp(e),e.headers=io.from(e.headers),e.data=zp.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),M_.getAdapter(e.adapter||k0.adapter)(e).then(function(n){return Bp(e),n.data=zp.call(e,e.transformResponse,n),n.headers=io.from(n.headers),n},function(n){return k_(n)||(Bp(e),n&&n.response&&(n.response.data=zp.call(e,e.transformResponse,n.response),n.response.headers=io.from(n.response.headers))),Promise.reject(n)})}const I_="1.7.5",N0={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{N0[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const ky={};N0.transitional=function(t,r,n){function o(a,i){return"[Axios v"+I_+"] Transitional option '"+a+"'"+i+(n?". "+n:"")}return(a,i,u)=>{if(t===!1)throw new St(o(i," has been removed"+(r?" in "+r:"")),St.ERR_DEPRECATED);return r&&!ky[i]&&(ky[i]=!0,console.warn(o(i," has been deprecated since v"+r+" and will be removed in the near future"))),t?t(a,i,u):!0}};function FA(e,t,r){if(typeof e!="object")throw new St("options must be an object",St.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let o=n.length;for(;o-- >0;){const a=n[o],i=t[a];if(i){const u=e[a],f=u===void 0||i(u,a,e);if(f!==!0)throw new St("option "+a+" must be "+f,St.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new St("Unknown option "+a,St.ERR_BAD_OPTION)}}const Hh={assertOptions:FA,validators:N0},ua=Hh.validators;class od{constructor(t){this.defaults=t,this.interceptors={request:new yy,response:new yy}}async request(t,r){try{return await this._request(t,r)}catch(n){if(n instanceof Error){let o;Error.captureStackTrace?Error.captureStackTrace(o={}):o=new Error;const a=o.stack?o.stack.replace(/^.+\n/,""):"";try{n.stack?a&&!String(n.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(n.stack+=` -`+a):n.stack=a}catch{}}throw n}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=ai(this.defaults,r);const{transitional:n,paramsSerializer:o,headers:a}=r;n!==void 0&&Hh.assertOptions(n,{silentJSONParsing:ua.transitional(ua.boolean),forcedJSONParsing:ua.transitional(ua.boolean),clarifyTimeoutError:ua.transitional(ua.boolean)},!1),o!=null&&(Se.isFunction(o)?r.paramsSerializer={serialize:o}:Hh.assertOptions(o,{encode:ua.function,serialize:ua.function},!0)),r.method=(r.method||this.defaults.method||"get").toLowerCase();let i=a&&Se.merge(a.common,a[r.method]);a&&Se.forEach(["delete","get","head","post","put","patch","common"],C=>{delete a[C]}),r.headers=io.concat(i,a);const u=[];let f=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(r)===!1||(f=f&&w.synchronous,u.unshift(w.fulfilled,w.rejected))});const g=[];this.interceptors.response.forEach(function(w){g.push(w.fulfilled,w.rejected)});let m,S=0,O;if(!f){const C=[Oy.bind(this),void 0];for(C.unshift.apply(C,u),C.push.apply(C,g),O=C.length,m=Promise.resolve(r);S{if(!n._listeners)return;let a=n._listeners.length;for(;a-- >0;)n._listeners[a](o);n._listeners=null}),this.promise.then=o=>{let a;const i=new Promise(u=>{n.subscribe(u),a=u}).then(o);return i.cancel=function(){n.unsubscribe(a)},i},t(function(a,i,u){n.reason||(n.reason=new Ts(a,i,u),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}static source(){let t;return{token:new E0(function(o){t=o}),cancel:t}}}const zA=E0;function BA(e){return function(r){return e.apply(null,r)}}function VA(e){return Se.isObject(e)&&e.isAxiosError===!0}const qh={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(qh).forEach(([e,t])=>{qh[t]=e});const UA=qh;function D_(e){const t=new Nc(e),r=p_(Nc.prototype.request,t);return Se.extend(r,Nc.prototype,t,{allOwnKeys:!0}),Se.extend(r,t,null,{allOwnKeys:!0}),r.create=function(o){return D_(ai(e,o))},r}const gr=D_(k0);gr.Axios=Nc;gr.CanceledError=Ts;gr.CancelToken=zA;gr.isCancel=k_;gr.VERSION=I_;gr.toFormData=rf;gr.AxiosError=St;gr.Cancel=gr.CanceledError;gr.all=function(t){return Promise.all(t)};gr.spread=BA;gr.isAxiosError=VA;gr.mergeConfig=ai;gr.AxiosHeaders=io;gr.formToJSON=e=>O_(Se.isHTMLForm(e)?new FormData(e):e);gr.getAdapter=M_.getAdapter;gr.HttpStatusCode=UA;gr.default=gr;const Je=gr;var Gh={},L_={exports:{}},Tn={},F_={exports:{}},z_={};/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */(function(e){function t(q,B){var H=q.length;q.push(B);e:for(;0>>1,X=q[K];if(0>>1;Ko(de,H))eeo(_e,de)?(q[K]=_e,q[ee]=H,K=ee):(q[K]=de,q[me]=H,K=me);else if(eeo(_e,H))q[K]=_e,q[ee]=H,K=ee;else break e}}return B}function o(q,B){var H=q.sortIndex-B.sortIndex;return H!==0?H:q.id-B.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var f=[],g=[],m=1,S=null,O=3,T=!1,C=!1,w=!1,b=typeof setTimeout=="function"?setTimeout:null,d=typeof clearTimeout=="function"?clearTimeout:null,s=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function c(q){for(var B=r(g);B!==null;){if(B.callback===null)n(g);else if(B.startTime<=q)n(g),B.sortIndex=B.expirationTime,t(f,B);else break;B=r(g)}}function l(q){if(w=!1,c(q),!C)if(r(f)!==null)C=!0,V(h);else{var B=r(g);B!==null&&Y(l,B.startTime-q)}}function h(q,B){C=!1,w&&(w=!1,d(j),j=-1),T=!0;var H=O;try{for(c(B),S=r(f);S!==null&&(!(S.expirationTime>B)||q&&!A());){var K=S.callback;if(typeof K=="function"){S.callback=null,O=S.priorityLevel;var X=K(S.expirationTime<=B);B=e.unstable_now(),typeof X=="function"?S.callback=X:S===r(f)&&n(f),c(B)}else n(f);S=r(f)}if(S!==null)var re=!0;else{var me=r(g);me!==null&&Y(l,me.startTime-B),re=!1}return re}finally{S=null,O=H,T=!1}}var y=!1,x=null,j=-1,k=5,N=-1;function A(){return!(e.unstable_now()-Nq||125K?(q.sortIndex=H,t(g,q),r(f)===null&&q===r(g)&&(w?(d(j),j=-1):w=!0,Y(l,H-K))):(q.sortIndex=X,t(f,q),C||T||(C=!0,V(h))),q},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(q){var B=O;return function(){var H=O;O=B;try{return q.apply(this,arguments)}finally{O=H}}}})(z_);F_.exports=z_;var WA=F_.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var B_=P,Sn=WA;function Me(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Kh=Object.prototype.hasOwnProperty,$A=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ny={},Ey={};function HA(e){return Kh.call(Ey,e)?!0:Kh.call(Ny,e)?!1:$A.test(e)?Ey[e]=!0:(Ny[e]=!0,!1)}function qA(e,t,r,n){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function GA(e,t,r,n){if(t===null||typeof t>"u"||qA(e,t,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Qr(e,t,r,n,o,a,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var Rr={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Rr[e]=new Qr(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Rr[t]=new Qr(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Rr[e]=new Qr(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Rr[e]=new Qr(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Rr[e]=new Qr(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Rr[e]=new Qr(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Rr[e]=new Qr(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Rr[e]=new Qr(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Rr[e]=new Qr(e,5,!1,e.toLowerCase(),null,!1,!1)});var j0=/[\-:]([a-z])/g;function A0(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(j0,A0);Rr[t]=new Qr(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(j0,A0);Rr[t]=new Qr(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(j0,A0);Rr[t]=new Qr(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Rr[e]=new Qr(e,1,!1,e.toLowerCase(),null,!1,!1)});Rr.xlinkHref=new Qr("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Rr[e]=new Qr(e,1,!1,e.toLowerCase(),null,!0,!0)});function R0(e,t,r,n){var o=Rr.hasOwnProperty(t)?Rr[t]:null;(o!==null?o.type!==0:n||!(2u||o[i]!==a[u]){var f=` -`+o[i].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=i&&0<=u);break}}}finally{Up=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?gl(e):""}function KA(e){switch(e.tag){case 5:return gl(e.type);case 16:return gl("Lazy");case 13:return gl("Suspense");case 19:return gl("SuspenseList");case 0:case 2:case 15:return e=Wp(e.type,!1),e;case 11:return e=Wp(e.type.render,!1),e;case 1:return e=Wp(e.type,!0),e;default:return""}}function Zh(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Li:return"Fragment";case Di:return"Portal";case Yh:return"Profiler";case M0:return"StrictMode";case Qh:return"Suspense";case Xh:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case W_:return(e.displayName||"Context")+".Consumer";case U_:return(e._context.displayName||"Context")+".Provider";case I0:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case D0:return t=e.displayName||null,t!==null?t:Zh(e.type)||"Memo";case ga:t=e._payload,e=e._init;try{return Zh(e(t))}catch{}}return null}function YA(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Zh(t);case 8:return t===M0?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Ia(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function H_(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function QA(e){var t=H_(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var o=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){n=""+i,a.call(this,i)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(i){n=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Qu(e){e._valueTracker||(e._valueTracker=QA(e))}function q_(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=H_(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function ad(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Jh(e,t){var r=t.checked;return lr({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function Ay(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Ia(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function G_(e,t){t=t.checked,t!=null&&R0(e,"checked",t,!1)}function eg(e,t){G_(e,t);var r=Ia(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?tg(e,t.type,r):t.hasOwnProperty("defaultValue")&&tg(e,t.type,Ia(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ry(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function tg(e,t,r){(t!=="number"||ad(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var ml=Array.isArray;function Qi(e,t,r,n){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=Xu.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Fl(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var _l={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},XA=["Webkit","ms","Moz","O"];Object.keys(_l).forEach(function(e){XA.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),_l[t]=_l[e]})});function X_(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||_l.hasOwnProperty(e)&&_l[e]?(""+t).trim():t+"px"}function Z_(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,o=X_(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,o):e[r]=o}}var ZA=lr({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function og(e,t){if(t){if(ZA[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Me(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Me(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(Me(61))}if(t.style!=null&&typeof t.style!="object")throw Error(Me(62))}}function ag(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ig=null;function L0(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var sg=null,Xi=null,Zi=null;function Dy(e){if(e=gu(e)){if(typeof sg!="function")throw Error(Me(280));var t=e.stateNode;t&&(t=cf(t),sg(e.stateNode,e.type,t))}}function J_(e){Xi?Zi?Zi.push(e):Zi=[e]:Xi=e}function eS(){if(Xi){var e=Xi,t=Zi;if(Zi=Xi=null,Dy(e),t)for(e=0;e>>=0,e===0?32:31-(uR(e)/cR|0)|0}var Zu=64,Ju=4194304;function bl(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ud(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,o=e.suspendedLanes,a=e.pingedLanes,i=r&268435455;if(i!==0){var u=i&~o;u!==0?n=bl(u):(a&=i,a!==0&&(n=bl(a)))}else i=r&~o,i!==0?n=bl(i):a!==0&&(n=bl(a));if(n===0)return 0;if(t!==0&&t!==n&&!(t&o)&&(o=n&-n,a=t&-t,o>=a||o===16&&(a&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function pu(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-so(t),e[t]=r}function hR(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0=Cl),Hy=String.fromCharCode(32),qy=!1;function xS(e,t){switch(e){case"keyup":return UR.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wS(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Fi=!1;function $R(e,t){switch(e){case"compositionend":return wS(t);case"keypress":return t.which!==32?null:(qy=!0,Hy);case"textInput":return e=t.data,e===Hy&&qy?null:e;default:return null}}function HR(e,t){if(Fi)return e==="compositionend"||!H0&&xS(e,t)?(e=vS(),jc=U0=xa=null,Fi=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Qy(r)}}function TS(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?TS(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function PS(){for(var e=window,t=ad();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=ad(e.document)}return t}function q0(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function eM(e){var t=PS(),r=e.focusedElem,n=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&TS(r.ownerDocument.documentElement,r)){if(n!==null&&q0(r)){if(t=n.start,e=n.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=r.textContent.length,a=Math.min(n.start,o);n=n.end===void 0?a:Math.min(n.end,o),!e.extend&&a>n&&(o=n,n=a,a=o),o=Xy(r,a);var i=Xy(r,n);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),a>n?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,zi=null,pg=null,Pl=null,hg=!1;function Zy(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;hg||zi==null||zi!==ad(n)||(n=zi,"selectionStart"in n&&q0(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Pl&&$l(Pl,n)||(Pl=n,n=fd(pg,"onSelect"),0Ui||(e.current=xg[Ui],xg[Ui]=null,Ui--)}function Kt(e,t){Ui++,xg[Ui]=e.current,e.current=t}var Da={},Ur=za(Da),sn=za(!1),ii=Da;function ls(e,t){var r=e.type.contextTypes;if(!r)return Da;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var o={},a;for(a in r)o[a]=t[a];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ln(e){return e=e.childContextTypes,e!=null}function hd(){Xt(sn),Xt(Ur)}function ax(e,t,r){if(Ur.current!==Da)throw Error(Me(168));Kt(Ur,t),Kt(sn,r)}function IS(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var o in n)if(!(o in t))throw Error(Me(108,YA(e)||"Unknown",o));return lr({},r,n)}function gd(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Da,ii=Ur.current,Kt(Ur,e),Kt(sn,sn.current),!0}function ix(e,t,r){var n=e.stateNode;if(!n)throw Error(Me(169));r?(e=IS(e,t,ii),n.__reactInternalMemoizedMergedChildContext=e,Xt(sn),Xt(Ur),Kt(Ur,e)):Xt(sn),Kt(sn,r)}var zo=null,df=!1,nh=!1;function DS(e){zo===null?zo=[e]:zo.push(e)}function fM(e){df=!0,DS(e)}function Ba(){if(!nh&&zo!==null){nh=!0;var e=0,t=Wt;try{var r=zo;for(Wt=1;e>=i,o-=i,Bo=1<<32-so(t)+o|r<j?(k=x,x=null):k=x.sibling;var N=O(d,x,c[j],l);if(N===null){x===null&&(x=k);break}e&&x&&N.alternate===null&&t(d,x),s=a(N,s,j),y===null?h=N:y.sibling=N,y=N,x=k}if(j===c.length)return r(d,x),er&&Ka(d,j),h;if(x===null){for(;jj?(k=x,x=null):k=x.sibling;var A=O(d,x,N.value,l);if(A===null){x===null&&(x=k);break}e&&x&&A.alternate===null&&t(d,x),s=a(A,s,j),y===null?h=A:y.sibling=A,y=A,x=k}if(N.done)return r(d,x),er&&Ka(d,j),h;if(x===null){for(;!N.done;j++,N=c.next())N=S(d,N.value,l),N!==null&&(s=a(N,s,j),y===null?h=N:y.sibling=N,y=N);return er&&Ka(d,j),h}for(x=n(d,x);!N.done;j++,N=c.next())N=T(x,d,j,N.value,l),N!==null&&(e&&N.alternate!==null&&x.delete(N.key===null?j:N.key),s=a(N,s,j),y===null?h=N:y.sibling=N,y=N);return e&&x.forEach(function(M){return t(d,M)}),er&&Ka(d,j),h}function b(d,s,c,l){if(typeof c=="object"&&c!==null&&c.type===Li&&c.key===null&&(c=c.props.children),typeof c=="object"&&c!==null){switch(c.$$typeof){case Yu:e:{for(var h=c.key,y=s;y!==null;){if(y.key===h){if(h=c.type,h===Li){if(y.tag===7){r(d,y.sibling),s=o(y,c.props.children),s.return=d,d=s;break e}}else if(y.elementType===h||typeof h=="object"&&h!==null&&h.$$typeof===ga&&px(h)===y.type){r(d,y.sibling),s=o(y,c.props),s.ref=ll(d,y,c),s.return=d,d=s;break e}r(d,y);break}else t(d,y);y=y.sibling}c.type===Li?(s=ni(c.props.children,d.mode,l,c.key),s.return=d,d=s):(l=zc(c.type,c.key,c.props,null,d.mode,l),l.ref=ll(d,s,c),l.return=d,d=l)}return i(d);case Di:e:{for(y=c.key;s!==null;){if(s.key===y)if(s.tag===4&&s.stateNode.containerInfo===c.containerInfo&&s.stateNode.implementation===c.implementation){r(d,s.sibling),s=o(s,c.children||[]),s.return=d,d=s;break e}else{r(d,s);break}else t(d,s);s=s.sibling}s=dh(c,d.mode,l),s.return=d,d=s}return i(d);case ga:return y=c._init,b(d,s,y(c._payload),l)}if(ml(c))return C(d,s,c,l);if(nl(c))return w(d,s,c,l);ic(d,c)}return typeof c=="string"&&c!==""||typeof c=="number"?(c=""+c,s!==null&&s.tag===6?(r(d,s.sibling),s=o(s,c),s.return=d,d=s):(r(d,s),s=ch(c,d.mode,l),s.return=d,d=s),i(d)):r(d,s)}return b}var cs=$S(!0),HS=$S(!1),mu={},ko=za(mu),Kl=za(mu),Yl=za(mu);function ei(e){if(e===mu)throw Error(Me(174));return e}function tm(e,t){switch(Kt(Yl,t),Kt(Kl,e),Kt(ko,mu),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ng(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=ng(t,e)}Xt(ko),Kt(ko,t)}function ds(){Xt(ko),Xt(Kl),Xt(Yl)}function qS(e){ei(Yl.current);var t=ei(ko.current),r=ng(t,e.type);t!==r&&(Kt(Kl,e),Kt(ko,r))}function rm(e){Kl.current===e&&(Xt(ko),Xt(Kl))}var or=za(0);function wd(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var oh=[];function nm(){for(var e=0;er?r:4,e(!0);var n=ah.transition;ah.transition={};try{e(!1),t()}finally{Wt=r,ah.transition=n}}function lC(){return Wn().memoizedState}function mM(e,t,r){var n=Ea(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},uC(e))cC(t,r);else if(r=BS(e,t,r,n),r!==null){var o=Kr();lo(r,e,n,o),dC(r,t,n)}}function bM(e,t,r){var n=Ea(e),o={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(uC(e))cC(t,o);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var i=t.lastRenderedState,u=a(i,r);if(o.hasEagerState=!0,o.eagerState=u,co(u,i)){var f=t.interleaved;f===null?(o.next=o,J0(t)):(o.next=f.next,f.next=o),t.interleaved=o;return}}catch{}finally{}r=BS(e,t,o,n),r!==null&&(o=Kr(),lo(r,e,n,o),dC(r,t,n))}}function uC(e){var t=e.alternate;return e===ir||t!==null&&t===ir}function cC(e,t){Ol=_d=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function dC(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,z0(e,r)}}var Sd={readContext:Un,useCallback:Dr,useContext:Dr,useEffect:Dr,useImperativeHandle:Dr,useInsertionEffect:Dr,useLayoutEffect:Dr,useMemo:Dr,useReducer:Dr,useRef:Dr,useState:Dr,useDebugValue:Dr,useDeferredValue:Dr,useTransition:Dr,useMutableSource:Dr,useSyncExternalStore:Dr,useId:Dr,unstable_isNewReconciler:!1},vM={readContext:Un,useCallback:function(e,t){return To().memoizedState=[e,t===void 0?null:t],e},useContext:Un,useEffect:gx,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,Ic(4194308,4,nC.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Ic(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ic(4,2,e,t)},useMemo:function(e,t){var r=To();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=To();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=mM.bind(null,ir,e),[n.memoizedState,e]},useRef:function(e){var t=To();return e={current:e},t.memoizedState=e},useState:hx,useDebugValue:lm,useDeferredValue:function(e){return To().memoizedState=e},useTransition:function(){var e=hx(!1),t=e[0];return e=gM.bind(null,e[1]),To().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var n=ir,o=To();if(er){if(r===void 0)throw Error(Me(407));r=r()}else{if(r=t(),kr===null)throw Error(Me(349));li&30||YS(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,gx(XS.bind(null,n,a,e),[e]),n.flags|=2048,Zl(9,QS.bind(null,n,a,r,t),void 0,null),r},useId:function(){var e=To(),t=kr.identifierPrefix;if(er){var r=Vo,n=Bo;r=(n&~(1<<32-so(n)-1)).toString(32)+r,t=":"+t+"R"+r,r=Ql++,0<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=i.createElement(r,{is:n.is}):(e=i.createElement(r),r==="select"&&(i=e,n.multiple?i.multiple=!0:n.size&&(i.size=n.size))):e=i.createElementNS(e,r),e[Po]=t,e[Gl]=n,xC(e,t,!1,!1),t.stateNode=e;e:{switch(i=ag(r,n),r){case"dialog":Yt("cancel",e),Yt("close",e),o=n;break;case"iframe":case"object":case"embed":Yt("load",e),o=n;break;case"video":case"audio":for(o=0;ops&&(t.flags|=128,n=!0,ul(a,!1),t.lanes=4194304)}else{if(!n)if(e=wd(i),e!==null){if(t.flags|=128,n=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),ul(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!er)return Lr(t),null}else 2*fr()-a.renderingStartTime>ps&&r!==1073741824&&(t.flags|=128,n=!0,ul(a,!1),t.lanes=4194304);a.isBackwards?(i.sibling=t.child,t.child=i):(r=a.last,r!==null?r.sibling=i:t.child=i,a.last=i)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=fr(),t.sibling=null,r=or.current,Kt(or,n?r&1|2:r&1),t):(Lr(t),null);case 22:case 23:return hm(),n=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(t.flags|=8192),n&&t.mode&1?mn&1073741824&&(Lr(t),t.subtreeFlags&6&&(t.flags|=8192)):Lr(t),null;case 24:return null;case 25:return null}throw Error(Me(156,t.tag))}function PM(e,t){switch(K0(t),t.tag){case 1:return ln(t.type)&&hd(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ds(),Xt(sn),Xt(Ur),nm(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return rm(t),null;case 13:if(Xt(or),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Me(340));us()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Xt(or),null;case 4:return ds(),null;case 10:return Z0(t.type._context),null;case 22:case 23:return hm(),null;case 24:return null;default:return null}}var lc=!1,Br=!1,OM=typeof WeakSet=="function"?WeakSet:Set,Ye=null;function qi(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){cr(e,t,n)}else r.current=null}function Ag(e,t,r){try{r()}catch(n){cr(e,t,n)}}var Cx=!1;function kM(e,t){if(gg=cd,e=PS(),q0(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var o=n.anchorOffset,a=n.focusNode;n=n.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var i=0,u=-1,f=-1,g=0,m=0,S=e,O=null;t:for(;;){for(var T;S!==r||o!==0&&S.nodeType!==3||(u=i+o),S!==a||n!==0&&S.nodeType!==3||(f=i+n),S.nodeType===3&&(i+=S.nodeValue.length),(T=S.firstChild)!==null;)O=S,S=T;for(;;){if(S===e)break t;if(O===r&&++g===o&&(u=i),O===a&&++m===n&&(f=i),(T=S.nextSibling)!==null)break;S=O,O=S.parentNode}S=T}r=u===-1||f===-1?null:{start:u,end:f}}else r=null}r=r||{start:0,end:0}}else r=null;for(mg={focusedElem:e,selectionRange:r},cd=!1,Ye=t;Ye!==null;)if(t=Ye,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ye=e;else for(;Ye!==null;){t=Ye;try{var C=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(C!==null){var w=C.memoizedProps,b=C.memoizedState,d=t.stateNode,s=d.getSnapshotBeforeUpdate(t.elementType===t.type?w:Jn(t.type,w),b);d.__reactInternalSnapshotBeforeUpdate=s}break;case 3:var c=t.stateNode.containerInfo;c.nodeType===1?c.textContent="":c.nodeType===9&&c.documentElement&&c.removeChild(c.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Me(163))}}catch(l){cr(t,t.return,l)}if(e=t.sibling,e!==null){e.return=t.return,Ye=e;break}Ye=t.return}return C=Cx,Cx=!1,C}function kl(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,a!==void 0&&Ag(t,r,a)}o=o.next}while(o!==n)}}function hf(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function Rg(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function SC(e){var t=e.alternate;t!==null&&(e.alternate=null,SC(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Po],delete t[Gl],delete t[yg],delete t[cM],delete t[dM])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function CC(e){return e.tag===5||e.tag===3||e.tag===4}function Tx(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||CC(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Mg(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=pd));else if(n!==4&&(e=e.child,e!==null))for(Mg(e,t,r),e=e.sibling;e!==null;)Mg(e,t,r),e=e.sibling}function Ig(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(Ig(e,t,r),e=e.sibling;e!==null;)Ig(e,t,r),e=e.sibling}var jr=null,eo=!1;function ca(e,t,r){for(r=r.child;r!==null;)TC(e,t,r),r=r.sibling}function TC(e,t,r){if(Oo&&typeof Oo.onCommitFiberUnmount=="function")try{Oo.onCommitFiberUnmount(af,r)}catch{}switch(r.tag){case 5:Br||qi(r,t);case 6:var n=jr,o=eo;jr=null,ca(e,t,r),jr=n,eo=o,jr!==null&&(eo?(e=jr,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):jr.removeChild(r.stateNode));break;case 18:jr!==null&&(eo?(e=jr,r=r.stateNode,e.nodeType===8?rh(e.parentNode,r):e.nodeType===1&&rh(e,r),Ul(e)):rh(jr,r.stateNode));break;case 4:n=jr,o=eo,jr=r.stateNode.containerInfo,eo=!0,ca(e,t,r),jr=n,eo=o;break;case 0:case 11:case 14:case 15:if(!Br&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){o=n=n.next;do{var a=o,i=a.destroy;a=a.tag,i!==void 0&&(a&2||a&4)&&Ag(r,t,i),o=o.next}while(o!==n)}ca(e,t,r);break;case 1:if(!Br&&(qi(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(u){cr(r,t,u)}ca(e,t,r);break;case 21:ca(e,t,r);break;case 22:r.mode&1?(Br=(n=Br)||r.memoizedState!==null,ca(e,t,r),Br=n):ca(e,t,r);break;default:ca(e,t,r)}}function Px(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new OM),t.forEach(function(n){var o=LM.bind(null,e,n);r.has(n)||(r.add(n),n.then(o,o))})}}function Xn(e,t){var r=t.deletions;if(r!==null)for(var n=0;no&&(o=i),n&=~a}if(n=o,n=fr()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*EM(n/1960))-n,10e?16:e,wa===null)var n=!1;else{if(e=wa,wa=null,Pd=0,zt&6)throw Error(Me(331));var o=zt;for(zt|=4,Ye=e.current;Ye!==null;){var a=Ye,i=a.child;if(Ye.flags&16){var u=a.deletions;if(u!==null){for(var f=0;ffr()-fm?ri(e,0):dm|=r),un(e,t)}function RC(e,t){t===0&&(e.mode&1?(t=Ju,Ju<<=1,!(Ju&130023424)&&(Ju=4194304)):t=1);var r=Kr();e=Go(e,t),e!==null&&(pu(e,t,r),un(e,r))}function DM(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),RC(e,r)}function LM(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(Me(314))}n!==null&&n.delete(t),RC(e,r)}var MC;MC=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||sn.current)on=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return on=!1,CM(e,t,r);on=!!(e.flags&131072)}else on=!1,er&&t.flags&1048576&&LS(t,bd,t.index);switch(t.lanes=0,t.tag){case 2:var n=t.type;Dc(e,t),e=t.pendingProps;var o=ls(t,Ur.current);es(t,r),o=am(null,t,n,e,o,r);var a=im();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ln(n)?(a=!0,gd(t)):a=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,em(t),o.updater=ff,t.stateNode=o,o._reactInternals=t,Tg(t,n,e,r),t=kg(null,t,n,!0,a,r)):(t.tag=0,er&&a&&G0(t),Gr(null,t,o,r),t=t.child),t;case 16:n=t.elementType;e:{switch(Dc(e,t),e=t.pendingProps,o=n._init,n=o(n._payload),t.type=n,o=t.tag=zM(n),e=Jn(n,e),o){case 0:t=Og(null,t,n,e,r);break e;case 1:t=wx(null,t,n,e,r);break e;case 11:t=yx(null,t,n,e,r);break e;case 14:t=xx(null,t,n,Jn(n.type,e),r);break e}throw Error(Me(306,n,""))}return t;case 0:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Jn(n,o),Og(e,t,n,o,r);case 1:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Jn(n,o),wx(e,t,n,o,r);case 3:e:{if(bC(t),e===null)throw Error(Me(387));n=t.pendingProps,a=t.memoizedState,o=a.element,VS(e,t),xd(t,n,null,r);var i=t.memoizedState;if(n=i.element,a.isDehydrated)if(a={element:n,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){o=fs(Error(Me(423)),t),t=_x(e,t,n,r,o);break e}else if(n!==o){o=fs(Error(Me(424)),t),t=_x(e,t,n,r,o);break e}else for(bn=Oa(t.stateNode.containerInfo.firstChild),wn=t,er=!0,ro=null,r=HS(t,null,n,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(us(),n===o){t=Ko(e,t,r);break e}Gr(e,t,n,r)}t=t.child}return t;case 5:return qS(t),e===null&&_g(t),n=t.type,o=t.pendingProps,a=e!==null?e.memoizedProps:null,i=o.children,bg(n,o)?i=null:a!==null&&bg(n,a)&&(t.flags|=32),mC(e,t),Gr(e,t,i,r),t.child;case 6:return e===null&&_g(t),null;case 13:return vC(e,t,r);case 4:return tm(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=cs(t,null,n,r):Gr(e,t,n,r),t.child;case 11:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Jn(n,o),yx(e,t,n,o,r);case 7:return Gr(e,t,t.pendingProps,r),t.child;case 8:return Gr(e,t,t.pendingProps.children,r),t.child;case 12:return Gr(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(n=t.type._context,o=t.pendingProps,a=t.memoizedProps,i=o.value,Kt(vd,n._currentValue),n._currentValue=i,a!==null)if(co(a.value,i)){if(a.children===o.children&&!sn.current){t=Ko(e,t,r);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var u=a.dependencies;if(u!==null){i=a.child;for(var f=u.firstContext;f!==null;){if(f.context===n){if(a.tag===1){f=Uo(-1,r&-r),f.tag=2;var g=a.updateQueue;if(g!==null){g=g.shared;var m=g.pending;m===null?f.next=f:(f.next=m.next,m.next=f),g.pending=f}}a.lanes|=r,f=a.alternate,f!==null&&(f.lanes|=r),Sg(a.return,r,t),u.lanes|=r;break}f=f.next}}else if(a.tag===10)i=a.type===t.type?null:a.child;else if(a.tag===18){if(i=a.return,i===null)throw Error(Me(341));i.lanes|=r,u=i.alternate,u!==null&&(u.lanes|=r),Sg(i,r,t),i=a.sibling}else i=a.child;if(i!==null)i.return=a;else for(i=a;i!==null;){if(i===t){i=null;break}if(a=i.sibling,a!==null){a.return=i.return,i=a;break}i=i.return}a=i}Gr(e,t,o.children,r),t=t.child}return t;case 9:return o=t.type,n=t.pendingProps.children,es(t,r),o=Un(o),n=n(o),t.flags|=1,Gr(e,t,n,r),t.child;case 14:return n=t.type,o=Jn(n,t.pendingProps),o=Jn(n.type,o),xx(e,t,n,o,r);case 15:return hC(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Jn(n,o),Dc(e,t),t.tag=1,ln(n)?(e=!0,gd(t)):e=!1,es(t,r),WS(t,n,o),Tg(t,n,o,r),kg(null,t,n,!0,e,r);case 19:return yC(e,t,r);case 22:return gC(e,t,r)}throw Error(Me(156,t.tag))};function IC(e,t){return sS(e,t)}function FM(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Fn(e,t,r,n){return new FM(e,t,r,n)}function mm(e){return e=e.prototype,!(!e||!e.isReactComponent)}function zM(e){if(typeof e=="function")return mm(e)?1:0;if(e!=null){if(e=e.$$typeof,e===I0)return 11;if(e===D0)return 14}return 2}function ja(e,t){var r=e.alternate;return r===null?(r=Fn(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function zc(e,t,r,n,o,a){var i=2;if(n=e,typeof e=="function")mm(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Li:return ni(r.children,o,a,t);case M0:i=8,o|=8;break;case Yh:return e=Fn(12,r,t,o|2),e.elementType=Yh,e.lanes=a,e;case Qh:return e=Fn(13,r,t,o),e.elementType=Qh,e.lanes=a,e;case Xh:return e=Fn(19,r,t,o),e.elementType=Xh,e.lanes=a,e;case $_:return mf(r,o,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case U_:i=10;break e;case W_:i=9;break e;case I0:i=11;break e;case D0:i=14;break e;case ga:i=16,n=null;break e}throw Error(Me(130,e==null?e:typeof e,""))}return t=Fn(i,r,t,o),t.elementType=e,t.type=n,t.lanes=a,t}function ni(e,t,r,n){return e=Fn(7,e,n,t),e.lanes=r,e}function mf(e,t,r,n){return e=Fn(22,e,n,t),e.elementType=$_,e.lanes=r,e.stateNode={isHidden:!1},e}function ch(e,t,r){return e=Fn(6,e,null,t),e.lanes=r,e}function dh(e,t,r){return t=Fn(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function BM(e,t,r,n,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Hp(0),this.expirationTimes=Hp(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Hp(0),this.identifierPrefix=n,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function bm(e,t,r,n,o,a,i,u,f){return e=new BM(e,t,r,u,f),t===1?(t=1,a===!0&&(t|=8)):t=0,a=Fn(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},em(a),e}function VM(e,t,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(zC)}catch(e){console.error(e)}}zC(),L_.exports=Tn;var Yo=L_.exports,Mx=Yo;Gh.createRoot=Mx.createRoot,Gh.hydrateRoot=Mx.hydrateRoot;/** - * @remix-run/router v1.10.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function eu(){return eu=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function wm(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function GM(){return Math.random().toString(36).substr(2,8)}function Dx(e,t){return{usr:e.state,key:e.key,idx:t}}function Bg(e,t,r,n){return r===void 0&&(r=null),eu({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?ks(t):t,{state:r,key:t&&t.key||n||GM()})}function Nd(e){let{pathname:t="/",search:r="",hash:n=""}=e;return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function ks(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function KM(e,t,r,n){n===void 0&&(n={});let{window:o=document.defaultView,v5Compat:a=!1}=n,i=o.history,u=_a.Pop,f=null,g=m();g==null&&(g=0,i.replaceState(eu({},i.state,{idx:g}),""));function m(){return(i.state||{idx:null}).idx}function S(){u=_a.Pop;let b=m(),d=b==null?null:b-g;g=b,f&&f({action:u,location:w.location,delta:d})}function O(b,d){u=_a.Push;let s=Bg(w.location,b,d);r&&r(s,b),g=m()+1;let c=Dx(s,g),l=w.createHref(s);try{i.pushState(c,"",l)}catch(h){if(h instanceof DOMException&&h.name==="DataCloneError")throw h;o.location.assign(l)}a&&f&&f({action:u,location:w.location,delta:1})}function T(b,d){u=_a.Replace;let s=Bg(w.location,b,d);r&&r(s,b),g=m();let c=Dx(s,g),l=w.createHref(s);i.replaceState(c,"",l),a&&f&&f({action:u,location:w.location,delta:0})}function C(b){let d=o.location.origin!=="null"?o.location.origin:o.location.href,s=typeof b=="string"?b:Nd(b);return sr(d,"No window.location.(origin|href) available to create URL for href: "+s),new URL(s,d)}let w={get action(){return u},get location(){return e(o,i)},listen(b){if(f)throw new Error("A history only accepts one active listener");return o.addEventListener(Ix,S),f=b,()=>{o.removeEventListener(Ix,S),f=null}},createHref(b){return t(o,b)},createURL:C,encodeLocation(b){let d=C(b);return{pathname:d.pathname,search:d.search,hash:d.hash}},push:O,replace:T,go(b){return i.go(b)}};return w}var Lx;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Lx||(Lx={}));function YM(e,t,r){r===void 0&&(r="/");let n=typeof t=="string"?ks(t):t,o=tu(n.pathname||"/",r);if(o==null)return null;let a=BC(e);QM(a);let i=null;for(let u=0;i==null&&u{let f={relativePath:u===void 0?a.path||"":u,caseSensitive:a.caseSensitive===!0,childrenIndex:i,route:a};f.relativePath.startsWith("/")&&(sr(f.relativePath.startsWith(n),'Absolute route path "'+f.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),f.relativePath=f.relativePath.slice(n.length));let g=Aa([n,f.relativePath]),m=r.concat(f);a.children&&a.children.length>0&&(sr(a.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+g+'".')),BC(a.children,t,m,g)),!(a.path==null&&!a.index)&&t.push({path:g,score:nI(g,a.index),routesMeta:m})};return e.forEach((a,i)=>{var u;if(a.path===""||!((u=a.path)!=null&&u.includes("?")))o(a,i);else for(let f of VC(a.path))o(a,i,f)}),t}function VC(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t,o=r.endsWith("?"),a=r.replace(/\?$/,"");if(n.length===0)return o?[a,""]:[a];let i=VC(n.join("/")),u=[];return u.push(...i.map(f=>f===""?a:[a,f].join("/"))),o&&u.push(...i),u.map(f=>e.startsWith("/")&&f===""?"/":f)}function QM(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:oI(t.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}const XM=/^:\w+$/,ZM=3,JM=2,eI=1,tI=10,rI=-2,Fx=e=>e==="*";function nI(e,t){let r=e.split("/"),n=r.length;return r.some(Fx)&&(n+=rI),t&&(n+=JM),r.filter(o=>!Fx(o)).reduce((o,a)=>o+(XM.test(a)?ZM:a===""?eI:tI),n)}function oI(e,t){return e.length===t.length&&e.slice(0,-1).every((n,o)=>n===t[o])?e[e.length-1]-t[t.length-1]:0}function aI(e,t){let{routesMeta:r}=e,n={},o="/",a=[];for(let i=0;i{if(m==="*"){let O=u[S]||"";i=a.slice(0,a.length-O.length).replace(/(.)\/+$/,"$1")}return g[m]=lI(u[S]||"",m),g},{}),pathname:a,pathnameBase:i,pattern:e}}function iI(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!0),wm(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,(i,u)=>(n.push(u),"/([^\\/]+)"));return e.endsWith("*")?(n.push("*"),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),n]}function sI(e){try{return decodeURI(e)}catch(t){return wm(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function lI(e,t){try{return decodeURIComponent(e)}catch(r){return wm(!1,'The value for the URL param "'+t+'" will not be decoded because'+(' the string "'+e+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+r+").")),e}}function tu(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&n!=="/"?null:e.slice(r)||"/"}function uI(e,t){t===void 0&&(t="/");let{pathname:r,search:n="",hash:o=""}=typeof e=="string"?ks(e):e;return{pathname:r?r.startsWith("/")?r:cI(r,t):t,search:fI(n),hash:pI(o)}}function cI(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?r.length>1&&r.pop():o!=="."&&r.push(o)}),r.length>1?r.join("/"):"/"}function fh(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function _m(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function Sm(e,t,r,n){n===void 0&&(n=!1);let o;typeof e=="string"?o=ks(e):(o=eu({},e),sr(!o.pathname||!o.pathname.includes("?"),fh("?","pathname","search",o)),sr(!o.pathname||!o.pathname.includes("#"),fh("#","pathname","hash",o)),sr(!o.search||!o.search.includes("#"),fh("#","search","hash",o)));let a=e===""||o.pathname==="",i=a?"/":o.pathname,u;if(n||i==null)u=r;else{let S=t.length-1;if(i.startsWith("..")){let O=i.split("/");for(;O[0]==="..";)O.shift(),S-=1;o.pathname=O.join("/")}u=S>=0?t[S]:"/"}let f=uI(o,u),g=i&&i!=="/"&&i.endsWith("/"),m=(a||i===".")&&r.endsWith("/");return!f.pathname.endsWith("/")&&(g||m)&&(f.pathname+="/"),f}const Aa=e=>e.join("/").replace(/\/\/+/g,"/"),dI=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),fI=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,pI=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function hI(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const UC=["post","put","patch","delete"];new Set(UC);const gI=["get",...UC];new Set(gI);/** - * React Router v6.17.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Ed(){return Ed=Object.assign?Object.assign.bind():function(e){for(var t=1;tf.pathnameBase)),i=P.useRef(!1);return HC(()=>{i.current=!0}),P.useCallback(function(f,g){if(g===void 0&&(g={}),!i.current)return;if(typeof f=="number"){r.go(f);return}let m=Sm(f,JSON.parse(a),o,g.relative==="path");e==null&&t!=="/"&&(m.pathname=m.pathname==="/"?t:Aa([t,m.pathname])),(g.replace?r.replace:r.push)(m,g.state,g)},[t,r,a,o,e])}function Cm(){let{matches:e}=P.useContext(Zo),t=e[e.length-1];return t?t.params:{}}function Sf(e,t){let{relative:r}=t===void 0?{}:t,{matches:n}=P.useContext(Zo),{pathname:o}=Va(),a=JSON.stringify(_m(n).map(i=>i.pathnameBase));return P.useMemo(()=>Sm(e,JSON.parse(a),o,r==="path"),[e,a,o,r])}function vI(e,t){return yI(e,t)}function yI(e,t,r){Ns()||sr(!1);let{navigator:n}=P.useContext(bi),{matches:o}=P.useContext(Zo),a=o[o.length-1],i=a?a.params:{};a&&a.pathname;let u=a?a.pathnameBase:"/";a&&a.route;let f=Va(),g;if(t){var m;let w=typeof t=="string"?ks(t):t;u==="/"||(m=w.pathname)!=null&&m.startsWith(u)||sr(!1),g=w}else g=f;let S=g.pathname||"/",O=u==="/"?S:S.slice(u.length)||"/",T=YM(e,{pathname:O}),C=CI(T&&T.map(w=>Object.assign({},w,{params:Object.assign({},i,w.params),pathname:Aa([u,n.encodeLocation?n.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?u:Aa([u,n.encodeLocation?n.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),o,r);return t&&C?P.createElement(_f.Provider,{value:{location:Ed({pathname:"/",search:"",hash:"",state:null,key:"default"},g),navigationType:_a.Pop}},C):C}function xI(){let e=kI(),t=hI(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},a=null;return P.createElement(P.Fragment,null,P.createElement("h2",null,"Unexpected Application Error!"),P.createElement("h3",{style:{fontStyle:"italic"}},t),r?P.createElement("pre",{style:o},r):null,a)}const wI=P.createElement(xI,null);class _I extends P.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error||r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error?P.createElement(Zo.Provider,{value:this.props.routeContext},P.createElement($C.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function SI(e){let{routeContext:t,match:r,children:n}=e,o=P.useContext(wf);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),P.createElement(Zo.Provider,{value:t},n)}function CI(e,t,r){var n;if(t===void 0&&(t=[]),r===void 0&&(r=null),e==null){var o;if((o=r)!=null&&o.errors)e=r.matches;else return null}let a=e,i=(n=r)==null?void 0:n.errors;if(i!=null){let u=a.findIndex(f=>f.route.id&&(i==null?void 0:i[f.route.id]));u>=0||sr(!1),a=a.slice(0,Math.min(a.length,u+1))}return a.reduceRight((u,f,g)=>{let m=f.route.id?i==null?void 0:i[f.route.id]:null,S=null;r&&(S=f.route.errorElement||wI);let O=t.concat(a.slice(0,g+1)),T=()=>{let C;return m?C=S:f.route.Component?C=P.createElement(f.route.Component,null):f.route.element?C=f.route.element:C=u,P.createElement(SI,{match:f,routeContext:{outlet:u,matches:O,isDataRoute:r!=null},children:C})};return r&&(f.route.ErrorBoundary||f.route.errorElement||g===0)?P.createElement(_I,{location:r.location,revalidation:r.revalidation,component:S,error:m,children:T(),routeContext:{outlet:null,matches:O,isDataRoute:!0}}):T()},null)}var qC=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(qC||{}),jd=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(jd||{});function TI(e){let t=P.useContext(wf);return t||sr(!1),t}function PI(e){let t=P.useContext(WC);return t||sr(!1),t}function OI(e){let t=P.useContext(Zo);return t||sr(!1),t}function GC(e){let t=OI(),r=t.matches[t.matches.length-1];return r.route.id||sr(!1),r.route.id}function kI(){var e;let t=P.useContext($C),r=PI(jd.UseRouteError),n=GC(jd.UseRouteError);return t||((e=r.errors)==null?void 0:e[n])}function NI(){let{router:e}=TI(qC.UseNavigateStable),t=GC(jd.UseNavigateStable),r=P.useRef(!1);return HC(()=>{r.current=!0}),P.useCallback(function(o,a){a===void 0&&(a={}),r.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,Ed({fromRouteId:t},a)))},[e,t])}function EI(e){let{to:t,replace:r,state:n,relative:o}=e;Ns()||sr(!1);let{matches:a}=P.useContext(Zo),{pathname:i}=Va(),u=$n(),f=Sm(t,_m(a).map(m=>m.pathnameBase),i,o==="path"),g=JSON.stringify(f);return P.useEffect(()=>u(JSON.parse(g),{replace:r,state:n,relative:o}),[u,g,o,r,n]),null}function no(e){sr(!1)}function jI(e){let{basename:t="/",children:r=null,location:n,navigationType:o=_a.Pop,navigator:a,static:i=!1}=e;Ns()&&sr(!1);let u=t.replace(/^\/*/,"/"),f=P.useMemo(()=>({basename:u,navigator:a,static:i}),[u,a,i]);typeof n=="string"&&(n=ks(n));let{pathname:g="/",search:m="",hash:S="",state:O=null,key:T="default"}=n,C=P.useMemo(()=>{let w=tu(g,u);return w==null?null:{location:{pathname:w,search:m,hash:S,state:O,key:T},navigationType:o}},[u,g,m,S,O,T,o]);return C==null?null:P.createElement(bi.Provider,{value:f},P.createElement(_f.Provider,{children:r,value:C}))}function Tm(e){let{children:t,location:r}=e;return vI(Ug(t),r)}new Promise(()=>{});function Ug(e,t){t===void 0&&(t=[]);let r=[];return P.Children.forEach(e,(n,o)=>{if(!P.isValidElement(n))return;let a=[...t,o];if(n.type===P.Fragment){r.push.apply(r,Ug(n.props.children,a));return}n.type!==no&&sr(!1),!n.props.index||!n.props.children||sr(!1);let i={id:n.props.id||a.join("-"),caseSensitive:n.props.caseSensitive,element:n.props.element,Component:n.props.Component,index:n.props.index,path:n.props.path,loader:n.props.loader,action:n.props.action,errorElement:n.props.errorElement,ErrorBoundary:n.props.ErrorBoundary,hasErrorBoundary:n.props.ErrorBoundary!=null||n.props.errorElement!=null,shouldRevalidate:n.props.shouldRevalidate,handle:n.props.handle,lazy:n.props.lazy};n.props.children&&(i.children=Ug(n.props.children,a)),r.push(i)}),r}/** - * React Router DOM v6.17.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Ad(){return Ad=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(r[o]=e[o]);return r}function AI(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function RI(e,t){return e.button===0&&(!t||t==="_self")&&!AI(e)}const MI=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],II=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],DI=P.createContext({isTransitioning:!1}),LI="startTransition",zx=S0[LI];function FI(e){let{basename:t,children:r,future:n,window:o}=e,a=P.useRef();a.current==null&&(a.current=qM({window:o,v5Compat:!0}));let i=a.current,[u,f]=P.useState({action:i.action,location:i.location}),{v7_startTransition:g}=n||{},m=P.useCallback(S=>{g&&zx?zx(()=>f(S)):f(S)},[f,g]);return P.useLayoutEffect(()=>i.listen(m),[i,m]),P.createElement(jI,{basename:t,children:r,location:u.location,navigationType:u.action,navigator:i})}const zI=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",BI=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,YC=P.forwardRef(function(t,r){let{onClick:n,relative:o,reloadDocument:a,replace:i,state:u,target:f,to:g,preventScrollReset:m,unstable_viewTransition:S}=t,O=KC(t,MI),{basename:T}=P.useContext(bi),C,w=!1;if(typeof g=="string"&&BI.test(g)&&(C=g,zI))try{let c=new URL(window.location.href),l=g.startsWith("//")?new URL(c.protocol+g):new URL(g),h=tu(l.pathname,T);l.origin===c.origin&&h!=null?g=h+l.search+l.hash:w=!0}catch{}let b=mI(g,{relative:o}),d=WI(g,{replace:i,state:u,target:f,preventScrollReset:m,relative:o,unstable_viewTransition:S});function s(c){n&&n(c),c.defaultPrevented||d(c)}return P.createElement("a",Ad({},O,{href:C||b,onClick:w||a?n:s,ref:r,target:f}))}),VI=P.forwardRef(function(t,r){let{"aria-current":n="page",caseSensitive:o=!1,className:a="",end:i=!1,style:u,to:f,unstable_viewTransition:g,children:m}=t,S=KC(t,II),O=Sf(f,{relative:S.relative}),T=Va(),C=P.useContext(WC),{navigator:w}=P.useContext(bi),b=C!=null&&$I(O)&&g===!0,d=w.encodeLocation?w.encodeLocation(O).pathname:O.pathname,s=T.pathname,c=C&&C.navigation&&C.navigation.location?C.navigation.location.pathname:null;o||(s=s.toLowerCase(),c=c?c.toLowerCase():null,d=d.toLowerCase());let l=s===d||!i&&s.startsWith(d)&&s.charAt(d.length)==="/",h=c!=null&&(c===d||!i&&c.startsWith(d)&&c.charAt(d.length)==="/"),y={isActive:l,isPending:h,isTransitioning:b},x=l?n:void 0,j;typeof a=="function"?j=a(y):j=[a,l?"active":null,h?"pending":null,b?"transitioning":null].filter(Boolean).join(" ");let k=typeof u=="function"?u(y):u;return P.createElement(YC,Ad({},S,{"aria-current":x,className:j,ref:r,style:k,to:f,unstable_viewTransition:g}),typeof m=="function"?m(y):m)});var Wg;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Wg||(Wg={}));var Bx;(function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Bx||(Bx={}));function UI(e){let t=P.useContext(wf);return t||sr(!1),t}function WI(e,t){let{target:r,replace:n,state:o,preventScrollReset:a,relative:i,unstable_viewTransition:u}=t===void 0?{}:t,f=$n(),g=Va(),m=Sf(e,{relative:i});return P.useCallback(S=>{if(RI(S,r)){S.preventDefault();let O=n!==void 0?n:Nd(g)===Nd(m);f(e,{replace:O,state:o,preventScrollReset:a,relative:i,unstable_viewTransition:u})}},[g,f,m,n,o,r,e,a,i,u])}function $I(e,t){t===void 0&&(t={});let r=P.useContext(DI);r==null&&sr(!1);let{basename:n}=UI(Wg.useViewTransitionState),o=Sf(e,{relative:t.relative});if(!r.isTransitioning)return!1;let a=tu(r.currentLocation.pathname,n)||r.currentLocation.pathname,i=tu(r.nextLocation.pathname,n)||r.nextLocation.pathname;return Vg(o.pathname,i)!=null||Vg(o.pathname,a)!=null}function HI({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M7.5 3.75A1.5 1.5 0 006 5.25v13.5a1.5 1.5 0 001.5 1.5h6a1.5 1.5 0 001.5-1.5V15a.75.75 0 011.5 0v3.75a3 3 0 01-3 3h-6a3 3 0 01-3-3V5.25a3 3 0 013-3h6a3 3 0 013 3V9A.75.75 0 0115 9V5.25a1.5 1.5 0 00-1.5-1.5h-6zm5.03 4.72a.75.75 0 010 1.06l-1.72 1.72h10.94a.75.75 0 010 1.5H10.81l1.72 1.72a.75.75 0 11-1.06 1.06l-3-3a.75.75 0 010-1.06l3-3a.75.75 0 011.06 0z",clipRule:"evenodd"}))}const qI=P.forwardRef(HI),GI=qI;function KI({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M3 6.75A.75.75 0 013.75 6h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 6.75zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 5.25a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z",clipRule:"evenodd"}))}const YI=P.forwardRef(KI),QI=YI;function XI({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M11.078 2.25c-.917 0-1.699.663-1.85 1.567L9.05 4.889c-.02.12-.115.26-.297.348a7.493 7.493 0 00-.986.57c-.166.115-.334.126-.45.083L6.3 5.508a1.875 1.875 0 00-2.282.819l-.922 1.597a1.875 1.875 0 00.432 2.385l.84.692c.095.078.17.229.154.43a7.598 7.598 0 000 1.139c.015.2-.059.352-.153.43l-.841.692a1.875 1.875 0 00-.432 2.385l.922 1.597a1.875 1.875 0 002.282.818l1.019-.382c.115-.043.283-.031.45.082.312.214.641.405.985.57.182.088.277.228.297.35l.178 1.071c.151.904.933 1.567 1.85 1.567h1.844c.916 0 1.699-.663 1.85-1.567l.178-1.072c.02-.12.114-.26.297-.349.344-.165.673-.356.985-.57.167-.114.335-.125.45-.082l1.02.382a1.875 1.875 0 002.28-.819l.923-1.597a1.875 1.875 0 00-.432-2.385l-.84-.692c-.095-.078-.17-.229-.154-.43a7.614 7.614 0 000-1.139c-.016-.2.059-.352.153-.43l.84-.692c.708-.582.891-1.59.433-2.385l-.922-1.597a1.875 1.875 0 00-2.282-.818l-1.02.382c-.114.043-.282.031-.449-.083a7.49 7.49 0 00-.985-.57c-.183-.087-.277-.227-.297-.348l-.179-1.072a1.875 1.875 0 00-1.85-1.567h-1.843zM12 15.75a3.75 3.75 0 100-7.5 3.75 3.75 0 000 7.5z",clipRule:"evenodd"}))}const ZI=P.forwardRef(XI),QC=ZI;function JI({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M15.75 1.5a6.75 6.75 0 00-6.651 7.906c.067.39-.032.717-.221.906l-6.5 6.499a3 3 0 00-.878 2.121v2.818c0 .414.336.75.75.75H6a.75.75 0 00.75-.75v-1.5h1.5A.75.75 0 009 19.5V18h1.5a.75.75 0 00.53-.22l2.658-2.658c.19-.189.517-.288.906-.22A6.75 6.75 0 1015.75 1.5zm0 3a.75.75 0 000 1.5A2.25 2.25 0 0118 8.25a.75.75 0 001.5 0 3.75 3.75 0 00-3.75-3.75z",clipRule:"evenodd"}))}const e4=P.forwardRef(JI),t4=e4;function r4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M2.625 6.75a1.125 1.125 0 112.25 0 1.125 1.125 0 01-2.25 0zm4.875 0A.75.75 0 018.25 6h12a.75.75 0 010 1.5h-12a.75.75 0 01-.75-.75zM2.625 12a1.125 1.125 0 112.25 0 1.125 1.125 0 01-2.25 0zM7.5 12a.75.75 0 01.75-.75h12a.75.75 0 010 1.5h-12A.75.75 0 017.5 12zm-4.875 5.25a1.125 1.125 0 112.25 0 1.125 1.125 0 01-2.25 0zm4.875 0a.75.75 0 01.75-.75h12a.75.75 0 010 1.5h-12a.75.75 0 01-.75-.75z",clipRule:"evenodd"}))}const n4=P.forwardRef(r4),o4=n4;function a4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{d:"M5.566 4.657A4.505 4.505 0 016.75 4.5h10.5c.41 0 .806.055 1.183.157A3 3 0 0015.75 3h-7.5a3 3 0 00-2.684 1.657zM2.25 12a3 3 0 013-3h13.5a3 3 0 013 3v6a3 3 0 01-3 3H5.25a3 3 0 01-3-3v-6zM5.25 7.5c-.41 0-.806.055-1.184.157A3 3 0 016.75 6h10.5a3 3 0 012.683 1.657A4.505 4.505 0 0018.75 7.5H5.25z"}))}const i4=P.forwardRef(a4),s4=i4;function l4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{d:"M5.507 4.048A3 3 0 017.785 3h8.43a3 3 0 012.278 1.048l1.722 2.008A4.533 4.533 0 0019.5 6h-15c-.243 0-.482.02-.715.056l1.722-2.008z"}),P.createElement("path",{fillRule:"evenodd",d:"M1.5 10.5a3 3 0 013-3h15a3 3 0 110 6h-15a3 3 0 01-3-3zm15 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm2.25.75a.75.75 0 100-1.5.75.75 0 000 1.5zM4.5 15a3 3 0 100 6h15a3 3 0 100-6h-15zm11.25 3.75a.75.75 0 100-1.5.75.75 0 000 1.5zM19.5 18a.75.75 0 11-1.5 0 .75.75 0 011.5 0z",clipRule:"evenodd"}))}const u4=P.forwardRef(l4),c4=u4;function d4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{d:"M11.644 1.59a.75.75 0 01.712 0l9.75 5.25a.75.75 0 010 1.32l-9.75 5.25a.75.75 0 01-.712 0l-9.75-5.25a.75.75 0 010-1.32l9.75-5.25z"}),P.createElement("path",{d:"M3.265 10.602l7.668 4.129a2.25 2.25 0 002.134 0l7.668-4.13 1.37.739a.75.75 0 010 1.32l-9.75 5.25a.75.75 0 01-.71 0l-9.75-5.25a.75.75 0 010-1.32l1.37-.738z"}),P.createElement("path",{d:"M10.933 19.231l-7.668-4.13-1.37.739a.75.75 0 000 1.32l9.75 5.25c.221.12.489.12.71 0l9.75-5.25a.75.75 0 000-1.32l-1.37-.738-7.668 4.13a2.25 2.25 0 01-2.134-.001z"}))}const f4=P.forwardRef(d4),p4=f4;function h4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M8.25 6.75a3.75 3.75 0 117.5 0 3.75 3.75 0 01-7.5 0zM15.75 9.75a3 3 0 116 0 3 3 0 01-6 0zM2.25 9.75a3 3 0 116 0 3 3 0 01-6 0zM6.31 15.117A6.745 6.745 0 0112 12a6.745 6.745 0 016.709 7.498.75.75 0 01-.372.568A12.696 12.696 0 0112 21.75c-2.305 0-4.47-.612-6.337-1.684a.75.75 0 01-.372-.568 6.787 6.787 0 011.019-4.38z",clipRule:"evenodd"}),P.createElement("path",{d:"M5.082 14.254a8.287 8.287 0 00-1.308 5.135 9.687 9.687 0 01-1.764-.44l-.115-.04a.563.563 0 01-.373-.487l-.01-.121a3.75 3.75 0 013.57-4.047zM20.226 19.389a8.287 8.287 0 00-1.308-5.135 3.75 3.75 0 013.57 4.047l-.01.121a.563.563 0 01-.373.486l-.115.04c-.567.2-1.156.349-1.764.441z"}))}const g4=P.forwardRef(h4),m4=g4;function b4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z",clipRule:"evenodd"}))}const v4=P.forwardRef(b4),y4=v4;function x4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M12 6.75a5.25 5.25 0 016.775-5.025.75.75 0 01.313 1.248l-3.32 3.319c.063.475.276.934.641 1.299.365.365.824.578 1.3.64l3.318-3.319a.75.75 0 011.248.313 5.25 5.25 0 01-5.472 6.756c-1.018-.086-1.87.1-2.309.634L7.344 21.3A3.298 3.298 0 112.7 16.657l8.684-7.151c.533-.44.72-1.291.634-2.309A5.342 5.342 0 0112 6.75zM4.117 19.125a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75h-.008a.75.75 0 01-.75-.75v-.008z",clipRule:"evenodd"}),P.createElement("path",{d:"M10.076 8.64l-2.201-2.2V4.874a.75.75 0 00-.364-.643l-3.75-2.25a.75.75 0 00-.916.113l-.75.75a.75.75 0 00-.113.916l2.25 3.75a.75.75 0 00.643.364h1.564l2.062 2.062 1.575-1.297z"}),P.createElement("path",{fillRule:"evenodd",d:"M12.556 17.329l4.183 4.182a3.375 3.375 0 004.773-4.773l-3.306-3.305a6.803 6.803 0 01-1.53.043c-.394-.034-.682-.006-.867.042a.589.589 0 00-.167.063l-3.086 3.748zm3.414-1.36a.75.75 0 011.06 0l1.875 1.876a.75.75 0 11-1.06 1.06L15.97 17.03a.75.75 0 010-1.06z",clipRule:"evenodd"}))}const w4=P.forwardRef(x4),_4=w4;var W={},XC={},ZC={exports:{}};/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/(function(e){(function(){var t={}.hasOwnProperty;function r(){for(var n=[],o=0;oe&&(t=0,n=r,r=new Map)}return{get:function(a){var i=r.get(a);return i!==void 0?i:(i=n.get(a))!==void 0?(o(a,i),i):void 0},set:function(a,i){r.has(a)?r.set(a,i):o(a,i)}}}function T4(e){var t=e.separator||":";return function(r){for(var n=0,o=[],a=0,i=0;i1?t-1:0),n=1;nf.length)&&(g=f.length);for(var m=0,S=new Array(g);mb.length)&&(d=b.length);for(var s=0,c=new Array(d);ss.length)&&(c=s.length);for(var l=0,h=new Array(c);ls.length)&&(c=s.length);for(var l=0,h=new Array(c);lx.length)&&(j=x.length);for(var k=0,N=new Array(j);kl.length)&&(h=l.length);for(var y=0,x=new Array(h);yd.length)&&(s=d.length);for(var c=0,l=new Array(s);ch.length)&&(y=h.length);for(var x=0,j=new Array(y);xc.length)&&(l=c.length);for(var h=0,y=new Array(l);hT.length)&&(C=T.length);for(var w=0,b=new Array(C);ww.length)&&(b=w.length);for(var d=0,s=new Array(b);d"u"?u[g]=i.cloneUnlessOtherwiseSpecified(f,i):i.isMergeableObject(f)?u[g]=(0,t.default)(o[g],f,i):o.indexOf(f)===-1&&u.push(f)}),u}})(wT);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{MaterialTailwindTheme:function(){return m},ThemeProvider:function(){return S},useTheme:function(){return O}});var r=g(P),n=u(ut),o=u(Mr),a=u(Om),i=u(wT);function u(T){return T&&T.__esModule?T:{default:T}}function f(T){if(typeof WeakMap!="function")return null;var C=new WeakMap,w=new WeakMap;return(f=function(b){return b?w:C})(T)}function g(T,C){if(!C&&T&&T.__esModule)return T;if(T===null||typeof T!="object"&&typeof T!="function")return{default:T};var w=f(C);if(w&&w.has(T))return w.get(T);var b={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in T)if(s!=="default"&&Object.prototype.hasOwnProperty.call(T,s)){var c=d?Object.getOwnPropertyDescriptor(T,s):null;c&&(c.get||c.set)?Object.defineProperty(b,s,c):b[s]=T[s]}return b.default=T,w&&w.set(T,b),b}var m=(0,r.createContext)(a.default);m.displayName="MaterialTailwindThemeProvider";function S(T){var C=T.value,w=C===void 0?a.default:C,b=T.children,d=(0,o.default)(a.default,w,{arrayMerge:i.default});return r.default.createElement(m.Provider,{value:d},b)}var O=function(){return(0,r.useContext)(m)};S.propTypes={value:n.default.instanceOf(Object),children:n.default.node.isRequired}})(et);var Tf={},yu={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(O,T){for(var C in T)Object.defineProperty(O,C,{enumerable:!0,get:T[C]})}t(e,{propTypesOpen:function(){return a},propTypesIcon:function(){return i},propTypesAnimate:function(){return u},propTypesDisabled:function(){return f},propTypesClassName:function(){return g},propTypesValue:function(){return m},propTypesChildren:function(){return S}});var r=o(ut),n=Zt;function o(O){return O&&O.__esModule?O:{default:O}}var a=r.default.bool.isRequired,i=r.default.node,u=n.propTypesAnimation,f=r.default.bool,g=r.default.string,m=r.default.instanceOf(Object).isRequired,S=r.default.node.isRequired})(yu);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(f,g){for(var m in g)Object.defineProperty(f,m,{enumerable:!0,get:g[m]})}t(e,{AccordionContext:function(){return a},useAccordion:function(){return i},AccordionContextProvider:function(){return u}});var r=o(P),n=yu;function o(f){return f&&f.__esModule?f:{default:f}}var a=r.default.createContext(null);a.displayName="MaterialTailwind.AccordionContext";function i(){var f=r.default.useContext(a);if(!f)throw new Error("useAccordion() must be used within an Accordion. It happens when you use AccordionHeader or AccordionBody components outside the Accordion component.");return f}var u=function(f){var g=f.value,m=f.children;return r.default.createElement(a.Provider,{value:g},m)};u.propTypes={value:n.propTypesValue,children:n.propTypesChildren},u.displayName="MaterialTailwind.AccordionContextProvider"})(Tf);var _T={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{AccordionHeader:function(){return C},default:function(){return w}});var r=S(P),n=S(gt),o=lt,a=S(nt),i=Tf,u=et,f=yu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=r.default.forwardRef(function(b,d){var s=b.className,c=b.children,l=O(b,["className","children"]),h=(0,i.useAccordion)(),y=h.open,x=h.icon,j=h.disabled,k=(0,u.useTheme)().accordion,N=k.styles.base;s=s??"";var A=(0,o.twMerge)((0,n.default)((0,a.default)(N.header.initial),g({},(0,a.default)(N.header.active),y)),s),M=(0,n.default)((0,a.default)(N.header.icon));return r.default.createElement("button",m({},l,{ref:d,type:"button",disabled:j,className:A}),c,r.default.createElement("span",{className:M},x??(y?r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M5 10a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1z",clipRule:"evenodd"})):r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M10 5a1 1 0 011 1v3h3a1 1 0 110 2h-3v3a1 1 0 11-2 0v-3H6a1 1 0 110-2h3V6a1 1 0 011-1z",clipRule:"evenodd"})))))});C.propTypes={className:f.propTypesClassName,children:f.propTypesChildren},C.displayName="MaterialTailwind.AccordionHeader";var w=C})(_T);var ST={},Nr={},Gg=function(e,t){return Gg=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])},Gg(e,t)};function CT(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Gg(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}var Md=function(){return Md=Object.assign||function(t){for(var r,n=1,o=arguments.length;n=0;u--)(i=e[u])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a}function PT(e,t){return function(r,n){t(r,n,e)}}function OT(e,t,r,n,o,a){function i(d){if(d!==void 0&&typeof d!="function")throw new TypeError("Function expected");return d}for(var u=n.kind,f=u==="getter"?"get":u==="setter"?"set":"value",g=!t&&e?n.static?e:e.prototype:null,m=t||(g?Object.getOwnPropertyDescriptor(g,n.name):{}),S,O=!1,T=r.length-1;T>=0;T--){var C={};for(var w in n)C[w]=w==="access"?{}:n[w];for(var w in n.access)C.access[w]=n.access[w];C.addInitializer=function(d){if(O)throw new TypeError("Cannot add initializers after decoration has completed");a.push(i(d||null))};var b=(0,r[T])(u==="accessor"?{get:m.get,set:m.set}:m[f],C);if(u==="accessor"){if(b===void 0)continue;if(b===null||typeof b!="object")throw new TypeError("Object expected");(S=i(b.get))&&(m.get=S),(S=i(b.set))&&(m.set=S),(S=i(b.init))&&o.unshift(S)}else(S=i(b))&&(u==="field"?o.unshift(S):m[f]=S)}g&&Object.defineProperty(g,n.name,m),O=!0}function kT(e,t,r){for(var n=arguments.length>2,o=0;o0&&a[a.length-1])&&(g[0]===6||g[0]===2)){r=0;continue}if(g[0]===3&&(!a||g[1]>a[0]&&g[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Wm(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,a=[],i;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(u){i={error:u}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a}function IT(){for(var e=[],t=0;t1||f(T,w)})},C&&(o[T]=C(o[T])))}function f(T,C){try{g(n[T](C))}catch(w){O(a[0][3],w)}}function g(T){T.value instanceof gs?Promise.resolve(T.value.v).then(m,S):O(a[0][2],T)}function m(T){f("next",T)}function S(T){f("throw",T)}function O(T,C){T(C),a.shift(),a.length&&f(a[0][0],a[0][1])}}function zT(e){var t,r;return t={},n("next"),n("throw",function(o){throw o}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(o,a){t[o]=e[o]?function(i){return(r=!r)?{value:gs(e[o](i)),done:!1}:a?a(i):i}:a}}function BT(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Id=="function"?Id(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=e[a]&&function(i){return new Promise(function(u,f){i=e[a](i),o(u,f,i.done,i.value)})}}function o(a,i,u,f){Promise.resolve(f).then(function(g){a({value:g,done:u})},i)}}function VT(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var rD=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},Kg=function(e){return Kg=Object.getOwnPropertyNames||function(t){var r=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[r.length]=n);return r},Kg(e)};function UT(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=Kg(e),n=0;nr=>Math.max(Math.min(r,t),e),jl=e=>e%1?Number(e.toFixed(5)):e,nu=/(-)?([\d]*\.?[\d])+/g,Yg=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,lD=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function xu(e){return typeof e=="string"}const wu={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},$m=Object.assign(Object.assign({},wu),{transform:JT(0,1)}),uD=Object.assign(Object.assign({},wu),{default:1}),_u=e=>({test:t=>xu(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),cD=_u("deg"),rs=_u("%"),dD=_u("px"),fD=_u("vh"),pD=_u("vw"),hD=Object.assign(Object.assign({},rs),{parse:e=>rs.parse(e)/100,transform:e=>rs.transform(e*100)}),Hm=(e,t)=>r=>!!(xu(r)&&lD.test(r)&&r.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(r,t)),eP=(e,t,r)=>n=>{if(!xu(n))return n;const[o,a,i,u]=n.match(nu);return{[e]:parseFloat(o),[t]:parseFloat(a),[r]:parseFloat(i),alpha:u!==void 0?parseFloat(u):1}},yl={test:Hm("hsl","hue"),parse:eP("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:r,alpha:n=1})=>"hsla("+Math.round(e)+", "+rs.transform(jl(t))+", "+rs.transform(jl(r))+", "+jl($m.transform(n))+")"},gD=JT(0,255),Vc=Object.assign(Object.assign({},wu),{transform:e=>Math.round(gD(e))}),Ki={test:Hm("rgb","red"),parse:eP("red","green","blue"),transform:({red:e,green:t,blue:r,alpha:n=1})=>"rgba("+Vc.transform(e)+", "+Vc.transform(t)+", "+Vc.transform(r)+", "+jl($m.transform(n))+")"};function mD(e){let t="",r="",n="",o="";return e.length>5?(t=e.substr(1,2),r=e.substr(3,2),n=e.substr(5,2),o=e.substr(7,2)):(t=e.substr(1,1),r=e.substr(2,1),n=e.substr(3,1),o=e.substr(4,1),t+=t,r+=r,n+=n,o+=o),{red:parseInt(t,16),green:parseInt(r,16),blue:parseInt(n,16),alpha:o?parseInt(o,16)/255:1}}const Qg={test:Hm("#"),parse:mD,transform:Ki.transform},qm={test:e=>Ki.test(e)||Qg.test(e)||yl.test(e),parse:e=>Ki.test(e)?Ki.parse(e):yl.test(e)?yl.parse(e):Qg.parse(e),transform:e=>xu(e)?e:e.hasOwnProperty("red")?Ki.transform(e):yl.transform(e)},tP="${c}",rP="${n}";function bD(e){var t,r,n,o;return isNaN(e)&&xu(e)&&((r=(t=e.match(nu))===null||t===void 0?void 0:t.length)!==null&&r!==void 0?r:0)+((o=(n=e.match(Yg))===null||n===void 0?void 0:n.length)!==null&&o!==void 0?o:0)>0}function nP(e){typeof e=="number"&&(e=`${e}`);const t=[];let r=0;const n=e.match(Yg);n&&(r=n.length,e=e.replace(Yg,tP),t.push(...n.map(qm.parse)));const o=e.match(nu);return o&&(e=e.replace(nu,rP),t.push(...o.map(wu.parse))),{values:t,numColors:r,tokenised:e}}function oP(e){return nP(e).values}function aP(e){const{values:t,numColors:r,tokenised:n}=nP(e),o=t.length;return a=>{let i=n;for(let u=0;utypeof e=="number"?0:e;function yD(e){const t=oP(e);return aP(e)(t.map(vD))}const iP={test:bD,parse:oP,createTransformer:aP,getAnimatableNone:yD},xD=new Set(["brightness","contrast","saturate","opacity"]);function wD(e){let[t,r]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[n]=r.match(nu)||[];if(!n)return e;const o=r.replace(n,"");let a=xD.has(t)?1:0;return n!==r&&(a*=100),t+"("+a+o+")"}const _D=/([a-z-]*)\(.*?\)/g,SD=Object.assign(Object.assign({},iP),{getAnimatableNone:e=>{const t=e.match(_D);return t?t.map(wD).join(" "):e}});xr.alpha=$m;xr.color=qm;xr.complex=iP;xr.degrees=cD;xr.filter=SD;xr.hex=Qg;xr.hsla=yl;xr.number=wu;xr.percent=rs;xr.progressPercentage=hD;xr.px=dD;xr.rgbUnit=Vc;xr.rgba=Ki;xr.scale=uD;xr.vh=fD;xr.vw=pD;var pt={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});const sP=1/60*1e3,CD=typeof performance<"u"?()=>performance.now():()=>Date.now(),lP=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(CD()),sP);function TD(e){let t=[],r=[],n=0,o=!1,a=!1;const i=new WeakSet,u={schedule:(f,g=!1,m=!1)=>{const S=m&&o,O=S?t:r;return g&&i.add(f),O.indexOf(f)===-1&&(O.push(f),S&&o&&(n=t.length)),f},cancel:f=>{const g=r.indexOf(f);g!==-1&&r.splice(g,1),i.delete(f)},process:f=>{if(o){a=!0;return}if(o=!0,[t,r]=[r,t],r.length=0,n=t.length,n)for(let g=0;g(e[t]=TD(()=>ou=!0),e),{}),OD=Su.reduce((e,t)=>{const r=Of[t];return e[t]=(n,o=!1,a=!1)=>(ou||jD(),r.schedule(n,o,a)),e},{}),kD=Su.reduce((e,t)=>(e[t]=Of[t].cancel,e),{}),ND=Su.reduce((e,t)=>(e[t]=()=>Of[t].process(ns),e),{}),ED=e=>Of[e].process(ns),uP=e=>{ou=!1,ns.delta=Xg?sP:Math.max(Math.min(e-ns.timestamp,PD),1),ns.timestamp=e,Zg=!0,Su.forEach(ED),Zg=!1,ou&&(Xg=!1,lP(uP))},jD=()=>{ou=!0,Xg=!0,Zg||lP(uP)},AD=()=>ns;wi.cancelSync=kD;wi.default=OD;wi.flushSync=ND;wi.getFrameData=AD;Object.defineProperty(pt,"__esModule",{value:!0});var cP=QT,ms=ZT,oo=xr,kf=wi;function RD(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var MD=RD(kf);const au=(e,t,r)=>Math.min(Math.max(r,e),t),ph=.001,ID=.01,Hx=10,DD=.05,LD=1;function FD({duration:e=800,bounce:t=.25,velocity:r=0,mass:n=1}){let o,a;ms.warning(e<=Hx*1e3,"Spring duration must be 10 seconds or less");let i=1-t;i=au(DD,LD,i),e=au(ID,Hx,e/1e3),i<1?(o=g=>{const m=g*i,S=m*e,O=m-r,T=Jg(g,i),C=Math.exp(-S);return ph-O/T*C},a=g=>{const S=g*i*e,O=S*r+r,T=Math.pow(i,2)*Math.pow(g,2)*e,C=Math.exp(-S),w=Jg(Math.pow(g,2),i);return(-o(g)+ph>0?-1:1)*((O-T)*C)/w}):(o=g=>{const m=Math.exp(-g*e),S=(g-r)*e+1;return-ph+m*S},a=g=>{const m=Math.exp(-g*e),S=(r-g)*(e*e);return m*S});const u=5/e,f=BD(o,a,u);if(e=e*1e3,isNaN(f))return{stiffness:100,damping:10,duration:e};{const g=Math.pow(f,2)*n;return{stiffness:g,damping:i*2*Math.sqrt(n*g),duration:e}}}const zD=12;function BD(e,t,r){let n=r;for(let o=1;oe[r]!==void 0)}function WD(e){let t=Object.assign({velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1},e);if(!qx(e,UD)&&qx(e,VD)){const r=FD(e);t=Object.assign(Object.assign(Object.assign({},t),r),{velocity:0,mass:1}),t.isResolvedFromDuration=!0}return t}function Nf(e){var{from:t=0,to:r=1,restSpeed:n=2,restDelta:o}=e,a=cP.__rest(e,["from","to","restSpeed","restDelta"]);const i={done:!1,value:t};let{stiffness:u,damping:f,mass:g,velocity:m,duration:S,isResolvedFromDuration:O}=WD(a),T=Gx,C=Gx;function w(){const b=m?-(m/1e3):0,d=r-t,s=f/(2*Math.sqrt(u*g)),c=Math.sqrt(u/g)/1e3;if(o===void 0&&(o=Math.min(Math.abs(r-t)/100,.4)),s<1){const l=Jg(c,s);T=h=>{const y=Math.exp(-s*c*h);return r-y*((b+s*c*d)/l*Math.sin(l*h)+d*Math.cos(l*h))},C=h=>{const y=Math.exp(-s*c*h);return s*c*y*(Math.sin(l*h)*(b+s*c*d)/l+d*Math.cos(l*h))-y*(Math.cos(l*h)*(b+s*c*d)-l*d*Math.sin(l*h))}}else if(s===1)T=l=>r-Math.exp(-c*l)*(d+(b+c*d)*l);else{const l=c*Math.sqrt(s*s-1);T=h=>{const y=Math.exp(-s*c*h),x=Math.min(l*h,300);return r-y*((b+s*c*d)*Math.sinh(x)+l*d*Math.cosh(x))/l}}}return w(),{next:b=>{const d=T(b);if(O)i.done=b>=S;else{const s=C(b)*1e3,c=Math.abs(s)<=n,l=Math.abs(r-d)<=o;i.done=c&&l}return i.value=i.done?r:d,i},flipTarget:()=>{m=-m,[t,r]=[r,t],w()}}}Nf.needsInterpolation=(e,t)=>typeof e=="string"||typeof t=="string";const Gx=e=>0,Gm=(e,t,r)=>{const n=t-e;return n===0?1:(r-e)/n},Ef=(e,t,r)=>-r*e+r*t+e;function hh(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function Kx({hue:e,saturation:t,lightness:r,alpha:n}){e/=360,t/=100,r/=100;let o=0,a=0,i=0;if(!t)o=a=i=r;else{const u=r<.5?r*(1+t):r+t-r*t,f=2*r-u;o=hh(f,u,e+1/3),a=hh(f,u,e),i=hh(f,u,e-1/3)}return{red:Math.round(o*255),green:Math.round(a*255),blue:Math.round(i*255),alpha:n}}const $D=(e,t,r)=>{const n=e*e,o=t*t;return Math.sqrt(Math.max(0,r*(o-n)+n))},HD=[oo.hex,oo.rgba,oo.hsla],Yx=e=>HD.find(t=>t.test(e)),Qx=e=>`'${e}' is not an animatable color. Use the equivalent color code instead.`,Km=(e,t)=>{let r=Yx(e),n=Yx(t);ms.invariant(!!r,Qx(e)),ms.invariant(!!n,Qx(t));let o=r.parse(e),a=n.parse(t);r===oo.hsla&&(o=Kx(o),r=oo.rgba),n===oo.hsla&&(a=Kx(a),n=oo.rgba);const i=Object.assign({},o);return u=>{for(const f in i)f!=="alpha"&&(i[f]=$D(o[f],a[f],u));return i.alpha=Ef(o.alpha,a.alpha,u),r.transform(i)}},qD={x:0,y:0,z:0},e0=e=>typeof e=="number",GD=(e,t)=>r=>t(e(r)),Ym=(...e)=>e.reduce(GD);function dP(e,t){return e0(e)?r=>Ef(e,t,r):oo.color.test(e)?Km(e,t):Qm(e,t)}const fP=(e,t)=>{const r=[...e],n=r.length,o=e.map((a,i)=>dP(a,t[i]));return a=>{for(let i=0;i{const r=Object.assign(Object.assign({},e),t),n={};for(const o in r)e[o]!==void 0&&t[o]!==void 0&&(n[o]=dP(e[o],t[o]));return o=>{for(const a in n)r[a]=n[a](o);return r}};function Xx(e){const t=oo.complex.parse(e),r=t.length;let n=0,o=0,a=0;for(let i=0;i{const r=oo.complex.createTransformer(t),n=Xx(e),o=Xx(t);return n.numHSL===o.numHSL&&n.numRGB===o.numRGB&&n.numNumbers>=o.numNumbers?Ym(fP(n.parsed,o.parsed),r):(ms.warning(!0,`Complex values '${e}' and '${t}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),i=>`${i>0?t:e}`)},YD=(e,t)=>r=>Ef(e,t,r);function QD(e){if(typeof e=="number")return YD;if(typeof e=="string")return oo.color.test(e)?Km:Qm;if(Array.isArray(e))return fP;if(typeof e=="object")return KD}function XD(e,t,r){const n=[],o=r||QD(e[0]),a=e.length-1;for(let i=0;ir(Gm(e,t,n))}function JD(e,t){const r=e.length,n=r-1;return o=>{let a=0,i=!1;if(o<=e[0]?i=!0:o>=e[n]&&(a=n-1,i=!0),!i){let f=1;for(;fo||f===n);f++);a=f-1}const u=Gm(e[a],e[a+1],o);return t[a](u)}}function Xm(e,t,{clamp:r=!0,ease:n,mixer:o}={}){const a=e.length;ms.invariant(a===t.length,"Both input and output ranges must be the same length"),ms.invariant(!n||!Array.isArray(n)||n.length===a-1,"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values."),e[0]>e[a-1]&&(e=[].concat(e),t=[].concat(t),e.reverse(),t.reverse());const i=XD(t,n,o),u=a===2?ZD(e,i):JD(e,i);return r?f=>u(au(e[0],e[a-1],f)):u}const Cu=e=>t=>1-e(1-t),jf=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,pP=e=>t=>Math.pow(t,e),Zm=e=>t=>t*t*((e+1)*t-e),hP=e=>{const t=Zm(e);return r=>(r*=2)<1?.5*t(r):.5*(2-Math.pow(2,-10*(r-1)))},gP=1.525,eL=4/11,tL=8/11,rL=9/10,mP=e=>e,Jm=pP(2),nL=Cu(Jm),bP=jf(Jm),vP=e=>1-Math.sin(Math.acos(e)),yP=Cu(vP),oL=jf(yP),eb=Zm(gP),aL=Cu(eb),iL=jf(eb),sL=hP(gP),lL=4356/361,uL=35442/1805,cL=16061/1805,Dd=e=>{if(e===1||e===0)return e;const t=e*e;return ee<.5?.5*(1-Dd(1-e*2)):.5*Dd(e*2-1)+.5;function pL(e,t){return e.map(()=>t||bP).splice(0,e.length-1)}function hL(e){const t=e.length;return e.map((r,n)=>n!==0?n/(t-1):0)}function gL(e,t){return e.map(r=>r*t)}function Al({from:e=0,to:t=1,ease:r,offset:n,duration:o=300}){const a={done:!1,value:e},i=Array.isArray(t)?t:[e,t],u=gL(n&&n.length===i.length?n:hL(i),o);function f(){return Xm(u,i,{ease:Array.isArray(r)?r:pL(i,r)})}let g=f();return{next:m=>(a.value=g(m),a.done=m>=o,a),flipTarget:()=>{i.reverse(),g=f()}}}function xP({velocity:e=0,from:t=0,power:r=.8,timeConstant:n=350,restDelta:o=.5,modifyTarget:a}){const i={done:!1,value:t};let u=r*e;const f=t+u,g=a===void 0?f:a(f);return g!==f&&(u=g-t),{next:m=>{const S=-u*Math.exp(-m/n);return i.done=!(S>o||S<-o),i.value=i.done?g:g+S,i},flipTarget:()=>{}}}const Zx={keyframes:Al,spring:Nf,decay:xP};function mL(e){if(Array.isArray(e.to))return Al;if(Zx[e.type])return Zx[e.type];const t=new Set(Object.keys(e));return t.has("ease")||t.has("duration")&&!t.has("dampingRatio")?Al:t.has("dampingRatio")||t.has("stiffness")||t.has("mass")||t.has("damping")||t.has("restSpeed")||t.has("restDelta")?Nf:Al}function wP(e,t,r=0){return e-t-r}function bL(e,t,r=0,n=!0){return n?wP(t+-e,t,r):t-(e-t)+r}function vL(e,t,r,n){return n?e>=t+r:e<=-r}const yL=e=>{const t=({delta:r})=>e(r);return{start:()=>MD.default.update(t,!0),stop:()=>kf.cancelSync.update(t)}};function _P(e){var t,r,{from:n,autoplay:o=!0,driver:a=yL,elapsed:i=0,repeat:u=0,repeatType:f="loop",repeatDelay:g=0,onPlay:m,onStop:S,onComplete:O,onRepeat:T,onUpdate:C}=e,w=cP.__rest(e,["from","autoplay","driver","elapsed","repeat","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate"]);let{to:b}=w,d,s=0,c=w.duration,l,h=!1,y=!0,x;const j=mL(w);!((r=(t=j).needsInterpolation)===null||r===void 0)&&r.call(t,n,b)&&(x=Xm([0,100],[n,b],{clamp:!1}),n=0,b=100);const k=j(Object.assign(Object.assign({},w),{from:n,to:b}));function N(){s++,f==="reverse"?(y=s%2===0,i=bL(i,c,g,y)):(i=wP(i,c,g),f==="mirror"&&k.flipTarget()),h=!1,T&&T()}function A(){d.stop(),O&&O()}function M(L){if(y||(L=-L),i+=L,!h){const z=k.next(Math.max(0,i));l=z.value,x&&(l=x(l)),h=y?z.done:i<=0}C==null||C(l),h&&(s===0&&(c??(c=i)),s{S==null||S(),d.stop()}}}function SP(e,t){return t?e*(1e3/t):0}function xL({from:e=0,velocity:t=0,min:r,max:n,power:o=.8,timeConstant:a=750,bounceStiffness:i=500,bounceDamping:u=10,restDelta:f=1,modifyTarget:g,driver:m,onUpdate:S,onComplete:O,onStop:T}){let C;function w(c){return r!==void 0&&cn}function b(c){return r===void 0?n:n===void 0||Math.abs(r-c){var h;S==null||S(l),(h=c.onUpdate)===null||h===void 0||h.call(c,l)},onComplete:O,onStop:T}))}function s(c){d(Object.assign({type:"spring",stiffness:i,damping:u,restDelta:f},c))}if(w(e))s({from:e,velocity:t,to:b(e)});else{let c=o*t+e;typeof g<"u"&&(c=g(c));const l=b(c),h=l===r?-1:1;let y,x;const j=k=>{y=x,x=k,t=SP(k-y,kf.getFrameData().delta),(h===1&&k>l||h===-1&&kC==null?void 0:C.stop()}}const CP=e=>e*180/Math.PI,wL=(e,t=qD)=>CP(Math.atan2(t.y-e.y,t.x-e.x)),_L=(e,t)=>{let r=!0;return t===void 0&&(t=e,r=!1),n=>r?n-e+t:(e=n,r=!0,t)},SL=e=>e,tb=(e=SL)=>(t,r,n)=>{const o=r-n,a=-(0-t+1)*(0-e(Math.abs(o)));return o<=0?r+a:r-a},CL=tb(),TL=tb(Math.sqrt),TP=e=>e*Math.PI/180,Ld=e=>e.hasOwnProperty("x")&&e.hasOwnProperty("y"),t0=e=>Ld(e)&&e.hasOwnProperty("z"),dc=(e,t)=>Math.abs(e-t);function PL(e,t){if(e0(e)&&e0(t))return dc(e,t);if(Ld(e)&&Ld(t)){const r=dc(e.x,t.x),n=dc(e.y,t.y),o=t0(e)&&t0(t)?dc(e.z,t.z):0;return Math.sqrt(Math.pow(r,2)+Math.pow(n,2)+Math.pow(o,2))}}const OL=(e,t,r)=>(t=TP(t),{x:r*Math.cos(t)+e.x,y:r*Math.sin(t)+e.y}),PP=(e,t=2)=>(t=Math.pow(10,t),Math.round(e*t)/t),OP=(e,t,r,n=0)=>PP(e+r*(t-e)/Math.max(n,r)),kL=(e=50)=>{let t=0,r=0;return n=>{const o=kf.getFrameData().timestamp,a=o!==r?o-r:0,i=a?OP(t,n,a,e):t;return r=o,t=i,i}},NL=e=>{if(typeof e=="number")return t=>Math.round(t/e)*e;{let t=0;const r=e.length;return n=>{let o=Math.abs(e[0]-n);for(t=1;to)return e[t-1];if(t===r-1)return a;o=i}}}};function EL(e,t){return e/(1e3/t)}const jL=(e,t,r)=>{const n=t-e;return((r-e)%n+n)%n+e},kP=(e,t)=>1-3*t+3*e,NP=(e,t)=>3*t-6*e,EP=e=>3*e,Fd=(e,t,r)=>((kP(t,r)*e+NP(t,r))*e+EP(t))*e,jP=(e,t,r)=>3*kP(t,r)*e*e+2*NP(t,r)*e+EP(t),AL=1e-7,RL=10;function ML(e,t,r,n,o){let a,i,u=0;do i=t+(r-t)/2,a=Fd(i,n,o)-e,a>0?r=i:t=i;while(Math.abs(a)>AL&&++u=DL?LL(i,S,e,r):O===0?S:ML(i,u,u+fc,e,r)}return i=>i===0||i===1?i:Fd(a(i),t,n)}const zL=(e,t="end")=>r=>{r=t==="end"?Math.min(r,.999):Math.max(r,.001);const n=r*e,o=t==="end"?Math.floor(n):Math.ceil(n);return au(0,1,o/e)};pt.angle=wL;pt.animate=_P;pt.anticipate=sL;pt.applyOffset=_L;pt.attract=CL;pt.attractExpo=TL;pt.backIn=eb;pt.backInOut=iL;pt.backOut=aL;pt.bounceIn=dL;pt.bounceInOut=fL;pt.bounceOut=Dd;pt.circIn=vP;pt.circInOut=oL;pt.circOut=yP;pt.clamp=au;pt.createAnticipate=hP;pt.createAttractor=tb;pt.createBackIn=Zm;pt.createExpoIn=pP;pt.cubicBezier=FL;pt.decay=xP;pt.degreesToRadians=TP;pt.distance=PL;pt.easeIn=Jm;pt.easeInOut=bP;pt.easeOut=nL;pt.inertia=xL;pt.interpolate=Xm;pt.isPoint=Ld;pt.isPoint3D=t0;pt.keyframes=Al;pt.linear=mP;pt.mirrorEasing=jf;pt.mix=Ef;pt.mixColor=Km;pt.mixComplex=Qm;pt.pipe=Ym;pt.pointFromVector=OL;pt.progress=Gm;pt.radiansToDegrees=CP;pt.reverseEasing=Cu;pt.smooth=kL;pt.smoothFrame=OP;pt.snap=NL;pt.spring=Nf;pt.steps=zL;pt.toDecimal=PP;pt.velocityPerFrame=EL;pt.velocityPerSecond=SP;pt.wrap=jL;class BL{setAnimation(t){this.animation=t,t==null||t.finished.then(()=>this.clearAnimation()).catch(()=>{})}clearAnimation(){this.animation=this.generator=void 0}}const gh=new WeakMap;function rb(e){return gh.has(e)||gh.set(e,{transforms:[],values:new Map}),gh.get(e)}function VL(e,t){return e.has(t)||e.set(t,new BL),e.get(t)}function AP(e,t){e.indexOf(t)===-1&&e.push(t)}function RP(e,t){const r=e.indexOf(t);r>-1&&e.splice(r,1)}const MP=(e,t,r)=>Math.min(Math.max(r,e),t),nn={duration:.3,delay:0,endDelay:0,repeat:0,easing:"ease"},Qo=e=>typeof e=="number",iu=e=>Array.isArray(e)&&!Qo(e[0]),UL=(e,t,r)=>{const n=t-e;return((r-e)%n+n)%n+e};function IP(e,t){return iu(e)?e[UL(0,e.length,t)]:e}const nb=(e,t,r)=>-r*e+r*t+e,ob=()=>{},Wo=e=>e,Af=(e,t,r)=>t-e===0?1:(r-e)/(t-e);function ab(e,t){const r=e[e.length-1];for(let n=1;n<=t;n++){const o=Af(0,t,n);e.push(nb(r,1,o))}}function ib(e){const t=[0];return ab(t,e-1),t}function DP(e,t=ib(e.length),r=Wo){const n=e.length,o=n-t.length;return o>0&&ab(t,o),a=>{let i=0;for(;iArray.isArray(e)&&Qo(e[0]),zd=e=>typeof e=="object"&&!!e.createAnimation,WL=e=>typeof e=="function",sb=e=>typeof e=="string",oi={ms:e=>e*1e3,s:e=>e/1e3};function FP(e,t){return t?e*(1e3/t):0}const $L=["","X","Y","Z"],HL=["translate","scale","rotate","skew"],bs={x:"translateX",y:"translateY",z:"translateZ"},Jx={syntax:"",initialValue:"0deg",toDefaultUnit:e=>e+"deg"},qL={translate:{syntax:"",initialValue:"0px",toDefaultUnit:e=>e+"px"},rotate:Jx,scale:{syntax:"",initialValue:1,toDefaultUnit:Wo},skew:Jx},vs=new Map,Rf=e=>`--motion-${e}`,Bd=["x","y","z"];HL.forEach(e=>{$L.forEach(t=>{Bd.push(e+t),vs.set(Rf(e+t),qL[e])})});const GL=(e,t)=>Bd.indexOf(e)-Bd.indexOf(t),KL=new Set(Bd),Mf=e=>KL.has(e),YL=(e,t)=>{bs[t]&&(t=bs[t]);const{transforms:r}=rb(e);AP(r,t),e.style.transform=zP(r)},zP=e=>e.sort(GL).reduce(QL,"").trim(),QL=(e,t)=>`${e} ${t}(var(${Rf(t)}))`,r0=e=>e.startsWith("--"),ew=new Set;function XL(e){if(!ew.has(e)){ew.add(e);try{const{syntax:t,initialValue:r}=vs.has(e)?vs.get(e):{};CSS.registerProperty({name:e,inherits:!1,syntax:t,initialValue:r})}catch{}}}const BP=(e,t,r)=>(((1-3*r+3*t)*e+(3*r-6*t))*e+3*t)*e,ZL=1e-7,JL=12;function e3(e,t,r,n,o){let a,i,u=0;do i=t+(r-t)/2,a=BP(i,n,o)-e,a>0?r=i:t=i;while(Math.abs(a)>ZL&&++ue3(a,0,1,e,r);return a=>a===0||a===1?a:BP(o(a),t,n)}const t3=(e,t="end")=>r=>{r=t==="end"?Math.min(r,.999):Math.max(r,.001);const n=r*e,o=t==="end"?Math.floor(n):Math.ceil(n);return MP(0,1,o/e)},r3={ease:xl(.25,.1,.25,1),"ease-in":xl(.42,0,1,1),"ease-in-out":xl(.42,0,.58,1),"ease-out":xl(0,0,.58,1)},n3=/\((.*?)\)/;function n0(e){if(WL(e))return e;if(LP(e))return xl(...e);const t=r3[e];if(t)return t;if(e.startsWith("steps")){const r=n3.exec(e);if(r){const n=r[1].split(",");return t3(parseFloat(n[0]),n[1].trim())}}return Wo}class o3{constructor(t,r=[0,1],{easing:n,duration:o=nn.duration,delay:a=nn.delay,endDelay:i=nn.endDelay,repeat:u=nn.repeat,offset:f,direction:g="normal",autoplay:m=!0}={}){if(this.startTime=null,this.rate=1,this.t=0,this.cancelTimestamp=null,this.easing=Wo,this.duration=0,this.totalDuration=0,this.repeat=0,this.playState="idle",this.finished=new Promise((O,T)=>{this.resolve=O,this.reject=T}),n=n||nn.easing,zd(n)){const O=n.createAnimation(r);n=O.easing,r=O.keyframes||r,o=O.duration||o}this.repeat=u,this.easing=iu(n)?Wo:n0(n),this.updateDuration(o);const S=DP(r,f,iu(n)?n.map(n0):Wo);this.tick=O=>{var T;a=a;let C=0;this.pauseTime!==void 0?C=this.pauseTime:C=(O-this.startTime)*this.rate,this.t=C,C/=1e3,C=Math.max(C-a,0),this.playState==="finished"&&this.pauseTime===void 0&&(C=this.totalDuration);const w=C/this.duration;let b=Math.floor(w),d=w%1;!d&&w>=1&&(d=1),d===1&&b--;const s=b%2;(g==="reverse"||g==="alternate"&&s||g==="alternate-reverse"&&!s)&&(d=1-d);const c=C>=this.totalDuration?1:Math.min(d,1),l=S(this.easing(c));t(l),this.pauseTime===void 0&&(this.playState==="finished"||C>=this.totalDuration+i)?(this.playState="finished",(T=this.resolve)===null||T===void 0||T.call(this,l)):this.playState!=="idle"&&(this.frameRequestId=requestAnimationFrame(this.tick))},m&&this.play()}play(){const t=performance.now();this.playState="running",this.pauseTime!==void 0?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t),this.cancelTimestamp=this.startTime,this.pauseTime=void 0,this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=this.t}finish(){this.playState="finished",this.tick(0)}stop(){var t;this.playState="idle",this.frameRequestId!==void 0&&cancelAnimationFrame(this.frameRequestId),(t=this.reject)===null||t===void 0||t.call(this,!1)}cancel(){this.stop(),this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t,this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){this.pauseTime!==void 0||this.rate===0?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}const tw=e=>LP(e)?a3(e):e,a3=([e,t,r,n])=>`cubic-bezier(${e}, ${t}, ${r}, ${n})`,rw=e=>document.createElement("div").animate(e,{duration:.001}),nw={cssRegisterProperty:()=>typeof CSS<"u"&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{rw({opacity:[1]})}catch{return!1}return!0},finished:()=>!!rw({opacity:[0,1]}).finished},mh={},Wc={};for(const e in nw)Wc[e]=()=>(mh[e]===void 0&&(mh[e]=nw[e]()),mh[e]);function i3(e,t){for(let r=0;rArray.isArray(e)?e:[e];function Vd(e){return bs[e]&&(e=bs[e]),Mf(e)?Rf(e):e}const Yi={get:(e,t)=>{t=Vd(t);let r=r0(t)?e.style.getPropertyValue(t):getComputedStyle(e)[t];if(!r&&r!==0){const n=vs.get(t);n&&(r=n.initialValue)}return r},set:(e,t,r)=>{t=Vd(t),r0(t)?e.style.setProperty(t,r):e.style[t]=r}};function UP(e,t=!0){if(!(!e||e.playState==="finished"))try{e.stop?e.stop():(t&&e.commitStyles(),e.cancel())}catch{}}function s3(){return window.__MOTION_DEV_TOOLS_RECORD}function If(e,t,r,n={}){const o=s3(),a=n.record!==!1&&o;let i,{duration:u=nn.duration,delay:f=nn.delay,endDelay:g=nn.endDelay,repeat:m=nn.repeat,easing:S=nn.easing,direction:O,offset:T,allowWebkitAcceleration:C=!1}=n;const w=rb(e);let b=Wc.waapi();const d=Mf(t);d&&YL(e,t);const s=Vd(t),c=VL(w.values,s),l=vs.get(s);return UP(c.animation,!(zd(S)&&c.generator)&&n.record!==!1),()=>{const h=()=>{var x,j;return(j=(x=Yi.get(e,s))!==null&&x!==void 0?x:l==null?void 0:l.initialValue)!==null&&j!==void 0?j:0};let y=i3(VP(r),h);if(zd(S)){const x=S.createAnimation(y,h,d,s,c);S=x.easing,x.keyframes!==void 0&&(y=x.keyframes),x.duration!==void 0&&(u=x.duration)}if(r0(s)&&(Wc.cssRegisterProperty()?XL(s):b=!1),b){l&&(y=y.map(k=>Qo(k)?l.toDefaultUnit(k):k)),y.length===1&&(!Wc.partialKeyframes()||a)&&y.unshift(h());const x={delay:oi.ms(f),duration:oi.ms(u),endDelay:oi.ms(g),easing:iu(S)?void 0:tw(S),direction:O,iterations:m+1,fill:"both"};i=e.animate({[s]:y,offset:T,easing:iu(S)?S.map(tw):void 0},x),i.finished||(i.finished=new Promise((k,N)=>{i.onfinish=k,i.oncancel=N}));const j=y[y.length-1];i.finished.then(()=>{Yi.set(e,s,j),i.cancel()}).catch(ob),C||(i.playbackRate=1.000001)}else if(d){y=y.map(j=>typeof j=="string"?parseFloat(j):j),y.length===1&&y.unshift(parseFloat(h()));const x=j=>{l&&(j=l.toDefaultUnit(j)),Yi.set(e,s,j)};i=new o3(x,y,Object.assign(Object.assign({},n),{duration:u,easing:S}))}else{const x=y[y.length-1];Yi.set(e,s,l&&Qo(x)?l.toDefaultUnit(x):x)}return a&&o(e,t,y,{duration:u,delay:f,easing:S,repeat:m,offset:T},"motion-one"),c.setAnimation(i),i}}const lb=(e,t)=>e[t]?Object.assign(Object.assign({},e),e[t]):Object.assign({},e);function Df(e,t){var r;return typeof e=="string"?t?((r=t[e])!==null&&r!==void 0||(t[e]=document.querySelectorAll(e)),e=t[e]):e=document.querySelectorAll(e):e instanceof Element&&(e=[e]),Array.from(e||[])}const l3=e=>e(),ub=(e,t,r=nn.duration)=>new Proxy({animations:e.map(l3).filter(Boolean),duration:r,options:t},c3),u3=e=>e.animations[0],c3={get:(e,t)=>{const r=u3(e);switch(t){case"duration":return e.duration;case"currentTime":return oi.s((r==null?void 0:r[t])||0);case"playbackRate":case"playState":return r==null?void 0:r[t];case"finished":return e.finished||(e.finished=Promise.all(e.animations.map(d3)).catch(ob)),e.finished;case"stop":return()=>{e.animations.forEach(n=>UP(n))};case"forEachNative":return n=>{e.animations.forEach(o=>n(o,e))};default:return typeof(r==null?void 0:r[t])>"u"?void 0:()=>e.animations.forEach(n=>n[t]())}},set:(e,t,r)=>{switch(t){case"currentTime":r=oi.ms(r);case"currentTime":case"playbackRate":for(let n=0;ne.finished;function f3(e=.1,{start:t=0,from:r=0,easing:n}={}){return(o,a)=>{const i=Qo(r)?r:p3(r,a),u=Math.abs(i-o);let f=e*u;if(n){const g=a*e;f=n0(n)(f/g)*g}return t+f}}function p3(e,t){if(e==="first")return 0;{const r=t-1;return e==="last"?r:r/2}}function WP(e,t,r){return typeof e=="function"?e(t,r):e}function h3(e,t,r={}){e=Df(e);const n=e.length,o=[];for(let a=0;at&&o.atIf(...a)).filter(Boolean);return ub(o,t,(r=n[0])===null||r===void 0?void 0:r[3].duration)}function y3(e,t={}){var{defaultOptions:r={}}=t,n=js(t,["defaultOptions"]);const o=[],a=new Map,i={},u=new Map;let f=0,g=0,m=0;for(let S=0;S"0",Y);A=q.easing,q.keyframes!==void 0&&(j=q.keyframes),q.duration!==void 0&&(N=q.duration)}const M=WP(w.delay,c,s)||0,D=g+M,L=D+N;let{offset:z=ib(j.length)}=k;z.length===1&&z[0]===0&&(z[1]=1);const V=length-j.length;V>0&&ab(z,V),j.length===1&&j.unshift(null),m3(x,j,A,z,D,L),b=Math.max(M+N,b),m=Math.max(L,m)}}f=g,g+=b}return a.forEach((S,O)=>{for(const T in S){const C=S[T];C.sort(b3);const w=[],b=[],d=[];for(let s=0;st/(2*Math.sqrt(e*r));function C3(e,t,r){return e=t||e>t&&r<=t}const $P=({stiffness:e=os.stiffness,damping:t=os.damping,mass:r=os.mass,from:n=0,to:o=1,velocity:a=0,restSpeed:i,restDistance:u}={})=>{a=a?oi.s(a):0;const f={done:!1,hasReachedTarget:!1,current:n,target:o},g=o-n,m=Math.sqrt(e/r)/1e3,S=S3(e,t,r),O=Math.abs(g)<5;i||(i=O?.01:2),u||(u=O?.005:.5);let T;if(S<1){const C=m*Math.sqrt(1-S*S);T=w=>o-Math.exp(-S*m*w)*((-a+S*m*g)/C*Math.sin(C*w)+g*Math.cos(C*w))}else T=C=>o-Math.exp(-m*C)*(g+(-a+m*g)*C);return C=>{f.current=T(C);const w=C===0?a:cb(T,C,f.current),b=Math.abs(w)<=i,d=Math.abs(o-f.current)<=u;return f.done=b&&d,f.hasReachedTarget=C3(n,o,f.current),f}},T3=({from:e=0,velocity:t=0,power:r=.8,decay:n=.325,bounceDamping:o,bounceStiffness:a,changeTarget:i,min:u,max:f,restDistance:g=.5,restSpeed:m})=>{n=oi.ms(n);const S={hasReachedTarget:!1,done:!1,current:e,target:e},O=x=>u!==void 0&&xf,T=x=>u===void 0?f:f===void 0||Math.abs(u-x)-C*Math.exp(-x/n),s=x=>b+d(x),c=x=>{const j=d(x),k=s(x);S.done=Math.abs(j)<=g,S.current=S.done?b:k};let l,h;const y=x=>{O(S.current)&&(l=x,h=$P({from:S.current,to:T(S.current),velocity:cb(s,x,S.current),damping:o,stiffness:a,restDistance:g,restSpeed:m}))};return y(0),x=>{let j=!1;return!h&&l===void 0&&(j=!0,c(x),y(x)),l!==void 0&&x>l?(S.hasReachedTarget=!0,h(x-l)):(S.hasReachedTarget=!1,!j&&c(x),S)}},bh=10,P3=1e4;function O3(e,t=Wo){let r,n=bh,o=e(0);const a=[t(o.current)];for(;!o.done&&n{const n=new Map,o=(i=0,u=100,f=0,g=!1)=>{const m=`${i}-${u}-${f}-${g}`;return n.has(m)||n.set(m,e(Object.assign({from:i,to:u,velocity:f,restSpeed:g?.05:2,restDistance:g?.01:.5},r))),n.get(m)},a=i=>(t.has(i)||t.set(i,O3(i)),t.get(i));return{createAnimation:(i,u,f,g,m)=>{var S,O;let T;const C=i.length;if(f&&C<=2&&i.every(k3)){const b=i[C-1],d=C===1?null:i[0];let s=0,c=0;const l=m==null?void 0:m.generator;if(l){const{animation:x,generatorStartTime:j}=m,k=(x==null?void 0:x.startTime)||j||0,N=(x==null?void 0:x.currentTime)||performance.now()-k,A=l(N).current;c=(S=d)!==null&&S!==void 0?S:A,(C===1||C===2&&i[0]===null)&&(s=cb(M=>l(M).current,N,A))}else c=(O=d)!==null&&O!==void 0?O:parseFloat(u());const h=o(c,b,s,g==null?void 0:g.includes("scale")),y=a(h);T=Object.assign(Object.assign({},y),{easing:"linear"}),m&&(m.generator=h,m.generatorStartTime=performance.now())}else T={easing:"ease",duration:a(o(0,100)).overshootDuration};return T}}}}const k3=e=>typeof e!="string",N3=HP($P),E3=HP(T3),j3={any:0,all:1};function qP(e,t,{root:r,margin:n,amount:o="any"}={}){if(typeof IntersectionObserver>"u")return()=>{};const a=Df(e),i=new WeakMap,u=g=>{g.forEach(m=>{const S=i.get(m.target);if(m.isIntersecting!==!!S)if(m.isIntersecting){const O=t(m);typeof O=="function"?i.set(m.target,O):f.unobserve(m.target)}else S&&(S(m),i.delete(m.target))})},f=new IntersectionObserver(u,{root:r,rootMargin:n,threshold:typeof o=="number"?o:j3[o]});return a.forEach(g=>f.observe(g)),()=>f.disconnect()}const $c=new WeakMap;let pa;function A3(e,t){if(t){const{inlineSize:r,blockSize:n}=t[0];return{width:r,height:n}}else return e instanceof SVGElement&&"getBBox"in e?e.getBBox():{width:e.offsetWidth,height:e.offsetHeight}}function R3({target:e,contentRect:t,borderBoxSize:r}){var n;(n=$c.get(e))===null||n===void 0||n.forEach(o=>{o({target:e,contentSize:t,get size(){return A3(e,r)}})})}function M3(e){e.forEach(R3)}function I3(){typeof ResizeObserver>"u"||(pa=new ResizeObserver(M3))}function D3(e,t){pa||I3();const r=Df(e);return r.forEach(n=>{let o=$c.get(n);o||(o=new Set,$c.set(n,o)),o.add(t),pa==null||pa.observe(n)}),()=>{r.forEach(n=>{const o=$c.get(n);o==null||o.delete(t),o!=null&&o.size||pa==null||pa.unobserve(n)})}}const Hc=new Set;let Rl;function L3(){Rl=()=>{const e={width:window.innerWidth,height:window.innerHeight},t={target:window,size:e,contentSize:e};Hc.forEach(r=>r(t))},window.addEventListener("resize",Rl)}function F3(e){return Hc.add(e),Rl||L3(),()=>{Hc.delete(e),!Hc.size&&Rl&&(Rl=void 0)}}function GP(e,t){return typeof e=="function"?F3(e):D3(e,t)}const z3=50,aw=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),B3=()=>({time:0,x:aw(),y:aw()}),V3={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function iw(e,t,r,n){const o=r[t],{length:a,position:i}=V3[t],u=o.current,f=r.time;o.current=e["scroll"+i],o.scrollLength=e["scroll"+a]-e["client"+a],o.offset.length=0,o.offset[0]=0,o.offset[1]=o.scrollLength,o.progress=Af(0,o.scrollLength,o.current);const g=n-f;o.velocity=g>z3?0:FP(o.current-u,g)}function U3(e,t,r){iw(e,"x",t,r),iw(e,"y",t,r),t.time=r}function W3(e,t){let r={x:0,y:0},n=e;for(;n&&n!==t;)if(n instanceof HTMLElement)r.x+=n.offsetLeft,r.y+=n.offsetTop,n=n.offsetParent;else if(n instanceof SVGGraphicsElement&&"getBBox"in n){const{top:o,left:a}=n.getBBox();for(r.x+=a,r.y+=o;n&&n.tagName!=="svg";)n=n.parentNode}return r}const KP={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},o0={start:0,center:.5,end:1};function sw(e,t,r=0){let n=0;if(o0[e]!==void 0&&(e=o0[e]),sb(e)){const o=parseFloat(e);e.endsWith("px")?n=o:e.endsWith("%")?e=o/100:e.endsWith("vw")?n=o/100*document.documentElement.clientWidth:e.endsWith("vh")?n=o/100*document.documentElement.clientHeight:e=o}return Qo(e)&&(n=t*e),r+n}const $3=[0,0];function H3(e,t,r,n){let o=Array.isArray(e)?e:$3,a=0,i=0;return Qo(e)?o=[e,e]:sb(e)&&(e=e.trim(),e.includes(" ")?o=e.split(" "):o=[e,o0[e]?e:"0"]),a=sw(o[0],r,n),i=sw(o[1],t),a-i}const q3={x:0,y:0};function G3(e,t,r){let{offset:n=KP.All}=r;const{target:o=e,axis:a="y"}=r,i=a==="y"?"height":"width",u=o!==e?W3(o,e):q3,f=o===e?{width:e.scrollWidth,height:e.scrollHeight}:{width:o.clientWidth,height:o.clientHeight},g={width:e.clientWidth,height:e.clientHeight};t[a].offset.length=0;let m=!t[a].interpolate;const S=n.length;for(let O=0;OK3(e,n.target,r),update:a=>{U3(e,r,a),(n.offset||n.target)&&G3(e,r,n)},notify:typeof t=="function"?()=>t(r):Q3(t,r[o])}}function Q3(e,t){return e.pause(),e.forEachNative((r,{easing:n})=>{var o,a;if(r.updateDuration)n||(r.easing=Wo),r.updateDuration(1);else{const i={duration:1e3};n||(i.easing="linear"),(a=(o=r.effect)===null||o===void 0?void 0:o.updateTiming)===null||a===void 0||a.call(o,i)}}),()=>{e.currentTime=t.progress}}const dl=new WeakMap,lw=new WeakMap,vh=new WeakMap,uw=e=>e===document.documentElement?window:e;function X3(e,t={}){var{container:r=document.documentElement}=t,n=js(t,["container"]);let o=vh.get(r);o||(o=new Set,vh.set(r,o));const a=B3(),i=Y3(r,e,a,n);if(o.add(i),!dl.has(r)){const g=()=>{const S=performance.now();for(const O of o)O.measure();for(const O of o)O.update(S);for(const O of o)O.notify()};dl.set(r,g);const m=uw(r);window.addEventListener("resize",g,{passive:!0}),r!==document.documentElement&&lw.set(r,GP(r,g)),m.addEventListener("scroll",g,{passive:!0})}const u=dl.get(r),f=requestAnimationFrame(u);return()=>{var g;typeof e!="function"&&e.stop(),cancelAnimationFrame(f);const m=vh.get(r);if(!m||(m.delete(i),m.size))return;const S=dl.get(r);dl.delete(r),S&&(uw(r).removeEventListener("scroll",S),(g=lw.get(r))===null||g===void 0||g(),window.removeEventListener("resize",S))}}function Z3(e,t){return typeof e!=typeof t?!0:Array.isArray(e)&&Array.isArray(t)?!J3(e,t):e!==t}function J3(e,t){const r=t.length;if(r!==e.length)return!1;for(let n=0;ne.getDepth()-t.getDepth(),oF=e=>e.animateUpdates(),dw=e=>e.next(),fw=(e,t)=>new CustomEvent(e,{detail:{target:t}});function a0(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:{originalEvent:r}}))}function pw(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:{originalEntry:r}}))}const aF={isActive:e=>!!e.inView,subscribe:(e,{enable:t,disable:r},{inViewOptions:n={}})=>{const{once:o}=n,a=js(n,["once"]);return qP(e,i=>{if(t(),pw(e,"viewenter",i),!o)return u=>{r(),pw(e,"viewleave",u)}},a)}},hw=(e,t,r)=>n=>{n.pointerType&&n.pointerType!=="mouse"||(r(),a0(e,t,n))},iF={isActive:e=>!!e.hover,subscribe:(e,{enable:t,disable:r})=>{const n=hw(e,"hoverstart",t),o=hw(e,"hoverend",r);return e.addEventListener("pointerenter",n),e.addEventListener("pointerleave",o),()=>{e.removeEventListener("pointerenter",n),e.removeEventListener("pointerleave",o)}}},sF={isActive:e=>!!e.press,subscribe:(e,{enable:t,disable:r})=>{const n=a=>{r(),a0(e,"pressend",a),window.removeEventListener("pointerup",n)},o=a=>{t(),a0(e,"pressstart",a),window.addEventListener("pointerup",n)};return e.addEventListener("pointerdown",o),()=>{e.removeEventListener("pointerdown",o),window.removeEventListener("pointerup",n)}}},qc={inView:aF,hover:iF,press:sF},gw=["initial","animate",...Object.keys(qc),"exit"],i0=new WeakMap;function lF(e={},t){let r,n=t?t.getDepth()+1:0;const o={initial:!0,animate:!0},a={},i={};for(const w of gw)i[w]=typeof e[w]=="string"?e[w]:t==null?void 0:t.getContext()[w];const u=e.initial===!1?"animate":"initial";let f=cw(e[u]||i[u],e.variants)||{},g=js(f,["transition"]);const m=Object.assign({},g);function*S(){var w,b;const d=g;g={};const s={};for(const x of gw){if(!o[x])continue;const j=cw(e[x]);if(j)for(const k in j)k!=="transition"&&(g[k]=j[k],s[k]=lb((b=(w=j.transition)!==null&&w!==void 0?w:e.transition)!==null&&b!==void 0?b:{},k))}const c=new Set([...Object.keys(g),...Object.keys(d)]),l=[];c.forEach(x=>{var j;g[x]===void 0&&(g[x]=m[x]),Z3(d[x],g[x])&&((j=m[x])!==null&&j!==void 0||(m[x]=Yi.get(r,x)),l.push(If(r,x,g[x],s[x])))}),yield;const h=l.map(x=>x()).filter(Boolean);if(!h.length)return;const y=g;r.dispatchEvent(fw("motionstart",y)),Promise.all(h.map(x=>x.finished)).then(()=>{r.dispatchEvent(fw("motioncomplete",y))}).catch(ob)}const O=(w,b)=>()=>{o[w]=b,yh(C)},T=()=>{for(const w in qc){const b=qc[w].isActive(e),d=a[w];b&&!d?a[w]=qc[w].subscribe(r,{enable:O(w,!0),disable:O(w,!1)},e):!b&&d&&(d(),delete a[w])}},C={update:w=>{r&&(e=w,T(),yh(C))},setActive:(w,b)=>{r&&(o[w]=b,yh(C))},animateUpdates:S,getDepth:()=>n,getTarget:()=>g,getOptions:()=>e,getContext:()=>i,mount:w=>(r=w,i0.set(r,C),T(),()=>{i0.delete(r),rF(C);for(const b in a)a[b]()}),isMounted:()=>!!r};return C}function YP(e){const t={},r=[];for(let n in e){const o=e[n];Mf(n)&&(bs[n]&&(n=bs[n]),r.push(n),n=Rf(n));let a=Array.isArray(o)?o[0]:o;const i=vs.get(n);i&&(a=Qo(o)?i.toDefaultUnit(o):o),t[n]=a}return r.length&&(t.transform=zP(r)),t}const uF=e=>`-${e.toLowerCase()}`,cF=e=>e.replace(/[A-Z]/g,uF);function dF(e={}){const t=YP(e);let r="";for(const n in t)r+=n.startsWith("--")?n:cF(n),r+=`: ${t[n]}; `;return r}const fF=Object.freeze(Object.defineProperty({__proto__:null,ScrollOffset:KP,animate:h3,animateStyle:If,createMotionState:lF,createStyleString:dF,createStyles:YP,getAnimationData:rb,getStyleName:Vd,glide:E3,inView:qP,mountedStates:i0,resize:GP,scroll:X3,spring:N3,stagger:f3,style:Yi,timeline:v3,withControls:ub},Symbol.toStringTag,{value:"Module"})),pF=cu(fF);function hF(e){var t={};return function(r){return t[r]===void 0&&(t[r]=e(r)),t[r]}}var gF=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,mF=hF(function(e){return gF.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91});const bF=Object.freeze(Object.defineProperty({__proto__:null,default:mF},Symbol.toStringTag,{value:"Module"})),vF=cu(bF);(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=QT,r=P,n=ZT,o=xr,a=pt,i=wi,u=pF;function f(p){return p&&typeof p=="object"&&"default"in p?p:{default:p}}function g(p){if(p&&p.__esModule)return p;var _=Object.create(null);return p&&Object.keys(p).forEach(function(E){if(E!=="default"){var R=Object.getOwnPropertyDescriptor(p,E);Object.defineProperty(_,E,R.get?R:{enumerable:!0,get:function(){return p[E]}})}}),_.default=p,Object.freeze(_)}var m=g(r),S=f(r),O=f(i),T="production",C=typeof process>"u"||process.env===void 0?T:"production",w=function(p){return{isEnabled:function(_){return p.some(function(E){return!!_[E]})}}},b={measureLayout:w(["layout","layoutId","drag"]),animation:w(["animate","exit","variants","whileHover","whileTap","whileFocus","whileDrag","whileInView"]),exit:w(["exit"]),drag:w(["drag","dragControls"]),focus:w(["whileFocus"]),hover:w(["whileHover","onHoverStart","onHoverEnd"]),tap:w(["whileTap","onTap","onTapStart","onTapCancel"]),pan:w(["onPan","onPanStart","onPanSessionStart","onPanEnd"]),inView:w(["whileInView","onViewportEnter","onViewportLeave"])};function d(p){for(var _ in p)p[_]!==null&&(_==="projectionNodeConstructor"?b.projectionNodeConstructor=p[_]:b[_].Component=p[_])}var s=r.createContext({strict:!1}),c=Object.keys(b),l=c.length;function h(p,_,E){var R=[],I=r.useContext(s);if(!_)return null;C!=="production"&&E&&I.strict&&n.invariant(!1,"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.");for(var U=0;U"u")return _;var E=new Map;return new Proxy(_,{get:function(R,I){return E.has(I)||E.set(I,_(I)),E.get(I)}})}var it=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","svg","switch","symbol","text","tspan","use","view"];function mt(p){return typeof p!="string"||p.includes("-")?!1:!!(it.indexOf(p)>-1||/[A-Z]/.test(p))}var We={};function rt(p){Object.assign(We,p)}var yt=["","X","Y","Z"],je=["translate","scale","rotate","skew"],Ke=["transformPerspective","x","y","z"];je.forEach(function(p){return yt.forEach(function(_){return Ke.push(p+_)})});function Te(p,_){return Ke.indexOf(p)-Ke.indexOf(_)}var oe=new Set(Ke);function ge(p){return oe.has(p)}var te=new Set(["originX","originY","originZ"]);function ye(p){return te.has(p)}function ie(p,_){var E=_.layout,R=_.layoutId;return ge(p)||ye(p)||(E||R!==void 0)&&(!!We[p]||p==="opacity")}var se=function(p){return!!(p!==null&&typeof p=="object"&&p.getVelocity)},fe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"};function Oe(p,_,E,R){var I=p.transform,U=p.transformKeys,$=_.enableHardwareAcceleration,F=$===void 0?!0:$,G=_.allowTransformNone,Q=G===void 0?!0:G,Z="";U.sort(Te);for(var ne=!1,ae=U.length,le=0;le"u"?ip:ap;Q(G,F.current,_,$)}var op={some:0,all:1};function ap(p,_,E,R){var I=R.root,U=R.margin,$=R.amount,F=$===void 0?"some":$,G=R.once;r.useEffect(function(){if(p){var Q={root:I==null?void 0:I.current,rootMargin:U,threshold:typeof F=="number"?F:op[F]},Z=function(ne){var ae,le=ne.isIntersecting;if(_.isInView!==le&&(_.isInView=le,!(G&&!le&&_.hasEnteredView))){le&&(_.hasEnteredView=!0),(ae=E.animationState)===null||ae===void 0||ae.setActive(e.AnimationType.InView,le);var ce=E.getProps(),we=le?ce.onViewportEnter:ce.onViewportLeave;we==null||we(ne)}};return np(E.getInstance(),Q,Z)}},[p,I,U,F])}function ip(p,_,E,R){var I=R.fallback,U=I===void 0?!0:I;r.useEffect(function(){!p||!U||(C!=="production"&&ra(!1,"IntersectionObserver not available on this device. whileInView animations will trigger on mount."),requestAnimationFrame(function(){var $;_.hasEnteredView=!0;var F=E.getProps().onViewportEnter;F==null||F(null),($=E.animationState)===null||$===void 0||$.setActive(e.AnimationType.InView,!0)}))},[p])}var xo=function(p){return function(_){return p(_),null}},Gs={inView:xo(ki),tap:xo(Jr),focus:xo(nr),hover:xo(ep)},Iu=0,Pe=function(){return Iu++},Ve=function(){return ve(Pe)};function Be(){var p=r.useContext(k);if(p===null)return[!0,null];var _=p.isPresent,E=p.onExitComplete,R=p.register,I=Ve();r.useEffect(function(){return R(I)},[]);var U=function(){return E==null?void 0:E(I)};return!_&&E?[!1,U]:[!0]}function Le(){return at(r.useContext(k))}function at(p){return p===null?!0:p.isPresent}function Bt(p,_){if(!Array.isArray(_))return!1;var E=_.length;if(E!==p.length)return!1;for(var R=0;R-1&&p.splice(E,1)}function _N(p,_,E){var R=t.__read(p),I=R.slice(0),U=_<0?I.length+_:_;if(U>=0&&Ust&&jn,la=Array.isArray(Jt)?Jt:[Jt],An=la.reduce(U,{});Hr===!1&&(An={});var el=Ft.prevResolvedValues,ji=el===void 0?{}:el,qu=t.__assign(t.__assign({},ji),An),Ai=function(ht){sa=!0,De.delete(ht),Ft.needsAnimating[ht]=!0};for(var en in qu){var Vt=An[en],Ze=ji[en];He.hasOwnProperty(en)||(Vt!==Ze?Sr(Vt)&&Sr(Ze)?!Bt(Vt,Ze)||ia?Ai(en):Ft.protectedKeys[en]=!0:Vt!==void 0?Ai(en):De.add(en):Vt!==void 0&&De.has(en)?Ai(en):Ft.protectedKeys[en]=!0)}Ft.prevProp=Jt,Ft.prevResolvedValues=An,Ft.isActive&&(He=t.__assign(t.__assign({},He),An)),I&&p.blockInitialAnimation&&(sa=!1),sa&&!gn&&we.push.apply(we,t.__spreadArray([],t.__read(la.map(function(ht){return{animation:ht,options:t.__assign({type:Tt},Z)}})),!1))},_t=0;_t=3;if(!(!le&&!ce)){var we=ae.point,De=i.getFrameData().timestamp;I.history.push(t.__assign(t.__assign({},we),{timestamp:De}));var He=I.handlers,st=He.onStart,vt=He.onMove;le||(st&&st(I.lastMoveEvent,ae),I.startEvent=I.lastMoveEvent),vt&&vt(I.lastMoveEvent,ae)}}},this.handlePointerMove=function(ae,le){if(I.lastMoveEvent=ae,I.lastMoveEventInfo=wp(le,I.transformPagePoint),Lt(ae)&&ae.buttons===0){I.handlePointerUp(ae,le);return}O.default.update(I.updatePoint,!0)},this.handlePointerUp=function(ae,le){I.end();var ce=I.handlers,we=ce.onEnd,De=ce.onSessionEnd,He=_p(wp(le,I.transformPagePoint),I.history);I.startEvent&&we&&we(ae,He),De&&De(ae,He)},!(Zr(_)&&_.touches.length>1)){this.handlers=E,this.transformPagePoint=$;var F=Wa(_),G=wp(F,this.transformPagePoint),Q=G.point,Z=i.getFrameData().timestamp;this.history=[t.__assign(t.__assign({},Q),{timestamp:Z})];var ne=E.onSessionStart;ne&&ne(_,_p(G,this.history)),this.removeListeners=a.pipe(Mo(window,"pointermove",this.handlePointerMove),Mo(window,"pointerup",this.handlePointerUp),Mo(window,"pointercancel",this.handlePointerUp))}}return p.prototype.updateHandlers=function(_){this.handlers=_},p.prototype.end=function(){this.removeListeners&&this.removeListeners(),i.cancelSync.update(this.updatePoint)},p}();function wp(p,_){return _?{point:_(p.point)}:p}function Gb(p,_){return{x:p.x-_.x,y:p.y-_.y}}function _p(p,_){var E=p.point;return{point:E,delta:Gb(E,Kb(_)),offset:Gb(E,BN(_)),velocity:VN(_,.1)}}function BN(p){return p[0]}function Kb(p){return p[p.length-1]}function VN(p,_){if(p.length<2)return{x:0,y:0};for(var E=p.length-1,R=null,I=Kb(p);E>=0&&(R=p[E],!(I.timestamp-R.timestamp>Ot(_)));)E--;if(!R)return{x:0,y:0};var U=(I.timestamp-R.timestamp)/1e3;if(U===0)return{x:0,y:0};var $={x:(I.x-R.x)/U,y:(I.y-R.y)/U};return $.x===1/0&&($.x=0),$.y===1/0&&($.y=0),$}function wo(p){return p.max-p.min}function Yb(p,_,E){return _===void 0&&(_=0),E===void 0&&(E=.01),a.distance(p,_)I&&(p=E?a.mix(I,p,E.max):Math.min(p,I)),p}function Jb(p,_,E){return{min:_!==void 0?p.min+_:void 0,max:E!==void 0?p.max+E-(p.max-p.min):void 0}}function $N(p,_){var E=_.top,R=_.left,I=_.bottom,U=_.right;return{x:Jb(p.x,R,U),y:Jb(p.y,E,I)}}function ev(p,_){var E,R=_.min-p.min,I=_.max-p.max;return _.max-_.minR?E=a.progress(_.min,_.max-R,p.min):R>I&&(E=a.progress(p.min,p.max-I,_.min)),a.clamp(0,1,E)}function GN(p,_){var E={};return _.min!==void 0&&(E.min=_.min-p.min),_.max!==void 0&&(E.max=_.max-p.min),E}var Sp=.35;function KN(p){return p===void 0&&(p=Sp),p===!1?p=0:p===!0&&(p=Sp),{x:tv(p,"left","right"),y:tv(p,"top","bottom")}}function tv(p,_,E){return{min:rv(p,_),max:rv(p,E)}}function rv(p,_){var E;return typeof p=="number"?p:(E=p[_])!==null&&E!==void 0?E:0}var nv=function(){return{translate:0,scale:1,origin:0,originPoint:0}},Zs=function(){return{x:nv(),y:nv()}},ov=function(){return{min:0,max:0}},Tr=function(){return{x:ov(),y:ov()}};function _o(p){return[p("x"),p("y")]}function av(p){var _=p.top,E=p.left,R=p.right,I=p.bottom;return{x:{min:E,max:R},y:{min:_,max:I}}}function YN(p){var _=p.x,E=p.y;return{top:E.min,right:_.max,bottom:E.max,left:_.min}}function QN(p,_){if(!_)return p;var E=_({x:p.left,y:p.top}),R=_({x:p.right,y:p.bottom});return{top:E.y,left:E.x,bottom:R.y,right:R.x}}function Cp(p){return p===void 0||p===1}function iv(p){var _=p.scale,E=p.scaleX,R=p.scaleY;return!Cp(_)||!Cp(E)||!Cp(R)}function na(p){return iv(p)||sv(p.x)||sv(p.y)||p.z||p.rotate||p.rotateX||p.rotateY}function sv(p){return p&&p!=="0%"}function zu(p,_,E){var R=p-E,I=_*R;return E+I}function lv(p,_,E,R,I){return I!==void 0&&(p=zu(p,I,R)),zu(p,E,R)+_}function Tp(p,_,E,R,I){_===void 0&&(_=0),E===void 0&&(E=1),p.min=lv(p.min,_,E,R,I),p.max=lv(p.max,_,E,R,I)}function uv(p,_){var E=_.x,R=_.y;Tp(p.x,E.translate,E.scale,E.originPoint),Tp(p.y,R.translate,R.scale,R.originPoint)}function XN(p,_,E,R){var I,U;R===void 0&&(R=!1);var $=E.length;if($){_.x=_.y=1;for(var F,G,Q=0;Q<$;Q++)F=E[Q],G=F.projectionDelta,((U=(I=F.instance)===null||I===void 0?void 0:I.style)===null||U===void 0?void 0:U.display)!=="contents"&&(R&&F.options.layoutScroll&&F.scroll&&F!==F.root&&Ni(p,{x:-F.scroll.x,y:-F.scroll.y}),G&&(_.x*=G.x.scale,_.y*=G.y.scale,uv(p,G)),R&&na(F.latestValues)&&Ni(p,F.latestValues))}}function oa(p,_){p.min=p.min+_,p.max=p.max+_}function cv(p,_,E){var R=t.__read(E,3),I=R[0],U=R[1],$=R[2],F=_[$]!==void 0?_[$]:.5,G=a.mix(p.min,p.max,F);Tp(p,_[I],_[U],G,_.scale)}var ZN=["x","scaleX","originX"],JN=["y","scaleY","originY"];function Ni(p,_){cv(p.x,_,ZN),cv(p.y,_,JN)}function dv(p,_){return av(QN(p.getBoundingClientRect(),_))}function eE(p,_,E){var R=dv(p,E),I=_.scroll;return I&&(oa(R.x,I.x),oa(R.y,I.y)),R}var tE=new WeakMap,rE=function(){function p(_){this.openGlobalLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Tr(),this.visualElement=_}return p.prototype.start=function(_,E){var R=this,I=E===void 0?{}:E,U=I.snapToCursor,$=U===void 0?!1:U;if(this.visualElement.isPresent!==!1){var F=function(ne){R.stopAnimation(),$&&R.snapToCursor(Wa(ne,"page").point)},G=function(ne,ae){var le,ce=R.getProps(),we=ce.drag,De=ce.dragPropagation,He=ce.onDragStart;we&&!De&&(R.openGlobalLock&&R.openGlobalLock(),R.openGlobalLock=Zf(we),!R.openGlobalLock)||(R.isDragging=!0,R.currentDirection=null,R.resolveConstraints(),R.visualElement.projection&&(R.visualElement.projection.isAnimationBlocked=!0,R.visualElement.projection.target=void 0),_o(function(st){var vt,_t,Ct=R.getAxisMotionValue(st).get()||0;if(o.percent.test(Ct)){var $t=(_t=(vt=R.visualElement.projection)===null||vt===void 0?void 0:vt.layout)===null||_t===void 0?void 0:_t.actual[st];if($t){var Gt=wo($t);Ct=Gt*(parseFloat(Ct)/100)}}R.originPoint[st]=Ct}),He==null||He(ne,ae),(le=R.visualElement.animationState)===null||le===void 0||le.setActive(e.AnimationType.Drag,!0))},Q=function(ne,ae){var le=R.getProps(),ce=le.dragPropagation,we=le.dragDirectionLock,De=le.onDirectionLock,He=le.onDrag;if(!(!ce&&!R.openGlobalLock)){var st=ae.offset;if(we&&R.currentDirection===null){R.currentDirection=nE(st),R.currentDirection!==null&&(De==null||De(R.currentDirection));return}R.updateAxis("x",ae.point,st),R.updateAxis("y",ae.point,st),R.visualElement.syncRender(),He==null||He(ne,ae)}},Z=function(ne,ae){return R.stop(ne,ae)};this.panSession=new qb(_,{onSessionStart:F,onStart:G,onMove:Q,onSessionEnd:Z},{transformPagePoint:this.visualElement.getTransformPagePoint()})}},p.prototype.stop=function(_,E){var R=this.isDragging;if(this.cancel(),!!R){var I=E.velocity;this.startAnimation(I);var U=this.getProps().onDragEnd;U==null||U(_,E)}},p.prototype.cancel=function(){var _,E;this.isDragging=!1,this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!1),(_=this.panSession)===null||_===void 0||_.end(),this.panSession=void 0;var R=this.getProps().dragPropagation;!R&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),(E=this.visualElement.animationState)===null||E===void 0||E.setActive(e.AnimationType.Drag,!1)},p.prototype.updateAxis=function(_,E,R){var I=this.getProps().drag;if(!(!R||!Bu(_,I,this.currentDirection))){var U=this.getAxisMotionValue(_),$=this.originPoint[_]+R[_];this.constraints&&this.constraints[_]&&($=WN($,this.constraints[_],this.elastic[_])),U.set($)}},p.prototype.resolveConstraints=function(){var _=this,E=this.getProps(),R=E.dragConstraints,I=E.dragElastic,U=(this.visualElement.projection||{}).layout,$=this.constraints;R&&q(R)?this.constraints||(this.constraints=this.resolveRefConstraints()):R&&U?this.constraints=$N(U.actual,R):this.constraints=!1,this.elastic=KN(I),$!==this.constraints&&U&&this.constraints&&!this.hasMutatedConstraints&&_o(function(F){_.getAxisMotionValue(F)&&(_.constraints[F]=GN(U.actual[F],_.constraints[F]))})},p.prototype.resolveRefConstraints=function(){var _=this.getProps(),E=_.dragConstraints,R=_.onMeasureDragConstraints;if(!E||!q(E))return!1;var I=E.current;n.invariant(I!==null,"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.");var U=this.visualElement.projection;if(!U||!U.layout)return!1;var $=eE(I,U.root,this.visualElement.getTransformPagePoint()),F=HN(U.layout.actual,$);if(R){var G=R(YN(F));this.hasMutatedConstraints=!!G,G&&(F=av(G))}return F},p.prototype.startAnimation=function(_){var E=this,R=this.getProps(),I=R.drag,U=R.dragMomentum,$=R.dragElastic,F=R.dragTransition,G=R.dragSnapToOrigin,Q=R.onDragTransitionEnd,Z=this.constraints||{},ne=_o(function(ae){var le;if(Bu(ae,I,E.currentDirection)){var ce=(le=Z==null?void 0:Z[ae])!==null&&le!==void 0?le:{};G&&(ce={min:0,max:0});var we=$?200:1e6,De=$?40:1e7,He=t.__assign(t.__assign({type:"inertia",velocity:U?_[ae]:0,bounceStiffness:we,bounceDamping:De,timeConstant:750,restDelta:1,restSpeed:10},F),ce);return E.startAxisValueAnimation(ae,He)}});return Promise.all(ne).then(Q)},p.prototype.startAxisValueAnimation=function(_,E){var R=this.getAxisMotionValue(_);return fp(_,R,0,E)},p.prototype.stopAnimation=function(){var _=this;_o(function(E){return _.getAxisMotionValue(E).stop()})},p.prototype.getAxisMotionValue=function(_){var E,R,I="_drag"+_.toUpperCase(),U=this.visualElement.getProps()[I];return U||this.visualElement.getValue(_,(R=(E=this.visualElement.getProps().initial)===null||E===void 0?void 0:E[_])!==null&&R!==void 0?R:0)},p.prototype.snapToCursor=function(_){var E=this;_o(function(R){var I=E.getProps().drag;if(Bu(R,I,E.currentDirection)){var U=E.visualElement.projection,$=E.getAxisMotionValue(R);if(U&&U.layout){var F=U.layout.actual[R],G=F.min,Q=F.max;$.set(_[R]-a.mix(G,Q,.5))}}})},p.prototype.scalePositionWithinConstraints=function(){var _=this,E,R=this.getProps(),I=R.drag,U=R.dragConstraints,$=this.visualElement.projection;if(!(!q(U)||!$||!this.constraints)){this.stopAnimation();var F={x:0,y:0};_o(function(Q){var Z=_.getAxisMotionValue(Q);if(Z){var ne=Z.get();F[Q]=qN({min:ne,max:ne},_.constraints[Q])}});var G=this.visualElement.getProps().transformTemplate;this.visualElement.getInstance().style.transform=G?G({},""):"none",(E=$.root)===null||E===void 0||E.updateScroll(),$.updateLayout(),this.resolveConstraints(),_o(function(Q){if(Bu(Q,I,null)){var Z=_.getAxisMotionValue(Q),ne=_.constraints[Q],ae=ne.min,le=ne.max;Z.set(a.mix(ae,le,F[Q]))}})}},p.prototype.addListeners=function(){var _=this,E;tE.set(this.visualElement,this);var R=this.visualElement.getInstance(),I=Mo(R,"pointerdown",function(Q){var Z=_.getProps(),ne=Z.drag,ae=Z.dragListener,le=ae===void 0?!0:ae;ne&&le&&_.start(Q)}),U=function(){var Q=_.getProps().dragConstraints;q(Q)&&(_.constraints=_.resolveRefConstraints())},$=this.visualElement.projection,F=$.addEventListener("measure",U);$&&!$.layout&&((E=$.root)===null||E===void 0||E.updateScroll(),$.updateLayout()),U();var G=wt(window,"resize",function(){return _.scalePositionWithinConstraints()});return $.addEventListener("didUpdate",function(Q){var Z=Q.delta,ne=Q.hasLayoutChanged;_.isDragging&&ne&&(_o(function(ae){var le=_.getAxisMotionValue(ae);le&&(_.originPoint[ae]+=Z[ae].translate,le.set(le.get()+Z[ae].translate))}),_.visualElement.syncRender())}),function(){G(),I(),F()}},p.prototype.getProps=function(){var _=this.visualElement.getProps(),E=_.drag,R=E===void 0?!1:E,I=_.dragDirectionLock,U=I===void 0?!1:I,$=_.dragPropagation,F=$===void 0?!1:$,G=_.dragConstraints,Q=G===void 0?!1:G,Z=_.dragElastic,ne=Z===void 0?Sp:Z,ae=_.dragMomentum,le=ae===void 0?!0:ae;return t.__assign(t.__assign({},_),{drag:R,dragDirectionLock:U,dragPropagation:F,dragConstraints:Q,dragElastic:ne,dragMomentum:le})},p}();function Bu(p,_,E){return(_===!0||_===p)&&(E===null||E===p)}function nE(p,_){_===void 0&&(_=10);var E=null;return Math.abs(p.y)>_?E="y":Math.abs(p.x)>_&&(E="x"),E}function oE(p){var _=p.dragControls,E=p.visualElement,R=ve(function(){return new rE(E)});r.useEffect(function(){return _&&_.subscribe(R)},[R,_]),r.useEffect(function(){return R.addListeners()},[R])}function aE(p){var _=p.onPan,E=p.onPanStart,R=p.onPanEnd,I=p.onPanSessionStart,U=p.visualElement,$=_||E||R||I,F=r.useRef(null),G=r.useContext(y).transformPagePoint,Q={onSessionStart:I,onStart:E,onMove:_,onEnd:function(ne,ae){F.current=null,R&&R(ne,ae)}};r.useEffect(function(){F.current!==null&&F.current.updateHandlers(Q)});function Z(ne){F.current=new qb(ne,Q,{transformPagePoint:G})}Ws(U,"pointerdown",$&&Z),Gn(function(){return F.current&&F.current.end()})}var fv={pan:xo(aE),drag:xo(oE)},Vu=["LayoutMeasure","BeforeLayoutMeasure","LayoutUpdate","ViewportBoxUpdate","Update","Render","AnimationComplete","LayoutAnimationComplete","AnimationStart","LayoutAnimationStart","SetAxisTarget","Unmount"];function iE(){var p=Vu.map(function(){return new Ks}),_={},E={clearAllListeners:function(){return p.forEach(function(R){return R.clear()})},updatePropListeners:function(R){Vu.forEach(function(I){var U,$="on"+I,F=R[$];(U=_[I])===null||U===void 0||U.call(_),F&&(_[I]=E[$](F))})}};return p.forEach(function(R,I){E["on"+Vu[I]]=function(U){return R.add(U)},E["notify"+Vu[I]]=function(){for(var U=[],$=0;$=0?window.pageYOffset:null,Q=bE(_,p,F);return U.length&&U.forEach(function(Z){var ne=t.__read(Z,2),ae=ne[0],le=ne[1];p.getValue(ae).set(le)}),p.syncRender(),G!==null&&window.scrollTo({top:G}),{target:Q,transitionEnd:R}}else return{target:_,transitionEnd:R}};function yE(p,_,E,R){return pE(_)?vE(p,_,E,R):{target:_,transitionEnd:R}}var xE=function(p,_,E,R){var I=dE(p,_,R);return _=I.target,R=I.transitionEnd,yE(p,_,E,R)};function wE(p){return window.getComputedStyle(p)}var wv={treeType:"dom",readValueFromInstance:function(p,_){if(ge(_)){var E=lp(_);return E&&E.default||0}else{var R=wE(p);return(Ue(_)?R.getPropertyValue(_):R[_])||0}},sortNodePosition:function(p,_){return p.compareDocumentPosition(_)&2?1:-1},getBaseTarget:function(p,_){var E;return(E=p.style)===null||E===void 0?void 0:E[_]},measureViewportBox:function(p,_){var E=_.transformPagePoint;return dv(p,E)},resetTransform:function(p,_,E){var R=E.transformTemplate;_.style.transform=R?R({},""):"none",p.scheduleRender()},restoreTransform:function(p,_){p.style.transform=_.style.transform},removeValueFromRenderState:function(p,_){var E=_.vars,R=_.style;delete E[p],delete R[p]},makeTargetAnimatable:function(p,_,E,R){var I=E.transformValues;R===void 0&&(R=!0);var U=_.transition,$=_.transitionEnd,F=t.__rest(_,["transition","transitionEnd"]),G=$b(F,U||{},p);if(I&&($&&($=I($)),F&&(F=I(F)),G&&(G=I(G))),R){bp(p,F,G);var Q=xE(p,F,G,$);$=Q.transitionEnd,F=Q.target}return t.__assign({transition:U,transitionEnd:$},F)},scrapeMotionValuesFromProps:dr,build:function(p,_,E,R,I){p.isVisible!==void 0&&(_.style.visibility=p.isVisible?"visible":"hidden"),bt(_,E,R,I.transformTemplate)},render:Pt},_E=Uu(wv),SE=Uu(t.__assign(t.__assign({},wv),{getBaseTarget:function(p,_){return p[_]},readValueFromInstance:function(p,_){var E;return ge(_)?((E=lp(_))===null||E===void 0?void 0:E.default)||0:(_=Xr.has(_)?_:qt(_),p.getAttribute(_))},scrapeMotionValuesFromProps:On,build:function(p,_,E,R,I){Re(_,E,R,I.transformTemplate)},render:mr})),kp=function(p,_){return mt(p)?SE(_,{enableHardwareAcceleration:!1}):_E(_,{enableHardwareAcceleration:!0})};function _v(p,_){return _.max===_.min?0:p/(_.max-_.min)*100}var Js={correct:function(p,_){if(!_.target)return p;if(typeof p=="string")if(o.px.test(p))p=parseFloat(p);else return p;var E=_v(p,_.target.x),R=_v(p,_.target.y);return"".concat(E,"% ").concat(R,"%")}},Sv="_$css",CE={correct:function(p,_){var E=_.treeScale,R=_.projectionDelta,I=p,U=p.includes("var("),$=[];U&&(p=p.replace(hv,function(we){return $.push(we),Sv}));var F=o.complex.parse(p);if(F.length>5)return I;var G=o.complex.createTransformer(p),Q=typeof F[0]!="number"?1:0,Z=R.x.scale*E.x,ne=R.y.scale*E.y;F[0+Q]/=Z,F[1+Q]/=ne;var ae=a.mix(Z,ne,.5);typeof F[2+Q]=="number"&&(F[2+Q]/=ae),typeof F[3+Q]=="number"&&(F[3+Q]/=ae);var le=G(F);if(U){var ce=0;le=le.replace(Sv,function(){var we=$[ce];return ce++,we})}return le}},TE=function(p){t.__extends(_,p);function _(){return p!==null&&p.apply(this,arguments)||this}return _.prototype.componentDidMount=function(){var E=this,R=this.props,I=R.visualElement,U=R.layoutGroup,$=R.switchLayoutGroup,F=R.layoutId,G=I.projection;rt(OE),G&&(U!=null&&U.group&&U.group.add(G),$!=null&&$.register&&F&&$.register(G),G.root.didUpdate(),G.addEventListener("animationComplete",function(){E.safeToRemove()}),G.setOptions(t.__assign(t.__assign({},G.options),{onExitComplete:function(){return E.safeToRemove()}}))),Ce.hasEverUpdated=!0},_.prototype.getSnapshotBeforeUpdate=function(E){var R=this,I=this.props,U=I.layoutDependency,$=I.visualElement,F=I.drag,G=I.isPresent,Q=$.projection;return Q&&(Q.isPresent=G,F||E.layoutDependency!==U||U===void 0?Q.willUpdate():this.safeToRemove(),E.isPresent!==G&&(G?Q.promote():Q.relegate()||O.default.postRender(function(){var Z;!((Z=Q.getStack())===null||Z===void 0)&&Z.members.length||R.safeToRemove()}))),null},_.prototype.componentDidUpdate=function(){var E=this.props.visualElement.projection;E&&(E.root.didUpdate(),!E.currentAnimation&&E.isLead()&&this.safeToRemove())},_.prototype.componentWillUnmount=function(){var E=this.props,R=E.visualElement,I=E.layoutGroup,U=E.switchLayoutGroup,$=R.projection;$&&($.scheduleCheckAfterUnmount(),I!=null&&I.group&&I.group.remove($),U!=null&&U.deregister&&U.deregister($))},_.prototype.safeToRemove=function(){var E=this.props.safeToRemove;E==null||E()},_.prototype.render=function(){return null},_}(S.default.Component);function PE(p){var _=t.__read(Be(),2),E=_[0],R=_[1],I=r.useContext(ue);return S.default.createElement(TE,t.__assign({},p,{layoutGroup:I,switchLayoutGroup:r.useContext(Ee),isPresent:E,safeToRemove:R}))}var OE={borderRadius:t.__assign(t.__assign({},Js),{applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]}),borderTopLeftRadius:Js,borderTopRightRadius:Js,borderBottomLeftRadius:Js,borderBottomRightRadius:Js,boxShadow:CE},Cv={measureLayout:PE};function Tv(p,_,E){E===void 0&&(E={});var R=se(p)?p:En(p);return fp("",R,_,E),{stop:function(){return R.stop()},isAnimating:function(){return R.isAnimating()}}}var Pv=["TopLeft","TopRight","BottomLeft","BottomRight"],kE=Pv.length,Ov=function(p){return typeof p=="string"?parseFloat(p):p},kv=function(p){return typeof p=="number"||o.px.test(p)};function NE(p,_,E,R,I,U){var $,F,G,Q;I?(p.opacity=a.mix(0,($=E.opacity)!==null&&$!==void 0?$:1,EE(R)),p.opacityExit=a.mix((F=_.opacity)!==null&&F!==void 0?F:1,0,jE(R))):U&&(p.opacity=a.mix((G=_.opacity)!==null&&G!==void 0?G:1,(Q=E.opacity)!==null&&Q!==void 0?Q:1,R));for(var Z=0;Z_?1:E(a.progress(p,_,R))}}function jv(p,_){p.min=_.min,p.max=_.max}function Qn(p,_){jv(p.x,_.x),jv(p.y,_.y)}function Av(p,_,E,R,I){return p-=_,p=zu(p,1/E,R),I!==void 0&&(p=zu(p,1/I,R)),p}function AE(p,_,E,R,I,U,$){if(_===void 0&&(_=0),E===void 0&&(E=1),R===void 0&&(R=.5),U===void 0&&(U=p),$===void 0&&($=p),o.percent.test(_)){_=parseFloat(_);var F=a.mix($.min,$.max,_/100);_=F-$.min}if(typeof _=="number"){var G=a.mix(U.min,U.max,R);p===U&&(G-=_),p.min=Av(p.min,_,E,G,I),p.max=Av(p.max,_,E,G,I)}}function Rv(p,_,E,R,I){var U=t.__read(E,3),$=U[0],F=U[1],G=U[2];AE(p,_[$],_[F],_[G],_.scale,R,I)}var RE=["x","scaleX","originX"],ME=["y","scaleY","originY"];function Mv(p,_,E,R){Rv(p.x,_,RE,E==null?void 0:E.x,R==null?void 0:R.x),Rv(p.y,_,ME,E==null?void 0:E.y,R==null?void 0:R.y)}function Iv(p){return p.translate===0&&p.scale===1}function Dv(p){return Iv(p.x)&&Iv(p.y)}function Lv(p,_){return p.x.min===_.x.min&&p.x.max===_.x.max&&p.y.min===_.y.min&&p.y.max===_.y.max}var IE=function(){function p(){this.members=[]}return p.prototype.add=function(_){pp(this.members,_),_.scheduleRender()},p.prototype.remove=function(_){if(hp(this.members,_),_===this.prevLead&&(this.prevLead=void 0),_===this.lead){var E=this.members[this.members.length-1];E&&this.promote(E)}},p.prototype.relegate=function(_){var E=this.members.findIndex(function($){return _===$});if(E===0)return!1;for(var R,I=E;I>=0;I--){var U=this.members[I];if(U.isPresent!==!1){R=U;break}}return R?(this.promote(R),!0):!1},p.prototype.promote=function(_,E){var R,I=this.lead;if(_!==I&&(this.prevLead=I,this.lead=_,_.show(),I)){I.instance&&I.scheduleRender(),_.scheduleRender(),_.resumeFrom=I,E&&(_.resumeFrom.preserveOpacity=!0),I.snapshot&&(_.snapshot=I.snapshot,_.snapshot.latestValues=I.animationValues||I.latestValues,_.snapshot.isShared=!0),!((R=_.root)===null||R===void 0)&&R.isUpdating&&(_.isLayoutDirty=!0);var U=_.options.crossfade;U===!1&&I.hide()}},p.prototype.exitAnimationComplete=function(){this.members.forEach(function(_){var E,R,I,U,$;(R=(E=_.options).onExitComplete)===null||R===void 0||R.call(E),($=(I=_.resumingFrom)===null||I===void 0?void 0:(U=I.options).onExitComplete)===null||$===void 0||$.call(U)})},p.prototype.scheduleRender=function(){this.members.forEach(function(_){_.instance&&_.scheduleRender(!1)})},p.prototype.removeLeadSnapshot=function(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)},p}(),DE="translate3d(0px, 0px, 0) scale(1, 1) scale(1, 1)";function Fv(p,_,E){var R=p.x.translate/_.x,I=p.y.translate/_.y,U="translate3d(".concat(R,"px, ").concat(I,"px, 0) ");if(U+="scale(".concat(1/_.x,", ").concat(1/_.y,") "),E){var $=E.rotate,F=E.rotateX,G=E.rotateY;$&&(U+="rotate(".concat($,"deg) ")),F&&(U+="rotateX(".concat(F,"deg) ")),G&&(U+="rotateY(".concat(G,"deg) "))}var Q=p.x.scale*_.x,Z=p.y.scale*_.y;return U+="scale(".concat(Q,", ").concat(Z,")"),U===DE?"none":U}var LE=function(p,_){return p.depth-_.depth},zv=function(){function p(){this.children=[],this.isDirty=!1}return p.prototype.add=function(_){pp(this.children,_),this.isDirty=!0},p.prototype.remove=function(_){hp(this.children,_),this.isDirty=!0},p.prototype.forEach=function(_){this.isDirty&&this.children.sort(LE),this.isDirty=!1,this.children.forEach(_)},p}(),Bv=1e3;function Vv(p){var _=p.attachResizeListener,E=p.defaultParent,R=p.measureScroll,I=p.checkIsScrollRoot,U=p.resetTransform;return function(){function $(F,G,Q){var Z=this;G===void 0&&(G={}),Q===void 0&&(Q=E==null?void 0:E()),this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.potentialNodes=new Map,this.checkUpdateFailed=function(){Z.isUpdating&&(Z.isUpdating=!1,Z.clearAllSnapshots())},this.updateProjection=function(){Z.nodes.forEach(WE),Z.nodes.forEach($E)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.id=F,this.latestValues=G,this.root=Q?Q.root||Q:this,this.path=Q?t.__spreadArray(t.__spreadArray([],t.__read(Q.path),!1),[Q],!1):[],this.parent=Q,this.depth=Q?Q.depth+1:0,F&&this.root.registerPotentialNode(F,this);for(var ne=0;ne=0;R--)if(p.path[R].instance){E=p.path[R];break}var I=E&&E!==p.root?E.instance:document,U=I.querySelector('[data-projection-id="'.concat(_,'"]'));U&&p.mount(U,!0)}function Hv(p){p.min=Math.round(p.min),p.max=Math.round(p.max)}function qv(p){Hv(p.x),Hv(p.y)}var XE=Vv({attachResizeListener:function(p,_){return wt(p,"resize",_)},measureScroll:function(){return{x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}},checkIsScrollRoot:function(){return!0}}),Ga={current:void 0},Np=Vv({measureScroll:function(p){return{x:p.scrollLeft,y:p.scrollTop}},defaultParent:function(){if(!Ga.current){var p=new XE(0,{});p.mount(window),p.setOptions({layoutScroll:!0}),Ga.current=p}return Ga.current},resetTransform:function(p,_){p.style.transform=_??"none"},checkIsScrollRoot:function(p){return window.getComputedStyle(p).position==="fixed"}}),Gv=t.__assign(t.__assign(t.__assign(t.__assign({},xp),Gs),fv),Cv),Ep=qe(function(p,_){return Xe(p,_,Gv,kp,Np)});function ZE(p){return tt(Xe(p,{forwardMotionProps:!1},Gv,kp,Np))}var JE=qe(Xe);function Kv(){var p=r.useRef(!1);return A(function(){return p.current=!0,function(){p.current=!1}},[]),p}function $u(){var p=Kv(),_=t.__read(r.useState(0),2),E=_[0],R=_[1],I=r.useCallback(function(){p.current&&R(E+1)},[E]),U=r.useCallback(function(){return O.default.postRender(I)},[I]);return[U,E]}var jp=function(p){var _=p.children,E=p.initial,R=p.isPresent,I=p.onExitComplete,U=p.custom,$=p.presenceAffectsLayout,F=ve(ej),G=Ve(),Q=r.useMemo(function(){return{id:G,initial:E,isPresent:R,custom:U,onExitComplete:function(Z){var ne,ae;F.set(Z,!0);try{for(var le=t.__values(F.values()),ce=le.next();!ce.done;ce=le.next()){var we=ce.value;if(!we)return}}catch(De){ne={error:De}}finally{try{ce&&!ce.done&&(ae=le.return)&&ae.call(le)}finally{if(ne)throw ne.error}}I==null||I()},register:function(Z){return F.set(Z,!1),function(){return F.delete(Z)}}}},$?void 0:[R]);return r.useMemo(function(){F.forEach(function(Z,ne){return F.set(ne,!1)})},[R]),m.useEffect(function(){!R&&!F.size&&(I==null||I())},[R]),m.createElement(k.Provider,{value:Q},_)};function ej(){return new Map}var Ei=function(p){return p.key||""};function tj(p,_){p.forEach(function(E){var R=Ei(E);_.set(R,E)})}function rj(p){var _=[];return r.Children.forEach(p,function(E){r.isValidElement(E)&&_.push(E)}),_}var nj=function(p){var _=p.children,E=p.custom,R=p.initial,I=R===void 0?!0:R,U=p.onExitComplete,$=p.exitBeforeEnter,F=p.presenceAffectsLayout,G=F===void 0?!0:F,Q=t.__read($u(),1),Z=Q[0],ne=r.useContext(ue).forceRender;ne&&(Z=ne);var ae=Kv(),le=rj(_),ce=le,we=new Set,De=r.useRef(ce),He=r.useRef(new Map).current,st=r.useRef(!0);if(A(function(){st.current=!1,tj(le,He),De.current=ce}),Gn(function(){st.current=!0,He.clear(),we.clear()}),st.current)return m.createElement(m.Fragment,null,ce.map(function(Tt){return m.createElement(jp,{key:Ei(Tt),isPresent:!0,initial:I?void 0:!1,presenceAffectsLayout:G},Tt)}));ce=t.__spreadArray([],t.__read(ce),!1);for(var vt=De.current.map(Ei),_t=le.map(Ei),Ct=vt.length,$t=0;$t1&&console.warn("You're attempting to animate multiple children within AnimatePresence, but its exitBeforeEnter prop is set to true. This will lead to odd visual behaviour."),m.createElement(m.Fragment,null,we.size?ce:ce.map(function(Tt){return r.cloneElement(Tt)}))},Yv=r.createContext(null),oj=function(p){return!p.isLayoutDirty&&p.willUpdate(!1)};function Qv(){var p=new Set,_=new WeakMap,E=function(){return p.forEach(oj)};return{add:function(R){p.add(R),_.set(R,R.addEventListener("willUpdate",E))},remove:function(R){var I;p.delete(R),(I=_.get(R))===null||I===void 0||I(),_.delete(R),E()},dirty:E}}var Xv=function(p){return p===!0},aj=function(p){return Xv(p===!0)||p==="id"},Zv=function(p){var _,E,R=p.children,I=p.id,U=p.inheritId,$=p.inherit,F=$===void 0?!0:$;U!==void 0&&(F=U);var G=r.useContext(ue),Q=r.useContext(Yv),Z=t.__read($u(),2),ne=Z[0],ae=Z[1],le=r.useRef(null),ce=(_=G.id)!==null&&_!==void 0?_:Q;le.current===null&&(aj(F)&&ce&&(I=I?ce+"-"+I:ce),le.current={id:I,group:Xv(F)&&(E=G==null?void 0:G.group)!==null&&E!==void 0?E:Qv()});var we=r.useMemo(function(){return t.__assign(t.__assign({},le.current),{forceRender:ne})},[ae]);return m.createElement(ue.Provider,{value:we},R)},ij=0,sj=function(p){var _=p.children;return m.useEffect(function(){n.warning(!1,"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations")},[]),m.createElement(Zv,{id:ve(function(){return"asl-".concat(ij++)})},_)};function lj(p){var _=p.children,E=p.isValidProp,R=t.__rest(p,["children","isValidProp"]);E&&rr(E),R=t.__assign(t.__assign({},r.useContext(y)),R),R.isStatic=ve(function(){return R.isStatic});var I=r.useMemo(function(){return R},[JSON.stringify(R.transition),R.transformPagePoint,R.reducedMotion]);return m.createElement(y.Provider,{value:I},_)}function uj(p){var _=p.children,E=p.features,R=p.strict,I=R===void 0?!1:R,U=t.__read(r.useState(!Ap(E)),2),$=U[1],F=r.useRef(void 0);if(!Ap(E)){var G=E.renderer,Q=t.__rest(E,["renderer"]);F.current=G,d(Q)}return r.useEffect(function(){Ap(E)&&E().then(function(Z){var ne=Z.renderer,ae=t.__rest(Z,["renderer"]);d(ae),F.current=ne,$(!0)})},[]),m.createElement(s.Provider,{value:{renderer:F.current,strict:I}},_)}function Ap(p){return typeof p=="function"}var Jv=r.createContext(null);function cj(p,_,E,R){if(!R)return p;var I=p.findIndex(function(Z){return Z.value===_});if(I===-1)return p;var U=R>0?1:-1,$=p[I+U];if(!$)return p;var F=p[I],G=$.layout,Q=a.mix(G.min,G.max,.5);return U===1&&F.layout.max+E>Q||U===-1&&F.layout.min+E.001?1/p:Uj},dy=!1;function Wj(p){var _=aa(1),E=aa(1),R=j();n.invariant(!!(p||R),"If no scale values are provided, useInvertedScale must be used within a child of another motion component."),n.warning(dy,"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead."),dy=!0,p?(_=p.scaleX||_,E=p.scaleY||E):R&&(_=R.getValue("scaleX",1),E=R.getValue("scaleY",1));var I=Hu(_,cy),U=Hu(E,cy);return{scaleX:I,scaleY:U}}e.AnimatePresence=nj,e.AnimateSharedLayout=sj,e.DeprecatedLayoutGroupContext=Yv,e.DragControls=ly,e.FlatTree=zv,e.LayoutGroup=Zv,e.LayoutGroupContext=ue,e.LazyMotion=uj,e.MotionConfig=lj,e.MotionConfigContext=y,e.MotionContext=x,e.MotionValue=Vb,e.PresenceContext=k,e.Reorder=wj,e.SwitchLayoutGroupContext=Ee,e.addPointerEvent=Mo,e.addScaleCorrector=rt,e.animate=Tv,e.animateVisualElement=Fu,e.animationControls=iy,e.animations=xp,e.calcLength=wo,e.checkTargetForNewValues=bp,e.createBox=Tr,e.createDomMotionComponent=ZE,e.createMotionComponent=tt,e.domAnimation=oy,e.domMax=_j,e.filterProps=Hn,e.isBrowser=N,e.isDragActive=Oi,e.isMotionValue=se,e.isValidMotionProp=ur,e.m=JE,e.makeUseVisualState=qn,e.motion=Ep,e.motionValue=En,e.resolveMotionValue=fn,e.transform=ey,e.useAnimation=jj,e.useAnimationControls=sy,e.useAnimationFrame=ay,e.useCycle=Aj,e.useDeprecatedAnimatedState=Vj,e.useDeprecatedInvertedScale=Wj,e.useDomEvent=Dt,e.useDragControls=Ij,e.useElementScroll=Oj,e.useForceUpdate=$u,e.useInView=Rj,e.useInstantLayoutTransition=uy,e.useInstantTransition=Lj,e.useIsPresent=Le,e.useIsomorphicLayoutEffect=A,e.useMotionTemplate=Sj,e.useMotionValue=aa,e.usePresence=Be,e.useReducedMotion=z,e.useReducedMotionConfig=V,e.useResetProjection=Fj,e.useScroll=Rp,e.useSpring=Cj,e.useTime=Ej,e.useTransform=Hu,e.useUnmountEffect=Gn,e.useVelocity=Tj,e.useViewportScroll=kj,e.useVisualElementContext=j,e.visualElement=Uu,e.wrapHandler=Vs})(Nr);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{AccordionBody:function(){return w},default:function(){return b}});var r=O(P),n=Nr,o=O(gt),a=O(Mr),i=O(nt),u=lt,f=Tf,g=et,m=yu;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.className,l=d.children,h=T(d,["className","children"]),y=(0,f.useAccordion)(),x=y.open,j=y.animate,k=(0,g.useTheme)().accordion,N=k.styles.base;c=c??"";var A=(0,u.twMerge)((0,o.default)((0,i.default)(N.body)),c),M={unmount:{height:"0px",transition:{duration:.2,times:[.4,0,.2,1]}},mount:{height:"auto",transition:{duration:.2,times:[.4,0,.2,1]}}},D={unmount:{transition:{duration:.3,ease:"linear"}},mount:{transition:{duration:.3,ease:"linear"}}},L=(0,a.default)(D,j);return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(n.m.div,{className:"overflow-hidden",initial:"unmount",exit:"unmount",animate:x?"mount":"unmount",variants:M},r.default.createElement(n.m.div,S({},h,{ref:s,className:A,initial:"unmount",exit:"unmount",animate:x?"mount":"unmount",variants:L}),l)))});w.propTypes={className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.AccordionBody";var b=w})(ST);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Accordion:function(){return b},AccordionHeader:function(){return g.AccordionHeader},AccordionBody:function(){return m.AccordionBody},useAccordion:function(){return u.useAccordion},default:function(){return d}});var r=T(P),n=T(gt),o=lt,a=T(nt),i=et,u=Tf,f=yu,g=_T,m=ST;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.open,h=s.icon,y=s.animate,x=s.className,j=s.disabled,k=s.children,N=C(s,["open","icon","animate","className","disabled","children"]),A=(0,i.useTheme)().accordion,M=A.defaultProps,D=A.styles.base;h=h??M.icon,y=y??M.animate,x=x??M.className,j=j??M.disabled;var L=(0,o.twMerge)((0,n.default)((0,a.default)(D.container),S({},(0,a.default)(D.disabled),j)),x),z=r.default.useMemo(function(){return{open:l,icon:h,animate:y,disabled:j}},[l,h,y,j]);return r.default.createElement(u.AccordionContextProvider,{value:z},r.default.createElement("div",O({},N,{ref:c,className:L}),k))});b.propTypes={open:f.propTypesOpen,icon:f.propTypesIcon,animate:f.propTypesAnimate,disabled:f.propTypesDisabled,className:f.propTypesClassName,children:f.propTypesChildren},b.displayName="MaterialTailwind.Accordion";var d=Object.assign(b,{Header:g.AccordionHeader,Body:m.AccordionBody})})(XC);var QP={},tr={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return r}});function t(n,o,a){var i=n.findIndex(function(u){return u===o});return i>=0?o:a}var r=t})(tr);var Lf={},As=class{constructor(){this.x=0,this.y=0,this.z=0}findFurthestPoint(t,r,n,o,a,i){return this.x=t-n>r/2?0:r,this.y=o-i>a/2?0:a,this.z=Math.hypot(this.x-(t-n),this.y-(o-i)),this.z}appyStyles(t,r,n,o,a){t.classList.add("ripple"),t.style.backgroundColor=r==="dark"?"rgba(0,0,0, 0.2)":"rgba(255,255,255, 0.3)",t.style.borderRadius="50%",t.style.pointerEvents="none",t.style.position="absolute",t.style.left=a.clientX-n.left-o+"px",t.style.top=a.clientY-n.top-o+"px",t.style.width=t.style.height=o*2+"px"}applyAnimation(t){t.animate([{transform:"scale(0)",opacity:1},{transform:"scale(1.5)",opacity:0}],{duration:500,easing:"linear"})}create(t,r){const n=t.currentTarget;n.style.position="relative",n.style.overflow="hidden";const o=n.getBoundingClientRect(),a=this.findFurthestPoint(t.clientX,n.offsetWidth,o.left,t.clientY,n.offsetHeight,o.top),i=document.createElement("span");this.appyStyles(i,r,o,a,t),this.applyAnimation(i),n.appendChild(i),setTimeout(()=>i.remove(),500)}};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{IconButton:function(){return w},default:function(){return b}});var r=O(P),n=O(ut),o=O(As),a=O(gt),i=lt,u=O(tr),f=O(nt),g=et,m=vi;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,l=d.size,h=d.color,y=d.ripple,x=d.className,j=d.children;d.fullWidth;var k=T(d,["variant","size","color","ripple","className","children","fullWidth"]),N=(0,g.useTheme)().iconButton,A=N.valid,M=N.defaultProps,D=N.styles,L=D.base,z=D.variants,V=D.sizes;c=c??M.variant,l=l??M.size,h=h??M.color,y=y??M.ripple,x=x??M.className;var Y=y!==void 0&&new o.default,q=(0,f.default)(L),B=(0,f.default)(z[(0,u.default)(A.variants,c,"filled")][(0,u.default)(A.colors,h,"gray")]),H=(0,f.default)(V[(0,u.default)(A.sizes,l,"md")]),K=(0,i.twMerge)((0,a.default)(q,H,B),x);return r.default.createElement("button",S({},k,{ref:s,className:K,type:k.type||"button",onMouseDown:function(X){var re=k==null?void 0:k.onMouseDown;return y&&Y.create(X,(c==="filled"||c==="gradient")&&h!=="white"?"light":"dark"),typeof re=="function"&&re(X)}}),r.default.createElement("span",{className:"absolute top-1/2 left-1/2 transform -translate-y-1/2 -translate-x-1/2"},j))});w.propTypes={variant:n.default.oneOf(m.propTypesVariant),size:n.default.oneOf(m.propTypesSize),color:n.default.oneOf(m.propTypesColor),ripple:m.propTypesRipple,className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.IconButton";var b=w})(Lf);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(c,l){for(var h in l)Object.defineProperty(c,h,{enumerable:!0,get:l[h]})}t(e,{Alert:function(){return d},default:function(){return s}});var r=C(P),n=C(ut),o=Nr,a=C(gt),i=C(Mr),u=lt,f=C(tr),g=C(nt),m=et,S=km,O=C(Lf);function T(){return T=Object.assign||function(c){for(var l=1;l=0)&&Object.prototype.propertyIsEnumerable.call(c,y)&&(h[y]=c[y])}return h}function b(c,l){if(c==null)return{};var h={},y=Object.keys(c),x,j;for(j=0;j=0)&&(h[x]=c[x]);return h}var d=r.default.forwardRef(function(c,l){var h=c.variant,y=c.color,x=c.icon,j=c.open,k=c.action,N=c.onClose,A=c.animate,M=c.className,D=c.children,L=w(c,["variant","color","icon","open","action","onClose","animate","className","children"]),z=(0,m.useTheme)().alert,V=z.defaultProps,Y=z.valid,q=z.styles,B=q.base,H=q.variants;h=h??V.variant,y=y??V.color,M=M??V.className,A=A??V.animate,j=j??V.open,k=k??V.action,N=N??V.onClose;var K=(0,g.default)(B.alert),X=(0,g.default)(B.action),re=(0,g.default)(H[(0,f.default)(Y.variants,h,"filled")][(0,f.default)(Y.colors,y,"gray")]),me=(0,u.twMerge)((0,a.default)(K,re),M),de=(0,a.default)(X),ee={unmount:{opacity:0},mount:{opacity:1}},_e=(0,i.default)(ee,A),he=r.default.createElement("div",{className:"shrink-0"},x),pe=o.AnimatePresence;return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(pe,null,j&&r.default.createElement(o.m.div,T({},L,{ref:l,role:"alert",className:"".concat(me," flex"),initial:"unmount",exit:"unmount",animate:j?"mount":"unmount",variants:_e}),x&&he,r.default.createElement("div",{className:"".concat(x?"ml-3":""," mr-12")},D),N&&!k&&r.default.createElement(O.default,{onClick:N,size:"sm",variant:"text",color:h==="outlined"||h==="ghost"?y:"white",className:de},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"h-6 w-6",strokeWidth:2},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))),k||null)))});d.propTypes={variant:n.default.oneOf(S.propTypesVariant),color:n.default.oneOf(S.propTypesColor),icon:S.propTypesIcon,open:S.propTypesOpen,action:S.propTypesAction,onClose:S.propTypesOnClose,animate:S.propTypesAnimate,className:S.propTypesClassName,children:S.propTypesChildren},d.displayName="MaterialTailwind.Alert";var s=d})(QP);var XP={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{Avatar:function(){return w},default:function(){return b}});var r=O(P),n=O(ut),o=O(gt),a=lt,i=O(tr),u=O(nt),f=et,g=Nm;function m(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,l=d.size,h=d.className,y=d.color,x=d.withBorder,j=T(d,["variant","size","className","color","withBorder"]),k=(0,f.useTheme)().avatar,N=k.valid,A=k.defaultProps,M=k.styles,D=M.base,L=M.variants,z=M.sizes,V=M.borderColor;c=c??A.variant,l=l??A.size,h=h??A.className,x=x??A.withBorder,y=y??A.color;var Y=(0,u.default)(L[(0,i.default)(N.variants,c,"rounded")]),q=(0,u.default)(z[(0,i.default)(N.sizes,l,"md")]),B=(0,u.default)(V[(0,i.default)(N.colors,y,"gray")]),H,K=(0,a.twMerge)((0,o.default)((0,u.default)(D.initial),Y,q,(H={},m(H,(0,u.default)(D.withBorder),x),m(H,B,x),H)),h);return r.default.createElement("img",S({},j,{ref:s,className:K}))});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),size:n.default.oneOf(g.propTypesSize),className:g.propTypesClassName,withBorder:g.propTypesWithBorder,color:n.default.oneOf(g.propTypesColor)},w.displayName="MaterialTailwind.Avatar";var b=w})(XP);var ZP={},JP={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(f,g){for(var m in g)Object.defineProperty(f,m,{enumerable:!0,get:g[m]})}t(e,{propTypesSeparator:function(){return o},propTypesFullWidth:function(){return a},propTypesClassName:function(){return i},propTypesChildren:function(){return u}});var r=n(ut);function n(f){return f&&f.__esModule?f:{default:f}}var o=r.default.node,a=r.default.bool,i=r.default.string,u=r.default.node.isRequired})(JP);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{Breadcrumbs:function(){return w},default:function(){return b}});var r=O(P),n=m(gt),o=lt,a=m(nt),i=et,u=JP;function f(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function g(){return g=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=(0,r.forwardRef)(function(d,s){var c=d.separator,l=d.fullWidth,h=d.className,y=d.children,x=T(d,["separator","fullWidth","className","children"]),j=(0,i.useTheme)().breadcrumbs,k=j.defaultProps,N=j.styles.base;c=c??k.separator,l=l??k.fullWidth,h=h??k.className;var A=(0,n.default)((0,a.default)(N.root.initial),f({},(0,a.default)(N.root.fullWidth),l)),M=(0,o.twMerge)((0,n.default)((0,a.default)(N.list)),h),D=(0,n.default)((0,a.default)(N.item.initial)),L=(0,n.default)((0,a.default)(N.separator));return r.default.createElement("nav",{"aria-label":"breadcrumb",className:A},r.default.createElement("ol",g({},x,{ref:s,className:M}),r.Children.map(y,function(z,V){if((0,r.isValidElement)(z)){var Y;return r.default.createElement("li",{className:(0,n.default)(D,f({},(0,a.default)(N.item.disabled),z==null||(Y=z.props)===null||Y===void 0?void 0:Y.disabled))},z,V!==r.Children.count(y)-1&&r.default.createElement("span",{className:L},c))}return null})))});w.propTypes={separator:u.propTypesSeparator,fullWidth:u.propTypesFullWidth,className:u.propTypesClassName,children:u.propTypesChildren},w.displayName="MaterialTailwind.Breadcrumbs";var b=w})(ZP);var eO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Button:function(){return b},default:function(){return d}});var r=T(P),n=T(ut),o=T(As),a=T(gt),i=lt,u=T(tr),f=T(nt),g=et,m=vi;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.variant,h=s.size,y=s.color,x=s.fullWidth,j=s.ripple,k=s.className,N=s.children,A=C(s,["variant","size","color","fullWidth","ripple","className","children"]),M=(0,g.useTheme)().button,D=M.valid,L=M.defaultProps,z=M.styles,V=z.base,Y=z.variants,q=z.sizes;l=l??L.variant,h=h??L.size,y=y??L.color,x=x??L.fullWidth,j=j??L.ripple,k=k??L.className;var B=j!==void 0&&new o.default,H=(0,f.default)(V.initial),K=(0,f.default)(Y[(0,u.default)(D.variants,l,"filled")][(0,u.default)(D.colors,y,"gray")]),X=(0,f.default)(q[(0,u.default)(D.sizes,h,"md")]),re=(0,i.twMerge)((0,a.default)(H,X,K,S({},(0,f.default)(V.fullWidth),x)),k);return r.default.createElement("button",O({},A,{ref:c,className:re,type:A.type||"button",onMouseDown:function(me){var de=A==null?void 0:A.onMouseDown;return j&&B.create(me,(l==="filled"||l==="gradient")&&y!=="white"?"light":"dark"),typeof de=="function"&&de(me)}}),N)});b.propTypes={variant:n.default.oneOf(m.propTypesVariant),size:n.default.oneOf(m.propTypesSize),color:n.default.oneOf(m.propTypesColor),fullWidth:m.propTypesFullWidth,ripple:m.propTypesRipple,className:m.propTypesClassName,children:m.propTypesChildren},b.displayName="MaterialTailwind.Button";var d=b})(eO);var tO={},rO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{CardHeader:function(){return w},default:function(){return b}});var r=O(P),n=O(ut),o=O(gt),a=lt,i=O(tr),u=O(nt),f=et,g=yi;function m(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,l=d.color,h=d.shadow,y=d.floated,x=d.className,j=d.children,k=T(d,["variant","color","shadow","floated","className","children"]),N=(0,f.useTheme)().cardHeader,A=N.defaultProps,M=N.styles,D=N.valid,L=M.base,z=M.variants;c=c??A.variant,l=l??A.color,h=h??A.shadow,y=y??A.floated,x=x??A.className;var V=(0,u.default)(L.initial),Y=(0,u.default)(z[(0,i.default)(D.variants,c,"filled")][(0,i.default)(D.colors,l,"white")]),q=(0,a.twMerge)((0,o.default)(V,Y,m({},(0,u.default)(L.shadow),h),m({},(0,u.default)(L.floated),y)),x);return r.default.createElement("div",S({},k,{ref:s,className:q}),j)});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),color:n.default.oneOf(g.propTypesColor),shadow:g.propTypesShadow,floated:g.propTypesFloated,className:g.propTypesClassName,children:g.propTypesChildren},w.displayName="MaterialTailwind.CardHeader";var b=w})(rO);var nO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{CardBody:function(){return O},default:function(){return T}});var r=g(P),n=g(gt),o=lt,a=g(nt),i=et,u=yi;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,i.useTheme)().cardBody,l=c.defaultProps,h=c.styles.base;b=b??l.className;var y=(0,o.twMerge)((0,n.default)((0,a.default)(h)),b);return r.default.createElement("div",f({},s,{ref:w,className:y}),d)});O.propTypes={className:u.propTypesClassName,children:u.propTypesChildren},O.displayName="MaterialTailwind.CardBody";var T=O})(nO);var oO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{CardFooter:function(){return T},default:function(){return C}});var r=m(P),n=m(gt),o=lt,a=m(nt),i=et,u=yi;function f(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function g(){return g=Object.assign||function(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,l;for(l=0;l=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.divider,s=w.className,c=w.children,l=S(w,["divider","className","children"]),h=(0,i.useTheme)().cardFooter,y=h.defaultProps,x=h.styles.base;s=s??y.className,d=d??y.divider;var j=(0,o.twMerge)((0,n.default)((0,a.default)(x.initial),f({},(0,a.default)(x.divider),d)),s);return r.default.createElement("div",g({},l,{ref:b,className:j}),c)});T.propTypes={divider:u.propTypesDivider,className:u.propTypesClassName,children:u.propTypesChildren},T.displayName="MaterialTailwind.CardFooter";var C=T})(oO);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,h){for(var y in h)Object.defineProperty(l,y,{enumerable:!0,get:h[y]})}t(e,{Card:function(){return s},CardHeader:function(){return g.CardHeader},CardBody:function(){return m.CardBody},CardFooter:function(){return S.CardFooter},default:function(){return c}});var r=w(P),n=w(ut),o=w(gt),a=lt,i=w(tr),u=w(nt),f=et,g=rO,m=nO,S=oO,O=yi;function T(l,h,y){return h in l?Object.defineProperty(l,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):l[h]=y,l}function C(){return C=Object.assign||function(l){for(var h=1;h=0)&&Object.prototype.propertyIsEnumerable.call(l,x)&&(y[x]=l[x])}return y}function d(l,h){if(l==null)return{};var y={},x=Object.keys(l),j,k;for(k=0;k=0)&&(y[j]=l[j]);return y}var s=r.default.forwardRef(function(l,h){var y=l.variant,x=l.color,j=l.shadow,k=l.className,N=l.children,A=b(l,["variant","color","shadow","className","children"]),M=(0,f.useTheme)().card,D=M.defaultProps,L=M.styles,z=M.valid,V=L.base,Y=L.variants;y=y??D.variant,x=x??D.color,j=j??D.shadow,k=k??D.className;var q=(0,u.default)(V.initial),B=(0,u.default)(Y[(0,i.default)(z.variants,y,"filled")][(0,i.default)(z.colors,x,"white")]),H=(0,a.twMerge)((0,o.default)(q,B,T({},(0,u.default)(V.shadow),j)),k);return r.default.createElement("div",C({},A,{ref:h,className:H}),N)});s.propTypes={variant:n.default.oneOf(O.propTypesVariant),color:n.default.oneOf(O.propTypesColor),shadow:O.propTypesShadow,className:O.propTypesClassName,children:O.propTypesChildren},s.displayName="MaterialTailwind.Card";var c=Object.assign(s,{Header:g.CardHeader,Body:m.CardBody,Footer:S.CardFooter})})(tO);var aO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Checkbox:function(){return b},default:function(){return d}});var r=T(P),n=T(ut),o=T(As),a=T(gt),i=lt,u=T(tr),f=T(nt),g=et,m=xi;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.color,h=s.label,y=s.icon,x=s.ripple,j=s.className,k=s.disabled,N=s.containerProps,A=s.labelProps,M=s.iconProps,D=s.inputRef,L=C(s,["color","label","icon","ripple","className","disabled","containerProps","labelProps","iconProps","inputRef"]),z=(0,g.useTheme)().checkbox,V=z.defaultProps,Y=z.valid,q=z.styles,B=q.base,H=q.colors,K=r.default.useId();l=l??V.color,h=h??V.label,y=y??V.icon,x=x??V.ripple,j=j??V.className,k=k??V.disabled,N=N??V.containerProps,A=A??V.labelProps,M=M??V.iconProps;var X=x!==void 0&&new o.default,re=(0,a.default)((0,f.default)(B.root),S({},(0,f.default)(B.disabled),k)),me=(0,i.twMerge)((0,a.default)((0,f.default)(B.container)),N==null?void 0:N.className),de=(0,i.twMerge)((0,a.default)((0,f.default)(B.input),(0,f.default)(H[(0,u.default)(Y.colors,l,"gray")])),j),ee=(0,i.twMerge)((0,a.default)((0,f.default)(B.label)),A==null?void 0:A.className),_e=(0,i.twMerge)((0,a.default)((0,f.default)(B.icon)),M==null?void 0:M.className);return r.default.createElement("div",{ref:c,className:re},r.default.createElement("label",O({},N,{className:me,htmlFor:L.id||K,onMouseDown:function(he){var pe=N==null?void 0:N.onMouseDown;return x&&X.create(he,"dark"),typeof pe=="function"&&pe(he)}}),r.default.createElement("input",O({},L,{ref:D,type:"checkbox",disabled:k,className:de,id:L.id||K})),r.default.createElement("span",{className:_e},y||r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 20 20",fill:"currentColor",stroke:"currentColor",strokeWidth:1},r.default.createElement("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})))),h&&r.default.createElement("label",O({},A,{className:ee,htmlFor:L.id||K}),h))});b.propTypes={color:n.default.oneOf(m.propTypesColor),label:m.propTypesLabel,icon:m.propTypesIcon,ripple:m.propTypesRipple,className:m.propTypesClassName,disabled:m.propTypesDisabled,containerProps:m.propTypesObject,labelProps:m.propTypesObject},b.displayName="MaterialTailwind.Checkbox";var d=b})(aO);var iO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(c,l){for(var h in l)Object.defineProperty(c,h,{enumerable:!0,get:l[h]})}t(e,{Chip:function(){return d},default:function(){return s}});var r=C(P),n=C(ut),o=Nr,a=C(gt),i=C(Mr),u=lt,f=C(tr),g=C(nt),m=et,S=Dm,O=C(Lf);function T(){return T=Object.assign||function(c){for(var l=1;l=0)&&Object.prototype.propertyIsEnumerable.call(c,y)&&(h[y]=c[y])}return h}function b(c,l){if(c==null)return{};var h={},y=Object.keys(c),x,j;for(j=0;j=0)&&(h[x]=c[x]);return h}var d=r.default.forwardRef(function(c,l){var h=c.variant,y=c.size,x=c.color,j=c.icon,k=c.open,N=c.onClose,A=c.action,M=c.animate,D=c.className,L=c.value,z=w(c,["variant","size","color","icon","open","onClose","action","animate","className","value"]),V=(0,m.useTheme)().chip,Y=V.defaultProps,q=V.valid,B=V.styles,H=B.base,K=B.variants,X=B.sizes;h=h??Y.variant,y=y??Y.size,x=x??Y.color,D=D??Y.className,M=M??Y.animate,k=k??Y.open,A=A??Y.action,N=N??Y.onClose;var re=(0,g.default)(H.chip),me=(0,g.default)(H.action),de=(0,g.default)(H.icon),ee=(0,g.default)(K[(0,f.default)(q.variants,h,"filled")][(0,f.default)(q.colors,x,"gray")]),_e=(0,g.default)(X[(0,f.default)(q.sizes,y,"md")].chip),he=(0,g.default)(X[(0,f.default)(q.sizes,y,"md")].action),pe=(0,g.default)(X[(0,f.default)(q.sizes,y,"md")].icon),be=(0,u.twMerge)((0,a.default)(re,ee,_e),D),ve=(0,a.default)(me,he),Ce=(0,a.default)(de,pe),Ae=(0,a.default)({"ml-4":j&&y==="sm","ml-[18px]":j&&y==="md","ml-5":j&&y==="lg","mr-5":N}),Ne={unmount:{opacity:0},mount:{opacity:1}},ue=(0,i.default)(Ne,M),Ee=r.default.createElement("div",{className:Ce},j),$e=o.AnimatePresence;return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement($e,null,k&&r.default.createElement(o.m.div,T({},z,{ref:l,className:be,initial:"unmount",exit:"unmount",animate:k?"mount":"unmount",variants:ue}),j&&Ee,r.default.createElement("span",{className:Ae},L),N&&!A&&r.default.createElement(O.default,{onClick:N,size:"sm",variant:"text",color:h==="outlined"||h==="ghost"?x:"white",className:ve},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:(0,a.default)({"h-3.5 w-3.5":y==="sm","h-4 w-4":y==="md","h-5 w-5":y==="lg"}),strokeWidth:2},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))),A||null)))});d.propTypes={variant:n.default.oneOf(S.propTypesVariant),size:n.default.oneOf(S.propTypesSize),color:n.default.oneOf(S.propTypesColor),icon:S.propTypesIcon,open:S.propTypesOpen,onClose:S.propTypesOnClose,action:S.propTypesAction,animate:S.propTypesAnimate,className:S.propTypesClassName,value:S.propTypesValue},d.displayName="MaterialTailwind.Chip";var s=d})(iO);var sO={},yF=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Mi=new WeakMap,pc=new WeakMap,hc={},xh=0,lO=function(e){return e&&(e.host||lO(e.parentNode))},xF=function(e,t){return t.map(function(r){if(e.contains(r))return r;var n=lO(r);return n&&e.contains(n)?n:(console.error("aria-hidden",r,"in not contained inside",e,". Doing nothing"),null)}).filter(function(r){return!!r})},wF=function(e,t,r,n){var o=xF(t,Array.isArray(e)?e:[e]);hc[r]||(hc[r]=new WeakMap);var a=hc[r],i=[],u=new Set,f=new Set(o),g=function(S){!S||u.has(S)||(u.add(S),g(S.parentNode))};o.forEach(g);var m=function(S){!S||f.has(S)||Array.prototype.forEach.call(S.children,function(O){if(u.has(O))m(O);else try{var T=O.getAttribute(n),C=T!==null&&T!=="false",w=(Mi.get(O)||0)+1,b=(a.get(O)||0)+1;Mi.set(O,w),a.set(O,b),i.push(O),w===1&&C&&pc.set(O,!0),b===1&&O.setAttribute(r,"true"),C||O.setAttribute(n,"true")}catch(d){console.error("aria-hidden: cannot operate on ",O,d)}})};return m(t),u.clear(),xh++,function(){i.forEach(function(S){var O=Mi.get(S)-1,T=a.get(S)-1;Mi.set(S,O),a.set(S,T),O||(pc.has(S)||S.removeAttribute(n),pc.delete(S)),T||S.removeAttribute(r)}),xh--,xh||(Mi=new WeakMap,Mi=new WeakMap,pc=new WeakMap,hc={})}},_F=function(e,t,r){r===void 0&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),o=t||yF(e);return o?(n.push.apply(n,Array.from(o.querySelectorAll("[aria-live], script"))),wF(n,o,r,"aria-hidden")):function(){return null}};/*! -* tabbable 6.2.0 -* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE -*/var SF=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],s0=SF.join(","),uO=typeof Element>"u",su=uO?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ud=!uO&&Element.prototype.getRootNode?function(e){var t;return e==null||(t=e.getRootNode)===null||t===void 0?void 0:t.call(e)}:function(e){return e==null?void 0:e.ownerDocument},Wd=function e(t,r){var n;r===void 0&&(r=!0);var o=t==null||(n=t.getAttribute)===null||n===void 0?void 0:n.call(t,"inert"),a=o===""||o==="true",i=a||r&&t&&e(t.parentNode);return i},CF=function(t){var r,n=t==null||(r=t.getAttribute)===null||r===void 0?void 0:r.call(t,"contenteditable");return n===""||n==="true"},TF=function(t,r,n){if(Wd(t))return[];var o=Array.prototype.slice.apply(t.querySelectorAll(s0));return r&&su.call(t,s0)&&o.unshift(t),o=o.filter(n),o},PF=function e(t,r,n){for(var o=[],a=Array.from(t);a.length;){var i=a.shift();if(!Wd(i,!1))if(i.tagName==="SLOT"){var u=i.assignedElements(),f=u.length?u:i.children,g=e(f,!0,n);n.flatten?o.push.apply(o,g):o.push({scopeParent:i,candidates:g})}else{var m=su.call(i,s0);m&&n.filter(i)&&(r||!t.includes(i))&&o.push(i);var S=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),O=!Wd(S,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(S&&O){var T=e(S===!0?i.children:S.children,!0,n);n.flatten?o.push.apply(o,T):o.push({scopeParent:i,candidates:T})}else a.unshift.apply(a,i.children)}}return o},cO=function(t){return!isNaN(parseInt(t.getAttribute("tabindex"),10))},dO=function(t){if(!t)throw new Error("No node provided");return t.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(t.tagName)||CF(t))&&!cO(t)?0:t.tabIndex},OF=function(t,r){var n=dO(t);return n<0&&r&&!cO(t)?0:n},kF=function(t,r){return t.tabIndex===r.tabIndex?t.documentOrder-r.documentOrder:t.tabIndex-r.tabIndex},fO=function(t){return t.tagName==="INPUT"},NF=function(t){return fO(t)&&t.type==="hidden"},EF=function(t){var r=t.tagName==="DETAILS"&&Array.prototype.slice.apply(t.children).some(function(n){return n.tagName==="SUMMARY"});return r},jF=function(t,r){for(var n=0;nsummary:first-of-type"),i=a?t.parentElement:t;if(su.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof o=="function"){for(var u=t;t;){var f=t.parentElement,g=Ud(t);if(f&&!f.shadowRoot&&o(f)===!0)return mw(t);t.assignedSlot?t=t.assignedSlot:!f&&g!==t.ownerDocument?t=g.host:t=f}t=u}if(IF(t))return!t.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return mw(t);return!1},LF=function(t){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(t.tagName))for(var r=t.parentElement;r;){if(r.tagName==="FIELDSET"&&r.disabled){for(var n=0;n=0)},BF=function e(t){var r=[],n=[];return t.forEach(function(o,a){var i=!!o.scopeParent,u=i?o.scopeParent:o,f=OF(u,i),g=i?e(o.candidates):u;f===0?i?r.push.apply(r,g):r.push(u):n.push({documentOrder:a,tabIndex:f,item:o,isScope:i,content:g})}),n.sort(kF).reduce(function(o,a){return a.isScope?o.push.apply(o,a.content):o.push(a.content),o},[]).concat(r)},$d=function(t,r){r=r||{};var n;return r.getShadowRoot?n=PF([t],r.includeContainer,{filter:bw.bind(null,r),flatten:!1,getShadowRoot:r.getShadowRoot,shadowRootFilter:zF}):n=TF(t,r.includeContainer,bw.bind(null,r)),BF(n)};const pO=["top","right","bottom","left"],vw=["start","end"],yw=pO.reduce((e,t)=>e.concat(t,t+"-"+vw[0],t+"-"+vw[1]),[]),fo=Math.min,Vr=Math.max,Hd=Math.round,gc=Math.floor,No=e=>({x:e,y:e}),VF={left:"right",right:"left",bottom:"top",top:"bottom"},UF={start:"end",end:"start"};function l0(e,t,r){return Vr(e,fo(t,r))}function po(e,t){return typeof e=="function"?e(t):e}function Cn(e){return e.split("-")[0]}function uo(e){return e.split("-")[1]}function db(e){return e==="x"?"y":"x"}function fb(e){return e==="y"?"height":"width"}const WF=new Set(["top","bottom"]);function ao(e){return WF.has(Cn(e))?"y":"x"}function pb(e){return db(ao(e))}function hO(e,t,r){r===void 0&&(r=!1);const n=uo(e),o=pb(e),a=fb(o);let i=o==="x"?n===(r?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=Gd(i)),[i,Gd(i)]}function $F(e){const t=Gd(e);return[qd(e),t,qd(t)]}function qd(e){return e.replace(/start|end/g,t=>UF[t])}const xw=["left","right"],ww=["right","left"],HF=["top","bottom"],qF=["bottom","top"];function GF(e,t,r){switch(e){case"top":case"bottom":return r?t?ww:xw:t?xw:ww;case"left":case"right":return t?HF:qF;default:return[]}}function KF(e,t,r,n){const o=uo(e);let a=GF(Cn(e),r==="start",n);return o&&(a=a.map(i=>i+"-"+o),t&&(a=a.concat(a.map(qd)))),a}function Gd(e){return e.replace(/left|right|bottom|top/g,t=>VF[t])}function YF(e){return{top:0,right:0,bottom:0,left:0,...e}}function hb(e){return typeof e!="number"?YF(e):{top:e,right:e,bottom:e,left:e}}function ys(e){const{x:t,y:r,width:n,height:o}=e;return{width:n,height:o,top:r,left:t,right:t+n,bottom:r+o,x:t,y:r}}function _w(e,t,r){let{reference:n,floating:o}=e;const a=ao(t),i=pb(t),u=fb(i),f=Cn(t),g=a==="y",m=n.x+n.width/2-o.width/2,S=n.y+n.height/2-o.height/2,O=n[u]/2-o[u]/2;let T;switch(f){case"top":T={x:m,y:n.y-o.height};break;case"bottom":T={x:m,y:n.y+n.height};break;case"right":T={x:n.x+n.width,y:S};break;case"left":T={x:n.x-o.width,y:S};break;default:T={x:n.x,y:n.y}}switch(uo(t)){case"start":T[i]-=O*(r&&g?-1:1);break;case"end":T[i]+=O*(r&&g?-1:1);break}return T}const QF=async(e,t,r)=>{const{placement:n="bottom",strategy:o="absolute",middleware:a=[],platform:i}=r,u=a.filter(Boolean),f=await(i.isRTL==null?void 0:i.isRTL(t));let g=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:m,y:S}=_w(g,n,f),O=n,T={},C=0;for(let w=0;w({name:"arrow",options:e,async fn(t){const{x:r,y:n,placement:o,rects:a,platform:i,elements:u,middlewareData:f}=t,{element:g,padding:m=0}=po(e,t)||{};if(g==null)return{};const S=hb(m),O={x:r,y:n},T=pb(o),C=fb(T),w=await i.getDimensions(g),b=T==="y",d=b?"top":"left",s=b?"bottom":"right",c=b?"clientHeight":"clientWidth",l=a.reference[C]+a.reference[T]-O[T]-a.floating[C],h=O[T]-a.reference[T],y=await(i.getOffsetParent==null?void 0:i.getOffsetParent(g));let x=y?y[c]:0;(!x||!await(i.isElement==null?void 0:i.isElement(y)))&&(x=u.floating[c]||a.floating[C]);const j=l/2-h/2,k=x/2-w[C]/2-1,N=fo(S[d],k),A=fo(S[s],k),M=N,D=x-w[C]-A,L=x/2-w[C]/2+j,z=l0(M,L,D),V=!f.arrow&&uo(o)!=null&&L!==z&&a.reference[C]/2-(Luo(o)===e),...r.filter(o=>uo(o)!==e)]:r.filter(o=>Cn(o)===o)).filter(o=>e?uo(o)===e||(t?qd(o)!==o:!1):!0)}const JF=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var r,n,o;const{rects:a,middlewareData:i,placement:u,platform:f,elements:g}=t,{crossAxis:m=!1,alignment:S,allowedPlacements:O=yw,autoAlignment:T=!0,...C}=po(e,t),w=S!==void 0||O===yw?ZF(S||null,T,O):O,b=await di(t,C),d=((r=i.autoPlacement)==null?void 0:r.index)||0,s=w[d];if(s==null)return{};const c=hO(s,a,await(f.isRTL==null?void 0:f.isRTL(g.floating)));if(u!==s)return{reset:{placement:w[0]}};const l=[b[Cn(s)],b[c[0]],b[c[1]]],h=[...((n=i.autoPlacement)==null?void 0:n.overflows)||[],{placement:s,overflows:l}],y=w[d+1];if(y)return{data:{index:d+1,overflows:h},reset:{placement:y}};const x=h.map(N=>{const A=uo(N.placement);return[N.placement,A&&m?N.overflows.slice(0,2).reduce((M,D)=>M+D,0):N.overflows[0],N.overflows]}).sort((N,A)=>N[1]-A[1]),k=((o=x.filter(N=>N[2].slice(0,uo(N[0])?2:3).every(A=>A<=0))[0])==null?void 0:o[0])||x[0][0];return k!==u?{data:{index:d+1,overflows:h},reset:{placement:k}}:{}}}},e6=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r,n;const{placement:o,middlewareData:a,rects:i,initialPlacement:u,platform:f,elements:g}=t,{mainAxis:m=!0,crossAxis:S=!0,fallbackPlacements:O,fallbackStrategy:T="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:w=!0,...b}=po(e,t);if((r=a.arrow)!=null&&r.alignmentOffset)return{};const d=Cn(o),s=ao(u),c=Cn(u)===u,l=await(f.isRTL==null?void 0:f.isRTL(g.floating)),h=O||(c||!w?[Gd(u)]:$F(u)),y=C!=="none";!O&&y&&h.push(...KF(u,w,C,l));const x=[u,...h],j=await di(t,b),k=[];let N=((n=a.flip)==null?void 0:n.overflows)||[];if(m&&k.push(j[d]),S){const L=hO(o,i,l);k.push(j[L[0]],j[L[1]])}if(N=[...N,{placement:o,overflows:k}],!k.every(L=>L<=0)){var A,M;const L=(((A=a.flip)==null?void 0:A.index)||0)+1,z=x[L];if(z&&(!(S==="alignment"?s!==ao(z):!1)||N.every(q=>ao(q.placement)===s?q.overflows[0]>0:!0)))return{data:{index:L,overflows:N},reset:{placement:z}};let V=(M=N.filter(Y=>Y.overflows[0]<=0).sort((Y,q)=>Y.overflows[1]-q.overflows[1])[0])==null?void 0:M.placement;if(!V)switch(T){case"bestFit":{var D;const Y=(D=N.filter(q=>{if(y){const B=ao(q.placement);return B===s||B==="y"}return!0}).map(q=>[q.placement,q.overflows.filter(B=>B>0).reduce((B,H)=>B+H,0)]).sort((q,B)=>q[1]-B[1])[0])==null?void 0:D[0];Y&&(V=Y);break}case"initialPlacement":V=u;break}if(o!==V)return{reset:{placement:V}}}return{}}}};function Sw(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Cw(e){return pO.some(t=>e[t]>=0)}const t6=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:r}=t,{strategy:n="referenceHidden",...o}=po(e,t);switch(n){case"referenceHidden":{const a=await di(t,{...o,elementContext:"reference"}),i=Sw(a,r.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:Cw(i)}}}case"escaped":{const a=await di(t,{...o,altBoundary:!0}),i=Sw(a,r.floating);return{data:{escapedOffsets:i,escaped:Cw(i)}}}default:return{}}}}};function gO(e){const t=fo(...e.map(a=>a.left)),r=fo(...e.map(a=>a.top)),n=Vr(...e.map(a=>a.right)),o=Vr(...e.map(a=>a.bottom));return{x:t,y:r,width:n-t,height:o-r}}function r6(e){const t=e.slice().sort((o,a)=>o.y-a.y),r=[];let n=null;for(let o=0;on.height/2?r.push([a]):r[r.length-1].push(a),n=a}return r.map(o=>ys(gO(o)))}const n6=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){const{placement:r,elements:n,rects:o,platform:a,strategy:i}=t,{padding:u=2,x:f,y:g}=po(e,t),m=Array.from(await(a.getClientRects==null?void 0:a.getClientRects(n.reference))||[]),S=r6(m),O=ys(gO(m)),T=hb(u);function C(){if(S.length===2&&S[0].left>S[1].right&&f!=null&&g!=null)return S.find(b=>f>b.left-T.left&&fb.top-T.top&&g=2){if(ao(r)==="y"){const N=S[0],A=S[S.length-1],M=Cn(r)==="top",D=N.top,L=A.bottom,z=M?N.left:A.left,V=M?N.right:A.right,Y=V-z,q=L-D;return{top:D,bottom:L,left:z,right:V,width:Y,height:q,x:z,y:D}}const b=Cn(r)==="left",d=Vr(...S.map(N=>N.right)),s=fo(...S.map(N=>N.left)),c=S.filter(N=>b?N.left===s:N.right===d),l=c[0].top,h=c[c.length-1].bottom,y=s,x=d,j=x-y,k=h-l;return{top:l,bottom:h,left:y,right:x,width:j,height:k,x:y,y:l}}return O}const w=await a.getElementRects({reference:{getBoundingClientRect:C},floating:n.floating,strategy:i});return o.reference.x!==w.reference.x||o.reference.y!==w.reference.y||o.reference.width!==w.reference.width||o.reference.height!==w.reference.height?{reset:{rects:w}}:{}}}},mO=new Set(["left","top"]);async function o6(e,t){const{placement:r,platform:n,elements:o}=e,a=await(n.isRTL==null?void 0:n.isRTL(o.floating)),i=Cn(r),u=uo(r),f=ao(r)==="y",g=mO.has(i)?-1:1,m=a&&f?-1:1,S=po(t,e);let{mainAxis:O,crossAxis:T,alignmentAxis:C}=typeof S=="number"?{mainAxis:S,crossAxis:0,alignmentAxis:null}:{mainAxis:S.mainAxis||0,crossAxis:S.crossAxis||0,alignmentAxis:S.alignmentAxis};return u&&typeof C=="number"&&(T=u==="end"?C*-1:C),f?{x:T*m,y:O*g}:{x:O*g,y:T*m}}const a6=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var r,n;const{x:o,y:a,placement:i,middlewareData:u}=t,f=await o6(t,e);return i===((r=u.offset)==null?void 0:r.placement)&&(n=u.arrow)!=null&&n.alignmentOffset?{}:{x:o+f.x,y:a+f.y,data:{...f,placement:i}}}}},i6=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:n,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:u={fn:b=>{let{x:d,y:s}=b;return{x:d,y:s}}},...f}=po(e,t),g={x:r,y:n},m=await di(t,f),S=ao(Cn(o)),O=db(S);let T=g[O],C=g[S];if(a){const b=O==="y"?"top":"left",d=O==="y"?"bottom":"right",s=T+m[b],c=T-m[d];T=l0(s,T,c)}if(i){const b=S==="y"?"top":"left",d=S==="y"?"bottom":"right",s=C+m[b],c=C-m[d];C=l0(s,C,c)}const w=u.fn({...t,[O]:T,[S]:C});return{...w,data:{x:w.x-r,y:w.y-n,enabled:{[O]:a,[S]:i}}}}}},s6=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:r,y:n,placement:o,rects:a,middlewareData:i}=t,{offset:u=0,mainAxis:f=!0,crossAxis:g=!0}=po(e,t),m={x:r,y:n},S=ao(o),O=db(S);let T=m[O],C=m[S];const w=po(u,t),b=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(f){const c=O==="y"?"height":"width",l=a.reference[O]-a.floating[c]+b.mainAxis,h=a.reference[O]+a.reference[c]-b.mainAxis;Th&&(T=h)}if(g){var d,s;const c=O==="y"?"width":"height",l=mO.has(Cn(o)),h=a.reference[S]-a.floating[c]+(l&&((d=i.offset)==null?void 0:d[S])||0)+(l?0:b.crossAxis),y=a.reference[S]+a.reference[c]+(l?0:((s=i.offset)==null?void 0:s[S])||0)-(l?b.crossAxis:0);Cy&&(C=y)}return{[O]:T,[S]:C}}}},l6=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var r,n;const{placement:o,rects:a,platform:i,elements:u}=t,{apply:f=()=>{},...g}=po(e,t),m=await di(t,g),S=Cn(o),O=uo(o),T=ao(o)==="y",{width:C,height:w}=a.floating;let b,d;S==="top"||S==="bottom"?(b=S,d=O===(await(i.isRTL==null?void 0:i.isRTL(u.floating))?"start":"end")?"left":"right"):(d=S,b=O==="end"?"top":"bottom");const s=w-m.top-m.bottom,c=C-m.left-m.right,l=fo(w-m[b],s),h=fo(C-m[d],c),y=!t.middlewareData.shift;let x=l,j=h;if((r=t.middlewareData.shift)!=null&&r.enabled.x&&(j=c),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(x=s),y&&!O){const N=Vr(m.left,0),A=Vr(m.right,0),M=Vr(m.top,0),D=Vr(m.bottom,0);T?j=C-2*(N!==0||A!==0?N+A:Vr(m.left,m.right)):x=w-2*(M!==0||D!==0?M+D:Vr(m.top,m.bottom))}await f({...t,availableWidth:j,availableHeight:x});const k=await i.getDimensions(u.floating);return C!==k.width||w!==k.height?{reset:{rects:!0}}:{}}}};function Ff(){return typeof window<"u"}function Rs(e){return bO(e)?(e.nodeName||"").toLowerCase():"#document"}function _n(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Ro(e){var t;return(t=(bO(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function bO(e){return Ff()?e instanceof Node||e instanceof _n(e).Node:!1}function ho(e){return Ff()?e instanceof Element||e instanceof _n(e).Element:!1}function jo(e){return Ff()?e instanceof HTMLElement||e instanceof _n(e).HTMLElement:!1}function Tw(e){return!Ff()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof _n(e).ShadowRoot}const u6=new Set(["inline","contents"]);function Tu(e){const{overflow:t,overflowX:r,overflowY:n,display:o}=go(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!u6.has(o)}const c6=new Set(["table","td","th"]);function d6(e){return c6.has(Rs(e))}const f6=[":popover-open",":modal"];function zf(e){return f6.some(t=>{try{return e.matches(t)}catch{return!1}})}const p6=["transform","translate","scale","rotate","perspective"],h6=["transform","translate","scale","rotate","perspective","filter"],g6=["paint","layout","strict","content"];function gb(e){const t=mb(),r=ho(e)?go(e):e;return p6.some(n=>r[n]?r[n]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!t&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!t&&(r.filter?r.filter!=="none":!1)||h6.some(n=>(r.willChange||"").includes(n))||g6.some(n=>(r.contain||"").includes(n))}function m6(e){let t=La(e);for(;jo(t)&&!xs(t);){if(gb(t))return t;if(zf(t))return null;t=La(t)}return null}function mb(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const b6=new Set(["html","body","#document"]);function xs(e){return b6.has(Rs(e))}function go(e){return _n(e).getComputedStyle(e)}function Bf(e){return ho(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function La(e){if(Rs(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Tw(e)&&e.host||Ro(e);return Tw(t)?t.host:t}function vO(e){const t=La(e);return xs(t)?e.ownerDocument?e.ownerDocument.body:e.body:jo(t)&&Tu(t)?t:vO(t)}function $o(e,t,r){var n;t===void 0&&(t=[]),r===void 0&&(r=!0);const o=vO(e),a=o===((n=e.ownerDocument)==null?void 0:n.body),i=_n(o);if(a){const u=u0(i);return t.concat(i,i.visualViewport||[],Tu(o)?o:[],u&&r?$o(u):[])}return t.concat(o,$o(o,[],r))}function u0(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function yO(e){const t=go(e);let r=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const o=jo(e),a=o?e.offsetWidth:r,i=o?e.offsetHeight:n,u=Hd(r)!==a||Hd(n)!==i;return u&&(r=a,n=i),{width:r,height:n,$:u}}function bb(e){return ho(e)?e:e.contextElement}function as(e){const t=bb(e);if(!jo(t))return No(1);const r=t.getBoundingClientRect(),{width:n,height:o,$:a}=yO(t);let i=(a?Hd(r.width):r.width)/n,u=(a?Hd(r.height):r.height)/o;return(!i||!Number.isFinite(i))&&(i=1),(!u||!Number.isFinite(u))&&(u=1),{x:i,y:u}}const v6=No(0);function xO(e){const t=_n(e);return!mb()||!t.visualViewport?v6:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function y6(e,t,r){return t===void 0&&(t=!1),!r||t&&r!==_n(e)?!1:t}function fi(e,t,r,n){t===void 0&&(t=!1),r===void 0&&(r=!1);const o=e.getBoundingClientRect(),a=bb(e);let i=No(1);t&&(n?ho(n)&&(i=as(n)):i=as(e));const u=y6(a,r,n)?xO(a):No(0);let f=(o.left+u.x)/i.x,g=(o.top+u.y)/i.y,m=o.width/i.x,S=o.height/i.y;if(a){const O=_n(a),T=n&&ho(n)?_n(n):n;let C=O,w=u0(C);for(;w&&n&&T!==C;){const b=as(w),d=w.getBoundingClientRect(),s=go(w),c=d.left+(w.clientLeft+parseFloat(s.paddingLeft))*b.x,l=d.top+(w.clientTop+parseFloat(s.paddingTop))*b.y;f*=b.x,g*=b.y,m*=b.x,S*=b.y,f+=c,g+=l,C=_n(w),w=u0(C)}}return ys({width:m,height:S,x:f,y:g})}function Vf(e,t){const r=Bf(e).scrollLeft;return t?t.left+r:fi(Ro(e)).left+r}function wO(e,t){const r=e.getBoundingClientRect(),n=r.left+t.scrollLeft-Vf(e,r),o=r.top+t.scrollTop;return{x:n,y:o}}function x6(e){let{elements:t,rect:r,offsetParent:n,strategy:o}=e;const a=o==="fixed",i=Ro(n),u=t?zf(t.floating):!1;if(n===i||u&&a)return r;let f={scrollLeft:0,scrollTop:0},g=No(1);const m=No(0),S=jo(n);if((S||!S&&!a)&&((Rs(n)!=="body"||Tu(i))&&(f=Bf(n)),jo(n))){const T=fi(n);g=as(n),m.x=T.x+n.clientLeft,m.y=T.y+n.clientTop}const O=i&&!S&&!a?wO(i,f):No(0);return{width:r.width*g.x,height:r.height*g.y,x:r.x*g.x-f.scrollLeft*g.x+m.x+O.x,y:r.y*g.y-f.scrollTop*g.y+m.y+O.y}}function w6(e){return Array.from(e.getClientRects())}function _6(e){const t=Ro(e),r=Bf(e),n=e.ownerDocument.body,o=Vr(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),a=Vr(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let i=-r.scrollLeft+Vf(e);const u=-r.scrollTop;return go(n).direction==="rtl"&&(i+=Vr(t.clientWidth,n.clientWidth)-o),{width:o,height:a,x:i,y:u}}const Pw=25;function S6(e,t){const r=_n(e),n=Ro(e),o=r.visualViewport;let a=n.clientWidth,i=n.clientHeight,u=0,f=0;if(o){a=o.width,i=o.height;const m=mb();(!m||m&&t==="fixed")&&(u=o.offsetLeft,f=o.offsetTop)}const g=Vf(n);if(g<=0){const m=n.ownerDocument,S=m.body,O=getComputedStyle(S),T=m.compatMode==="CSS1Compat"&&parseFloat(O.marginLeft)+parseFloat(O.marginRight)||0,C=Math.abs(n.clientWidth-S.clientWidth-T);C<=Pw&&(a-=C)}else g<=Pw&&(a+=g);return{width:a,height:i,x:u,y:f}}const C6=new Set(["absolute","fixed"]);function T6(e,t){const r=fi(e,!0,t==="fixed"),n=r.top+e.clientTop,o=r.left+e.clientLeft,a=jo(e)?as(e):No(1),i=e.clientWidth*a.x,u=e.clientHeight*a.y,f=o*a.x,g=n*a.y;return{width:i,height:u,x:f,y:g}}function Ow(e,t,r){let n;if(t==="viewport")n=S6(e,r);else if(t==="document")n=_6(Ro(e));else if(ho(t))n=T6(t,r);else{const o=xO(e);n={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return ys(n)}function _O(e,t){const r=La(e);return r===t||!ho(r)||xs(r)?!1:go(r).position==="fixed"||_O(r,t)}function P6(e,t){const r=t.get(e);if(r)return r;let n=$o(e,[],!1).filter(u=>ho(u)&&Rs(u)!=="body"),o=null;const a=go(e).position==="fixed";let i=a?La(e):e;for(;ho(i)&&!xs(i);){const u=go(i),f=gb(i);!f&&u.position==="fixed"&&(o=null),(a?!f&&!o:!f&&u.position==="static"&&!!o&&C6.has(o.position)||Tu(i)&&!f&&_O(e,i))?n=n.filter(m=>m!==i):o=u,i=La(i)}return t.set(e,n),n}function O6(e){let{element:t,boundary:r,rootBoundary:n,strategy:o}=e;const i=[...r==="clippingAncestors"?zf(t)?[]:P6(t,this._c):[].concat(r),n],u=i[0],f=i.reduce((g,m)=>{const S=Ow(t,m,o);return g.top=Vr(S.top,g.top),g.right=fo(S.right,g.right),g.bottom=fo(S.bottom,g.bottom),g.left=Vr(S.left,g.left),g},Ow(t,u,o));return{width:f.right-f.left,height:f.bottom-f.top,x:f.left,y:f.top}}function k6(e){const{width:t,height:r}=yO(e);return{width:t,height:r}}function N6(e,t,r){const n=jo(t),o=Ro(t),a=r==="fixed",i=fi(e,!0,a,t);let u={scrollLeft:0,scrollTop:0};const f=No(0);function g(){f.x=Vf(o)}if(n||!n&&!a)if((Rs(t)!=="body"||Tu(o))&&(u=Bf(t)),n){const T=fi(t,!0,a,t);f.x=T.x+t.clientLeft,f.y=T.y+t.clientTop}else o&&g();a&&!n&&o&&g();const m=o&&!n&&!a?wO(o,u):No(0),S=i.left+u.scrollLeft-f.x-m.x,O=i.top+u.scrollTop-f.y-m.y;return{x:S,y:O,width:i.width,height:i.height}}function wh(e){return go(e).position==="static"}function kw(e,t){if(!jo(e)||go(e).position==="fixed")return null;if(t)return t(e);let r=e.offsetParent;return Ro(e)===r&&(r=r.ownerDocument.body),r}function SO(e,t){const r=_n(e);if(zf(e))return r;if(!jo(e)){let o=La(e);for(;o&&!xs(o);){if(ho(o)&&!wh(o))return o;o=La(o)}return r}let n=kw(e,t);for(;n&&d6(n)&&wh(n);)n=kw(n,t);return n&&xs(n)&&wh(n)&&!gb(n)?r:n||m6(e)||r}const E6=async function(e){const t=this.getOffsetParent||SO,r=this.getDimensions,n=await r(e.floating);return{reference:N6(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function j6(e){return go(e).direction==="rtl"}const CO={convertOffsetParentRelativeRectToViewportRelativeRect:x6,getDocumentElement:Ro,getClippingRect:O6,getOffsetParent:SO,getElementRects:E6,getClientRects:w6,getDimensions:k6,getScale:as,isElement:ho,isRTL:j6};function TO(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function A6(e,t){let r=null,n;const o=Ro(e);function a(){var u;clearTimeout(n),(u=r)==null||u.disconnect(),r=null}function i(u,f){u===void 0&&(u=!1),f===void 0&&(f=1),a();const g=e.getBoundingClientRect(),{left:m,top:S,width:O,height:T}=g;if(u||t(),!O||!T)return;const C=gc(S),w=gc(o.clientWidth-(m+O)),b=gc(o.clientHeight-(S+T)),d=gc(m),c={rootMargin:-C+"px "+-w+"px "+-b+"px "+-d+"px",threshold:Vr(0,fo(1,f))||1};let l=!0;function h(y){const x=y[0].intersectionRatio;if(x!==f){if(!l)return i();x?i(!1,x):n=setTimeout(()=>{i(!1,1e-7)},1e3)}x===1&&!TO(g,e.getBoundingClientRect())&&i(),l=!1}try{r=new IntersectionObserver(h,{...c,root:o.ownerDocument})}catch{r=new IntersectionObserver(h,c)}r.observe(e)}return i(!0),a}function R6(e,t,r,n){n===void 0&&(n={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:f=!1}=n,g=bb(e),m=o||a?[...g?$o(g):[],...$o(t)]:[];m.forEach(d=>{o&&d.addEventListener("scroll",r,{passive:!0}),a&&d.addEventListener("resize",r)});const S=g&&u?A6(g,r):null;let O=-1,T=null;i&&(T=new ResizeObserver(d=>{let[s]=d;s&&s.target===g&&T&&(T.unobserve(t),cancelAnimationFrame(O),O=requestAnimationFrame(()=>{var c;(c=T)==null||c.observe(t)})),r()}),g&&!f&&T.observe(g),T.observe(t));let C,w=f?fi(e):null;f&&b();function b(){const d=fi(e);w&&!TO(w,d)&&r(),w=d,C=requestAnimationFrame(b)}return r(),()=>{var d;m.forEach(s=>{o&&s.removeEventListener("scroll",r),a&&s.removeEventListener("resize",r)}),S==null||S(),(d=T)==null||d.disconnect(),T=null,f&&cancelAnimationFrame(C)}}const Gc=di,PO=a6,M6=JF,I6=i6,D6=e6,L6=l6,F6=t6,Nw=XF,z6=n6,B6=s6,OO=(e,t,r)=>{const n=new Map,o={platform:CO,...r},a={...o.platform,_c:n};return QF(e,t,{...o,platform:a})},V6=e=>{const{element:t,padding:r}=e;function n(o){return Object.prototype.hasOwnProperty.call(o,"current")}return{name:"arrow",options:e,fn(o){return n(t)?t.current!=null?Nw({element:t.current,padding:r}).fn(o):{}:t?Nw({element:t,padding:r}).fn(o):{}}}};var Kc=typeof document<"u"?P.useLayoutEffect:P.useEffect;function Kd(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let r,n,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(r=e.length,r!=t.length)return!1;for(n=r;n--!==0;)if(!Kd(e[n],t[n]))return!1;return!0}if(o=Object.keys(e),r=o.length,r!==Object.keys(t).length)return!1;for(n=r;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[n]))return!1;for(n=r;n--!==0;){const a=o[n];if(!(a==="_owner"&&e.$$typeof)&&!Kd(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function Ew(e){const t=P.useRef(e);return Kc(()=>{t.current=e}),t}function U6(e){e===void 0&&(e={});const{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:o,whileElementsMounted:a,open:i}=e,[u,f]=P.useState({x:null,y:null,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[g,m]=P.useState(n);Kd(g,n)||m(n);const S=P.useRef(null),O=P.useRef(null),T=P.useRef(u),C=Ew(a),w=Ew(o),[b,d]=P.useState(null),[s,c]=P.useState(null),l=P.useCallback(N=>{S.current!==N&&(S.current=N,d(N))},[]),h=P.useCallback(N=>{O.current!==N&&(O.current=N,c(N))},[]),y=P.useCallback(()=>{if(!S.current||!O.current)return;const N={placement:t,strategy:r,middleware:g};w.current&&(N.platform=w.current),OO(S.current,O.current,N).then(A=>{const M={...A,isPositioned:!0};x.current&&!Kd(T.current,M)&&(T.current=M,Yo.flushSync(()=>{f(M)}))})},[g,t,r,w]);Kc(()=>{i===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(N=>({...N,isPositioned:!1})))},[i]);const x=P.useRef(!1);Kc(()=>(x.current=!0,()=>{x.current=!1}),[]),Kc(()=>{if(b&&s){if(C.current)return C.current(b,s,y);y()}},[b,s,y,C]);const j=P.useMemo(()=>({reference:S,floating:O,setReference:l,setFloating:h}),[l,h]),k=P.useMemo(()=>({reference:b,floating:s}),[b,s]);return P.useMemo(()=>({...u,update:y,refs:j,elements:k,reference:l,floating:h}),[u,y,j,k,l,h])}var ar=typeof document<"u"?P.useLayoutEffect:P.useEffect;let _h=!1,W6=0;const jw=()=>"floating-ui-"+W6++;function $6(){const[e,t]=P.useState(()=>_h?jw():void 0);return ar(()=>{e==null&&t(jw())},[]),P.useEffect(()=>{_h||(_h=!0)},[]),e}const H6=S0["useId".toString()],lu=H6||$6;function kO(){const e=new Map;return{emit(t,r){var n;(n=e.get(t))==null||n.forEach(o=>o(r))},on(t,r){e.set(t,[...e.get(t)||[],r])},off(t,r){e.set(t,(e.get(t)||[]).filter(n=>n!==r))}}}const NO=P.createContext(null),EO=P.createContext(null),Ms=()=>{var e;return((e=P.useContext(NO))==null?void 0:e.id)||null},_i=()=>P.useContext(EO),q6=e=>{const t=lu(),r=_i(),n=Ms(),o=e||n;return ar(()=>{const a={id:t,parentId:o};return r==null||r.addNode(a),()=>{r==null||r.removeNode(a)}},[r,t,o]),t},G6=e=>{let{children:t,id:r}=e;const n=Ms();return P.createElement(NO.Provider,{value:P.useMemo(()=>({id:r,parentId:n}),[r,n])},t)},K6=e=>{let{children:t}=e;const r=P.useRef([]),n=P.useCallback(i=>{r.current=[...r.current,i]},[]),o=P.useCallback(i=>{r.current=r.current.filter(u=>u!==i)},[]),a=P.useState(()=>kO())[0];return P.createElement(EO.Provider,{value:P.useMemo(()=>({nodesRef:r,addNode:n,removeNode:o,events:a}),[r,n,o,a])},t)};function an(e){return(e==null?void 0:e.ownerDocument)||document}function vb(){const e=navigator.userAgentData;return e!=null&&e.platform?e.platform:navigator.platform}function jO(){const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(t=>{let{brand:r,version:n}=t;return r+"/"+n}).join(" "):navigator.userAgent}function yb(e){return an(e).defaultView||window}function zn(e){return e?e instanceof yb(e).Element:!1}function pi(e){return e?e instanceof yb(e).HTMLElement:!1}function Y6(e){if(typeof ShadowRoot>"u")return!1;const t=yb(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function AO(e){if(e.mozInputSource===0&&e.isTrusted)return!0;const t=/Android/i;return(t.test(vb())||t.test(jO()))&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function RO(e){return e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType!=="mouse"||e.width<1&&e.height<1&&e.pressure===0&&e.detail===0}function c0(){return/apple/i.test(navigator.vendor)}function MO(){return vb().toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints}function Yd(e,t){const r=["mouse","pen"];return t||r.push("",void 0),r.includes(e)}function Bn(e){const t=P.useRef(e);return ar(()=>{t.current=e}),t}const Aw="data-floating-ui-safe-polygon";function Yc(e,t,r){return r&&!Yd(r)?0:typeof e=="number"?e:e==null?void 0:e[t]}const Q6=function(e,t){let{enabled:r=!0,delay:n=0,handleClose:o=null,mouseOnly:a=!1,restMs:i=0,move:u=!0}=t===void 0?{}:t;const{open:f,onOpenChange:g,dataRef:m,events:S,elements:{domReference:O,floating:T},refs:C}=e,w=_i(),b=Ms(),d=Bn(o),s=Bn(n),c=P.useRef(),l=P.useRef(),h=P.useRef(),y=P.useRef(),x=P.useRef(!0),j=P.useRef(!1),k=P.useRef(()=>{}),N=P.useCallback(()=>{var L;const z=(L=m.current.openEvent)==null?void 0:L.type;return(z==null?void 0:z.includes("mouse"))&&z!=="mousedown"},[m]);P.useEffect(()=>{if(!r)return;function L(){clearTimeout(l.current),clearTimeout(y.current),x.current=!0}return S.on("dismiss",L),()=>{S.off("dismiss",L)}},[r,S]),P.useEffect(()=>{if(!r||!d.current||!f)return;function L(){N()&&g(!1)}const z=an(T).documentElement;return z.addEventListener("mouseleave",L),()=>{z.removeEventListener("mouseleave",L)}},[T,f,g,r,d,m,N]);const A=P.useCallback(function(L){L===void 0&&(L=!0);const z=Yc(s.current,"close",c.current);z&&!h.current?(clearTimeout(l.current),l.current=setTimeout(()=>g(!1),z)):L&&(clearTimeout(l.current),g(!1))},[s,g]),M=P.useCallback(()=>{k.current(),h.current=void 0},[]),D=P.useCallback(()=>{if(j.current){const L=an(C.floating.current).body;L.style.pointerEvents="",L.removeAttribute(Aw),j.current=!1}},[C]);return P.useEffect(()=>{if(!r)return;function L(){return m.current.openEvent?["click","mousedown"].includes(m.current.openEvent.type):!1}function z(q){if(clearTimeout(l.current),x.current=!1,a&&!Yd(c.current)||i>0&&Yc(s.current,"open")===0)return;m.current.openEvent=q;const B=Yc(s.current,"open",c.current);B?l.current=setTimeout(()=>{g(!0)},B):g(!0)}function V(q){if(L())return;k.current();const B=an(T);if(clearTimeout(y.current),d.current){clearTimeout(l.current),h.current=d.current({...e,tree:w,x:q.clientX,y:q.clientY,onClose(){D(),M(),A()}});const H=h.current;B.addEventListener("mousemove",H),k.current=()=>{B.removeEventListener("mousemove",H)};return}A()}function Y(q){L()||d.current==null||d.current({...e,tree:w,x:q.clientX,y:q.clientY,onClose(){M(),A()}})(q)}if(zn(O)){const q=O;return f&&q.addEventListener("mouseleave",Y),T==null||T.addEventListener("mouseleave",Y),u&&q.addEventListener("mousemove",z,{once:!0}),q.addEventListener("mouseenter",z),q.addEventListener("mouseleave",V),()=>{f&&q.removeEventListener("mouseleave",Y),T==null||T.removeEventListener("mouseleave",Y),u&&q.removeEventListener("mousemove",z),q.removeEventListener("mouseenter",z),q.removeEventListener("mouseleave",V)}}},[O,T,r,e,a,i,u,A,M,D,g,f,w,s,d,m]),ar(()=>{var L;if(r&&f&&(L=d.current)!=null&&L.__options.blockPointerEvents&&N()){const Y=an(T).body;if(Y.setAttribute(Aw,""),Y.style.pointerEvents="none",j.current=!0,zn(O)&&T){var z,V;const q=O,B=w==null||(z=w.nodesRef.current.find(H=>H.id===b))==null||(V=z.context)==null?void 0:V.elements.floating;return B&&(B.style.pointerEvents=""),q.style.pointerEvents="auto",T.style.pointerEvents="auto",()=>{q.style.pointerEvents="",T.style.pointerEvents=""}}}},[r,f,b,T,O,w,d,m,N]),ar(()=>{f||(c.current=void 0,M(),D())},[f,M,D]),P.useEffect(()=>()=>{M(),clearTimeout(l.current),clearTimeout(y.current),D()},[r,M,D]),P.useMemo(()=>{if(!r)return{};function L(z){c.current=z.pointerType}return{reference:{onPointerDown:L,onPointerEnter:L,onMouseMove(){f||i===0||(clearTimeout(y.current),y.current=setTimeout(()=>{x.current||g(!0)},i))}},floating:{onMouseEnter(){clearTimeout(l.current)},onMouseLeave(){S.emit("dismiss",{type:"mouseLeave",data:{returnFocus:!1}}),A(!1)}}}},[S,r,i,f,g,A])},IO=P.createContext({delay:0,initialDelay:0,timeoutMs:0,currentId:null,setCurrentId:()=>{},setState:()=>{},isInstantPhase:!1}),DO=()=>P.useContext(IO),X6=e=>{let{children:t,delay:r,timeoutMs:n=0}=e;const[o,a]=P.useReducer((f,g)=>({...f,...g}),{delay:r,timeoutMs:n,initialDelay:r,currentId:null,isInstantPhase:!1}),i=P.useRef(null),u=P.useCallback(f=>{a({currentId:f})},[]);return ar(()=>{o.currentId?i.current===null?i.current=o.currentId:a({isInstantPhase:!0}):(a({isInstantPhase:!1}),i.current=null)},[o.currentId]),P.createElement(IO.Provider,{value:P.useMemo(()=>({...o,setState:a,setCurrentId:u}),[o,a,u])},t)},Z6=(e,t)=>{let{open:r,onOpenChange:n}=e,{id:o}=t;const{currentId:a,setCurrentId:i,initialDelay:u,setState:f,timeoutMs:g}=DO();P.useEffect(()=>{a&&(f({delay:{open:1,close:Yc(u,"close")}}),a!==o&&n(!1))},[o,n,f,a,u]),P.useEffect(()=>{function m(){n(!1),f({delay:u,currentId:null})}if(!r&&a===o)if(g){const S=window.setTimeout(m,g);return()=>{clearTimeout(S)}}else m()},[r,f,a,o,n,u,g]),P.useEffect(()=>{r&&i(o)},[r,i,o])};function uu(){return uu=Object.assign||function(e){for(var t=1;te==null?void 0:e.focus({preventScroll:r});o?a():Rw=requestAnimationFrame(a)}function J6(e,t){var r;let n=[],o=(r=e.find(a=>a.id===t))==null?void 0:r.parentId;for(;o;){const a=e.find(i=>i.id===o);o=a==null?void 0:a.parentId,a&&(n=n.concat(a))}return n}function Ml(e,t){let r=e.filter(o=>{var a;return o.parentId===t&&((a=o.context)==null?void 0:a.open)})||[],n=r;for(;n.length;)n=e.filter(o=>{var a;return(a=n)==null?void 0:a.some(i=>{var u;return o.parentId===i.id&&((u=o.context)==null?void 0:u.open)})})||[],r=r.concat(n);return r}function Uf(e){return"composedPath"in e?e.composedPath()[0]:e.target}const ez="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function LO(e){return pi(e)&&e.matches(ez)}function Mn(e){e.preventDefault(),e.stopPropagation()}const Qd=()=>({getShadowRoot:!0,displayCheck:typeof ResizeObserver=="function"&&ResizeObserver.toString().includes("[native code]")?"full":"none"});function FO(e,t){const r=$d(e,Qd());t==="prev"&&r.reverse();const n=r.indexOf(hi(an(e)));return r.slice(n+1)[0]}function zO(){return FO(document.body,"next")}function BO(){return FO(document.body,"prev")}function Il(e,t){const r=t||e.currentTarget,n=e.relatedTarget;return!n||!tn(r,n)}function tz(e){$d(e,Qd()).forEach(r=>{r.dataset.tabindex=r.getAttribute("tabindex")||"",r.setAttribute("tabindex","-1")})}function rz(e){e.querySelectorAll("[data-tabindex]").forEach(r=>{const n=r.dataset.tabindex;delete r.dataset.tabindex,n?r.setAttribute("tabindex",n):r.removeAttribute("tabindex")})}const nz=S0["useInsertionEffect".toString()],oz=nz||(e=>e());function Is(e){const t=P.useRef(()=>{});return oz(()=>{t.current=e}),P.useCallback(function(){for(var r=arguments.length,n=new Array(r),o=0;o(c0()&&a("button"),document.addEventListener("keydown",Mw),()=>{document.removeEventListener("keydown",Mw)}),[]),P.createElement("span",uu({},t,{ref:r,tabIndex:0,role:o,"aria-hidden":o?void 0:!0,"data-floating-ui-focus-guard":"",style:xb,onFocus:i=>{c0()&&MO()&&!az(i)?(i.persist(),wb=window.setTimeout(()=>{n(i)},50)):n(i)}}))}),VO=P.createContext(null),UO=function(e){let{id:t,enabled:r=!0}=e===void 0?{}:e;const[n,o]=P.useState(null),a=lu(),i=WO();return ar(()=>{if(!r)return;const u=t?document.getElementById(t):null;if(u)u.setAttribute("data-floating-ui-portal",""),o(u);else{const f=document.createElement("div");t!==""&&(f.id=t||a),f.setAttribute("data-floating-ui-portal",""),o(f);const g=(i==null?void 0:i.portalNode)||document.body;return g.appendChild(f),()=>{g.removeChild(f)}}},[t,i,a,r]),n},iz=e=>{let{children:t,id:r,root:n=null,preserveTabOrder:o=!0}=e;const a=UO({id:r,enabled:!n}),[i,u]=P.useState(null),f=P.useRef(null),g=P.useRef(null),m=P.useRef(null),S=P.useRef(null),O=!!i&&!i.modal&&!!(n||a)&&o;return P.useEffect(()=>{if(!a||!o||i!=null&&i.modal)return;function T(C){a&&Il(C)&&(C.type==="focusin"?rz:tz)(a)}return a.addEventListener("focusin",T,!0),a.addEventListener("focusout",T,!0),()=>{a.removeEventListener("focusin",T,!0),a.removeEventListener("focusout",T,!0)}},[a,o,i==null?void 0:i.modal]),P.createElement(VO.Provider,{value:P.useMemo(()=>({preserveTabOrder:o,beforeOutsideRef:f,afterOutsideRef:g,beforeInsideRef:m,afterInsideRef:S,portalNode:a,setFocusManagerState:u}),[o,a])},O&&a&&P.createElement(Xd,{"data-type":"outside",ref:f,onFocus:T=>{if(Il(T,a)){var C;(C=m.current)==null||C.focus()}else{const w=BO()||(i==null?void 0:i.refs.domReference.current);w==null||w.focus()}}}),O&&a&&P.createElement("span",{"aria-owns":a.id,style:xb}),n?Yo.createPortal(t,n):a?Yo.createPortal(t,a):null,O&&a&&P.createElement(Xd,{"data-type":"outside",ref:g,onFocus:T=>{if(Il(T,a)){var C;(C=S.current)==null||C.focus()}else{const w=zO()||(i==null?void 0:i.refs.domReference.current);w==null||w.focus(),i!=null&&i.closeOnFocusOut&&(i==null||i.onOpenChange(!1))}}}))},WO=()=>P.useContext(VO),sz=P.forwardRef(function(t,r){return P.createElement("button",uu({},t,{type:"button",ref:r,tabIndex:-1,style:xb}))});function lz(e){let{context:t,children:r,order:n=["content"],guards:o=!0,initialFocus:a=0,returnFocus:i=!0,modal:u=!0,visuallyHiddenDismiss:f=!1,closeOnFocusOut:g=!0}=e;const{refs:m,nodeId:S,onOpenChange:O,events:T,dataRef:C,elements:{domReference:w,floating:b}}=t,d=Bn(n),s=_i(),c=WO(),[l,h]=P.useState(null),y=typeof a=="number"&&a<0,x=P.useRef(null),j=P.useRef(null),k=P.useRef(!1),N=P.useRef(null),A=P.useRef(!1),M=c!=null,D=w&&w.getAttribute("role")==="combobox"&&LO(w),L=P.useCallback(function(q){return q===void 0&&(q=b),q?$d(q,Qd()):[]},[b]),z=P.useCallback(q=>{const B=L(q);return d.current.map(H=>w&&H==="reference"?w:b&&H==="floating"?b:B).filter(Boolean).flat()},[w,b,d,L]);P.useEffect(()=>{if(!u)return;function q(H){if(H.key==="Tab"){L().length===0&&!D&&Mn(H);const K=z(),X=Uf(H);d.current[0]==="reference"&&X===w&&(Mn(H),H.shiftKey?ha(K[K.length-1]):ha(K[1])),d.current[1]==="floating"&&X===b&&H.shiftKey&&(Mn(H),ha(K[0]))}}const B=an(b);return B.addEventListener("keydown",q),()=>{B.removeEventListener("keydown",q)}},[w,b,u,d,m,D,L,z]),P.useEffect(()=>{if(!g)return;function q(){A.current=!0,setTimeout(()=>{A.current=!1})}function B(H){const K=H.relatedTarget,X=!(tn(w,K)||tn(b,K)||tn(K,b)||tn(c==null?void 0:c.portalNode,K)||K!=null&&K.hasAttribute("data-floating-ui-focus-guard")||s&&(Ml(s.nodesRef.current,S).find(re=>{var me,de;return tn((me=re.context)==null?void 0:me.elements.floating,K)||tn((de=re.context)==null?void 0:de.elements.domReference,K)})||J6(s.nodesRef.current,S).find(re=>{var me,de;return((me=re.context)==null?void 0:me.elements.floating)===K||((de=re.context)==null?void 0:de.elements.domReference)===K})));K&&X&&!A.current&&K!==N.current&&(k.current=!0,setTimeout(()=>O(!1)))}if(b&&pi(w))return w.addEventListener("focusout",B),w.addEventListener("pointerdown",q),!u&&b.addEventListener("focusout",B),()=>{w.removeEventListener("focusout",B),w.removeEventListener("pointerdown",q),!u&&b.removeEventListener("focusout",B)}},[w,b,u,S,s,c,O,g]),P.useEffect(()=>{var q;const B=Array.from((c==null||(q=c.portalNode)==null?void 0:q.querySelectorAll("[data-floating-ui-portal]"))||[]);function H(){return[x.current,j.current].filter(Boolean)}if(b&&u){const K=[b,...B,...H()],X=_F(d.current.includes("reference")||D?K.concat(w||[]):K);return()=>{X()}}},[w,b,u,d,c,D]),P.useEffect(()=>{if(u&&!o&&b){const q=[],B=Qd(),H=$d(an(b).body,B),K=z(),X=H.filter(re=>!K.includes(re));return X.forEach((re,me)=>{q[me]=re.getAttribute("tabindex"),re.setAttribute("tabindex","-1")}),()=>{X.forEach((re,me)=>{const de=q[me];de==null?re.removeAttribute("tabindex"):re.setAttribute("tabindex",de)})}}},[b,u,o,z]),ar(()=>{if(!b)return;const q=an(b);let B=i,H=!1;const K=hi(q),X=C.current;N.current=K;const re=z(b),me=(typeof a=="number"?re[a]:a.current)||b;!y&&ha(me,{preventScroll:me===b});function de(ee){if(ee.type==="escapeKey"&&m.domReference.current&&(N.current=m.domReference.current),["referencePress","escapeKey"].includes(ee.type))return;const _e=ee.data.returnFocus;typeof _e=="object"?(B=!0,H=_e.preventScroll):B=_e}return T.on("dismiss",de),()=>{if(T.off("dismiss",de),tn(b,hi(q))&&m.domReference.current&&(N.current=m.domReference.current),B&&pi(N.current)&&!k.current)if(!m.domReference.current||A.current)ha(N.current,{cancelPrevious:!1,preventScroll:H});else{var ee;X.__syncReturnFocus=!0,(ee=N.current)==null||ee.focus({preventScroll:H}),setTimeout(()=>{delete X.__syncReturnFocus})}}},[b,z,a,i,C,m,T,y]),ar(()=>{if(c)return c.setFocusManagerState({...t,modal:u,closeOnFocusOut:g}),()=>{c.setFocusManagerState(null)}},[c,u,g,t]),ar(()=>{if(y||!b)return;function q(){h(L().length)}if(q(),typeof MutationObserver=="function"){const B=new MutationObserver(q);return B.observe(b,{childList:!0,subtree:!0}),()=>{B.disconnect()}}},[b,L,y,m]);const V=o&&(M||u)&&!D;function Y(q){return f&&u?P.createElement(sz,{ref:q==="start"?x:j,onClick:()=>O(!1)},typeof f=="string"?f:"Dismiss"):null}return P.createElement(P.Fragment,null,V&&P.createElement(Xd,{"data-type":"inside",ref:c==null?void 0:c.beforeInsideRef,onFocus:q=>{if(u){const H=z();ha(n[0]==="reference"?H[0]:H[H.length-1])}else if(c!=null&&c.preserveTabOrder&&c.portalNode)if(k.current=!1,Il(q,c.portalNode)){const H=zO()||w;H==null||H.focus()}else{var B;(B=c.beforeOutsideRef.current)==null||B.focus()}}}),D?null:Y("start"),P.cloneElement(r,l===0||n.includes("floating")?{tabIndex:0}:{}),Y("end"),V&&P.createElement(Xd,{"data-type":"inside",ref:c==null?void 0:c.afterInsideRef,onFocus:q=>{if(u)ha(z()[0]);else if(c!=null&&c.preserveTabOrder&&c.portalNode)if(k.current=!0,Il(q,c.portalNode)){const H=BO()||w;H==null||H.focus()}else{var B;(B=c.afterOutsideRef.current)==null||B.focus()}}}))}const mc="data-floating-ui-scroll-lock",uz=P.forwardRef(function(t,r){let{lockScroll:n=!1,...o}=t;return ar(()=>{var a,i;if(!n||document.body.hasAttribute(mc))return;document.body.setAttribute(mc,"");const g=Math.round(document.documentElement.getBoundingClientRect().left)+document.documentElement.scrollLeft?"paddingLeft":"paddingRight",m=window.innerWidth-document.documentElement.clientWidth;if(!/iP(hone|ad|od)|iOS/.test(vb()))return Object.assign(document.body.style,{overflow:"hidden",[g]:m+"px"}),()=>{document.body.removeAttribute(mc),Object.assign(document.body.style,{overflow:"",[g]:""})};const S=((a=window.visualViewport)==null?void 0:a.offsetLeft)||0,O=((i=window.visualViewport)==null?void 0:i.offsetTop)||0,T=window.pageXOffset,C=window.pageYOffset;return Object.assign(document.body.style,{position:"fixed",overflow:"hidden",top:-(C-Math.floor(O))+"px",left:-(T-Math.floor(S))+"px",right:"0",[g]:m+"px"}),()=>{Object.assign(document.body.style,{position:"",overflow:"",top:"",left:"",right:"",[g]:""}),document.body.removeAttribute(mc),window.scrollTo(T,C)}},[n]),P.createElement("div",uu({ref:r},o,{style:{position:"fixed",overflow:"auto",top:0,right:0,bottom:0,left:0,...o.style}}))});function Iw(e){return pi(e.target)&&e.target.tagName==="BUTTON"}function Dw(e){return LO(e)}const cz=function(e,t){let{open:r,onOpenChange:n,dataRef:o,elements:{domReference:a}}=e,{enabled:i=!0,event:u="click",toggle:f=!0,ignoreMouse:g=!1,keyboardHandlers:m=!0}=t===void 0?{}:t;const S=P.useRef();return P.useMemo(()=>i?{reference:{onPointerDown(O){S.current=O.pointerType},onMouseDown(O){O.button===0&&(Yd(S.current,!0)&&g||u!=="click"&&(r?f&&(!o.current.openEvent||o.current.openEvent.type==="mousedown")&&n(!1):(O.preventDefault(),n(!0)),o.current.openEvent=O.nativeEvent))},onClick(O){if(!o.current.__syncReturnFocus){if(u==="mousedown"&&S.current){S.current=void 0;return}Yd(S.current,!0)&&g||(r?f&&(!o.current.openEvent||o.current.openEvent.type==="click")&&n(!1):n(!0),o.current.openEvent=O.nativeEvent)}},onKeyDown(O){S.current=void 0,m&&(Iw(O)||(O.key===" "&&!Dw(a)&&O.preventDefault(),O.key==="Enter"&&(r?f&&n(!1):n(!0))))},onKeyUp(O){m&&(Iw(O)||Dw(a)||O.key===" "&&(r?f&&n(!1):n(!0)))}}}:{},[i,o,u,g,m,a,f,r,n])};function Qc(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);const r=e;return r.target!=null&&t.contains(r.target)}const dz={pointerdown:"onPointerDown",mousedown:"onMouseDown",click:"onClick"},fz={pointerdown:"onPointerDownCapture",mousedown:"onMouseDownCapture",click:"onClickCapture"},pz=function(e){var t,r;return e===void 0&&(e=!0),{escapeKeyBubbles:typeof e=="boolean"?e:(t=e.escapeKey)!=null?t:!0,outsidePressBubbles:typeof e=="boolean"?e:(r=e.outsidePress)!=null?r:!0}},hz=function(e,t){let{open:r,onOpenChange:n,events:o,nodeId:a,elements:{reference:i,domReference:u,floating:f},dataRef:g}=e,{enabled:m=!0,escapeKey:S=!0,outsidePress:O=!0,outsidePressEvent:T="pointerdown",referencePress:C=!1,referencePressEvent:w="pointerdown",ancestorScroll:b=!1,bubbles:d=!0}=t===void 0?{}:t;const s=_i(),c=Ms()!=null,l=Is(typeof O=="function"?O:()=>!1),h=typeof O=="function"?l:O,y=P.useRef(!1),{escapeKeyBubbles:x,outsidePressBubbles:j}=pz(d);return P.useEffect(()=>{if(!r||!m)return;g.current.__escapeKeyBubbles=x,g.current.__outsidePressBubbles=j;function k(L){if(L.key==="Escape"){const z=s?Ml(s.nodesRef.current,a):[];if(z.length>0){let V=!0;if(z.forEach(Y=>{var q;if((q=Y.context)!=null&&q.open&&!Y.context.dataRef.current.__escapeKeyBubbles){V=!1;return}}),!V)return}o.emit("dismiss",{type:"escapeKey",data:{returnFocus:{preventScroll:!1}}}),n(!1)}}function N(L){const z=y.current;if(y.current=!1,z||typeof h=="function"&&!h(L))return;const V=Uf(L);if(pi(V)&&f){const B=f.ownerDocument.defaultView||window,H=V.scrollWidth>V.clientWidth,K=V.scrollHeight>V.clientHeight;let X=K&&L.offsetX>V.clientWidth;if(K&&B.getComputedStyle(V).direction==="rtl"&&(X=L.offsetX<=V.offsetWidth-V.clientWidth),X||H&&L.offsetY>V.clientHeight)return}const Y=s&&Ml(s.nodesRef.current,a).some(B=>{var H;return Qc(L,(H=B.context)==null?void 0:H.elements.floating)});if(Qc(L,f)||Qc(L,u)||Y)return;const q=s?Ml(s.nodesRef.current,a):[];if(q.length>0){let B=!0;if(q.forEach(H=>{var K;if((K=H.context)!=null&&K.open&&!H.context.dataRef.current.__outsidePressBubbles){B=!1;return}}),!B)return}o.emit("dismiss",{type:"outsidePress",data:{returnFocus:c?{preventScroll:!0}:AO(L)||RO(L)}}),n(!1)}function A(){n(!1)}const M=an(f);S&&M.addEventListener("keydown",k),h&&M.addEventListener(T,N);let D=[];return b&&(zn(u)&&(D=$o(u)),zn(f)&&(D=D.concat($o(f))),!zn(i)&&i&&i.contextElement&&(D=D.concat($o(i.contextElement)))),D=D.filter(L=>{var z;return L!==((z=M.defaultView)==null?void 0:z.visualViewport)}),D.forEach(L=>{L.addEventListener("scroll",A,{passive:!0})}),()=>{S&&M.removeEventListener("keydown",k),h&&M.removeEventListener(T,N),D.forEach(L=>{L.removeEventListener("scroll",A)})}},[g,f,u,i,S,h,T,o,s,a,r,n,b,m,x,j,c]),P.useEffect(()=>{y.current=!1},[h,T]),P.useMemo(()=>m?{reference:{[dz[w]]:()=>{C&&(o.emit("dismiss",{type:"referencePress",data:{returnFocus:!1}}),n(!1))}},floating:{[fz[T]]:()=>{y.current=!0}}}:{},[m,o,C,T,w,n])},gz=function(e,t){let{open:r,onOpenChange:n,dataRef:o,events:a,refs:i,elements:{floating:u,domReference:f}}=e,{enabled:g=!0,keyboardOnly:m=!0}=t===void 0?{}:t;const S=P.useRef(""),O=P.useRef(!1),T=P.useRef();return P.useEffect(()=>{if(!g)return;const w=an(u).defaultView||window;function b(){!r&&pi(f)&&f===hi(an(f))&&(O.current=!0)}return w.addEventListener("blur",b),()=>{w.removeEventListener("blur",b)}},[u,f,r,g]),P.useEffect(()=>{if(!g)return;function C(w){(w.type==="referencePress"||w.type==="escapeKey")&&(O.current=!0)}return a.on("dismiss",C),()=>{a.off("dismiss",C)}},[a,g]),P.useEffect(()=>()=>{clearTimeout(T.current)},[]),P.useMemo(()=>g?{reference:{onPointerDown(C){let{pointerType:w}=C;S.current=w,O.current=!!(w&&m)},onMouseLeave(){O.current=!1},onFocus(C){var w;O.current||C.type==="focus"&&((w=o.current.openEvent)==null?void 0:w.type)==="mousedown"&&o.current.openEvent&&Qc(o.current.openEvent,f)||(o.current.openEvent=C.nativeEvent,n(!0))},onBlur(C){O.current=!1;const w=C.relatedTarget,b=zn(w)&&w.hasAttribute("data-floating-ui-focus-guard")&&w.getAttribute("data-type")==="outside";T.current=setTimeout(()=>{tn(i.floating.current,w)||tn(f,w)||b||n(!1)})}}}:{},[g,m,f,i,o,n])};let Lw=!1;const _b="ArrowUp",Wf="ArrowDown",ws="ArrowLeft",Pu="ArrowRight";function bc(e,t,r){return Math.floor(e/t)!==r}function fl(e,t){return t<0||t>=e.current.length}function zr(e,t){let{startingIndex:r=-1,decrement:n=!1,disabledIndices:o,amount:a=1}=t===void 0?{}:t;const i=e.current;let u=r;do{var f,g;u=u+(n?-a:a)}while(u>=0&&u<=i.length-1&&(o?o.includes(u):i[u]==null||(f=i[u])!=null&&f.hasAttribute("disabled")||((g=i[u])==null?void 0:g.getAttribute("aria-disabled"))==="true"));return u}function $f(e,t,r){switch(e){case"vertical":return t;case"horizontal":return r;default:return t||r}}function Fw(e,t){return $f(t,e===_b||e===Wf,e===ws||e===Pu)}function Sh(e,t,r){return $f(t,e===Wf,r?e===ws:e===Pu)||e==="Enter"||e==" "||e===""}function mz(e,t,r){return $f(t,r?e===ws:e===Pu,e===Wf)}function bz(e,t,r){return $f(t,r?e===Pu:e===ws,e===_b)}function Ch(e,t){return zr(e,{disabledIndices:t})}function zw(e,t){return zr(e,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}const vz=function(e,t){let{open:r,onOpenChange:n,refs:o,elements:{domReference:a}}=e,{listRef:i,activeIndex:u,onNavigate:f=()=>{},enabled:g=!0,selectedIndex:m=null,allowEscape:S=!1,loop:O=!1,nested:T=!1,rtl:C=!1,virtual:w=!1,focusItemOnOpen:b="auto",focusItemOnHover:d=!0,openOnArrowKeyDown:s=!0,disabledIndices:c=void 0,orientation:l="vertical",cols:h=1,scrollItemIntoView:y=!0}=t===void 0?{listRef:{current:[]},activeIndex:null,onNavigate:()=>{}}:t;const x=Ms(),j=_i(),k=Is(f),N=P.useRef(b),A=P.useRef(m??-1),M=P.useRef(null),D=P.useRef(!0),L=P.useRef(k),z=P.useRef(r),V=P.useRef(!1),Y=P.useRef(!1),q=Bn(c),B=Bn(r),H=Bn(y),[K,X]=P.useState(),re=P.useCallback(function(ee,_e,he){he===void 0&&(he=!1);const pe=ee.current[_e.current];w?X(pe==null?void 0:pe.id):ha(pe,{preventScroll:!0,sync:MO()&&c0()?Lw||V.current:!1}),requestAnimationFrame(()=>{const be=H.current;be&&pe&&(he||!D.current)&&(pe.scrollIntoView==null||pe.scrollIntoView(typeof be=="boolean"?{block:"nearest",inline:"nearest"}:be))})},[w,H]);ar(()=>{document.createElement("div").focus({get preventScroll(){return Lw=!0,!1}})},[]),ar(()=>{g&&(r?N.current&&m!=null&&(Y.current=!0,k(m)):z.current&&(A.current=-1,L.current(null)))},[g,r,m,k]),ar(()=>{if(g&&r)if(u==null){if(V.current=!1,m!=null)return;z.current&&(A.current=-1,re(i,A)),!z.current&&N.current&&(M.current!=null||N.current===!0&&M.current==null)&&(A.current=M.current==null||Sh(M.current,l,C)||T?Ch(i,q.current):zw(i,q.current),k(A.current))}else fl(i,u)||(A.current=u,re(i,A,Y.current),Y.current=!1)},[g,r,u,m,T,i,l,C,k,re,q]),ar(()=>{if(g&&z.current&&!r){var ee,_e;const he=j==null||(ee=j.nodesRef.current.find(pe=>pe.id===x))==null||(_e=ee.context)==null?void 0:_e.elements.floating;he&&!tn(he,hi(an(he)))&&he.focus({preventScroll:!0})}},[g,r,j,x]),ar(()=>{M.current=null,L.current=k,z.current=r});const me=u!=null,de=P.useMemo(()=>{function ee(he){if(!r)return;const pe=i.current.indexOf(he);pe!==-1&&k(pe)}return{onFocus(he){let{currentTarget:pe}=he;ee(pe)},onClick:he=>{let{currentTarget:pe}=he;return pe.focus({preventScroll:!0})},...d&&{onMouseMove(he){let{currentTarget:pe}=he;ee(pe)},onPointerLeave(){if(D.current&&(A.current=-1,re(i,A),Yo.flushSync(()=>k(null)),!w)){var he;(he=o.floating.current)==null||he.focus({preventScroll:!0})}}}}},[r,o,re,d,i,k,w]);return P.useMemo(()=>{if(!g)return{};const ee=q.current;function _e(ve){if(D.current=!1,V.current=!0,!B.current&&ve.currentTarget===o.floating.current)return;if(T&&bz(ve.key,l,C)){Mn(ve),n(!1),pi(a)&&a.focus();return}const Ce=A.current,Ae=Ch(i,ee),Ne=zw(i,ee);if(ve.key==="Home"&&(A.current=Ae,k(A.current)),ve.key==="End"&&(A.current=Ne,k(A.current)),h>1){const ue=A.current;if(ve.key===_b){if(Mn(ve),ue===-1)A.current=Ne;else if(A.current=zr(i,{startingIndex:ue,amount:h,decrement:!0,disabledIndices:ee}),O&&(ue-hEe?Ge:Ge-h}fl(i,A.current)&&(A.current=ue),k(A.current)}if(ve.key===Wf&&(Mn(ve),ue===-1?A.current=Ae:(A.current=zr(i,{startingIndex:ue,amount:h,disabledIndices:ee}),O&&ue+h>Ne&&(A.current=zr(i,{startingIndex:ue%h-h,amount:h,disabledIndices:ee}))),fl(i,A.current)&&(A.current=ue),k(A.current)),l==="both"){const Ee=Math.floor(ue/h);ve.key===Pu&&(Mn(ve),ue%h!==h-1?(A.current=zr(i,{startingIndex:ue,disabledIndices:ee}),O&&bc(A.current,h,Ee)&&(A.current=zr(i,{startingIndex:ue-ue%h-1,disabledIndices:ee}))):O&&(A.current=zr(i,{startingIndex:ue-ue%h-1,disabledIndices:ee})),bc(A.current,h,Ee)&&(A.current=ue)),ve.key===ws&&(Mn(ve),ue%h!==0?(A.current=zr(i,{startingIndex:ue,disabledIndices:ee,decrement:!0}),O&&bc(A.current,h,Ee)&&(A.current=zr(i,{startingIndex:ue+(h-ue%h),decrement:!0,disabledIndices:ee}))):O&&(A.current=zr(i,{startingIndex:ue+(h-ue%h),decrement:!0,disabledIndices:ee})),bc(A.current,h,Ee)&&(A.current=ue));const $e=Math.floor(Ne/h)===Ee;fl(i,A.current)&&(O&&$e?A.current=ve.key===ws?Ne:zr(i,{startingIndex:ue-ue%h-1,disabledIndices:ee}):A.current=ue),k(A.current);return}}if(Fw(ve.key,l)){if(Mn(ve),r&&!w&&hi(ve.currentTarget.ownerDocument)===ve.currentTarget){A.current=Sh(ve.key,l,C)?Ae:Ne,k(A.current);return}Sh(ve.key,l,C)?O?A.current=Ce>=Ne?S&&Ce!==i.current.length?-1:Ae:zr(i,{startingIndex:Ce,disabledIndices:ee}):A.current=Math.min(Ne,zr(i,{startingIndex:Ce,disabledIndices:ee})):O?A.current=Ce<=Ae?S&&Ce!==-1?i.current.length:Ne:zr(i,{startingIndex:Ce,decrement:!0,disabledIndices:ee}):A.current=Math.max(Ae,zr(i,{startingIndex:Ce,decrement:!0,disabledIndices:ee})),fl(i,A.current)?k(null):k(A.current)}}function he(ve){b==="auto"&&AO(ve.nativeEvent)&&(N.current=!0)}function pe(ve){N.current=b,b==="auto"&&RO(ve.nativeEvent)&&(N.current=!0)}const be=w&&r&&me&&{"aria-activedescendant":K};return{reference:{...be,onKeyDown(ve){D.current=!1;const Ce=ve.key.indexOf("Arrow")===0;if(w&&r)return _e(ve);if(!r&&!s&&Ce)return;if((Ce||ve.key==="Enter"||ve.key===" "||ve.key==="")&&(M.current=ve.key),T){mz(ve.key,l,C)&&(Mn(ve),r?(A.current=Ch(i,ee),k(A.current)):n(!0));return}Fw(ve.key,l)&&(m!=null&&(A.current=m),Mn(ve),!r&&s?n(!0):_e(ve),r&&k(A.current))},onFocus(){r&&k(null)},onPointerDown:pe,onMouseDown:he,onClick:he},floating:{"aria-orientation":l==="both"?void 0:l,...be,onKeyDown:_e,onPointerMove(){D.current=!0}},item:de}},[a,o,K,q,B,i,g,l,C,w,r,me,T,m,s,S,h,O,b,k,n,de])};function yz(e){return P.useMemo(()=>e.every(t=>t==null)?null:t=>{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})},e)}const xz=function(e,t){let{open:r}=e,{enabled:n=!0,role:o="dialog"}=t===void 0?{}:t;const a=lu(),i=lu();return P.useMemo(()=>{const u={id:a,role:o};return n?o==="tooltip"?{reference:{"aria-describedby":r?a:void 0},floating:u}:{reference:{"aria-expanded":r?"true":"false","aria-haspopup":o==="alertdialog"?"dialog":o,"aria-controls":r?a:void 0,...o==="listbox"&&{role:"combobox"},...o==="menu"&&{id:i}},floating:{...u,...o==="menu"&&{"aria-labelledby":i}}}:{}},[n,o,r,a,i])},Bw=e=>e.replace(/[A-Z]+(?![a-z])|[A-Z]/g,(t,r)=>(r?"-":"")+t.toLowerCase());function wz(e,t){const[r,n]=P.useState(e);return e&&!r&&n(!0),P.useEffect(()=>{if(!e){const o=setTimeout(()=>n(!1),t);return()=>clearTimeout(o)}},[e,t]),r}function $O(e,t){let{open:r,elements:{floating:n}}=e,{duration:o=250}=t===void 0?{}:t;const i=(typeof o=="number"?o:o.close)||0,[u,f]=P.useState(!1),[g,m]=P.useState("unmounted"),S=wz(r,i);return ar(()=>{u&&!S&&m("unmounted")},[u,S]),ar(()=>{if(n)if(r){m("initial");const O=requestAnimationFrame(()=>{m("open")});return()=>{cancelAnimationFrame(O)}}else f(!0),m("close")},[r,n]),{isMounted:S,status:g}}function _z(e,t){let{initial:r={opacity:0},open:n,close:o,common:a,duration:i=250}=t===void 0?{}:t;const u=e.placement,f=u.split("-")[0],[g,m]=P.useState({}),{isMounted:S,status:O}=$O(e,{duration:i}),T=Bn(r),C=Bn(n),w=Bn(o),b=Bn(a),d=typeof i=="number",s=(d?i:i.open)||0,c=(d?i:i.close)||0;return ar(()=>{const l={side:f,placement:u},h=T.current,y=w.current,x=C.current,j=b.current,k=typeof h=="function"?h(l):h,N=typeof y=="function"?y(l):y,A=typeof j=="function"?j(l):j,M=(typeof x=="function"?x(l):x)||Object.keys(k).reduce((D,L)=>(D[L]="",D),{});if(O==="initial"&&m(D=>({transitionProperty:D.transitionProperty,...A,...k})),O==="open"&&m({transitionProperty:Object.keys(M).map(Bw).join(","),transitionDuration:s+"ms",...A,...M}),O==="close"){const D=N||k;m({transitionProperty:Object.keys(D).map(Bw).join(","),transitionDuration:c+"ms",...A,...D})}},[f,u,c,w,T,C,b,s,O]),{isMounted:S,styles:g}}const Sz=function(e,t){var r;let{open:n,dataRef:o}=e,{listRef:a,activeIndex:i,onMatch:u=()=>{},enabled:f=!0,findMatch:g=null,resetMs:m=1e3,ignoreKeys:S=[],selectedIndex:O=null}=t===void 0?{listRef:{current:[]},activeIndex:null}:t;const T=P.useRef(),C=P.useRef(""),w=P.useRef((r=O??i)!=null?r:-1),b=P.useRef(null),d=Is(u),s=Bn(g),c=Bn(S);return ar(()=>{n&&(clearTimeout(T.current),b.current=null,C.current="")},[n]),ar(()=>{if(n&&C.current===""){var l;w.current=(l=O??i)!=null?l:-1}},[n,O,i]),P.useMemo(()=>{if(!f)return{};function l(h){const y=Uf(h.nativeEvent);if(zn(y)&&(hi(an(y))!==h.currentTarget&&y.closest('[role="dialog"],[role="menu"],[role="listbox"],[role="tree"],[role="grid"]')!==h.currentTarget))return;C.current.length>0&&C.current[0]!==" "&&(o.current.typing=!0,h.key===" "&&Mn(h));const x=a.current;if(x==null||c.current.includes(h.key)||h.key.length!==1||h.ctrlKey||h.metaKey||h.altKey)return;x.every(D=>{var L,z;return D?((L=D[0])==null?void 0:L.toLocaleLowerCase())!==((z=D[1])==null?void 0:z.toLocaleLowerCase()):!0})&&C.current===h.key&&(C.current="",w.current=b.current),C.current+=h.key,clearTimeout(T.current),T.current=setTimeout(()=>{C.current="",w.current=b.current,o.current.typing=!1},m);const k=w.current,N=[...x.slice((k||0)+1),...x.slice(0,(k||0)+1)],A=s.current?s.current(N,C.current):N.find(D=>(D==null?void 0:D.toLocaleLowerCase().indexOf(C.current.toLocaleLowerCase()))===0),M=A?x.indexOf(A):-1;M!==-1&&(d(M),b.current=M)}return{reference:{onKeyDown:l},floating:{onKeyDown:l}}},[f,o,a,m,c,s,d])};function Vw(e,t){return{...e,rects:{...e.rects,floating:{...e.rects.floating,height:t}}}}const Cz=e=>({name:"inner",options:e,async fn(t){const{listRef:r,overflowRef:n,onFallbackChange:o,offset:a=0,index:i=0,minItemsVisible:u=4,referenceOverflowThreshold:f=0,scrollRef:g,...m}=e,{rects:S,elements:{floating:O}}=t,T=r.current[i];if(!T)return{};const C={...t,...await PO(-T.offsetTop-S.reference.height/2-T.offsetHeight/2-a).fn(t)},w=(g==null?void 0:g.current)||O,b=await Gc(Vw(C,w.scrollHeight),m),d=await Gc(C,{...m,elementContext:"reference"}),s=Math.max(0,b.top),c=C.y+s,l=Math.max(0,w.scrollHeight-s-Math.max(0,b.bottom));return w.style.maxHeight=l+"px",w.scrollTop=s,o&&(w.offsetHeight=-f||d.bottom>=-f?Yo.flushSync(()=>o(!0)):Yo.flushSync(()=>o(!1))),n&&(n.current=await Gc(Vw({...C,y:c},w.offsetHeight),m)),{y:c}}}),Tz=(e,t)=>{let{open:r,elements:n}=e,{enabled:o=!0,overflowRef:a,scrollRef:i,onChange:u}=t;const f=Is(u),g=P.useRef(!1),m=P.useRef(null),S=P.useRef(null);return P.useEffect(()=>{if(!o)return;function O(C){if(C.ctrlKey||!T||a.current==null)return;const w=C.deltaY,b=a.current.top>=-.5,d=a.current.bottom>=-.5,s=T.scrollHeight-T.clientHeight,c=w<0?-1:1,l=w<0?"max":"min";T.scrollHeight<=T.clientHeight||(!b&&w>0||!d&&w<0?(C.preventDefault(),Yo.flushSync(()=>{f(h=>h+Math[l](w,s*c))})):/firefox/i.test(jO())&&(T.scrollTop+=w))}const T=(i==null?void 0:i.current)||n.floating;if(r&&T)return T.addEventListener("wheel",O),requestAnimationFrame(()=>{m.current=T.scrollTop,a.current!=null&&(S.current={...a.current})}),()=>{m.current=null,S.current=null,T.removeEventListener("wheel",O)}},[o,r,n.floating,a,i,f]),P.useMemo(()=>o?{floating:{onKeyDown(){g.current=!0},onWheel(){g.current=!1},onPointerMove(){g.current=!1},onScroll(){const O=(i==null?void 0:i.current)||n.floating;if(!(!a.current||!O||!g.current)){if(m.current!==null){const T=O.scrollTop-m.current;(a.current.bottom<-.5&&T<-1||a.current.top<-.5&&T>1)&&Yo.flushSync(()=>f(C=>C+T))}requestAnimationFrame(()=>{m.current=O.scrollTop})}}}}:{},[o,a,n.floating,i,f])};function Pz(e,t){const[r,n]=e;let o=!1;const a=t.length;for(let i=0,u=a-1;i=n!=S>=n&&r<=(m-f)*(n-g)/(S-g)+f&&(o=!o)}return o}function Oz(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function kz(e){let{restMs:t=0,buffer:r=.5,blockPointerEvents:n=!1}=e===void 0?{}:e,o,a=!1,i=!1;const u=f=>{let{x:g,y:m,placement:S,elements:O,onClose:T,nodeId:C,tree:w}=f;return function(d){function s(){clearTimeout(o),T()}if(clearTimeout(o),!O.domReference||!O.floating||S==null||g==null||m==null)return;const{clientX:c,clientY:l}=d,h=[c,l],y=Uf(d),x=d.type==="mouseleave",j=tn(O.floating,y),k=tn(O.domReference,y),N=O.domReference.getBoundingClientRect(),A=O.floating.getBoundingClientRect(),M=S.split("-")[0],D=g>A.right-A.width/2,L=m>A.bottom-A.height/2,z=Oz(h,N);if(j&&(i=!0),k&&(i=!1),k&&!x){i=!0;return}if(x&&zn(d.relatedTarget)&&tn(O.floating,d.relatedTarget)||w&&Ml(w.nodesRef.current,C).some(B=>{let{context:H}=B;return H==null?void 0:H.open}))return;if(M==="top"&&m>=N.bottom-1||M==="bottom"&&m<=N.top+1||M==="left"&&g>=N.right-1||M==="right"&&g<=N.left+1)return s();let V=[];switch(M){case"top":V=[[A.left,N.top+1],[A.left,A.bottom-1],[A.right,A.bottom-1],[A.right,N.top+1]],a=c>=A.left&&c<=A.right&&l>=A.top&&l<=N.top+1;break;case"bottom":V=[[A.left,A.top+1],[A.left,N.bottom-1],[A.right,N.bottom-1],[A.right,A.top+1]],a=c>=A.left&&c<=A.right&&l>=N.bottom-1&&l<=A.bottom;break;case"left":V=[[A.right-1,A.bottom],[A.right-1,A.top],[N.left+1,A.top],[N.left+1,A.bottom]],a=c>=A.left&&c<=N.left+1&&l>=A.top&&l<=A.bottom;break;case"right":V=[[N.right-1,A.bottom],[N.right-1,A.top],[A.left+1,A.top],[A.left+1,A.bottom]],a=c>=N.right-1&&c<=A.right&&l>=A.top&&l<=A.bottom;break}function Y(B){let[H,K]=B;const X=A.width>N.width,re=A.height>N.height;switch(M){case"top":{const me=[X?H+r/2:D?H+r*4:H-r*4,K+r+1],de=[X?H-r/2:D?H+r*4:H-r*4,K+r+1],ee=[[A.left,D||X?A.bottom-r:A.top],[A.right,D?X?A.bottom-r:A.top:A.bottom-r]];return[me,de,...ee]}case"bottom":{const me=[X?H+r/2:D?H+r*4:H-r*4,K-r],de=[X?H-r/2:D?H+r*4:H-r*4,K-r],ee=[[A.left,D||X?A.top+r:A.bottom],[A.right,D?X?A.top+r:A.bottom:A.top+r]];return[me,de,...ee]}case"left":{const me=[H+r+1,re?K+r/2:L?K+r*4:K-r*4],de=[H+r+1,re?K-r/2:L?K+r*4:K-r*4];return[...[[L||re?A.right-r:A.left,A.top],[L?re?A.right-r:A.left:A.right-r,A.bottom]],me,de]}case"right":{const me=[H-r,re?K+r/2:L?K+r*4:K-r*4],de=[H-r,re?K-r/2:L?K+r*4:K-r*4],ee=[[L||re?A.left+r:A.right,A.top],[L?re?A.left+r:A.right:A.left+r,A.bottom]];return[me,de,...ee]}}}const q=a?V:Y([g,m]);if(!a){if(i&&!z)return s();Pz([c,l],q)?t&&!i&&(o=setTimeout(s,t)):s()}}};return u.__options={blockPointerEvents:n},u}function Nz(e){e===void 0&&(e={});const{open:t=!1,onOpenChange:r,nodeId:n}=e,o=U6(e),a=_i(),i=P.useRef(null),u=P.useRef({}),f=P.useState(()=>kO())[0],[g,m]=P.useState(null),S=P.useCallback(d=>{const s=zn(d)?{getBoundingClientRect:()=>d.getBoundingClientRect(),contextElement:d}:d;o.refs.setReference(s)},[o.refs]),O=P.useCallback(d=>{(zn(d)||d===null)&&(i.current=d,m(d)),(zn(o.refs.reference.current)||o.refs.reference.current===null||d!==null&&!zn(d))&&o.refs.setReference(d)},[o.refs]),T=P.useMemo(()=>({...o.refs,setReference:O,setPositionReference:S,domReference:i}),[o.refs,O,S]),C=P.useMemo(()=>({...o.elements,domReference:g}),[o.elements,g]),w=Is(r),b=P.useMemo(()=>({...o,refs:T,elements:C,dataRef:u,nodeId:n,events:f,open:t,onOpenChange:w}),[o,n,f,t,w,T,C]);return ar(()=>{const d=a==null?void 0:a.nodesRef.current.find(s=>s.id===n);d&&(d.context=b)}),P.useMemo(()=>({...o,context:b,refs:T,reference:O,positionReference:S}),[o,T,b,O,S])}function Th(e,t,r){const n=new Map;return{...r==="floating"&&{tabIndex:-1},...e,...t.map(o=>o?o[r]:null).concat(e).reduce((o,a)=>(a&&Object.entries(a).forEach(i=>{let[u,f]=i;if(u.indexOf("on")===0){if(n.has(u)||n.set(u,[]),typeof f=="function"){var g;(g=n.get(u))==null||g.push(f),o[u]=function(){for(var m,S=arguments.length,O=new Array(S),T=0;TC(...O))}}}else o[u]=f}),o),{})}}const Ez=function(e){e===void 0&&(e=[]);const t=e,r=P.useCallback(a=>Th(a,e,"reference"),t),n=P.useCallback(a=>Th(a,e,"floating"),t),o=P.useCallback(a=>Th(a,e,"item"),e.map(a=>a==null?void 0:a.item));return P.useMemo(()=>({getReferenceProps:r,getFloatingProps:n,getItemProps:o}),[r,n,o])},jz=Object.freeze(Object.defineProperty({__proto__:null,FloatingDelayGroup:X6,FloatingFocusManager:lz,FloatingNode:G6,FloatingOverlay:uz,FloatingPortal:iz,FloatingTree:K6,arrow:V6,autoPlacement:M6,autoUpdate:R6,computePosition:OO,detectOverflow:Gc,flip:D6,getOverflowAncestors:$o,hide:F6,inline:z6,inner:Cz,limitShift:B6,offset:PO,platform:CO,safePolygon:kz,shift:I6,size:L6,useClick:cz,useDelayGroup:Z6,useDelayGroupContext:DO,useDismiss:hz,useFloating:Nz,useFloatingNodeId:q6,useFloatingParentNodeId:Ms,useFloatingPortalNode:UO,useFloatingTree:_i,useFocus:gz,useHover:Q6,useId:lu,useInnerOffset:Tz,useInteractions:Ez,useListNavigation:vz,useMergeRefs:yz,useRole:xz,useTransitionStatus:$O,useTransitionStyles:_z,useTypeahead:Sz},Symbol.toStringTag,{value:"Module"})),wr=cu(jz);var HO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{DialogHeader:function(){return O},default:function(){return T}});var r=g(P),n=g(gt),o=lt,a=g(nt),i=et,u=Es;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,i.useTheme)().dialogHeader,l=c.defaultProps,h=c.styles.base;b=b??l.className;var y=(0,o.twMerge)((0,n.default)((0,a.default)(h)),b);return r.default.createElement("div",f({},s,{ref:w,className:y}),d)});O.propTypes={className:u.propTypesClassName,children:u.propTypesChildren},O.displayName="MaterialTailwind.DialogHeader";var T=O})(HO);var qO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{DialogBody:function(){return T},default:function(){return C}});var r=m(P),n=m(gt),o=lt,a=m(nt),i=et,u=Es;function f(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function g(){return g=Object.assign||function(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,l;for(l=0;l=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.divider,s=w.className,c=w.children,l=S(w,["divider","className","children"]),h=(0,i.useTheme)().dialogBody,y=h.defaultProps,x=h.styles.base;s=s??y.className;var j=(0,o.twMerge)((0,n.default)((0,a.default)(x.initial),f({},(0,a.default)(x.divider),d)),s);return r.default.createElement("div",g({},l,{ref:b,className:j}),c)});T.propTypes={divider:u.propTypesDivider,className:u.propTypesClassName,children:u.propTypesChildren},T.displayName="MaterialTailwind.DialogBody";var C=T})(qO);var GO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{DialogFooter:function(){return O},default:function(){return T}});var r=g(P),n=g(gt),o=lt,a=g(nt),i=et,u=Es;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,i.useTheme)().dialogFooter,l=c.defaultProps,h=c.styles.base;b=b??l.className;var y=(0,o.twMerge)((0,n.default)((0,a.default)(h)),b);return r.default.createElement("div",f({},s,{ref:w,className:y}),d)});O.propTypes={className:u.propTypesClassName,children:u.propTypesChildren},O.displayName="MaterialTailwind.DialogFooter";var T=O})(GO);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(N,A){for(var M in A)Object.defineProperty(N,M,{enumerable:!0,get:A[M]})}t(e,{Dialog:function(){return j},DialogHeader:function(){return T.DialogHeader},DialogBody:function(){return C.DialogBody},DialogFooter:function(){return w.DialogFooter},default:function(){return k}});var r=s(P),n=s(ut),o=wr,a=Nr,i=s(gt),u=s(Mr),f=lt,g=s(tr),m=s(nt),S=et,O=Es,T=HO,C=qO,w=GO;function b(N,A,M){return A in N?Object.defineProperty(N,A,{value:M,enumerable:!0,configurable:!0,writable:!0}):N[A]=M,N}function d(){return d=Object.assign||function(N){for(var A=1;A=0)&&Object.prototype.propertyIsEnumerable.call(N,D)&&(M[D]=N[D])}return M}function x(N,A){if(N==null)return{};var M={},D=Object.keys(N),L,z;for(z=0;z=0)&&(M[L]=N[L]);return M}var j=r.default.forwardRef(function(N,A){var M=N.open,D=N.handler,L=N.size,z=N.dismiss,V=N.animate,Y=N.className,q=N.children,B=y(N,["open","handler","size","dismiss","animate","className","children"]),H=(0,S.useTheme)().dialog,K=H.defaultProps,X=H.valid,re=H.styles,me=re.base,de=re.sizes;D=D??void 0,L=L??K.size,z=z??K.dismiss,V=V??K.animate,Y=Y??K.className;var ee=(0,i.default)((0,m.default)(me.backdrop)),_e=(0,f.twMerge)((0,i.default)((0,m.default)(me.container),(0,m.default)(de[(0,g.default)(X.sizes,L,"md")])),Y),he={unmount:{opacity:0,y:-50,transition:{duration:.3}},mount:{opacity:1,y:0,transition:{duration:.3}}},pe={unmount:{opacity:0,transition:{delay:.2}},mount:{opacity:1}},be=(0,u.default)(he,V),ve=(0,o.useFloating)({open:M,onOpenChange:D}),Ce=ve.floating,Ae=ve.context,Ne=(0,o.useId)(),ue="".concat(Ne,"-label"),Ee="".concat(Ne,"-description"),$e=(0,o.useInteractions)([(0,o.useClick)(Ae),(0,o.useRole)(Ae),(0,o.useDismiss)(Ae,z)]).getFloatingProps,Ge=(0,o.useMergeRefs)([A,Ce]),tt=a.AnimatePresence;return r.default.createElement(a.LazyMotion,{features:a.domAnimation},r.default.createElement(o.FloatingPortal,null,r.default.createElement(tt,null,M&&r.default.createElement(o.FloatingOverlay,{style:{zIndex:9999},lockScroll:!0},r.default.createElement(o.FloatingFocusManager,{context:Ae},r.default.createElement(a.m.div,{className:L==="xxl"?"":ee,initial:"unmount",exit:"unmount",animate:M?"mount":"unmount",variants:pe,transition:{duration:.2}},r.default.createElement(a.m.div,d({},$e(h(c({},B),{ref:Ge,className:_e,"aria-labelledby":ue,"aria-describedby":Ee})),{initial:"unmount",exit:"unmount",animate:M?"mount":"unmount",variants:be}),q)))))))});j.propTypes={open:O.propTypesOpen,handler:O.propTypesHandler,size:n.default.oneOf(O.propTypesSize),dismiss:O.propTypesDismiss,animate:O.propTypesAnimate,className:O.propTypesClassName,children:O.propTypesChildren},j.displayName="MaterialTailwind.Dialog";var k=Object.assign(j,{Header:T.DialogHeader,Body:C.DialogBody,Footer:w.DialogFooter})})(sO);var KO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{Input:function(){return C},default:function(){return w}});var r=S(P),n=S(ut),o=S(gt),a=S(tr),i=S(nt),u=et,f=bu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=r.default.forwardRef(function(b,d){var s=b.variant,c=b.color,l=b.size,h=b.label,y=b.error,x=b.success,j=b.icon,k=b.containerProps,N=b.labelProps,A=b.className,M=b.shrink,D=b.inputRef,L=O(b,["variant","color","size","label","error","success","icon","containerProps","labelProps","className","shrink","inputRef"]),z=(0,u.useTheme)().input,V=z.defaultProps,Y=z.valid,q=z.styles,B=q.base,H=q.variants;s=s??V.variant,l=l??V.size,c=c??V.color,h=h??V.label,N=N??V.labelProps,k=k??V.containerProps,A=A??V.className,M=M??V.shrink,j=j??V.icon;var K=H[(0,a.default)(Y.variants,s,"outlined")],X=K.sizes[(0,a.default)(Y.sizes,l,"md")],re=(0,i.default)(K.error.input),me=(0,i.default)(K.success.input),de=(0,i.default)(K.shrink.input),ee=(0,i.default)(K.colors.input[(0,a.default)(Y.colors,c,"gray")]),_e=(0,i.default)(K.error.label),he=(0,i.default)(K.success.label),pe=(0,i.default)(K.shrink.label),be=(0,i.default)(K.colors.label[(0,a.default)(Y.colors,c,"gray")]),ve=(0,o.default)((0,i.default)(B.container),(0,i.default)(X.container),k==null?void 0:k.className),Ce=(0,o.default)((0,i.default)(B.input),(0,i.default)(K.base.input),(0,i.default)(X.input),g({},(0,i.default)(K.base.inputWithIcon),j),g({},ee,!y&&!x),g({},re,y),g({},me,x),g({},de,M),A),Ae=(0,o.default)((0,i.default)(B.label),(0,i.default)(K.base.label),(0,i.default)(X.label),g({},be,!y&&!x),g({},_e,y),g({},he,x),g({},pe,M),N==null?void 0:N.className),Ne=(0,o.default)((0,i.default)(B.icon),(0,i.default)(K.base.icon),(0,i.default)(X.icon)),ue=(0,o.default)((0,i.default)(B.asterisk));return r.default.createElement("div",m({},k,{ref:d,className:ve}),j&&r.default.createElement("div",{className:Ne},j),r.default.createElement("input",m({},L,{ref:D,className:Ce,placeholder:(L==null?void 0:L.placeholder)||" "})),r.default.createElement("label",m({},N,{className:Ae}),h," ",L.required?r.default.createElement("span",{className:ue},"*"):""))});C.propTypes={variant:n.default.oneOf(f.propTypesVariant),size:n.default.oneOf(f.propTypesSize),color:n.default.oneOf(f.propTypesColor),label:f.propTypesLabel,error:f.propTypesError,success:f.propTypesSuccess,icon:f.propTypesIcon,labelProps:f.propTypesLabelProps,containerProps:f.propTypesContainerProps,shrink:f.propTypesShrink,className:f.propTypesClassName},C.displayName="MaterialTailwind.Input";var w=C})(KO);var YO={},Ou={},Ds={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,h){for(var y in h)Object.defineProperty(l,y,{enumerable:!0,get:h[y]})}t(e,{propTypesOpen:function(){return g},propTypesHandler:function(){return m},propTypesPlacement:function(){return S},propTypesOffset:function(){return O},propTypesDismiss:function(){return T},propTypesAnimate:function(){return C},propTypesLockScroll:function(){return w},propTypesDisabled:function(){return b},propTypesClassName:function(){return d},propTypesChildren:function(){return s},propTypesContextValue:function(){return c}});var r=a(ut),n=Zt;function o(l,h,y){return h in l?Object.defineProperty(l,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):l[h]=y,l}function a(l){return l&&l.__esModule?l:{default:l}}function i(l){for(var h=1;hs.length)&&(c=s.length);for(var l=0,h=new Array(c);l=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,l;for(l=0;l=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.children,s=S(w,["children"]),c=(0,o.useMenu)(),l=c.getReferenceProps,h=c.reference,y=c.nested,x=(0,n.useMergeRefs)([b,h]);return r.default.cloneElement(d,f({},l(f(m(f({},s),{ref:x,onClick:function(k){k.stopPropagation()}}),y&&{role:"menuitem"}))))});T.propTypes={children:a.propTypesChildren},T.displayName="MaterialTailwind.MenuHandler";var C=T})(XO);var ZO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{MenuList:function(){return w},default:function(){return b}});var r=O(P),n=wr,o=Nr,a=O(gt),i=lt,u=O(nt),f=et,g=Ou,m=Ds;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.children,l=d.className,h=T(d,["children","className"]),y=(0,f.useTheme)().menu,x=y.styles.base,j=(0,g.useMenu)(),k=j.open,N=j.handler,A=j.strategy,M=j.x,D=j.y,L=j.floating,z=j.listItemsRef,V=j.getFloatingProps,Y=j.getItemProps,q=j.appliedAnimation,B=j.lockScroll,H=j.context,K=j.activeIndex,X=j.tree,re=j.allowHover,me=j.internalAllowHover,de=j.setActiveIndex,ee=j.nested;l=l??"";var _e=(0,i.twMerge)((0,a.default)((0,u.default)(x.menu)),l),he=(0,n.useMergeRefs)([s,L]),pe=o.AnimatePresence,be=r.default.createElement(o.m.div,S({},h,{ref:he,style:{position:A,top:D??0,left:M??0},className:_e},V({onKeyDown:function(Ce){Ce.key==="Tab"&&(N(!1),Ce.shiftKey&&Ce.preventDefault())}}),{initial:"unmount",exit:"unmount",animate:k?"mount":"unmount",variants:q}),r.default.Children.map(c,function(ve,Ce){return r.default.isValidElement(ve)&&r.default.cloneElement(ve,Y({tabIndex:K===Ce?0:-1,role:"menuitem",className:ve.props.className,ref:function(Ne){z.current[Ce]=Ne},onClick:function(Ne){if(ve.props.onClick){var ue,Ee;(Ee=(ue=ve.props).onClick)===null||Ee===void 0||Ee.call(ue,Ne)}X==null||X.events.emit("click")},onMouseEnter:function(){(re&&k||me&&k)&&de(Ce)}}))}));return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(n.FloatingPortal,null,r.default.createElement(pe,null,k&&r.default.createElement(r.default.Fragment,null,B?r.default.createElement(n.FloatingOverlay,{lockScroll:!0},r.default.createElement(n.FloatingFocusManager,{context:H,modal:!ee,initialFocus:ee?-1:0,returnFocus:!ee,visuallyHiddenDismiss:!0},be)):r.default.createElement(n.FloatingFocusManager,{context:H,modal:!ee,initialFocus:ee?-1:0,returnFocus:!ee,visuallyHiddenDismiss:!0},be)))))});w.propTypes={className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.MenuList";var b=w})(ZO);var JO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{MenuItem:function(){return T},default:function(){return C}});var r=m(P),n=m(gt),o=lt,a=m(nt),i=et,u=Ds;function f(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function g(){return g=Object.assign||function(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,l;for(l=0;l=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.className,s=d===void 0?"":d,c=w.disabled,l=c===void 0?!1:c,h=w.children,y=S(w,["className","disabled","children"]),x=(0,i.useTheme)().menu,j=x.styles.base,k=(0,o.twMerge)((0,n.default)((0,a.default)(j.item.initial),f({},(0,a.default)(j.item.disabled),l)),s);return r.default.createElement("button",g({},y,{ref:b,role:"menuitem",className:k}),h)});T.propTypes={className:u.propTypesClassName,disabled:u.propTypesDisabled,children:u.propTypesChildren},T.displayName="MaterialTailwind.MenuItem";var C=T})(JO);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{Menu:function(){return S},MenuHandler:function(){return i.MenuHandler},MenuList:function(){return u.MenuList},MenuItem:function(){return f.MenuItem},useMenu:function(){return o.useMenu},default:function(){return O}});var r=m(P),n=wr,o=Ou,a=QO,i=XO,u=ZO,f=JO;function g(){return g=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.open,l=d.animate,h=d.className,y=d.children,x=T(d,["open","animate","className","children"]),j;console.error(` will be deprecated in the future versions of @material-tailwind/react use instead. - -More details: https://www.material-tailwind.com/docs/react/collapse - `);var k=r.default.useRef(null),N=(0,g.useTheme)().navbar,A=N.styles,M=A.base.mobileNav;l=l??{},h=h??"";var D=(0,u.twMerge)((0,i.default)((0,f.default)(M)),h),L={unmount:{height:0,opacity:0,transition:{duration:.3,times:"[0.4, 0, 0.2, 1]"}},mount:{opacity:1,height:"".concat((j=k.current)===null||j===void 0?void 0:j.scrollHeight,"px"),transition:{duration:.3,times:"[0.4, 0, 0.2, 1]"}}},z=(0,a.default)(L,l),V=n.AnimatePresence,Y=(0,o.useMergeRefs)([s,k]);return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(V,null,r.default.createElement(n.m.div,S({},x,{ref:Y,className:D,initial:"unmount",exit:"unmount",animate:c?"mount":"unmount",variants:z}),y)))});w.displayName="MaterialTailwind.MobileNav",w.propTypes={open:m.propTypesOpen,animate:m.propTypesAnimate,className:m.propTypesClassName,children:m.propTypesChildren};var b=w})(tk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Navbar:function(){return b},MobileNav:function(){return g.MobileNav},default:function(){return d}});var r=T(P),n=T(ut),o=T(gt),a=lt,i=T(tr),u=T(nt),f=et,g=tk,m=Cf;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.variant,h=s.color,y=s.shadow,x=s.blurred,j=s.fullWidth,k=s.className,N=s.children,A=C(s,["variant","color","shadow","blurred","fullWidth","className","children"]),M=(0,f.useTheme)().navbar,D=M.defaultProps,L=M.valid,z=M.styles,V=z.base,Y=z.variants;l=l??D.variant,h=h??D.color,y=y??D.shadow,x=x??D.blurred,j=j??D.fullWidth,k=k??D.className;var q,B=(0,o.default)((0,u.default)(V.navbar.initial),(q={},S(q,(0,u.default)(V.navbar.shadow),y),S(q,(0,u.default)(V.navbar.blurred),x&&h==="white"),S(q,(0,u.default)(V.navbar.fullWidth),j),q)),H=(0,o.default)((0,u.default)(Y[(0,i.default)(L.variants,l,"filled")][(0,i.default)(L.colors,h,"white")])),K=(0,a.twMerge)((0,o.default)(B,H),k);return r.default.createElement("nav",O({},A,{ref:c,className:K}),N)});b.propTypes={variant:n.default.oneOf(m.propTypesVariant),color:n.default.oneOf(m.propTypesColor),shadow:m.propTypesShadow,blurred:m.propTypesBlurred,fullWidth:m.propTypesFullWidth,className:m.propTypesClassName,children:m.propTypesChildren},b.displayName="MaterialTailwind.Navbar";var d=Object.assign(b,{MobileNav:g.MobileNav})})(ek);var rk={},Hf={},Ls={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{propTypesOpen:function(){return a},propTypesHandler:function(){return i},propTypesPlacement:function(){return u},propTypesOffset:function(){return f},propTypesDismiss:function(){return g},propTypesAnimate:function(){return m},propTypesContent:function(){return S},propTypesInteractive:function(){return O},propTypesClassName:function(){return T},propTypesChildren:function(){return C},propTypesContextValue:function(){return w}});var r=o(ut),n=Zt;function o(b){return b&&b.__esModule?b:{default:b}}var a=r.default.bool,i=r.default.func,u=n.propTypesPlacements,f=n.propTypesOffsetType,g=n.propTypesDismissType,m=n.propTypesAnimation,S=r.default.node,O=r.default.bool,T=r.default.string,C=r.default.node.isRequired,w=r.default.shape({open:r.default.bool.isRequired,strategy:r.default.oneOf(["fixed","absolute"]).isRequired,x:r.default.number,y:r.default.number,context:r.default.instanceOf(Object).isRequired,reference:r.default.func.isRequired,floating:r.default.func.isRequired,getReferenceProps:r.default.func.isRequired,getFloatingProps:r.default.func.isRequired,appliedAnimation:m.isRequired,labelId:r.default.string.isRequired,descriptionId:r.default.string.isRequired}).isRequired})(Ls);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(f,g){for(var m in g)Object.defineProperty(f,m,{enumerable:!0,get:g[m]})}t(e,{PopoverContext:function(){return a},usePopover:function(){return i},PopoverContextProvider:function(){return u}});var r=o(P),n=Ls;function o(f){return f&&f.__esModule?f:{default:f}}var a=r.default.createContext(null);a.displayName="MaterialTailwind.PopoverContext";function i(){var f=r.default.useContext(a);if(!f)throw new Error("usePopover() must be used within a Popover. It happens when you use PopoverHandler or PopoverContent components outside the Popover component.");return f}var u=function(f){var g=f.value,m=f.children;return r.default.createElement(a.Provider,{value:g},m)};u.propTypes={value:n.propTypesContextValue,children:n.propTypesChildren},u.displayName="MaterialTailwind.PopoverContextProvider"})(Hf);var nk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{PopoverHandler:function(){return T},default:function(){return C}});var r=u(P),n=wr,o=Hf,a=Ls;function i(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function u(w){return w&&w.__esModule?w:{default:w}}function f(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,l;for(l=0;l=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.children,s=S(w,["children"]),c=(0,o.usePopover)(),l=c.getReferenceProps,h=c.reference,y=(0,n.useMergeRefs)([b,h]);return r.default.cloneElement(d,f({},l(m(f({},s),{ref:y}))))});T.propTypes={children:a.propTypesChildren},T.displayName="MaterialTailwind.PopoverHandler";var C=T})(nk);var ok={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(h,y){for(var x in y)Object.defineProperty(h,x,{enumerable:!0,get:y[x]})}t(e,{PopoverContent:function(){return c},default:function(){return l}});var r=T(P),n=wr,o=Nr,a=T(gt),i=lt,u=T(nt),f=et,g=Hf,m=Ls;function S(h,y,x){return y in h?Object.defineProperty(h,y,{value:x,enumerable:!0,configurable:!0,writable:!0}):h[y]=x,h}function O(){return O=Object.assign||function(h){for(var y=1;y=0)&&Object.prototype.propertyIsEnumerable.call(h,j)&&(x[j]=h[j])}return x}function s(h,y){if(h==null)return{};var x={},j=Object.keys(h),k,N;for(N=0;N=0)&&(x[k]=h[k]);return x}var c=r.default.forwardRef(function(h,y){var x=h.children,j=h.className,k=d(h,["children","className"]),N=(0,f.useTheme)().popover,A=N.defaultProps,M=N.styles.base,D=(0,g.usePopover)(),L=D.open,z=D.strategy,V=D.x,Y=D.y,q=D.context,B=D.floating,H=D.getFloatingProps,K=D.appliedAnimation,X=D.labelId,re=D.descriptionId;j=j??A.className;var me=(0,i.twMerge)((0,a.default)((0,u.default)(M)),j),de=(0,n.useMergeRefs)([y,B]),ee=o.AnimatePresence;return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(n.FloatingPortal,null,r.default.createElement(ee,null,L&&r.default.createElement(n.FloatingFocusManager,{context:q},r.default.createElement(o.m.div,O({},H(b(C({},k),{ref:de,className:me,style:{position:z,top:Y??"",left:V??""},"aria-labelledby":X,"aria-describedby":re})),{initial:"unmount",exit:"unmount",animate:L?"mount":"unmount",variants:K}),x)))))});c.propTypes={className:m.propTypesClassName,children:m.propTypesChildren},c.displayName="MaterialTailwind.PopoverContent";var l=c})(ok);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,h){for(var y in h)Object.defineProperty(l,y,{enumerable:!0,get:h[y]})}t(e,{Popover:function(){return s},PopoverHandler:function(){return g.PopoverHandler},PopoverContent:function(){return m.PopoverContent},usePopover:function(){return u.usePopover},default:function(){return c}});var r=T(P),n=T(ut),o=wr,a=T(Mr),i=et,u=Hf,f=Ls,g=nk,m=ok;function S(l,h){(h==null||h>l.length)&&(h=l.length);for(var y=0,x=new Array(h);y=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,l=d.color,h=d.size,y=d.value,x=d.label,j=d.className,k=d.barProps,N=T(d,["variant","color","size","value","label","className","barProps"]),A=(0,f.useTheme)().progress,M=A.defaultProps,D=A.valid,L=A.styles,z=L.base,V=L.variants,Y=L.sizes;c=c??M.variant,l=l??M.color,h=h??M.size,x=x??M.label,j=j??M.className,k=k??M.barProps;var q=(0,u.default)(V[(0,i.default)(D.variants,c,"filled")][(0,i.default)(D.colors,l,"gray")]),B=(0,u.default)(Y[(0,i.default)(D.sizes,h,"md")].container.initial),H=(0,o.default)((0,u.default)(z.container.initial),B),K=(0,u.default)(Y[(0,i.default)(D.sizes,h,"md")].container.withLabel),X=(0,o.default)((0,u.default)(z.container.withLabel),K),re=(0,u.default)(Y[(0,i.default)(D.sizes,h,"md")].bar),me=(0,o.default)((0,u.default)(z.bar),re),de=(0,a.twMerge)((0,o.default)(H,m({},X,x)),j),ee=(0,a.twMerge)((0,o.default)(me,q),k==null?void 0:k.className);return r.default.createElement("div",S({},N,{ref:s,className:de}),r.default.createElement("div",S({},k,{className:ee,style:{width:"".concat(y,"%")}}),x&&"".concat(y,"% ").concat(typeof x=="string"?x:"")))});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),color:n.default.oneOf(g.propTypesColor),size:n.default.oneOf(g.propTypesSize),value:g.propTypesValue,label:g.propTypesLabel,barProps:g.propTypesBarProps,className:g.propTypesClassName},w.displayName="MaterialTailwind.Progress";var b=w})(ak);var ik={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Radio:function(){return b},default:function(){return d}});var r=T(P),n=T(ut),o=T(As),a=T(gt),i=lt,u=T(tr),f=T(nt),g=et,m=xi;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.color,h=s.label,y=s.icon,x=s.ripple,j=s.className,k=s.disabled,N=s.containerProps,A=s.labelProps,M=s.iconProps,D=s.inputRef,L=C(s,["color","label","icon","ripple","className","disabled","containerProps","labelProps","iconProps","inputRef"]),z=(0,g.useTheme)().radio,V=z.defaultProps,Y=z.valid,q=z.styles,B=q.base,H=q.colors,K=r.default.useId();l=l??V.color,h=h??V.label,y=y??V.icon,x=x??V.ripple,j=j??V.className,k=k??V.disabled,N=N??V.containerProps,A=A??V.labelProps,M=M??V.iconProps;var X=x!==void 0&&new o.default,re=(0,a.default)((0,f.default)(B.root),S({},(0,f.default)(B.disabled),k)),me=(0,i.twMerge)((0,a.default)((0,f.default)(B.container)),N==null?void 0:N.className),de=(0,i.twMerge)((0,a.default)((0,f.default)(B.input),(0,f.default)(H[(0,u.default)(Y.colors,l,"gray")])),j),ee=(0,i.twMerge)((0,a.default)((0,f.default)(B.label)),A==null?void 0:A.className),_e=(0,a.default)((0,a.default)((0,f.default)(B.icon)),H[(0,u.default)(Y.colors,l,"gray")].color,M==null?void 0:M.className);return r.default.createElement("div",{ref:c,className:re},r.default.createElement("label",O({},N,{className:me,htmlFor:L.id||K,onMouseDown:function(he){var pe=N==null?void 0:N.onMouseDown;return x&&X.create(he,"dark"),typeof pe=="function"&&pe(he)}}),r.default.createElement("input",O({},L,{ref:D,type:"radio",disabled:k,className:de,id:L.id||K})),r.default.createElement("span",{className:_e},y||r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 16 16",fill:"currentColor"},r.default.createElement("circle",{"data-name":"ellipse",cx:"8",cy:"8",r:"8"})))),h&&r.default.createElement("label",O({},A,{className:ee,htmlFor:L.id||K}),h))});b.propTypes={color:n.default.oneOf(m.propTypesColor),label:m.propTypesLabel,icon:m.propTypesIcon,ripple:m.propTypesRipple,className:m.propTypesClassName,disabled:m.propTypesDisabled,containerProps:m.propTypesObject,labelProps:m.propTypesObject},b.displayName="MaterialTailwind.Radio";var d=b})(ik);var sk={},Sb={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(m,S){for(var O in S)Object.defineProperty(m,O,{enumerable:!0,get:S[O]})}t(e,{SelectContext:function(){return i},useSelect:function(){return u},usePrevious:function(){return f},SelectContextProvider:function(){return g}});var r=a(P),n=Nr,o=vu;function a(m){return m&&m.__esModule?m:{default:m}}var i=r.default.createContext(null);i.displayName="MaterialTailwind.SelectContext";function u(){var m=r.default.useContext(i);if(m===null)throw new Error("useSelect() must be used within a Select. It happens when you use SelectOption component outside the Select component.");return m}function f(m){var S=r.default.useRef();return(0,n.useIsomorphicLayoutEffect)(function(){S.current=m},[m]),S.current}var g=function(m){var S=m.value,O=m.children;return r.default.createElement(i.Provider,{value:S},O)};g.propTypes={value:o.propTypesContextValue,children:o.propTypesChildren},g.displayName="MaterialTailwind.SelectContextProvider"})(Sb);var lk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{SelectOption:function(){return C},default:function(){return w}});var r=S(P),n=S(gt),o=lt,a=S(nt),i=et,u=Sb,f=vu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=function(b){var d=function(){q(y),K(l),H(!1),re(null)},s=function(Ce){(Ce.key==="Enter"||Ce.key===" "&&!de.current.typing)&&(Ce.preventDefault(),d())},c=b.value,l=c===void 0?"":c,h=b.index,y=h===void 0?0:h,x=b.disabled,j=x===void 0?!1:x,k=b.className,N=k===void 0?"":k,A=b.children,M=O(b,["value","index","disabled","className","children"]),D=(0,i.useTheme)().select,L=D.styles,z=L.base,V=(0,u.useSelect)(),Y=V.selectedIndex,q=V.setSelectedIndex,B=V.listRef,H=V.setOpen,K=V.onChange,X=V.activeIndex,re=V.setActiveIndex,me=V.getItemProps,de=V.dataRef,ee=(0,a.default)(z.option.initial),_e=(0,a.default)(z.option.active),he=(0,a.default)(z.option.disabled),pe,be=(0,o.twMerge)((0,n.default)(ee,(pe={},g(pe,_e,Y===y),g(pe,he,j),pe)),N??"");return r.default.createElement("li",m({},M,{role:"option",ref:function(ve){return B.current[y]=ve},className:be,disabled:j,tabIndex:X===y?0:1,"aria-selected":X===y&&Y===y,"data-selected":Y===y},me({onClick:function(ve){var Ce=M==null?void 0:M.onClick;typeof Ce=="function"&&(Ce(ve),d()),d()},onKeyDown:function(ve){var Ce=M==null?void 0:M.onKeyDown;typeof Ce=="function"&&(Ce(ve),s(ve)),s(ve)}})),A)};C.propTypes={value:f.propTypesValue,index:f.propTypesIndex,disabled:f.propTypesDisabled,className:f.propTypesClassName,children:f.propTypesChildren},C.displayName="MaterialTailwind.SelectOption";var w=C})(lk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(B,H){for(var K in H)Object.defineProperty(B,K,{enumerable:!0,get:H[K]})}t(e,{Select:function(){return Y},Option:function(){return C.SelectOption},useSelect:function(){return O.useSelect},usePrevious:function(){return O.usePrevious},default:function(){return q}});var r=l(P),n=l(ut),o=wr,a=Nr,i=l(gt),u=lt,f=l(Mr),g=l(tr),m=l(nt),S=et,O=Sb,T=vu,C=lk;function w(B,H){(H==null||H>B.length)&&(H=B.length);for(var K=0,X=new Array(H);K=0)&&Object.prototype.propertyIsEnumerable.call(B,X)&&(K[X]=B[X])}return K}function D(B,H){if(B==null)return{};var K={},X=Object.keys(B),re,me;for(me=0;me=0)&&(K[re]=B[re]);return K}function L(B,H){return b(B)||y(B,H)||V(B,H)||x()}function z(B){return d(B)||h(B)||V(B)||j()}function V(B,H){if(B){if(typeof B=="string")return w(B,H);var K=Object.prototype.toString.call(B).slice(8,-1);if(K==="Object"&&B.constructor&&(K=B.constructor.name),K==="Map"||K==="Set")return Array.from(K);if(K==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(K))return w(B,H)}}var Y=r.default.forwardRef(function(B,H){var K=B.variant,X=B.color,re=B.size,me=B.label,de=B.error,ee=B.success,_e=B.arrow,he=B.value,pe=B.onChange,be=B.selected,ve=B.offset,Ce=B.dismiss,Ae=B.animate,Ne=B.lockScroll,ue=B.labelProps,Ee=B.menuProps,$e=B.className,Ge=B.disabled,tt=B.name,ct=B.children,qe=B.containerProps,it=M(B,["variant","color","size","label","error","success","arrow","value","onChange","selected","offset","dismiss","animate","lockScroll","labelProps","menuProps","className","disabled","name","children","containerProps"]),mt,We=(0,S.useTheme)().select,rt=We.defaultProps,yt=We.valid,je=We.styles,Ke=je.base,Te=je.variants,oe=L(r.default.useState("close"),2),ge=oe[0],te=oe[1];K=K??rt.variant,X=X??rt.color,re=re??rt.size,me=me??rt.label,de=de??rt.error,ee=ee??rt.success,_e=_e??rt.arrow,he=he??rt.value,pe=pe??rt.onChange,be=be??rt.selected,ve=ve??rt.offset,Ce=Ce??rt.dismiss,Ae=Ae??rt.animate,ue=ue??rt.labelProps,Ee=Ee??rt.menuProps;var ye;qe=(ye=(0,f.default)(qe,(rt==null?void 0:rt.containerProps)||{}))!==null&&ye!==void 0?ye:rt.containerProps,$e=$e??rt.className;var ie=r.default.useRef([]),se,fe=r.default.useRef(z((se=r.default.Children.map(ct,function(Dt){var nr=Dt.props;return nr==null?void 0:nr.value}))!==null&&se!==void 0?se:[])),Oe=L(r.default.useState(!1),2),xe=Oe[0],Ue=Oe[1],Fe=L(r.default.useState(null),2),Qe=Fe[0],ke=Fe[1],bt=L(r.default.useState(0),2),ft=bt[0],At=bt[1],It=L(r.default.useState(!1),2),xt=It[0],Rt=It[1],Er=(0,O.usePrevious)(Qe),ur=(0,o.useFloating)({placement:"bottom-start",open:xe,onOpenChange:Ue,whileElementsMounted:o.autoUpdate,middleware:[(0,o.offset)(5),(0,o.flip)({padding:10}),(0,o.size)({apply:function(nr){var Lt=nr.rects,Zr=nr.elements,pn,hn;Object.assign(Zr==null||(pn=Zr.floating)===null||pn===void 0?void 0:pn.style,{width:"".concat(Lt==null||(hn=Lt.reference)===null||hn===void 0?void 0:hn.width,"px"),zIndex:99})},padding:20})]}),$r=ur.x,rr=ur.y,Hn=ur.strategy,Ir=ur.refs,_r=ur.context;r.default.useEffect(function(){At(Math.max(0,fe.current.indexOf(he)+1))},[he]);var cn=Ir.floating,dn=(0,o.useInteractions)([(0,o.useClick)(_r),(0,o.useRole)(_r,{role:"listbox"}),(0,o.useDismiss)(_r,k({},Ce)),(0,o.useListNavigation)(_r,{listRef:ie,activeIndex:Qe,selectedIndex:ft,onNavigate:ke,loop:!0}),(0,o.useTypeahead)(_r,{listRef:fe,activeIndex:Qe,selectedIndex:ft,onMatch:xe?ke:At})]),J=dn.getReferenceProps,Re=dn.getFloatingProps,ze=dn.getItemProps;(0,a.useIsomorphicLayoutEffect)(function(){var Dt=cn.current;if(xe&&xt&&Dt){var nr=Qe!=null?ie.current[Qe]:ft!=null?ie.current[ft]:null;if(nr&&Er!=null){var Lt,Zr,pn=(Zr=(Lt=ie.current[Er])===null||Lt===void 0?void 0:Lt.offsetHeight)!==null&&Zr!==void 0?Zr:0,hn=Dt.offsetHeight,vo=nr.offsetTop,Ti=vo+pn;vohn+Dt.scrollTop&&(Dt.scrollTop+=Ti-hn-Dt.scrollTop+5)}}},[xe,xt,Er,Qe]);var Ut=r.default.useMemo(function(){return{selectedIndex:ft,setSelectedIndex:At,listRef:ie,setOpen:Ue,onChange:pe||function(){},activeIndex:Qe,setActiveIndex:ke,getItemProps:ze,dataRef:_r.dataRef}},[ft,pe,Qe,ze,_r.dataRef]);r.default.useEffect(function(){te(xe?"open":!xe&&ft||!xe&&he?"withValue":"close")},[xe,he,ft,be]);var Nt=Te[(0,g.default)(yt.variants,K,"outlined")],Et=Nt.sizes[(0,g.default)(yt.sizes,re,"md")],Ht=Nt.error.select,qt=Nt.success.select,Pt=Nt.colors.select[(0,g.default)(yt.colors,X,"gray")],Xr=Nt.error.label,mr=Nt.success.label,dr=Nt.colors.label[(0,g.default)(yt.colors,X,"gray")],On=Nt.states[ge],kn=(0,i.default)((0,m.default)(Ke.container),(0,m.default)(Et.container),qe==null?void 0:qe.className),Sr=(0,u.twMerge)((0,i.default)((0,m.default)(Ke.select),(0,m.default)(Nt.base.select),(0,m.default)(On.select),(0,m.default)(Et.select),s({},(0,m.default)(Pt[ge]),!de&&!ee),s({},(0,m.default)(Ht.initial),de),s({},(0,m.default)(Ht.states[ge]),de),s({},(0,m.default)(qt.initial),ee),s({},(0,m.default)(qt.states[ge]),ee)),$e),Nn,ta=(0,u.twMerge)((0,i.default)((0,m.default)(Ke.label),(0,m.default)(Nt.base.label),(0,m.default)(On.label),(0,m.default)(Et.label.initial),(0,m.default)(Et.label.states[ge]),s({},(0,m.default)(dr[ge]),!de&&!ee),s({},(0,m.default)(Xr.initial),de),s({},(0,m.default)(Xr.states[ge]),de),s({},(0,m.default)(mr.initial),ee),s({},(0,m.default)(mr.states[ge]),ee)),(Nn=ue.className)!==null&&Nn!==void 0?Nn:""),fn=(0,i.default)((0,m.default)(Ke.arrow.initial),s({},(0,m.default)(Ke.arrow.active),xe)),bo,qn=(0,u.twMerge)((0,i.default)((0,m.default)(Ke.menu)),(bo=Ee.className)!==null&&bo!==void 0?bo:""),Ie=(0,i.default)("absolute top-2/4 -translate-y-2/4",K==="outlined"?"left-3 pt-0.5":"left-0 pt-3"),ot={unmount:{opacity:0,transformOrigin:"top",transform:"scale(0.95)",transition:{duration:.2,times:[.4,0,.2,1]}},mount:{opacity:1,transformOrigin:"top",transform:"scale(1)",transition:{duration:.2,times:[.4,0,.2,1]}}},dt=(0,f.default)(ot,Ae),Xe=a.AnimatePresence;r.default.useEffect(function(){he&&!pe&&console.error("Warning: You provided a `value` prop to a select component without an `onChange` handler. This will render a read-only select. If the field should be mutable use `onChange` handler with `value` together.")},[he,pe]);var wt=r.default.createElement(o.FloatingFocusManager,{context:_r,modal:!1},r.default.createElement(a.m.ul,c({},Re(A(k({},Ee),{ref:Ir.setFloating,role:"listbox",className:qn,style:{position:Hn,top:rr??0,left:$r??0,overflow:"auto"},onPointerEnter:function(nr){var Lt=Ee==null?void 0:Ee.onPointerEnter;typeof Lt=="function"&&(Lt(nr),Rt(!1)),Rt(!1)},onPointerMove:function(nr){var Lt=Ee==null?void 0:Ee.onPointerMove;typeof Lt=="function"&&(Lt(nr),Rt(!1)),Rt(!1)},onKeyDown:function(nr){var Lt=Ee==null?void 0:Ee.onKeyDown;typeof Lt=="function"&&(Lt(nr),Rt(!0)),Rt(!0)}})),{initial:"unmount",exit:"unmount",animate:xe?"mount":"unmount",variants:dt}),r.default.Children.map(ct,function(Dt,nr){var Lt;return r.default.isValidElement(Dt)&&r.default.cloneElement(Dt,A(k({},Dt.props),{index:((Lt=Dt.props)===null||Lt===void 0?void 0:Lt.index)||nr+1,id:"material-tailwind-select-".concat(nr)}))})));return r.default.createElement(O.SelectContextProvider,{value:Ut},r.default.createElement("div",c({},qe,{ref:H,className:kn}),r.default.createElement("button",c({type:"button"},J(A(k({},it),{ref:Ir.setReference,className:Sr,disabled:Ge,name:tt}))),typeof be=="function"?r.default.createElement("span",{className:Ie},be(ct[ft-1],ft-1)):he&&!pe?r.default.createElement("span",{className:Ie},he):r.default.createElement("span",c({},(mt=ct[ft-1])===null||mt===void 0?void 0:mt.props,{className:Ie})),r.default.createElement("div",{className:fn},_e??r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",clipRule:"evenodd"})))),r.default.createElement("label",c({},ue,{className:ta}),me),r.default.createElement(a.LazyMotion,{features:a.domAnimation},r.default.createElement(Xe,null,xe&&r.default.createElement(r.default.Fragment,null,Ne?r.default.createElement(o.FloatingOverlay,{lockScroll:!0},wt):wt)))))});Y.propTypes={variant:n.default.oneOf(T.propTypesVariant),color:n.default.oneOf(T.propTypesColor),size:n.default.oneOf(T.propTypesSize),label:T.propTypesLabel,error:T.propTypesError,success:T.propTypesSuccess,arrow:T.propTypesArrow,value:T.propTypesValue,onChange:T.propTypesOnChange,selected:T.propTypesSelected,offset:T.propTypesOffset,dismiss:T.propTypesDismiss,animate:T.propTypesAnimate,lockScroll:T.propTypesLockScroll,labelProps:T.propTypesLabelProps,menuProps:T.propTypesMenuProps,className:T.propTypesClassName,disabled:T.propTypesDisabled,name:T.propTypesName,children:T.propTypesChildren,containerProps:T.propTypesContainerProps},Y.displayName="MaterialTailwind.Select";var q=Object.assign(Y,{Option:C.SelectOption})})(sk);var uk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Switch:function(){return b},default:function(){return d}});var r=T(P),n=T(ut),o=T(As),a=T(gt),i=lt,u=T(tr),f=T(nt),g=et,m=xi;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.color,h=s.label,y=s.ripple,x=s.className,j=s.disabled,k=s.containerProps,N=s.circleProps,A=s.labelProps,M=s.inputRef,D=C(s,["color","label","ripple","className","disabled","containerProps","circleProps","labelProps","inputRef"]),L=(0,g.useTheme)(),z=L.switch,V=z.defaultProps,Y=z.valid,q=z.styles,B=q.base,H=q.colors,K=r.default.useId();l=l??V.color,y=y??V.ripple,x=x??V.className,j=j??V.disabled,k=k??V.containerProps,A=A??V.labelProps,N=N??V.circleProps;var X=y!==void 0&&new o.default,re=(0,a.default)((0,f.default)(B.root),S({},(0,f.default)(B.disabled),j)),me=(0,i.twMerge)((0,a.default)((0,f.default)(B.container)),k==null?void 0:k.className),de=(0,i.twMerge)((0,a.default)((0,f.default)(B.input),(0,f.default)(H[(0,u.default)(Y.colors,l,"gray")])),x),ee=(0,i.twMerge)((0,a.default)((0,f.default)(B.circle),H[(0,u.default)(Y.colors,l,"gray")].circle,H[(0,u.default)(Y.colors,l,"gray")].before),N==null?void 0:N.className),_e=(0,a.default)((0,f.default)(B.ripple)),he=(0,i.twMerge)((0,a.default)((0,f.default)(B.label)),A==null?void 0:A.className);return r.default.createElement("div",{ref:c,className:re},r.default.createElement("div",O({},k,{className:me}),r.default.createElement("input",O({},D,{ref:M,type:"checkbox",disabled:j,id:D.id||K,className:de})),r.default.createElement("label",O({},N,{htmlFor:D.id||K,className:ee}),y&&r.default.createElement("div",{className:_e,onMouseDown:function(pe){var be=k==null?void 0:k.onMouseDown;return y&&X.create(pe,"dark"),typeof be=="function"&&be(pe)}}))),h&&r.default.createElement("label",O({},A,{htmlFor:D.id||K,className:he}),h))});b.propTypes={color:n.default.oneOf(m.propTypesColor),label:m.propTypesLabel,ripple:m.propTypesRipple,className:m.propTypesClassName,disabled:m.propTypesDisabled,containerProps:m.propTypesObject,labelProps:m.propTypesObject,circleProps:m.propTypesObject},b.displayName="MaterialTailwind.Switch";var d=b})(uk);var ck={},Fs={},Si={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{propTypesId:function(){return a},propTypesValue:function(){return i},propTypesAnimate:function(){return u},propTypesDisabled:function(){return f},propTypesClassName:function(){return g},propTypesOrientation:function(){return m},propTypesIndicator:function(){return S},propTypesChildren:function(){return O}});var r=o(ut),n=Zt;function o(T){return T&&T.__esModule?T:{default:T}}var a=r.default.string,i=r.default.oneOfType([r.default.string,r.default.number]).isRequired,u=n.propTypesAnimation,f=r.default.bool,g=r.default.string,m=r.default.oneOf(["horizontal","vertical"]),S=r.default.instanceOf(Object),O=r.default.node.isRequired})(Si);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(k,N){for(var A in N)Object.defineProperty(k,A,{enumerable:!0,get:N[A]})}t(e,{TabsContext:function(){return b},useTabs:function(){return d},TabsContextProvider:function(){return s},setId:function(){return c},setActive:function(){return l},setAnimation:function(){return h},setIndicator:function(){return y},setIsInitial:function(){return x},setOrientation:function(){return j}});var r=u(P),n=Si;function o(k,N){(N==null||N>k.length)&&(N=k.length);for(var A=0,M=new Array(N);A=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.value,l=d.className,h=d.activeClassName,y=d.disabled,x=d.children,j=T(d,["value","className","activeClassName","disabled","children"]),k=(0,u.useTheme)(),N=k.tab,A=N.defaultProps,M=N.styles.base,D=(0,f.useTabs)(),L=D.state,z=D.dispatch,V=L.id,Y=L.active,q=L.indicatorProps;l=l??A.className,h=h??A.activeClassName,y=y??A.disabled;var B,H=(0,a.twMerge)((0,o.default)((0,i.default)(M.tab.initial),(B={},m(B,(0,i.default)(M.tab.disabled),y),m(B,h,Y===c),B)),l),K,X=(0,a.twMerge)((0,o.default)((0,i.default)(M.indicator)),(K=q==null?void 0:q.className)!==null&&K!==void 0?K:"");return r.default.createElement("li",S({},j,{ref:s,role:"tab",className:H,onClick:function(re){var me=j==null?void 0:j.onClick;typeof me=="function"&&((0,f.setActive)(z,c),(0,f.setIsInitial)(z,!1),me(re)),(0,f.setIsInitial)(z,!1),(0,f.setActive)(z,c)},"data-value":c}),r.default.createElement("div",{className:"z-20 text-inherit"},x),Y===c&&r.default.createElement(n.motion.div,S({},q,{transition:{duration:.5},className:X,layoutId:V})))});w.propTypes={value:g.propTypesValue,className:g.propTypesClassName,disabled:g.propTypesDisabled,children:g.propTypesChildren},w.displayName="MaterialTailwind.Tab";var b=w})(dk);var fk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{TabsBody:function(){return w},default:function(){return b}});var r=O(P),n=Nr,o=O(Mr),a=O(gt),i=lt,u=O(nt),f=et,g=Fs,m=Si;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.animate,l=d.className,h=d.children,y=T(d,["animate","className","children"]),x=(0,f.useTheme)().tabsBody,j=x.defaultProps,k=x.styles.base,N=(0,g.useTabs)().dispatch;l=l??j.className,c=c??j.animate;var A=(0,i.twMerge)((0,a.default)((0,u.default)(k)),l),M=r.default.useMemo(function(){return{initial:{opacity:0,position:"absolute",top:"0",left:"0",zIndex:1,transition:{duration:0}},unmount:{opacity:0,position:"absolute",top:"0",left:"0",zIndex:1,transition:{duration:.5,times:[.4,0,.2,1]}},mount:{opacity:1,position:"relative",zIndex:2,transition:{duration:.5,times:[.4,0,.2,1]}}}},[]),D=r.default.useMemo(function(){return(0,o.default)(M,c)},[c,M]);return(0,n.useIsomorphicLayoutEffect)(function(){(0,g.setAnimation)(N,D)},[D,N]),r.default.createElement("div",S({},y,{ref:s,className:A}),h)});w.propTypes={animate:m.propTypesAnimate,className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.TabsBody";var b=w})(fk);var pk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{TabsHeader:function(){return C},default:function(){return w}});var r=S(P),n=S(gt),o=lt,a=S(nt),i=et,u=Fs,f=Si;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=r.default.forwardRef(function(b,d){var s=b.indicatorProps,c=b.className,l=b.children,h=O(b,["indicatorProps","className","children"]),y=(0,i.useTheme)().tabsHeader,x=y.defaultProps,j=y.styles,k=(0,u.useTabs)(),N=k.state,A=k.dispatch,M=N.orientation;r.default.useEffect(function(){(0,u.setIndicator)(A,s)},[A,s]),c=c??x.className;var D=(0,o.twMerge)((0,n.default)((0,a.default)(j.base),g({},j[M]&&(0,a.default)(j[M]),M)),c);return r.default.createElement("nav",null,r.default.createElement("ul",m({},h,{ref:d,role:"tablist",className:D}),l))});C.propTypes={indicatorProps:f.propTypesIndicator,className:f.propTypesClassName,children:f.propTypesChildren},C.displayName="MaterialTailwind.TabsHeader";var w=C})(pk);var hk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{TabPanel:function(){return C},default:function(){return w}});var r=S(P),n=Nr,o=S(gt),a=lt,i=S(nt),u=et,f=Fs,g=Si;function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=r.default.forwardRef(function(b,d){var s=b.value,c=b.className,l=b.children,h=O(b,["value","className","children"]),y=(0,u.useTheme)().tabPanel,x=y.defaultProps,j=y.styles.base,k=(0,f.useTabs)().state,N=k.active,A=k.appliedAnimation,M=k.isInitial;c=c??x.className;var D=(0,a.twMerge)((0,o.default)((0,i.default)(j)),c),L=n.AnimatePresence;return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(L,{exitBeforeEnter:!0},r.default.createElement(n.m.div,m({},h,{ref:d,role:"tabpanel",className:D,initial:"unmount",exit:"unmount",animate:N===s?"mount":M?"initial":"unmount",variants:A,"data-value":s}),l)))});C.propTypes={value:g.propTypesValue,className:g.propTypesClassName,children:g.propTypesChildren},C.displayName="MaterialTailwind.TabPanel";var w=C})(hk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,h){for(var y in h)Object.defineProperty(l,y,{enumerable:!0,get:h[y]})}t(e,{Tabs:function(){return s},Tab:function(){return f.Tab},TabsBody:function(){return g.TabsBody},TabsHeader:function(){return m.TabsHeader},TabPanel:function(){return S.TabPanel},useTabs:function(){return u.useTabs},default:function(){return c}});var r=w(P),n=w(gt),o=lt,a=w(nt),i=et,u=Fs,f=dk,g=fk,m=pk,S=hk,O=Si;function T(l,h,y){return h in l?Object.defineProperty(l,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):l[h]=y,l}function C(){return C=Object.assign||function(l){for(var h=1;h=0)&&Object.prototype.propertyIsEnumerable.call(l,x)&&(y[x]=l[x])}return y}function d(l,h){if(l==null)return{};var y={},x=Object.keys(l),j,k;for(k=0;k=0)&&(y[j]=l[j]);return y}var s=r.default.forwardRef(function(l,h){var y=l.value,x=l.className,j=l.orientation,k=l.children,N=b(l,["value","className","orientation","children"]),A=(0,i.useTheme)().tabs,M=A.defaultProps,D=A.styles,L=r.default.useId();x=x??M.className,j=j??M.orientation;var z=(0,o.twMerge)((0,n.default)((0,a.default)(D.base),T({},D[j]&&(0,a.default)(D[j]),j)),x);return r.default.createElement(u.TabsContextProvider,{id:L,value:y,orientation:j},r.default.createElement("div",C({},N,{ref:h,className:z}),k))});s.propTypes={id:O.propTypesId,value:O.propTypesValue,className:O.propTypesClassName,orientation:O.propTypesOrientation,children:O.propTypesChildren},s.displayName="MaterialTailwind.Tabs";var c=Object.assign(s,{Tab:f.Tab,Body:g.TabsBody,Header:m.TabsHeader,Panel:S.TabPanel})})(ck);var gk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{Textarea:function(){return C},default:function(){return w}});var r=S(P),n=S(ut),o=S(gt),a=S(tr),i=S(nt),u=et,f=bu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=r.default.forwardRef(function(b,d){var s=b.variant,c=b.color,l=b.size,h=b.label,y=b.error,x=b.success,j=b.resize,k=b.labelProps,N=b.containerProps,A=b.shrink,M=b.className,D=O(b,["variant","color","size","label","error","success","resize","labelProps","containerProps","shrink","className"]),L=(0,u.useTheme)().textarea,z=L.defaultProps,V=L.valid,Y=L.styles,q=Y.base,B=Y.variants;s=s??z.variant,l=l??z.size,c=c??z.color,h=h??z.label,k=k??z.labelProps,N=N??z.containerProps,A=A??z.shrink,M=M??z.className;var H=B[(0,a.default)(V.variants,s,"outlined")],K=(0,i.default)(H.error.textarea),X=(0,i.default)(H.success.textarea),re=(0,i.default)(H.shrink.textarea),me=(0,i.default)(H.colors.textarea[(0,a.default)(V.colors,c,"gray")]),de=(0,i.default)(H.error.label),ee=(0,i.default)(H.success.label),_e=(0,i.default)(H.shrink.label),he=(0,i.default)(H.colors.label[(0,a.default)(V.colors,c,"gray")]),pe=(0,o.default)((0,i.default)(q.container),N==null?void 0:N.className),be=(0,o.default)((0,i.default)(q.textarea),(0,i.default)(H.base.textarea),(0,i.default)(H.sizes[(0,a.default)(V.sizes,l,"md")].textarea),g({},me,!y&&!x),g({},K,y),g({},X,x),g({},re,A),j?"":"!resize-none",M),ve=(0,o.default)((0,i.default)(q.label),(0,i.default)(H.base.label),(0,i.default)(H.sizes[(0,a.default)(V.sizes,l,"md")].label),g({},he,!y&&!x),g({},de,y),g({},ee,x),g({},_e,A),k==null?void 0:k.className);return r.default.createElement("div",{ref:d,className:pe},r.default.createElement("textarea",m({},D,{className:be,placeholder:(D==null?void 0:D.placeholder)||" "})),r.default.createElement("label",{className:ve},h))});C.propTypes={variant:n.default.oneOf(f.propTypesVariant),size:n.default.oneOf(f.propTypesSize),color:n.default.oneOf(f.propTypesColor),label:f.propTypesLabel,error:f.propTypesError,success:f.propTypesSuccess,resize:f.propTypesResize,labelProps:f.propTypesLabelProps,containerProps:f.propTypesContainerProps,shrink:f.propTypesShrink,className:f.propTypesClassName},C.displayName="MaterialTailwind.Textarea";var w=C})(gk);var mk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(M,D){for(var L in D)Object.defineProperty(M,L,{enumerable:!0,get:D[L]})}t(e,{Tooltip:function(){return N},default:function(){return A}});var r=b(P),n=b(ut),o=wr,a=Nr,i=b(gt),u=lt,f=b(Mr),g=b(nt),m=et,S=Ls;function O(M,D){(D==null||D>M.length)&&(D=M.length);for(var L=0,z=new Array(D);L=0)&&Object.prototype.propertyIsEnumerable.call(M,z)&&(L[z]=M[z])}return L}function x(M,D){if(M==null)return{};var L={},z=Object.keys(M),V,Y;for(Y=0;Y=0)&&(L[V]=M[V]);return L}function j(M,D){return T(M)||d(M,D)||k(M,D)||s()}function k(M,D){if(M){if(typeof M=="string")return O(M,D);var L=Object.prototype.toString.call(M).slice(8,-1);if(L==="Object"&&M.constructor&&(L=M.constructor.name),L==="Map"||L==="Set")return Array.from(L);if(L==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(L))return O(M,D)}}var N=r.default.forwardRef(function(M,D){var L=M.open,z=M.handler,V=M.content,Y=M.interactive,q=M.placement,B=M.offset,H=M.dismiss,K=M.animate,X=M.className,re=M.children,me=y(M,["open","handler","content","interactive","placement","offset","dismiss","animate","className","children"]),de=(0,m.useTheme)().tooltip,ee=de.defaultProps,_e=de.styles.base,he=j(r.default.useState(!1),2),pe=he[0],be=he[1];L=L??pe,z=z??be,Y=Y??ee.interactive,q=q??ee.placement,B=B??ee.offset,H=H??ee.dismiss,K=K??ee.animate,X=X??ee.className;var ve=(0,u.twMerge)((0,i.default)((0,g.default)(_e)),X),Ce={unmount:{opacity:0},mount:{opacity:1}},Ae=(0,f.default)(Ce,K),Ne=(0,o.useFloating)({open:L,onOpenChange:z,middleware:[(0,o.offset)(B),(0,o.flip)(),(0,o.shift)()],placement:q}),ue=Ne.x,Ee=Ne.y,$e=Ne.reference,Ge=Ne.floating,tt=Ne.strategy,ct=Ne.refs,qe=Ne.update,it=Ne.context,mt=(0,o.useInteractions)([(0,o.useClick)(it,{enabled:Y}),(0,o.useFocus)(it),(0,o.useHover)(it),(0,o.useRole)(it,{role:"tooltip"}),(0,o.useDismiss)(it,H)]),We=mt.getReferenceProps,rt=mt.getFloatingProps;r.default.useEffect(function(){if(ct.reference.current&&ct.floating.current&&L)return(0,o.autoUpdate)(ct.reference.current,ct.floating.current,qe)},[L,qe,ct.reference,ct.floating]);var yt=(0,o.useMergeRefs)([D,Ge]),je=(0,o.useMergeRefs)([D,$e]),Ke=a.AnimatePresence;return r.default.createElement(r.default.Fragment,null,typeof re=="string"?r.default.createElement("span",w({},We({ref:je})),re):r.default.cloneElement(re,c({},We(h(c({},re==null?void 0:re.props),{ref:je})))),r.default.createElement(a.LazyMotion,{features:a.domAnimation},r.default.createElement(o.FloatingPortal,null,r.default.createElement(Ke,null,L&&r.default.createElement(a.m.div,w({},rt(h(c({},me),{ref:yt,className:ve,style:{position:tt,top:Ee??"",left:ue??""}})),{initial:"unmount",exit:"unmount",animate:L?"mount":"unmount",variants:Ae}),V)))))});N.propTypes={open:S.propTypesOpen,handler:S.propTypesHandler,content:S.propTypesContent,interactive:S.propTypesInteractive,placement:n.default.oneOf(S.propTypesPlacement),offset:S.propTypesOffset,dismiss:S.propTypesDismiss,animate:S.propTypesAnimate,className:S.propTypesClassName,children:S.propTypesChildren},N.displayName="MaterialTailwind.Tooltip";var A=N})(mk);var bk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(c,l){for(var h in l)Object.defineProperty(c,h,{enumerable:!0,get:l[h]})}t(e,{Typography:function(){return d},default:function(){return s}});var r=S(P),n=S(ut),o=S(gt),a=lt,i=S(tr),u=S(nt),f=et,g=Fm;function m(c,l,h){return l in c?Object.defineProperty(c,l,{value:h,enumerable:!0,configurable:!0,writable:!0}):c[l]=h,c}function S(c){return c&&c.__esModule?c:{default:c}}function O(c){for(var l=1;l=0)&&Object.prototype.propertyIsEnumerable.call(c,y)&&(h[y]=c[y])}return h}function b(c,l){if(c==null)return{};var h={},y=Object.keys(c),x,j;for(j=0;j=0)&&(h[x]=c[x]);return h}var d=r.default.forwardRef(function(c,l){var h=c.variant,y=c.color,x=c.textGradient,j=c.as,k=c.className,N=c.children,A=w(c,["variant","color","textGradient","as","className","children"]),M=(0,f.useTheme)().typography,D=M.defaultProps,L=M.valid,z=M.styles,V=z.variants,Y=z.colors,q=z.textGradient;h=h??D.variant,y=y??D.color,x=x||D.textGradient,j=j??void 0,k=k??D.className;var B=(0,u.default)(V[(0,i.default)(L.variants,h,"paragraph")]),H=Y[(0,i.default)(L.colors,y,"inherit")],K=(0,u.default)(q),X=(0,a.twMerge)((0,o.default)(B,m({},H.color,!x),m({},K,x),m({},H.gradient,x)),k),re;switch(h){case"h1":re=r.default.createElement(j||"h1",C(O({},A),{ref:l,className:X}),N);break;case"h2":re=r.default.createElement(j||"h2",C(O({},A),{ref:l,className:X}),N);break;case"h3":re=r.default.createElement(j||"h3",C(O({},A),{ref:l,className:X}),N);break;case"h4":re=r.default.createElement(j||"h4",C(O({},A),{ref:l,className:X}),N);break;case"h5":re=r.default.createElement(j||"h5",C(O({},A),{ref:l,className:X}),N);break;case"h6":re=r.default.createElement(j||"h6",C(O({},A),{ref:l,className:X}),N);break;case"lead":re=r.default.createElement(j||"p",C(O({},A),{ref:l,className:X}),N);break;case"paragraph":re=r.default.createElement(j||"p",C(O({},A),{ref:l,className:X}),N);break;case"small":re=r.default.createElement(j||"p",C(O({},A),{ref:l,className:X}),N);break;default:re=r.default.createElement(j||"p",C(O({},A),{ref:l,className:X}),N);break}return re});d.propTypes={variant:n.default.oneOf(g.propTypesVariant),color:n.default.oneOf(g.propTypesColor),as:g.propTypesAs,textGradient:g.propTypesTextGradient,className:g.propTypesClassName,children:g.propTypesChildren},d.displayName="MaterialTailwind.Typography";var s=d})(bk);var vk={},yk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(g,m){for(var S in m)Object.defineProperty(g,S,{enumerable:!0,get:m[S]})}t(e,{propTypesClassName:function(){return a},propTypesChildren:function(){return i},propTypesOpen:function(){return u},propTypesAnimate:function(){return f}});var r=o(ut),n=Zt;function o(g){return g&&g.__esModule?g:{default:g}}var a=r.default.string,i=r.default.node.isRequired,u=r.default.bool.isRequired,f=n.propTypesAnimation})(yk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{Collapse:function(){return w},default:function(){return b}});var r=O(P),n=Nr,o=wr,a=O(Mr),i=O(gt),u=lt,f=O(nt),g=et,m=yk;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.open,l=d.animate,h=d.className,y=d.children,x=T(d,["open","animate","className","children"]),j=r.default.useRef(null),k=(0,g.useTheme)().collapse,N=k.styles,A=N.base;l=l??{},h=h??"";var M=(0,u.twMerge)((0,i.default)((0,f.default)(A)),h),D={unmount:{height:"0px",transition:{duration:.3,times:[.4,0,.2,1]}},mount:{height:"auto",transition:{duration:.3,times:[.4,0,.2,1]}}},L=(0,a.default)(D,l),z=n.AnimatePresence,V=(0,o.useMergeRefs)([s,j]);return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(z,null,r.default.createElement(n.m.div,S({},x,{ref:V,className:M,initial:"unmount",exit:"unmount",animate:c?"mount":"unmount",variants:L}),y)))});w.displayName="MaterialTailwind.Collapse",w.propTypes={open:m.propTypesOpen,animate:m.propTypesAnimate,className:m.propTypesClassName,children:m.propTypesChildren};var b=w})(vk);var xk={},ku={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(g,m){for(var S in m)Object.defineProperty(g,S,{enumerable:!0,get:m[S]})}t(e,{propTypesClassName:function(){return o},propTypesDisabled:function(){return a},propTypesSelected:function(){return i},propTypesRipple:function(){return u},propTypesChildren:function(){return f}});var r=n(ut);function n(g){return g&&g.__esModule?g:{default:g}}var o=r.default.string,a=r.default.bool,i=r.default.bool,u=r.default.bool,f=r.default.node.isRequired})(ku);var wk={},Cb={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{ListItemPrefix:function(){return O},default:function(){return T}});var r=g(P),n=et,o=g(gt),a=lt,i=g(nt),u=ku;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,n.useTheme)().list,l=c.styles.base,h=(0,a.twMerge)((0,o.default)((0,i.default)(l.itemPrefix)),b);return r.default.createElement("div",f({},s,{ref:w,className:h}),d)});O.propTypes={className:u.propTypesClassName,children:u.propTypesChildren},O.displayName="MaterialTailwind.ListItemPrefix";var T=O})(Cb);var Tb={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{ListItemSuffix:function(){return O},default:function(){return T}});var r=g(P),n=et,o=g(gt),a=lt,i=g(nt),u=ku;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,n.useTheme)().list,l=c.styles.base,h=(0,a.twMerge)((0,o.default)((0,i.default)(l.itemSuffix)),b);return r.default.createElement("div",f({},s,{ref:w,className:h}),d)});O.propTypes={className:u.propTypesClassName,children:u.propTypesChildren},O.displayName="MaterialTailwind.ListItemSuffix";var T=O})(Tb);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{ListItem:function(){return b},ListItemPrefix:function(){return g.ListItemPrefix},ListItemSuffix:function(){return m.ListItemSuffix},default:function(){return d}});var r=T(P),n=et,o=T(As),a=T(gt),i=lt,u=T(nt),f=ku,g=Cb,m=Tb;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.className,h=s.disabled,y=s.selected,x=s.ripple,j=s.children,k=C(s,["className","disabled","selected","ripple","children"]),N=(0,n.useTheme)().list,A=N.defaultProps,M=N.styles.base;x=x??A.ripple;var D=x!==void 0&&new o.default,L,z=(0,i.twMerge)((0,a.default)((0,u.default)(M.item.initial),(L={},S(L,(0,u.default)(M.item.disabled),h),S(L,(0,u.default)(M.item.selected),y&&!h),L)),l);return r.default.createElement("div",O({},k,{ref:c,role:"button",tabIndex:0,className:z,onMouseDown:function(V){var Y=k==null?void 0:k.onMouseDown;return x&&D.create(V,"dark"),typeof Y=="function"&&Y(V)}}),j)});b.propTypes={className:f.propTypesClassName,selected:f.propTypesSelected,disabled:f.propTypesDisabled,ripple:f.propTypesRipple,children:f.propTypesChildren},b.displayName="MaterialTailwind.ListItem";var d=Object.assign(b,{Prefix:g.ListItemPrefix,Suffix:m.ListItemSuffix})})(wk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{List:function(){return w},ListItem:function(){return f.ListItem},ListItemPrefix:function(){return g.ListItemPrefix},ListItemSuffix:function(){return m.ListItemSuffix},default:function(){return b}});var r=O(P),n=et,o=O(gt),a=lt,i=O(nt),u=ku,f=wk,g=Cb,m=Tb;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.className,l=d.children,h=T(d,["className","children"]),y=(0,n.useTheme)().list,x=y.defaultProps,j=y.styles.base;c=c??x.className;var k=(0,a.twMerge)((0,o.default)((0,i.default)(j.list)),c);return r.default.createElement("nav",S({},h,{ref:s,className:k}),l)});w.propTypes={className:u.propTypesClassName,children:u.propTypesChildren},w.displayName="MaterialTailwind.List";var b=Object.assign(w,{Item:f.ListItem,ItemPrefix:g.ListItemPrefix,ItemSuffix:m.ListItemSuffix})})(xk);var _k={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{ButtonGroup:function(){return w},default:function(){return b}});var r=O(P),n=O(ut),o=O(gt),a=lt,i=O(tr),u=O(nt),f=et,g=vi;function m(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,l)&&(c[l]=d[l])}return c}function C(d,s){if(d==null)return{};var c={},l=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,l=d.size,h=d.color,y=d.fullWidth,x=d.ripple,j=d.className,k=d.children,N=T(d,["variant","size","color","fullWidth","ripple","className","children"]),A=(0,f.useTheme)().buttonGroup,M=A.defaultProps,D=A.styles,L=A.valid,z=D.base,V=D.dividerColor;c=c??M.variant,l=l??M.size,h=h??M.color,x=x??M.ripple,y=y??M.fullWidth,j=j??M.className;var Y,q=(0,a.twMerge)((0,o.default)((0,u.default)(z.initial),(Y={},m(Y,(0,u.default)(z.fullWidth),y),m(Y,"divide-x",c!=="outlined"),m(Y,(0,u.default)(V[(0,i.default)(L.colors,h,"gray")]),c!=="outlined"),Y)),j);return r.default.createElement("div",S({},N,{ref:s,className:q}),r.default.Children.map(k,function(B,H){var K;return r.default.isValidElement(B)&&r.default.cloneElement(B,{variant:c,size:l,color:h,ripple:x,fullWidth:y,className:(0,a.twMerge)((0,o.default)({"rounded-r-none":H!==r.default.Children.count(k)-1,"border-r-0":H!==r.default.Children.count(k)-1,"rounded-l-none":H!==0}),(K=B.props)===null||K===void 0?void 0:K.className)})}))});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),size:n.default.oneOf(g.propTypesSize),color:n.default.oneOf(g.propTypesColor),fullWidth:g.propTypesFullWidth,ripple:g.propTypesRipple,className:g.propTypesClassName,children:g.propTypesChildren},w.displayName="MaterialTailwind.ButtonGroup";var b=w})(_k);var Sk={},Ck={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{propTypesClassName:function(){return o},propTypesPrevArrow:function(){return a},propTypesNextArrow:function(){return i},propTypesNavigation:function(){return u},propTypesAutoplay:function(){return f},propTypesAutoplayDelay:function(){return g},propTypesTransition:function(){return m},propTypesLoop:function(){return S},propTypesChildren:function(){return O},propTypesSlideRef:function(){return T}});var r=n(ut);function n(C){return C&&C.__esModule?C:{default:C}}var o=r.default.string,a=r.default.func,i=r.default.func,u=r.default.func,f=r.default.bool,g=r.default.number,m=r.default.object,S=r.default.bool,O=r.default.node.isRequired,T=r.default.oneOfType([r.default.func,r.default.shape({current:r.default.any})])})(Ck);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(y,x){for(var j in x)Object.defineProperty(y,j,{enumerable:!0,get:x[j]})}t(e,{Carousel:function(){return l},default:function(){return h}});var r=T(P),n=Nr,o=wr,a=T(gt),i=lt,u=T(nt),f=et,g=Ck;function m(y,x){(x==null||x>y.length)&&(x=y.length);for(var j=0,k=new Array(x);j=0)&&Object.prototype.propertyIsEnumerable.call(y,k)&&(j[k]=y[k])}return j}function d(y,x){if(y==null)return{};var j={},k=Object.keys(y),N,A;for(A=0;A=0)&&(j[N]=y[N]);return j}function s(y,x){return S(y)||C(y,x)||c(y,x)||w()}function c(y,x){if(y){if(typeof y=="string")return m(y,x);var j=Object.prototype.toString.call(y).slice(8,-1);if(j==="Object"&&y.constructor&&(j=y.constructor.name),j==="Map"||j==="Set")return Array.from(j);if(j==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(j))return m(y,x)}}var l=r.default.forwardRef(function(y,x){var j=y.children,k=y.prevArrow,N=y.nextArrow,A=y.navigation,M=y.autoplay,D=y.autoplayDelay,L=y.transition,z=y.loop,V=y.className,Y=y.slideRef,q=b(y,["children","prevArrow","nextArrow","navigation","autoplay","autoplayDelay","transition","loop","className","slideRef"]),B=(0,f.useTheme)().carousel,H=B.defaultProps,K=B.styles.base,X=(0,n.useMotionValue)(0),re=r.default.useRef(null),me=s(r.default.useState(0),2),de=me[0],ee=me[1],_e=r.default.Children.toArray(j);V=V??H.className,k=k??H.prevArrow,N=N??H.nextArrow,A=A??H.navigation,M=M??H.autoplay,D=D??H.autoplayDelay,L=L??H.transition,z=z??H.loop;var he=(0,i.twMerge)((0,a.default)((0,u.default)(K.carousel)),V),pe=(0,i.twMerge)((0,a.default)((0,u.default)(K.slide))),be=r.default.useCallback(function(){var Ne;return-de*(((Ne=re.current)===null||Ne===void 0?void 0:Ne.clientWidth)||0)},[de]),ve=r.default.useCallback(function(){var Ne=z?0:de;ee(de+1===_e.length?Ne:de+1)},[de,z,_e.length]),Ce=function(){var Ne=z?_e.length-1:0;ee(de-1<0?Ne:de-1)};r.default.useEffect(function(){var Ne=(0,n.animate)(X,be(),L);return Ne.stop},[be,de,X,L]),r.default.useEffect(function(){window.addEventListener("resize",function(){(0,n.animate)(X,be(),L)})},[be,L,X]),r.default.useEffect(function(){if(M){var Ne=setInterval(function(){return ve()},D);return function(){return clearInterval(Ne)}}},[M,ve,D]);var Ae=(0,o.useMergeRefs)([re,x]);return r.default.createElement("div",O({},q,{ref:Ae,className:he}),_e.map(function(Ne,ue){return r.default.createElement(n.LazyMotion,{key:ue,features:n.domAnimation},r.default.createElement(n.m.div,{ref:Y,className:pe,style:{x:X,left:"".concat(ue*100,"%"),right:"".concat(ue*100,"%")}},Ne))}),k&&k({loop:z,handlePrev:Ce,activeIndex:de,firstIndex:de===0}),N&&N({loop:z,handleNext:ve,activeIndex:de,lastIndex:de===_e.length-1}),A&&A({setActiveIndex:ee,activeIndex:de,length:_e.length}))});l.propTypes={className:g.propTypesClassName,children:g.propTypesChildren,nextArrow:g.propTypesNextArrow,prevArrow:g.propTypesPrevArrow,navigation:g.propTypesNavigation,autoplay:g.propTypesAutoplay,autoplayDelay:g.propTypesAutoplayDelay,transition:g.propTypesTransition,loop:g.propTypesLoop,slideRef:g.propTypesSlideRef},l.displayName="MaterialTailwind.Carousel";var h=l})(Sk);var Tk={},Pk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{propTypesOpen:function(){return a},propTypesSize:function(){return i},propTypesOverlay:function(){return u},propTypesChildren:function(){return f},propTypesPlacement:function(){return g},propTypesOverlayProps:function(){return m},propTypesClassName:function(){return S},propTypesOnClose:function(){return O},propTypesDismiss:function(){return T},propTypesTransition:function(){return C},propTypesOverlayRef:function(){return w}});var r=o(ut),n=Zt;function o(b){return b&&b.__esModule?b:{default:b}}var a=r.default.bool.isRequired,i=r.default.number,u=r.default.bool,f=r.default.node.isRequired,g=["top","right","bottom","left"],m=r.default.object,S=r.default.string,O=r.default.func,T=n.propTypesDismissType,C=r.default.object,w=r.default.oneOfType([r.default.func,r.default.shape({current:r.default.any})])})(Pk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,h){for(var y in h)Object.defineProperty(l,y,{enumerable:!0,get:h[y]})}t(e,{Drawer:function(){return s},default:function(){return c}});var r=C(P),n=C(ut),o=Nr,a=wr,i=C(Mr),u=C(gt),f=lt,g=C(nt),m=et,S=Pk;function O(l,h,y){return h in l?Object.defineProperty(l,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):l[h]=y,l}function T(){return T=Object.assign||function(l){for(var h=1;h=0)&&Object.prototype.propertyIsEnumerable.call(l,x)&&(y[x]=l[x])}return y}function d(l,h){if(l==null)return{};var y={},x=Object.keys(l),j,k;for(k=0;k=0)&&(y[j]=l[j]);return y}var s=r.default.forwardRef(function(l,h){var y=l.open,x=l.size,j=l.overlay,k=l.children,N=l.placement,A=l.overlayProps,M=l.className,D=l.onClose,L=l.dismiss,z=l.transition,V=l.overlayRef,Y=b(l,["open","size","overlay","children","placement","overlayProps","className","onClose","dismiss","transition","overlayRef"]),q=(0,m.useTheme)().drawer,B=q.defaultProps,H=q.styles.base,K=(0,o.useAnimation)();x=x??B.size,j=j??B.overlay,N=N??B.placement,M=M??B.className,A=A??B.overlayProps,D=D??B.onClose;var X;L=(X=(0,i.default)(B.dismiss,L||{}))!==null&&X!==void 0?X:B.dismiss,z=z??B.transition;var re=(0,f.twMerge)((0,u.default)((0,g.default)(H.drawer),{"top-0 right-0":N==="right","bottom-0 left-0":N==="bottom","top-0 left-0":N==="top"||N==="left"}),M),me=(0,f.twMerge)((0,u.default)((0,g.default)(H.overlay)),A==null?void 0:A.className),de=(0,a.useFloating)({open:y,onOpenChange:D}).context,ee=(0,a.useInteractions)([(0,a.useDismiss)(de,L)]).getFloatingProps;r.default.useEffect(function(){K.start(y?"open":"close")},[y,K,N]);var _e={open:{x:0,y:0},close:{x:N==="left"?-x:N==="right"?x:0,y:N==="top"?-x:N==="bottom"?x:0}},he={unmount:{opacity:0,transition:{delay:.3}},mount:{opacity:1}};return r.default.createElement(r.default.Fragment,null,r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(o.AnimatePresence,null,j&&y&&r.default.createElement(o.m.div,{ref:V,className:me,initial:"unmount",exit:"unmount",animate:y?"mount":"unmount",variants:he,transition:{duration:.3}})),r.default.createElement(o.m.div,T({},ee(w({ref:h},Y)),{className:re,style:{maxWidth:N==="left"||N==="right"?x:"100%",maxHeight:N==="top"||N==="bottom"?x:"100%",height:N==="left"||N==="right"?"100vh":"100%"},initial:"close",animate:K,variants:_e,transition:z}),k)))});s.propTypes={open:S.propTypesOpen,size:S.propTypesSize,overlay:S.propTypesOverlay,children:S.propTypesChildren,placement:n.default.oneOf(S.propTypesPlacement),overlayProps:S.propTypesOverlayProps,className:S.propTypesClassName,onClose:S.propTypesOnClose,dismiss:S.propTypesDismiss,transition:S.propTypesTransition,overlayRef:S.propTypesOverlayRef},s.displayName="MaterialTailwind.Drawer";var c=s})(Tk);var Ok={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Badge:function(){return b},default:function(){return d}});var r=T(P),n=T(ut),o=T(Mr),a=T(gt),i=lt,u=T(tr),f=T(nt),g=et,m=zm;function S(s,c,l){return c in s?Object.defineProperty(s,c,{value:l,enumerable:!0,configurable:!0,writable:!0}):s[c]=l,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.color,h=s.invisible,y=s.withBorder,x=s.overlap,j=s.placement,k=s.className,N=s.content,A=s.children,M=s.containerProps,D=s.containerRef,L=C(s,["color","invisible","withBorder","overlap","placement","className","content","children","containerProps","containerRef"]),z=(0,g.useTheme)().badge,V=z.valid,Y=z.defaultProps,q=z.styles,B=q.base,H=q.placements,K=q.colors;l=l??Y.color,h=h??Y.invisible,y=y??Y.withBorder,x=x??Y.overlap,j=j??Y.placement;var X;k=(X=(0,a.default)(k,Y.className))!==null&&X!==void 0?X:Y.className;var re;M=(re=(0,o.default)(M,Y.containerProps||{}))!==null&&re!==void 0?re:Y.containerProps;var me=(0,f.default)(B.badge.initial),de=(0,f.default)(B.badge.withBorder),ee=(0,f.default)(B.badge.withContent),_e=(0,f.default)(K[(0,u.default)(V.colors,l,"red")]),he=(0,f.default)(H[(0,u.default)(V.placements,j,"top-end")][(0,u.default)(V.overlaps,x,"square")]),pe,be=(0,i.twMerge)((0,a.default)(me,he,_e,(pe={},S(pe,de,y),S(pe,ee,N),pe)),k),ve=(0,i.twMerge)((0,a.default)((0,f.default)(B.container),M==null?void 0:M.className));return r.default.createElement("div",O({ref:D},M,{className:ve}),A,!h&&r.default.createElement("span",O({},L,{ref:c,className:be}),N))});b.propTypes={color:n.default.oneOf(m.propTypesColor),invisible:m.propTypesInvisible,withBorder:m.propTypesWithBorder,overlap:n.default.oneOf(m.propTypesOverlap),className:m.propTypesClassName,content:m.propTypesContent,children:m.propTypesChildren,placement:n.default.oneOf(m.propTypesPlacement),containerProps:m.propTypesContainerProps,containerRef:m.propTypesContainerRef},b.displayName="MaterialTailwind.Badge";var d=b})(Ok);var kk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(N,A){for(var M in A)Object.defineProperty(N,M,{enumerable:!0,get:A[M]})}t(e,{Rating:function(){return j},default:function(){return k}});var r=C(P),n=C(ut),o=C(gt),a=lt,i=C(tr),u=C(nt),f=et,g=Bm;function m(N,A){(A==null||A>N.length)&&(A=N.length);for(var M=0,D=new Array(A);M=0)&&Object.prototype.propertyIsEnumerable.call(N,D)&&(M[D]=N[D])}return M}function l(N,A){if(N==null)return{};var M={},D=Object.keys(N),L,z;for(z=0;z=0)&&(M[L]=N[L]);return M}function h(N,A){return S(N)||b(N,A)||x(N,A)||d()}function y(N){return O(N)||w(N)||x(N)||s()}function x(N,A){if(N){if(typeof N=="string")return m(N,A);var M=Object.prototype.toString.call(N).slice(8,-1);if(M==="Object"&&N.constructor&&(M=N.constructor.name),M==="Map"||M==="Set")return Array.from(M);if(M==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(M))return m(N,A)}}var j=r.default.forwardRef(function(N,A){var M=N.count,D=N.value,L=N.ratedIcon,z=N.unratedIcon,V=N.ratedColor,Y=N.unratedColor,q=N.className,B=N.onChange,H=N.readonly,K=c(N,["count","value","ratedIcon","unratedIcon","ratedColor","unratedColor","className","onChange","readonly"]),X,re,me=(0,f.useTheme)().rating,de=me.valid,ee=me.defaultProps,_e=me.styles,he=_e.base,pe=_e.colors;M=M??ee.count,D=D??ee.value,L=L??ee.ratedIcon,L=L??ee.ratedIcon,z=z??ee.unratedIcon,V=V??ee.ratedColor,Y=Y??ee.unratedColor,q=q??ee.className,B=B??ee.onChange,H=H??ee.readonly;var be=h(r.default.useState(function(){return y(Array(D).fill("rated")).concat(y(Array(M-D).fill("un_rated")))}),2),ve=be[0],Ce=be[1],Ae=h(r.default.useState(function(){return y(Array(M).fill("un_rated"))}),2),Ne=Ae[0],ue=Ae[1],Ee=h(r.default.useState(!1),2),$e=Ee[0],Ge=Ee[1],tt=(0,u.default)(pe[(0,i.default)(de.colors,V,"yellow")]),ct=(0,u.default)(pe[(0,i.default)(de.colors,Y,"blue-gray")]),qe=(0,a.twMerge)((0,o.default)((0,u.default)(he.rating),q)),it=(0,u.default)(he.icon),mt=L,We=z,rt=r.default.isValidElement(L)&&r.default.cloneElement(mt,{className:(0,a.twMerge)((0,o.default)(it,tt,mt==null||(X=mt.props)===null||X===void 0?void 0:X.className))}),yt=r.default.isValidElement(L)&&r.default.cloneElement(We,{className:(0,a.twMerge)((0,o.default)(it,ct,We==null||(re=We.props)===null||re===void 0?void 0:re.className))}),je=!r.default.isValidElement(L)&&r.default.createElement(L,{className:(0,a.twMerge)((0,o.default)(it,tt))}),Ke=!r.default.isValidElement(L)&&r.default.createElement(z,{className:(0,a.twMerge)((0,o.default)(it,ct))}),Te=function(oe){return oe.map(function(ge,te){return r.default.createElement("span",{key:te,onClick:function(){if(!H){var ye=ve.map(function(ie,se){return se<=te?"rated":"un_rated"});Ce(ye),B&&typeof B=="function"&&B(ye.filter(function(ie){return ie==="rated"}).length)}},onMouseEnter:function(){if(!H){var ye=Ne.map(function(ie,se){return se<=te?"rated":"un_rated"});Ge(!0),ue(ye)}},onMouseLeave:function(){return!H&&Ge(!1)}},r.default.isValidElement(ge==="rated"?L:z)?ge==="rated"?rt:yt:ge==="rated"?je:Ke)})};return r.default.createElement("div",T({},K,{ref:A,className:qe}),Te($e?Ne:ve))});j.propTypes={count:g.propTypesCount,value:g.propTypesValue,ratedIcon:g.propTypesRatedIcon,unratedIcon:g.propTypesUnratedIcon,ratedColor:n.default.oneOf(g.propTypesColor),unratedColor:n.default.oneOf(g.propTypesColor),className:g.propTypesClassName,onChange:g.propTypesOnChange,readonly:g.propTypesReadonly},j.displayName="MaterialTailwind.Rating";var k=j})(kk);var Nk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(x,j){for(var k in j)Object.defineProperty(x,k,{enumerable:!0,get:j[k]})}t(e,{Slider:function(){return h},default:function(){return y}});var r=C(P),n=C(ut),o=C(Mr),a=C(gt),i=lt,u=C(tr),f=C(nt),g=et,m=Vm;function S(x,j){(j==null||j>x.length)&&(j=x.length);for(var k=0,N=new Array(j);k=0)&&Object.prototype.propertyIsEnumerable.call(x,N)&&(k[N]=x[N])}return k}function s(x,j){if(x==null)return{};var k={},N=Object.keys(x),A,M;for(M=0;M=0)&&(k[A]=x[A]);return k}function c(x,j){return O(x)||w(x,j)||l(x,j)||b()}function l(x,j){if(x){if(typeof x=="string")return S(x,j);var k=Object.prototype.toString.call(x).slice(8,-1);if(k==="Object"&&x.constructor&&(k=x.constructor.name),k==="Map"||k==="Set")return Array.from(k);if(k==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(k))return S(x,j)}}var h=r.default.forwardRef(function(x,j){var k=x.color,N=x.size,A=x.className,M=x.trackClassName,D=x.thumbClassName,L=x.barClassName,z=x.value,V=x.defaultValue,Y=x.onChange,q=x.min,B=x.max,H=x.step,K=x.inputRef,X=x.inputProps,re=d(x,["color","size","className","trackClassName","thumbClassName","barClassName","value","defaultValue","onChange","min","max","step","inputRef","inputProps"]),me=(0,g.useTheme)().slider,de=me.valid,ee=me.defaultProps,_e=me.styles,he=_e.base,pe=_e.sizes,be=_e.colors,ve=c(r.default.useState(V||0),2),Ce=ve[0],Ae=ve[1];r.default.useMemo(function(){V&&Ae(V)},[V]),k=k??ee.color,N=N??ee.size,q=q??ee.min,B=B??ee.max,H=H??ee.step;var Ne;A=(Ne=(0,a.default)(ee.className,A))!==null&&Ne!==void 0?Ne:ee.className;var ue;D=(ue=(0,a.default)(ee.thumbClassName,D))!==null&&ue!==void 0?ue:ee.thumbClassName;var Ee;M=(Ee=(0,a.default)(ee.trackClassName,M))!==null&&Ee!==void 0?Ee:ee.trackClassName;var $e;L=($e=(0,a.default)(ee.barClassName,L))!==null&&$e!==void 0?$e:ee.barClassName;var Ge;X=(Ge=(0,o.default)(X,(ee==null?void 0:ee.inputProps)||{}))!==null&&Ge!==void 0?Ge:ee.inputProps;var tt=(0,i.twMerge)((0,a.default)((0,f.default)(he.container),(0,f.default)(be[(0,u.default)(de.colors,k,"gray")]),(0,f.default)(pe[(0,u.default)(de.sizes,N,"md")].container),A)),ct=(0,i.twMerge)((0,a.default)((0,f.default)(he.bar),L)),qe=(0,a.default)((0,f.default)(he.track),(0,f.default)(pe[(0,u.default)(de.sizes,N,"md")].track)),it=(0,a.default)((0,f.default)(he.thumb),(0,f.default)(pe[(0,u.default)(de.sizes,N,"md")].thumb)),mt=(0,a.default)((0,f.default)(he.slider),(0,i.twMerge)(qe,M),(0,i.twMerge)(it,D));return r.default.createElement("div",T({},re,{ref:j,className:tt}),r.default.createElement("label",{className:ct,style:{width:"".concat(z||Ce,"%")}}),r.default.createElement("input",T({ref:K,type:"range",max:B,min:q,step:H,className:mt},z?{value:z}:null,{defaultValue:V,onChange:function(We){return Y?Y(We):Ae(Number(We.target.value))}})))});h.propTypes={color:n.default.oneOf(m.propTypesColor),size:n.default.oneOf(m.propTypesSize),className:m.propTypesClassName,trackClassName:m.propTypesTrackClassName,thumbClassName:m.propTypesThumbClassName,barClassName:m.propTypesBarClassName,defaultValue:m.propTypesDefaultValue,value:m.propTypesValue,onChange:m.propTypesOnChange,min:m.propTypesMin,max:m.propTypesMax,step:m.propTypesStep,inputRef:m.propTypesInputRef,inputProps:m.propTypesInputProps},h.displayName="MaterialTailwind.Slider";var y=h})(Nk);var Ek={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Spinner:function(){return b},default:function(){return d}});var r=S(ut),n=T(P),o=S(gt),a=lt,i=S(tr),u=S(nt),f=et,g=Um;function m(){return m=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=(0,n.forwardRef)(function(s,c){var l=s.color,h=s.className,y=C(s,["color","className"]),x=(0,f.useTheme)().spinner,j=x.defaultProps,k=x.valid,N=x.styles,A=N.base,M=N.colors;l=l??j.color;var D;h=(D=(0,o.default)(j.className,h))!==null&&D!==void 0?D:j.className;var L=(0,u.default)(M[(0,i.default)(k.colors,l,"gray")]),z=(0,a.twMerge)((0,o.default)((0,u.default)(A)),h),V,Y;return n.default.createElement("svg",m({},y,{ref:c,className:z,viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:(V=y==null?void 0:y.width)!==null&&V!==void 0?V:24,height:(Y=y==null?void 0:y.height)!==null&&Y!==void 0?Y:24}),n.default.createElement("path",{d:"M32 3C35.8083 3 39.5794 3.75011 43.0978 5.20749C46.6163 6.66488 49.8132 8.80101 52.5061 11.4939C55.199 14.1868 57.3351 17.3837 58.7925 20.9022C60.2499 24.4206 61 28.1917 61 32C61 35.8083 60.2499 39.5794 58.7925 43.0978C57.3351 46.6163 55.199 49.8132 52.5061 52.5061C49.8132 55.199 46.6163 57.3351 43.0978 58.7925C39.5794 60.2499 35.8083 61 32 61C28.1917 61 24.4206 60.2499 20.9022 58.7925C17.3837 57.3351 14.1868 55.199 11.4939 52.5061C8.801 49.8132 6.66487 46.6163 5.20749 43.0978C3.7501 39.5794 3 35.8083 3 32C3 28.1917 3.75011 24.4206 5.2075 20.9022C6.66489 17.3837 8.80101 14.1868 11.4939 11.4939C14.1868 8.80099 17.3838 6.66487 20.9022 5.20749C24.4206 3.7501 28.1917 3 32 3L32 3Z",stroke:"currentColor",strokeWidth:"5",strokeLinecap:"round",strokeLinejoin:"round"}),n.default.createElement("path",{d:"M32 3C36.5778 3 41.0906 4.08374 45.1692 6.16256C49.2477 8.24138 52.7762 11.2562 55.466 14.9605C58.1558 18.6647 59.9304 22.9531 60.6448 27.4748C61.3591 31.9965 60.9928 36.6232 59.5759 40.9762",stroke:"currentColor",strokeWidth:"5",strokeLinecap:"round",strokeLinejoin:"round",className:L}))});b.propTypes={color:r.default.oneOf(g.propTypesColor),className:g.propTypesClassName},b.displayName="MaterialTailwind.Spinner";var d=b})(Ek);var jk={},Nu={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(h,y){for(var x in y)Object.defineProperty(h,x,{enumerable:!0,get:y[x]})}t(e,{useTimelineItem:function(){return s},TimelineItem:function(){return c},default:function(){return l}});var r=m(P),n=lt,o=m(nt),a=et,i=Jo;function u(h,y){(y==null||y>h.length)&&(y=h.length);for(var x=0,j=new Array(y);x=0)&&Object.prototype.propertyIsEnumerable.call(h,j)&&(x[j]=h[j])}return x}function C(h,y){if(h==null)return{};var x={},j=Object.keys(h),k,N;for(N=0;N=0)&&(x[k]=h[k]);return x}function w(h,y){return f(h)||S(h,y)||b(h,y)||O()}function b(h,y){if(h){if(typeof h=="string")return u(h,y);var x=Object.prototype.toString.call(h).slice(8,-1);if(x==="Object"&&h.constructor&&(x=h.constructor.name),x==="Map"||x==="Set")return Array.from(x);if(x==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(x))return u(h,y)}}var d=r.default.createContext(0);d.displayName="MaterialTailwind.TimelineItemContext";function s(){var h=r.default.useContext(d);if(!h)throw new Error("useTimelineItemContext() must be used within a TimelineItem. It happens when you use TimelineIcon, TimelineConnector or TimelineBody components outside the TimelineItem component.");return h}var c=r.default.forwardRef(function(h,y){var x=h.className,j=h.children,k=T(h,["className","children"]),N=(0,a.useTheme)().timelineItem,A=N.styles,M=A.base,D=w(r.default.useState(0),2),L=D[0],z=D[1],V=r.default.useMemo(function(){return[L,z]},[L,z]),Y=(0,n.twMerge)((0,o.default)(M),x);return r.default.createElement(d.Provider,{value:V},r.default.createElement("li",g({ref:y},k,{className:Y}),j))});c.propTypes={className:i.propTypeClassName,children:i.propTypeChildren.isRequired},c.displayName="MaterialTailwind.TimelineItem";var l=c})(Nu);var Ak={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(x,j){for(var k in j)Object.defineProperty(x,k,{enumerable:!0,get:j[k]})}t(e,{TimelineIcon:function(){return h},default:function(){return y}});var r=C(P),n=C(ut),o=wr,a=lt,i=C(tr),u=C(nt),f=et,g=Nu,m=Jo;function S(x,j){(j==null||j>x.length)&&(j=x.length);for(var k=0,N=new Array(j);k=0)&&Object.prototype.propertyIsEnumerable.call(x,N)&&(k[N]=x[N])}return k}function s(x,j){if(x==null)return{};var k={},N=Object.keys(x),A,M;for(M=0;M=0)&&(k[A]=x[A]);return k}function c(x,j){return O(x)||w(x,j)||l(x,j)||b()}function l(x,j){if(x){if(typeof x=="string")return S(x,j);var k=Object.prototype.toString.call(x).slice(8,-1);if(k==="Object"&&x.constructor&&(k=x.constructor.name),k==="Map"||k==="Set")return Array.from(k);if(k==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(k))return S(x,j)}}var h=r.default.forwardRef(function(x,j){var k=x.color,N=x.variant,A=x.className,M=x.children,D=d(x,["color","variant","className","children"]),L=(0,f.useTheme)().timelineIcon,z=L.styles,V=L.valid,Y=z.base,q=z.variants,B=c((0,g.useTimelineItem)(),2),H=B[1],K=r.default.useRef(null),X=(0,o.useMergeRefs)([j,K]);r.default.useEffect(function(){var de=K.current;if(de){var ee=de.getBoundingClientRect().width;return H(ee),function(){H(0)}}},[H,A,M]);var re=(0,u.default)(q[(0,i.default)(V.variants,N,"filled")][(0,i.default)(V.colors,k,"gray")]),me=(0,a.twMerge)((0,u.default)(Y),re,A);return r.default.createElement("span",T({ref:X},D,{className:me}),M)});h.propTypes={children:m.propTypeChildren,className:m.propTypeClassName,color:n.default.oneOf(m.propTypeColor),variant:n.default.oneOf(m.propTypeVariant)},h.displayName="MaterialTailwind.TimelineIcon";var y=h})(Ak);var Rk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,h){for(var y in h)Object.defineProperty(l,y,{enumerable:!0,get:h[y]})}t(e,{TimelineHeader:function(){return s},default:function(){return c}});var r=S(P),n=lt,o=S(nt),a=et,i=Nu,u=Jo;function f(l,h){(h==null||h>l.length)&&(h=l.length);for(var y=0,x=new Array(h);y=0)&&Object.prototype.propertyIsEnumerable.call(l,x)&&(y[x]=l[x])}return y}function w(l,h){if(l==null)return{};var y={},x=Object.keys(l),j,k;for(k=0;k=0)&&(y[j]=l[j]);return y}function b(l,h){return g(l)||O(l,h)||d(l,h)||T()}function d(l,h){if(l){if(typeof l=="string")return f(l,h);var y=Object.prototype.toString.call(l).slice(8,-1);if(y==="Object"&&l.constructor&&(y=l.constructor.name),y==="Map"||y==="Set")return Array.from(y);if(y==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(y))return f(l,h)}}var s=r.default.forwardRef(function(l,h){var y=l.className,x=l.children,j=C(l,["className","children"]),k=(0,a.useTheme)().timelineBody,N=k.styles,A=N.base,M=b((0,i.useTimelineItem)(),1),D=M[0],L=(0,n.twMerge)((0,o.default)(A),y);return r.default.createElement("div",m({},j,{ref:h,className:L}),r.default.createElement("span",{className:"pointer-events-none invisible h-full flex-shrink-0",style:{width:"".concat(D,"px")}}),r.default.createElement("div",null,x))});s.propTypes={children:u.propTypeChildren,className:u.propTypeClassName},s.displayName="MaterialTailwind.TimelineHeader";var c=s})(Rk);var Mk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{TimelineHeader:function(){return S},default:function(){return O}});var r=f(P),n=lt,o=f(nt),a=et,i=Jo;function u(){return u=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(T,b)&&(w[b]=T[b])}return w}function m(T,C){if(T==null)return{};var w={},b=Object.keys(T),d,s;for(s=0;s=0)&&(w[d]=T[d]);return w}var S=r.default.forwardRef(function(T,C){var w=T.className,b=T.children,d=g(T,["className","children"]),s=(0,a.useTheme)().timelineHeader,c=s.styles,l=c.base,h=(0,n.twMerge)((0,o.default)(l),w);return r.default.createElement("div",u({},d,{ref:C,className:h}),b)});S.propTypes={children:i.propTypeChildren,className:i.propTypeClassName},S.displayName="MaterialTailwind.TimelineHeader";var O=S})(Mk);var Ik={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,h){for(var y in h)Object.defineProperty(l,y,{enumerable:!0,get:h[y]})}t(e,{TimelineConnector:function(){return s},default:function(){return c}});var r=S(P),n=lt,o=S(nt),a=et,i=Nu,u=Jo;function f(l,h){(h==null||h>l.length)&&(h=l.length);for(var y=0,x=new Array(h);y=0)&&Object.prototype.propertyIsEnumerable.call(l,x)&&(y[x]=l[x])}return y}function w(l,h){if(l==null)return{};var y={},x=Object.keys(l),j,k;for(k=0;k=0)&&(y[j]=l[j]);return y}function b(l,h){return g(l)||O(l,h)||d(l,h)||T()}function d(l,h){if(l){if(typeof l=="string")return f(l,h);var y=Object.prototype.toString.call(l).slice(8,-1);if(y==="Object"&&l.constructor&&(y=l.constructor.name),y==="Map"||y==="Set")return Array.from(y);if(y==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(y))return f(l,h)}}var s=r.default.forwardRef(function(l,h){var y=l.className,x=l.children,j=C(l,["className","children"]),k,N=(0,a.useTheme)().timelineConnector,A=N.styles,M=A.base,D=b((0,i.useTimelineItem)(),1),L=D[0],z=(0,o.default)(M.line),V=(0,n.twMerge)((0,o.default)(M.container),y);return r.default.createElement("span",m({},j,{ref:h,className:V,style:{top:"".concat(L,"px"),width:"".concat(L,"px"),opacity:L?1:0,height:"calc(100% - ".concat(L,"px)")}}),x&&r.default.isValidElement(x)?r.default.cloneElement(x,{className:(0,n.twMerge)(z,(k=x.props)===null||k===void 0?void 0:k.className)}):r.default.createElement("span",{className:z}))});s.propTypes={children:u.propTypeChildren,className:u.propTypeClassName},s.displayName="MaterialTailwind.TimelineConnector";var c=s})(Ik);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var l in c)Object.defineProperty(s,l,{enumerable:!0,get:c[l]})}t(e,{Timeline:function(){return b},TimelineItem:function(){return u.default},TimelineIcon:function(){return f.default},TimelineBody:function(){return g.default},TimelineHeader:function(){return m.default},TimelineConnector:function(){return S.default},default:function(){return d}});var r=T(P),n=lt,o=T(nt),a=et,i=Jo,u=T(Nu),f=T(Ak),g=T(Rk),m=T(Mk),S=T(Ik);function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(l[h]=s[h])}return l}function w(s,c){if(s==null)return{};var l={},h=Object.keys(s),y,x;for(x=0;x=0)&&(l[y]=s[y]);return l}var b=r.default.forwardRef(function(s,c){var l=s.className,h=s.children,y=C(s,["className","children"]),x=(0,a.useTheme)().timeline,j=x.styles,k=j.base,N=(0,n.twMerge)((0,o.default)(k),l);return r.default.createElement("ul",O({ref:c},y,{className:N}),h)});b.propTypes={className:i.propTypeClassName,children:i.propTypeChildren},b.displayName="MaterialTailwind.Timeline";var d=Object.assign(b,{Item:u.default,Icon:f.default,Header:m.default,Body:g.default,Connector:S.default})})(jk);var Dk={},Lk={},Pb={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(g,m){for(var S in m)Object.defineProperty(g,S,{enumerable:!0,get:m[S]})}t(e,{propTypesActiveStep:function(){return o},propTypesIsLastStep:function(){return a},propTypesIsFirstStep:function(){return i},propTypesChildren:function(){return u},propTypesClassName:function(){return f}});var r=n(ut);function n(g){return g&&g.__esModule?g:{default:g}}var o=r.default.number,a=r.default.func,i=r.default.func,u=r.default.node,f=r.default.string})(Pb);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{Step:function(){return S},default:function(){return O}});var r=f(P),n=lt,o=f(nt),a=et,i=Pb;function u(){return u=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(T,b)&&(w[b]=T[b])}return w}function m(T,C){if(T==null)return{};var w={},b=Object.keys(T),d,s;for(s=0;s=0)&&(w[d]=T[d]);return w}var S=r.default.forwardRef(function(T,C){var w=T.className;T.activeClassName,T.completedClassName;var b=T.children,d=g(T,["className","activeClassName","completedClassName","children"]),s=(0,a.useTheme)().step,c=s.styles.base,l=(0,n.twMerge)((0,o.default)(c.initial),w);return r.default.createElement("div",u({},d,{ref:C,className:l}),b)});S.propTypes={className:i.propTypesClassName,activeClassName:i.propTypesClassName,completedClassName:i.propTypesClassName,children:i.propTypesChildren},S.displayName="MaterialTailwind.Step";var O=S})(Lk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(k,N){for(var A in N)Object.defineProperty(k,A,{enumerable:!0,get:N[A]})}t(e,{Stepper:function(){return x},Step:function(){return u.default},default:function(){return j}});var r=T(P),n=wr,o=lt,a=T(nt),i=et,u=T(Lk),f=Pb;function g(k,N){(N==null||N>k.length)&&(N=k.length);for(var A=0,M=new Array(N);A=0)&&Object.prototype.propertyIsEnumerable.call(k,M)&&(A[M]=k[M])}return A}function l(k,N){if(k==null)return{};var A={},M=Object.keys(k),D,L;for(L=0;L=0)&&(A[D]=k[D]);return A}function h(k,N){return m(k)||C(k,N)||y(k,N)||w()}function y(k,N){if(k){if(typeof k=="string")return g(k,N);var A=Object.prototype.toString.call(k).slice(8,-1);if(A==="Object"&&k.constructor&&(A=k.constructor.name),A==="Map"||A==="Set")return Array.from(A);if(A==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(A))return g(k,N)}}var x=r.default.forwardRef(function(k,N){var A=k.activeStep,M=k.isFirstStep,D=k.isLastStep,L=k.className,z=k.lineClassName,V=k.activeLineClassName,Y=k.children,q=c(k,["activeStep","isFirstStep","isLastStep","className","lineClassName","activeLineClassName","children"]),B=(0,i.useTheme)(),H=B.stepper,K=B.step,X=H.styles.base,re=K.styles,me=re.base,de=r.default.useRef(null),ee=h(r.default.useState(0),2),_e=ee[0],he=ee[1],pe=A===0,be=Array.isArray(Y)&&A===Y.length-1,ve=Array.isArray(Y)&&A>Y.length-1;r.default.useEffect(function(){if(de.current){var Ge=Y,tt=de.current.getBoundingClientRect().width,ct=tt/(Ge.length-1);he(ct)}},[Y]);var Ce=r.default.useMemo(function(){if(!ve)return _e*A},[A,ve,_e]);(0,n.useMergeRefs)([N,de]);var Ae=(0,o.twMerge)((0,a.default)(X.stepper),L),Ne=(0,o.twMerge)((0,a.default)(X.line.initial),z),ue=(0,o.twMerge)(Ne,(0,a.default)(X.line.active),V),Ee=(0,a.default)(me.active),$e=(0,a.default)(me.completed);return r.default.useEffect(function(){D&&typeof D=="function"&&D(be),M&&typeof M=="function"&&M(pe)},[M,pe,D,be]),r.default.createElement("div",O({},q,{ref:de,className:Ae}),r.default.createElement("div",{className:Ne}),r.default.createElement("div",{className:ue,style:{width:"".concat(Ce,"px")}}),Array.isArray(Y)?Y.map(function(Ge,tt){var ct,qe;return r.default.cloneElement(Ge,s(b({key:tt},Ge.props),{className:(0,o.twMerge)(Ge.props.className,tt===A?(0,o.twMerge)(Ee,(ct=Ge.props)===null||ct===void 0?void 0:ct.activeClassName):tt=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=r.default.forwardRef(function(b,d){var s=b.children,c=O(b,["children"]),l,h=(0,o.useSpeedDial)(),y=h.getReferenceProps,x=h.refs,j=(0,n.useMergeRefs)([d,x.setReference]);return r.default.cloneElement(s,g({},y(S(g({},c),{ref:j,className:(0,a.twMerge)(s==null||(l=s.props)===null||l===void 0?void 0:l.className,c==null?void 0:c.className)}))))});C.propTypes={children:i.propTypesChildren},C.displayName="MaterialTailwind.SpeedDialHandler";var w=C}(Oh)),Oh}var kh={},Ww;function Rz(){return Ww||(Ww=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{SpeedDialContent:function(){return C},default:function(){return w}});var r=S(P),n=Nr,o=wr,a=Ob(),i=et,u=lt,f=S(nt),g=Eu;function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),l,h;for(h=0;h=0)&&(s[l]=b[l]);return s}var C=r.default.forwardRef(function(b,d){var s=b.children,c=b.className,l=O(b,["children","className"]),h=(0,i.useTheme)(),y=h.speedDialContent.styles,x=(0,a.useSpeedDial)(),j=x.x,k=x.y,N=x.refs,A=x.open,M=x.strategy,D=x.getFloatingProps,L=x.animation,z=(0,o.useMergeRefs)([d,N.setFloating]),V=(0,u.twMerge)((0,f.default)(y),c),Y=n.AnimatePresence;return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(Y,null,A&&r.default.createElement("div",m({},l,{ref:z,className:V,style:{position:M,top:k??0,left:j??0}},D()),r.default.Children.map(s,function(q){return r.default.createElement(n.m.div,{initial:"unmount",exit:"unmount",animate:A?"mount":"unmount",variants:L},q)}))))});C.propTypes={children:g.propTypesChildren,className:g.propTypesClassName},C.displayName="MaterialTailwind.SpeedDialContent";var w=C}(kh)),kh}var Fk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{SpeedDialAction:function(){return S},default:function(){return O}});var r=f(P),n=et,o=lt,a=f(nt),i=Eu;function u(){return u=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(T,b)&&(w[b]=T[b])}return w}function m(T,C){if(T==null)return{};var w={},b=Object.keys(T),d,s;for(s=0;s=0)&&(w[d]=T[d]);return w}var S=r.default.forwardRef(function(T,C){var w=T.className,b=T.children,d=g(T,["className","children"]),s=(0,n.useTheme)(),c=s.speedDialAction.styles,l=(0,o.twMerge)((0,a.default)(c),w);return r.default.createElement("button",u({},d,{ref:C,className:l}),b)});S.propTypes={children:i.propTypesChildren,className:i.propTypesClassName},S.displayName="SpeedDialAction";var O=S})(Fk);var $w;function Ob(){return $w||($w=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(h,y){for(var x in y)Object.defineProperty(h,x,{enumerable:!0,get:y[x]})}t(e,{SpeedDialContext:function(){return d},useSpeedDial:function(){return s},SpeedDial:function(){return c},SpeedDialHandler:function(){return u.default},SpeedDialContent:function(){return f.default},SpeedDialAction:function(){return g.default},default:function(){return l}});var r=O(P),n=wr,o=et,a=O(Mr),i=Eu,u=O(Az()),f=O(Rz()),g=O(Fk);function m(h,y){(y==null||y>h.length)&&(y=h.length);for(var x=0,j=new Array(y);x.");return h}function c(h){var y=h.open,x=h.handler,j=h.placement,k=h.offset,N=h.dismiss,A=h.animate,M=h.children,D=(0,o.useTheme)(),L=D.speedDial.defaultProps,z=w(r.default.useState(!1),2),V=z[0],Y=z[1];y=y??V,x=x??Y,j=j??L.placement,k=k??L.offset,N=N??L.dismiss,A=A??L.animate;var q={unmount:{opacity:0,transform:"scale(0.5)",transition:{duration:.2,times:[.4,0,.2,1]}},mount:{opacity:1,transform:"scale(1)",transition:{duration:.2,times:[.4,0,.2,1]}}},B=(0,a.default)(q,A),H=(0,n.useFloatingNodeId)(),K=(0,n.useFloating)({open:y,nodeId:H,placement:j,onOpenChange:x,whileElementsMounted:n.autoUpdate,middleware:[(0,n.offset)(k),(0,n.flip)(),(0,n.shift)()]}),X=K.x,re=K.y,me=K.strategy,de=K.refs,ee=K.context,_e=(0,n.useInteractions)([(0,n.useHover)(ee,{handleClose:(0,n.safePolygon)()}),(0,n.useDismiss)(ee,N)]),he=_e.getReferenceProps,pe=_e.getFloatingProps,be=r.default.useMemo(function(){return{x:X,y:re,strategy:me,refs:de,open:y,context:ee,getReferenceProps:he,getFloatingProps:pe,animation:B}},[ee,pe,he,de,me,X,re,y,B]);return r.default.createElement(d.Provider,{value:be},r.default.createElement("div",{className:"group"},r.default.createElement(n.FloatingNode,{id:H},M)))}c.propTypes={open:i.propTypesOpen,handler:i.propTypesHanlder,placement:i.propTypesPlacement,offset:i.propTypesOffset,dismiss:i.propTypesDismiss,className:i.propTypesClassName,children:i.propTypesChildren,animate:i.propTypesAnimate},c.displayName="MaterialTailwind.SpeedDial";var l=Object.assign(c,{Handler:u.default,Content:f.default,Action:g.default})}(Ph)),Ph}(function(e){Object.defineProperty(e,"__esModule",{value:!0}),t(XC,e),t(QP,e),t(XP,e),t(ZP,e),t(eO,e),t(tO,e),t(aO,e),t(iO,e),t(sO,e),t(Lf,e),t(KO,e),t(YO,e),t(ek,e),t(rk,e),t(ak,e),t(ik,e),t(sk,e),t(uk,e),t(ck,e),t(gk,e),t(mk,e),t(bk,e),t(vk,e),t(xk,e),t(_k,e),t(Sk,e),t(Tk,e),t(Ok,e),t(kk,e),t(Nk,e),t(Ek,e),t(jk,e),t(Dk,e),t(Ob(),e),t(et,e),t(Om,e);function t(r,n){return Object.keys(r).forEach(function(o){o!=="default"&&!Object.prototype.hasOwnProperty.call(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:function(){return r[o]}})}),r}})(W);function Mz({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"}))}const Iz=P.forwardRef(Mz),Dz=Iz;function Lz({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"}))}const Fz=P.forwardRef(Lz),zz=Fz;function Bz({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))}const Vz=P.forwardRef(Bz),zk=Vz,kb=Eo.createContext(null);kb.displayName="MaterialTailwindContext";function Uz(e,t){switch(t.type){case"OPEN_SIDENAV":return{...e,openSidenav:t.value};case"SIDENAV_TYPE":return{...e,sidenavType:t.value};case"SIDENAV_COLOR":return{...e,sidenavColor:t.value};case"TRANSPARENT_NAVBAR":return{...e,transparentNavbar:t.value};case"FIXED_NAVBAR":return{...e,fixedNavbar:t.value};case"OPEN_CONFIGURATOR":return{...e,openConfigurator:t.value};default:throw new Error(`Unhandled action type: ${t.type}`)}}function Nb({children:e}){const t={openSidenav:!1,sidenavColor:"gray",sidenavType:"white",transparentNavbar:!1,fixedNavbar:!0,openConfigurator:!1},[r,n]=Eo.useReducer(Uz,t),o=Eo.useMemo(()=>[r,n],[r,n]);return v.jsx(kb.Provider,{value:o,children:e})}function qf(){const e=Eo.useContext(kb);if(!e)throw new Error("useMaterialTailwindController should be used inside the MaterialTailwindControllerProvider.");return e}Nb.displayName="/src/context/index.jsx";Nb.propTypes={children:vn.node.isRequired};const Bk=(e,t)=>e({type:"OPEN_SIDENAV",value:t}),Wz=(e,t)=>e({type:"SIDENAV_COLOR",value:t}),$z=(e,t)=>e({type:"FIXED_NAVBAR",value:t}),Eb=(e,t)=>e({type:"OPEN_CONFIGURATOR",value:t}),Nh={none:0,read:1,full:2},jb=P.createContext(null);jb.displayName="AuthContext";const Hz=e=>!e||typeof e!="object"||Array.isArray(e)?{}:Object.entries(e).reduce((t,[r,n])=>{if(typeof r!="string"||!r)return t;const o=typeof n=="string"?n:String(n??"").trim();return t[r]=o||"none",t},{});function qz({children:e}){const[t,r]=P.useState({user:null,permissions:{},loading:!1,error:null,lastErrorCode:null,initialized:!1}),n=P.useCallback(g=>{const m=(g==null?void 0:g.user)??null,S=Hz(g==null?void 0:g.permissions);r({user:m,permissions:S,loading:!1,error:null,lastErrorCode:null,initialized:!0})},[]),o=P.useCallback(()=>{r(g=>({user:null,permissions:{},loading:!1,error:null,lastErrorCode:null,initialized:g.initialized||!0}))},[]),a=P.useCallback(async()=>{r(g=>({...g,loading:!0,error:null,lastErrorCode:null}));try{const g=await fetch("/api/auth/session",{credentials:"include"}),m=await g.json().catch(()=>({}));return g.ok?(n(m),{ok:!0,data:m}):(r({user:null,permissions:{},loading:!1,error:(m==null?void 0:m.error)??null,lastErrorCode:(m==null?void 0:m.error)??null,initialized:!0}),{ok:!1,status:g.status,error:(m==null?void 0:m.error)??null})}catch(g){const m=(g==null?void 0:g.message)||"NETWORK_ERROR";return r({user:null,permissions:{},loading:!1,error:m,lastErrorCode:"NETWORK_ERROR",initialized:!0}),{ok:!1,error:m}}},[n]),i=P.useCallback(async()=>{let g=null;try{const m=await fetch("/api/auth/logout",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}});if(!m.ok){const S=await m.json().catch(()=>({})),O=new Error((S==null?void 0:S.error)||"LOGOUT_FAILED");throw O.code=(S==null?void 0:S.error)||`STATUS_${m.status}`,O}}catch(m){g=m}finally{o()}if(g)throw g},[o]),u=P.useCallback((g,m="full")=>{var C,w;if(!g||(C=t.user)!=null&&C.isSuperuser)return!0;const S=((w=t.permissions)==null?void 0:w[g])??"none",O=Nh[S]??0,T=Nh[m]??Nh.full;return O>=T},[t.permissions,t.user]),f=P.useMemo(()=>({user:t.user,permissions:t.permissions,loading:t.loading,error:t.error,lastErrorCode:t.lastErrorCode,initialized:t.initialized,isAuthenticated:!!t.user,refreshSession:a,setSession:n,clearSession:o,logout:i,hasPermission:u}),[t,a,n,o,i,u]);return v.jsx(jb.Provider,{value:f,children:e})}function Wr(){const e=P.useContext(jb);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e}const Gz="/assets/stackpulse-846837e9.png";function Gf({brandImg:e,brandName:t,routes:r}){const[n,o]=qf(),{sidenavColor:a,sidenavType:i,openSidenav:u}=n,{initialized:f,hasPermission:g}=Wr(),m={dark:"bg-gradient-to-br from-gray-800 to-gray-900",white:"bg-white shadow-sm",transparent:"bg-transparent"};return v.jsxs("aside",{className:`${m[i]} ${u?"translate-x-0":"-translate-x-80"} fixed inset-0 z-50 my-4 ml-4 h-[calc(100vh-32px)] w-72 rounded-xl transition-transform duration-300 xl:translate-x-0 border border-blue-gray-100`,children:[v.jsxs("div",{className:"relative py-6 px-8 text-right",children:[v.jsx("img",{src:Gz,alt:"StackPulse",className:"w-auto"}),v.jsx("span",{className:"mt-1 text-xs text-stormGrey-500 block antialiased font-sans",children:"v0.5"}),v.jsx(W.IconButton,{variant:"text",size:"sm",ripple:!1,className:"absolute right-0 top-0 grid rounded-br-none rounded-tl-none",onClick:()=>Bk(o,!1),children:v.jsx(zk,{strokeWidth:2.5,className:"h-5 w-5 text-black"})})]}),v.jsx("div",{className:"m-4",children:r.map(({layout:S,title:O,pages:T},C)=>{const w=T.filter(({permission:b,hidden:d})=>{if(d)return!1;if(!b||!b.key)return!0;if(!f)return!1;const s=b.requiredLevel||b.level||"full";return g(b.key,s)});return S!=="dashboard"&&S!=="auth"||w.length===0&&!O?null:v.jsxs("ul",{className:"mb-4 flex flex-col gap-1",children:[O&&v.jsx("li",{className:"mx-3.5 mt-4 mb-2",children:v.jsx(W.Typography,{variant:"small",color:i==="dark"?"white":"blue-gray",className:"font-black uppercase opacity-75",children:O})}),w.map(({icon:b,name:d,path:s})=>v.jsx("li",{children:v.jsx(VI,{to:`/${S}${s}`,children:({isActive:c})=>v.jsxs(W.Button,{variant:c?"gradient":"text",color:c?a:i==="dark"?"white":"blue-gray",className:"flex items-center gap-4 px-4 capitalize",fullWidth:!0,children:[b,v.jsx(W.Typography,{color:"inherit",className:"font-medium capitalize",children:d})]})})},d))]},C)})})]})}Gf.defaultProps={brandImg:"/img/logo-ct.png",brandName:"Material Tailwind React"};Gf.propTypes={brandImg:vn.string,brandName:vn.string,routes:vn.arrayOf(vn.object).isRequired};Gf.displayName="/src/widgets/layout/sidnave.jsx";function Vk(){const[e,t]=qf(),{fixedNavbar:r,openSidenav:n}=e,{pathname:o}=Va();return o.split("/").filter(a=>a!==""),v.jsx(W.Navbar,{color:r?"white":"transparent",className:`rounded-xl transition-all ${r?"sticky top-4 z-40 py-3 shadow-md shadow-blue-gray-500/5":"px-0 py-1"}`,fullWidth:!0,blurred:r,children:v.jsxs("div",{className:"flex justify-between gap-6 flex-row items-center",children:[v.jsx("div",{className:"capitalize"}),v.jsxs("div",{className:"flex items-center",children:[v.jsx(W.IconButton,{variant:"text",color:"blue-gray",className:"grid xl:hidden",onClick:()=>Bk(t,!n),children:v.jsx(QI,{strokeWidth:3,className:"h-6 w-6 text-blue-gray-500"})}),v.jsx(W.IconButton,{variant:"text",color:"blue-gray",onClick:()=>Eb(t,!0),children:v.jsx(QC,{className:"h-5 w-5 text-blue-gray-500 "})})]})]})})}Vk.displayName="/src/widgets/layout/dashboard-navbar.jsx";function Kz(e,t){t=Math.pow(10,t);const r=["K","M","B","T"];for(let o=r.length-1;o>=0;o--){var n=Math.pow(10,(o+1)*3);if(n<=e){e=Math.round(e*t/n)/t,e==1e3&&o{fetch("https://api.github.com/repos/creativetimofficial/material-tailwind-dashboard-react").then(g=>g.json()).then(g=>u(Kz(g.stargazers_count,1)))},[]),v.jsxs("aside",{className:`fixed top-0 right-0 z-50 h-screen w-96 bg-white px-2.5 shadow-lg transition-transform duration-300 ${r?"translate-x-0":"translate-x-96"}`,children:[v.jsxs("div",{className:"flex items-start justify-between px-6 pt-8 pb-6",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:"Dashboard Configurator"}),v.jsx(W.Typography,{className:"font-normal text-blue-gray-600",children:"See our dashboard options."})]}),v.jsx(W.IconButton,{variant:"text",color:"blue-gray",onClick:()=>Eb(t,!1),children:v.jsx(zk,{strokeWidth:2.5,className:"h-5 w-5"})})]}),v.jsxs("div",{className:"py-4 px-6",children:[v.jsxs("div",{className:"mb-12",children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",children:"Sidenav Colors"}),v.jsx("div",{className:"mt-3 flex items-center gap-2",children:Object.keys(f).map(g=>v.jsx("span",{className:`h-6 w-6 cursor-pointer rounded-full border bg-gradient-to-br transition-transform hover:scale-105 ${f[g]} ${n===g?"border-black":"border-transparent"}`,onClick:()=>Wz(t,g)},g))})]}),v.jsxs("div",{className:"mb-12",children:[v.jsx("hr",{}),v.jsxs("div",{className:"flex items-center justify-between py-5",children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",children:"Navbar Fixed"}),v.jsx(W.Switch,{defaultChecked:!0,id:"navbar-fixed",value:a,onChange:()=>$z(t,!a)})]})]})]})]})}Uk.displayName="/src/widgets/layout/configurator.jsx";function Wk(){const e=new Date().getFullYear();return v.jsx("footer",{children:v.jsx("div",{className:"flex w-full flex-wrap items-center justify-center md:justify-end",children:v.jsxs(W.Typography,{variant:"small",className:"mt-1 text-xs text-stormGrey-500 block antialiased font-sans",children:["StackPulse: © ",e," by Michael Böhmländer"]})})})}Wk.displayName="/src/widgets/layout/footer.jsx";vn.string,vn.arrayOf(vn.object).isRequired,vn.node;const Ao=Object.create(null);Ao.open="0";Ao.close="1";Ao.ping="2";Ao.pong="3";Ao.message="4";Ao.upgrade="5";Ao.noop="6";const Xc=Object.create(null);Object.keys(Ao).forEach(e=>{Xc[Ao[e]]=e});const f0={type:"error",data:"parser error"},$k=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Hk=typeof ArrayBuffer=="function",qk=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Ab=({type:e,data:t},r,n)=>$k&&t instanceof Blob?r?n(t):Hw(t,n):Hk&&(t instanceof ArrayBuffer||qk(t))?r?n(t):Hw(new Blob([t]),n):n(Ao[e]+(t||"")),Hw=(e,t)=>{const r=new FileReader;return r.onload=function(){const n=r.result.split(",")[1];t("b"+(n||""))},r.readAsDataURL(e)};function qw(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Eh;function Yz(e,t){if($k&&e.data instanceof Blob)return e.data.arrayBuffer().then(qw).then(t);if(Hk&&(e.data instanceof ArrayBuffer||qk(e.data)))return t(qw(e.data));Ab(e,!1,r=>{Eh||(Eh=new TextEncoder),t(Eh.encode(r))})}const Gw="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",wl=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,r=e.length,n,o=0,a,i,u,f;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const g=new ArrayBuffer(t),m=new Uint8Array(g);for(n=0;n>4,m[o++]=(i&15)<<4|u>>2,m[o++]=(u&3)<<6|f&63;return g},Xz=typeof ArrayBuffer=="function",Rb=(e,t)=>{if(typeof e!="string")return{type:"message",data:Gk(e,t)};const r=e.charAt(0);return r==="b"?{type:"message",data:Zz(e.substring(1),t)}:Xc[r]?e.length>1?{type:Xc[r],data:e.substring(1)}:{type:Xc[r]}:f0},Zz=(e,t)=>{if(Xz){const r=Qz(e);return Gk(r,t)}else return{base64:!0,data:e}},Gk=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},Kk=String.fromCharCode(30),Jz=(e,t)=>{const r=e.length,n=new Array(r);let o=0;e.forEach((a,i)=>{Ab(a,!1,u=>{n[i]=u,++o===r&&t(n.join(Kk))})})},eB=(e,t)=>{const r=e.split(Kk),n=[];for(let o=0;o{const n=r.length;let o;if(n<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,n);else if(n<65536){o=new Uint8Array(3);const a=new DataView(o.buffer);a.setUint8(0,126),a.setUint16(1,n)}else{o=new Uint8Array(9);const a=new DataView(o.buffer);a.setUint8(0,127),a.setBigUint64(1,BigInt(n))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(r)})}})}let jh;function vc(e){return e.reduce((t,r)=>t+r.length,0)}function yc(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let n=0;for(let o=0;oMath.pow(2,53-32)-1){u.enqueue(f0);break}o=m*Math.pow(2,32)+g.getUint32(4),n=3}else{if(vc(r)e){u.enqueue(f0);break}}}})}const Yk=4;function hr(e){if(e)return nB(e)}function nB(e){for(var t in hr.prototype)e[t]=hr.prototype[t];return e}hr.prototype.on=hr.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};hr.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this};hr.prototype.off=hr.prototype.removeListener=hr.prototype.removeAllListeners=hr.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var r=this._callbacks["$"+e];if(!r)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var n,o=0;otypeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,r)=>r(t,0))(),Ln=(()=>typeof self<"u"?self:typeof window<"u"?window:Function("return this")())(),oB="arraybuffer";function Qk(e,...t){return t.reduce((r,n)=>(e.hasOwnProperty(n)&&(r[n]=e[n]),r),{})}const aB=Ln.setTimeout,iB=Ln.clearTimeout;function Yf(e,t){t.useNativeTimers?(e.setTimeoutFn=aB.bind(Ln),e.clearTimeoutFn=iB.bind(Ln)):(e.setTimeoutFn=Ln.setTimeout.bind(Ln),e.clearTimeoutFn=Ln.clearTimeout.bind(Ln))}const sB=1.33;function lB(e){return typeof e=="string"?uB(e):Math.ceil((e.byteLength||e.size)*sB)}function uB(e){let t=0,r=0;for(let n=0,o=e.length;n=57344?r+=3:(n++,r+=4);return r}function Xk(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function cB(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}function dB(e){let t={},r=e.split("&");for(let n=0,o=r.length;n{this.readyState="paused",t()};if(this._polling||!this.writable){let n=0;this._polling&&(n++,this.once("pollComplete",function(){--n||r()})),this.writable||(n++,this.once("drain",function(){--n||r()}))}else r()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const r=n=>{if(this.readyState==="opening"&&n.type==="open"&&this.onOpen(),n.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(n)};eB(t,this.socket.binaryType).forEach(r),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,Jz(t,r=>{this.doWrite(r,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",r=this.query||{};return this.opts.timestampRequests!==!1&&(r[this.opts.timestampParam]=Xk()),!this.supportsBinary&&!r.sid&&(r.b64=1),this.createUri(t,r)}}let Zk=!1;try{Zk=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const hB=Zk;function gB(){}class mB extends pB{constructor(t){if(super(t),typeof location<"u"){const r=location.protocol==="https:";let n=location.port;n||(n=r?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||n!==t.port}}doWrite(t,r){const n=this.request({method:"POST",data:t});n.on("success",r),n.on("error",(o,a)=>{this.onError("xhr post error",o,a)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(r,n)=>{this.onError("xhr poll error",r,n)}),this.pollXhr=t}}let is=class Zc extends hr{constructor(t,r,n){super(),this.createRequest=t,Yf(this,n),this._opts=n,this._method=n.method||"GET",this._uri=r,this._data=n.data!==void 0?n.data:null,this._create()}_create(){var t;const r=Qk(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");r.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(r);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&n.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{n.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var o;n.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(n.getResponseHeader("set-cookie"))),n.readyState===4&&(n.status===200||n.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof n.status=="number"?n.status:0)},0))},n.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=Zc.requestsCount++,Zc.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=gB,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Zc.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};is.requestsCount=0;is.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Kw);else if(typeof addEventListener=="function"){const e="onpagehide"in Ln?"pagehide":"unload";addEventListener(e,Kw,!1)}}function Kw(){for(let e in is.requests)is.requests.hasOwnProperty(e)&&is.requests[e].abort()}const bB=function(){const e=Jk({xdomain:!1});return e&&e.responseType!==null}();class vB extends mB{constructor(t){super(t);const r=t&&t.forceBase64;this.supportsBinary=bB&&!r}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new is(Jk,this.uri(),t)}}function Jk(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||hB))return new XMLHttpRequest}catch{}if(!t)try{return new Ln[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const eN=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class yB extends Mb{get name(){return"websocket"}doOpen(){const t=this.uri(),r=this.opts.protocols,n=eN?{}:Qk(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,r,n)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let r=0;r{try{this.doWrite(n,a)}catch{}o&&Kf(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",r=this.query||{};return this.opts.timestampRequests&&(r[this.opts.timestampParam]=Xk()),this.supportsBinary||(r.b64=1),this.createUri(t,r)}}const Ah=Ln.WebSocket||Ln.MozWebSocket;class xB extends yB{createSocket(t,r,n){return eN?new Ah(t,r,n):r?new Ah(t,r):new Ah(t)}doWrite(t,r){this.ws.send(r)}}class wB extends Mb{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const r=rB(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=t.readable.pipeThrough(r).getReader(),o=tB();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();const a=()=>{n.read().then(({done:u,value:f})=>{u||(this.onPacket(f),a())}).catch(u=>{})};a();const i={type:"open"};this.query.sid&&(i.data=`{"sid":"${this.query.sid}"}`),this._writer.write(i).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let r=0;r{o&&Kf(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const _B={websocket:xB,webtransport:wB,polling:vB},SB=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,CB=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function p0(e){if(e.length>8e3)throw"URI too long";const t=e,r=e.indexOf("["),n=e.indexOf("]");r!=-1&&n!=-1&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));let o=SB.exec(e||""),a={},i=14;for(;i--;)a[CB[i]]=o[i]||"";return r!=-1&&n!=-1&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=TB(a,a.path),a.queryKey=PB(a,a.query),a}function TB(e,t){const r=/\/{2,9}/g,n=t.replace(r,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&n.splice(0,1),t.slice(-1)=="/"&&n.splice(n.length-1,1),n}function PB(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(n,o,a){o&&(r[o]=a)}),r}const h0=typeof addEventListener=="function"&&typeof removeEventListener=="function",Jc=[];h0&&addEventListener("offline",()=>{Jc.forEach(e=>e())},!1);class Ma extends hr{constructor(t,r){if(super(),this.binaryType=oB,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(r=t,t=null),t){const n=p0(t);r.hostname=n.host,r.secure=n.protocol==="https"||n.protocol==="wss",r.port=n.port,n.query&&(r.query=n.query)}else r.host&&(r.hostname=p0(r.host).host);Yf(this,r),this.secure=r.secure!=null?r.secure:typeof location<"u"&&location.protocol==="https:",r.hostname&&!r.port&&(r.port=this.secure?"443":"80"),this.hostname=r.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=r.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},r.transports.forEach(n=>{const o=n.prototype.name;this.transports.push(o),this._transportsByName[o]=n}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},r),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=dB(this.opts.query)),h0&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Jc.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const r=Object.assign({},this.opts.query);r.EIO=Yk,r.transport=t,this.id&&(r.sid=this.id);const n=Object.assign({},this.opts,{query:r,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](n)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&Ma.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const r=this.createTransport(t);r.open(),this.setTransport(r)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",r=>this._onClose("transport close",r))}onOpen(){this.readyState="open",Ma.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const r=new Error("server error");r.code=t.data,this._onError(r);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let r=1;for(let n=0;n0&&r>this._maxPayload)return this.writeBuffer.slice(0,n);r+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,Kf(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,r,n){return this._sendPacket("message",t,r,n),this}send(t,r,n){return this._sendPacket("message",t,r,n),this}_sendPacket(t,r,n,o){if(typeof r=="function"&&(o=r,r=void 0),typeof n=="function"&&(o=n,n=null),this.readyState==="closing"||this.readyState==="closed")return;n=n||{},n.compress=n.compress!==!1;const a={type:t,data:r,options:n};this.emitReserved("packetCreate",a),this.writeBuffer.push(a),o&&this.once("flush",o),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},r=()=>{this.off("upgrade",r),this.off("upgradeError",r),t()},n=()=>{this.once("upgrade",r),this.once("upgradeError",r)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?n():t()}):this.upgrading?n():t()),this}_onError(t){if(Ma.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,r){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),h0&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const n=Jc.indexOf(this._offlineEventListener);n!==-1&&Jc.splice(n,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,r),this.writeBuffer=[],this._prevBufferLen=0}}}Ma.protocol=Yk;class OB extends Ma{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t{n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",S=>{if(!n)if(S.type==="pong"&&S.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;Ma.priorWebsocketSuccess=r.name==="websocket",this.transport.pause(()=>{n||this.readyState!=="closed"&&(m(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())})}else{const O=new Error("probe error");O.transport=r.name,this.emitReserved("upgradeError",O)}}))};function a(){n||(n=!0,m(),r.close(),r=null)}const i=S=>{const O=new Error("probe error: "+S);O.transport=r.name,a(),this.emitReserved("upgradeError",O)};function u(){i("transport closed")}function f(){i("socket closed")}function g(S){r&&S.name!==r.name&&a()}const m=()=>{r.removeListener("open",o),r.removeListener("error",i),r.removeListener("close",u),this.off("close",f),this.off("upgrading",g)};r.once("open",o),r.once("error",i),r.once("close",u),this.once("close",f),this.once("upgrading",g),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{n||r.open()},200):r.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const r=[];for(let n=0;n_B[o]).filter(o=>!!o)),super(t,n)}};function NB(e,t="",r){let n=e;r=r||typeof location<"u"&&location,e==null&&(e=r.protocol+"//"+r.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=r.protocol+e:e=r.host+e),/^(https?|wss?):\/\//.test(e)||(typeof r<"u"?e=r.protocol+"//"+e:e="https://"+e),n=p0(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const a=n.host.indexOf(":")!==-1?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+a+":"+n.port+t,n.href=n.protocol+"://"+a+(r&&r.port===n.port?"":":"+n.port),n}const EB=typeof ArrayBuffer=="function",jB=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,tN=Object.prototype.toString,AB=typeof Blob=="function"||typeof Blob<"u"&&tN.call(Blob)==="[object BlobConstructor]",RB=typeof File=="function"||typeof File<"u"&&tN.call(File)==="[object FileConstructor]";function Ib(e){return EB&&(e instanceof ArrayBuffer||jB(e))||AB&&e instanceof Blob||RB&&e instanceof File}function ed(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let r=0,n=e.length;r=0&&e.num{delete this.acks[t];for(let u=0;u{this.io.clearTimeoutFn(a),r.apply(this,u)};i.withError=!0,this.acks[t]=i}emitWithAck(t,...r){return new Promise((n,o)=>{const a=(i,u)=>i?o(i):n(u);a.withError=!0,r.push(a),this.emit(t,...r)})}_addToQueue(t){let r;typeof t[t.length-1]=="function"&&(r=t.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...a)=>n!==this._queue[0]?void 0:(o!==null?n.tryCount>this._opts.retries&&(this._queue.shift(),r&&r(o)):(this._queue.shift(),r&&r(null,...a)),n.pending=!1,this._drainQueue())),this._queue.push(n),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const r=this._queue[0];r.pending&&!t||(r.pending=!0,r.tryCount++,this.flags=r.flags,this.emit.apply(this,r.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:jt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,r){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,r),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(n=>String(n.id)===t)){const n=this.acks[t];delete this.acks[t],n.withError&&n.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case jt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case jt.EVENT:case jt.BINARY_EVENT:this.onevent(t);break;case jt.ACK:case jt.BINARY_ACK:this.onack(t);break;case jt.DISCONNECT:this.ondisconnect();break;case jt.CONNECT_ERROR:this.destroy();const n=new Error(t.data.message);n.data=t.data.data,this.emitReserved("connect_error",n);break}}onevent(t){const r=t.data||[];t.id!=null&&r.push(this.ack(t.id)),this.connected?this.emitEvent(r):this.receiveBuffer.push(Object.freeze(r))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const r=this._anyListeners.slice();for(const n of r)n.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const r=this;let n=!1;return function(...o){n||(n=!0,r.packet({type:jt.ACK,id:t,data:o}))}}onack(t){const r=this.acks[t.id];typeof r=="function"&&(delete this.acks[t.id],r.withError&&t.data.unshift(null),r.apply(this,t.data))}onconnect(t,r){this.id=t,this.recovered=r&&this._pid===r,this._pid=r,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:jt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const r=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}zs.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+r:e-r}return Math.min(e,this.max)|0};zs.prototype.reset=function(){this.attempts=0};zs.prototype.setMin=function(e){this.ms=e};zs.prototype.setMax=function(e){this.max=e};zs.prototype.setJitter=function(e){this.jitter=e};class b0 extends hr{constructor(t,r){var n;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(r=t,t=void 0),r=r||{},r.path=r.path||"/socket.io",this.opts=r,Yf(this,r),this.reconnection(r.reconnection!==!1),this.reconnectionAttempts(r.reconnectionAttempts||1/0),this.reconnectionDelay(r.reconnectionDelay||1e3),this.reconnectionDelayMax(r.reconnectionDelayMax||5e3),this.randomizationFactor((n=r.randomizationFactor)!==null&&n!==void 0?n:.5),this.backoff=new zs({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(r.timeout==null?2e4:r.timeout),this._readyState="closed",this.uri=t;const o=r.parser||BB;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=r.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var r;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(r=this.backoff)===null||r===void 0||r.setMin(t),this)}randomizationFactor(t){var r;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(r=this.backoff)===null||r===void 0||r.setJitter(t),this)}reconnectionDelayMax(t){var r;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(r=this.backoff)===null||r===void 0||r.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new kB(this.uri,this.opts);const r=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const o=to(r,"open",function(){n.onopen(),t&&t()}),a=u=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",u),t?t(u):this.maybeReconnectOnOpen()},i=to(r,"error",a);if(this._timeout!==!1){const u=this._timeout,f=this.setTimeoutFn(()=>{o(),a(new Error("timeout")),r.close()},u);this.opts.autoUnref&&f.unref(),this.subs.push(()=>{this.clearTimeoutFn(f)})}return this.subs.push(o),this.subs.push(i),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(to(t,"ping",this.onping.bind(this)),to(t,"data",this.ondata.bind(this)),to(t,"error",this.onerror.bind(this)),to(t,"close",this.onclose.bind(this)),to(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(r){this.onclose("parse error",r)}}ondecoded(t){Kf(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,r){let n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new rN(this,t,r),this.nsps[t]=n),n}_destroy(t){const r=Object.keys(this.nsps);for(const n of r)if(this.nsps[n].active)return;this._close()}_packet(t){const r=this.encoder.encode(t);for(let n=0;nt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,r){var n;this.cleanup(),(n=this.engine)===null||n===void 0||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,r),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const r=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},r);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const pl={};function td(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const r=NB(e,t.path||"/socket.io"),n=r.source,o=r.id,a=r.path,i=pl[o]&&a in pl[o].nsps,u=t.forceNew||t["force new connection"]||t.multiplex===!1||i;let f;return u?f=new b0(n,t):(pl[o]||(pl[o]=new b0(n,t)),f=pl[o]),r.query&&!t.query&&(t.query=r.queryKey),f.socket(r.path,t)}Object.assign(td,{Manager:b0,Socket:rN,io:td,connect:td});const nN=P.createContext(null),Rh={success:{container:"border-mossGreen-500/80 bg-mossGreen-900/90 text-white",accent:"bg-mossGreen-400"},warning:{container:"border-warmAmberGlow-500/80 bg-warmAmberGlow-900/90 text-white",accent:"bg-warmAmberGlow-400"},error:{container:"border-sunsetCoral-500/80 bg-sunsetCoral-900/90 text-white",accent:"bg-sunsetCoral-400"},info:{container:"border-arcticBlue-500 bg-arcticBlue-900/90 text-white",accent:"bg-arcticBlue-400"}},UB=6e3;function WB({children:e}){const[t,r]=P.useState([]),n=P.useRef(new Map),o=P.useCallback(u=>{r(g=>g.filter(m=>m.id!==u));const f=n.current.get(u);f&&typeof window<"u"&&window.clearTimeout(f),n.current.delete(u)},[]),a=P.useCallback(({id:u,title:f,description:g,variant:m="info",duration:S=UB}={})=>{const O=u??`${Date.now()}-${Math.random().toString(16).slice(2)}`,T=Rh[m]?m:"info";if(r(C=>[...C.filter(b=>b.id!==O),{id:O,title:f,description:g,variant:T}]),S!==null&&S!==1/0&&typeof window<"u"){const C=window.setTimeout(()=>{o(O)},S),w=n.current.get(O);w&&window.clearTimeout(w),n.current.set(O,C)}return O},[o]);P.useEffect(()=>()=>{typeof window>"u"||(n.current.forEach(u=>window.clearTimeout(u)),n.current.clear())},[]);const i=P.useMemo(()=>({showToast:a,dismissToast:o}),[a,o]);return v.jsxs(nN.Provider,{value:i,children:[e,v.jsx("div",{className:"pointer-events-none fixed right-4 top-4 z-50 flex w-80 max-w-full flex-col gap-3",children:t.map(u=>{const f=Rh[u.variant]??Rh.info;return v.jsx("div",{className:`pointer-events-auto overflow-hidden rounded-lg border px-4 py-3 shadow-xl backdrop-blur ${f.container}`,children:v.jsxs("div",{className:"flex items-start gap-3",children:[v.jsx("span",{className:`mt-1 h-2 flex-shrink-0 w-2 rounded-full ${f.accent}`}),v.jsxs("div",{className:"flex-1",children:[u.title&&v.jsx("p",{className:"text-sm font-semibold",children:u.title}),u.description&&v.jsx("p",{className:"mt-1 text-sm leading-snug text-white/80",children:u.description})]}),v.jsx("button",{type:"button",onClick:()=>o(u.id),className:"ml-2 rounded-md p-1 text-xs uppercase tracking-wide text-white/60 transition hover:text-white/90",children:"Schließen"})]})},u.id)})})]})}function Ci(){const e=P.useContext(nN);if(!e)throw new Error("useToast must be used within a ToastProvider");return e}const oN=P.createContext(null),$B={maintenance:null,update:null,script:null,ssh:null,loading:!0,error:"",lastUpdated:null};function HB({children:e}){var N,A;const{isAuthenticated:t,hasPermission:r,user:n}=Wr(),o=!!(t&&(n!=null&&n.isSuperuser||r("maintenance-access","read"))),[a,i]=P.useState($B),u=P.useRef(null),f=P.useRef(!1),g=P.useCallback(M=>{i(D=>({...D,...M}))},[]),m=P.useCallback(async()=>{var M,D;if(!o)return g({loading:!1,error:""}),null;g({loading:!0,error:""});try{const z=(await Je.get("/api/maintenance/config")).data??{};g({maintenance:z.maintenance??null,update:z.update??null,script:z.script??null,ssh:z.ssh??null,loading:!1,error:"",lastUpdated:new Date})}catch(L){const z=((D=(M=L.response)==null?void 0:M.data)==null?void 0:D.error)||L.message||"Fehler beim Laden der Wartungsdaten";g({loading:!1,error:z})}},[g,o]),S=P.useCallback(async()=>{var M,D;if(o)try{const z=(await Je.get("/api/maintenance/update-status")).data??{};i(V=>({...V,maintenance:z.maintenance??V.maintenance,update:z.update??V.update,error:""}))}catch(L){const z=((D=(M=L.response)==null?void 0:M.data)==null?void 0:D.error)||L.message||"Fehler beim Aktualisieren des Wartungsstatus";i(V=>({...V,error:z}))}},[o]);P.useEffect(()=>{if(!o){g({loading:!1,error:""});return}m()},[g,m,o]),P.useEffect(()=>{var M;if(o){if((M=a.update)!=null&&M.running){S();const D=setInterval(()=>{S()},5e3);return u.current=D,()=>clearInterval(D)}u.current&&(clearInterval(u.current),u.current=null)}},[o,(N=a.update)==null?void 0:N.running,S]),P.useEffect(()=>{var D;const M=!!((D=a.update)!=null&&D.running);o&&!M&&f.current&&m(),f.current=M},[o,(A=a.update)==null?void 0:A.running,m]);const O=P.useCallback(async(M={})=>{await Je.post("/api/maintenance/portainer-update",M),await S()},[S]),T=P.useCallback(async M=>{await Je.put("/api/maintenance/update-script",{script:M}),await m()},[m]),C=P.useCallback(async()=>{await Je.delete("/api/maintenance/update-script"),await m()},[m]),w=P.useCallback(async M=>{await Je.put("/api/maintenance/ssh-config",M),await m()},[m]),b=P.useCallback(async()=>{await Je.delete("/api/maintenance/ssh-config"),await m()},[m]),d=P.useCallback(async({active:M,message:D}={})=>{var Y;const L={active:!!M};D!==void 0&&(L.message=D);const V=((Y=(await Je.post("/api/maintenance/mode",L)).data)==null?void 0:Y.maintenance)??null;return g({maintenance:V,error:""}),V},[g]),s=P.useCallback(async M=>(await Je.post("/api/maintenance/test-ssh",M??{})).data,[]),c=P.useCallback(async()=>{const D=(await Je.get("/api/auth/superuser/status")).data??{};return{exists:!!D.exists,user:D.user??null}},[]),l=P.useCallback(async()=>(await Je.get("/api/setup/status")).data??{},[]),h=P.useCallback(async M=>(await Je.delete(`/api/setup/servers/${M}`)).data??{success:!1},[]),y=P.useCallback(async(M,D)=>(await Je.put(`/api/setup/servers/${M}/api-key`,{apiKey:D})).data??{success:!1},[]),x=P.useCallback(async M=>(await Je.put("/api/setup/self-stack",{selfStackId:M})).data??{success:!1},[]),j=P.useCallback(async()=>(await Je.delete("/api/auth/superuser")).data??{success:!1},[]),k=P.useMemo(()=>({maintenance:a.maintenance,update:a.update,script:a.script,ssh:a.ssh,loading:a.loading,error:a.error,lastUpdated:a.lastUpdated,refreshConfig:m,refreshUpdateStatus:S,setMaintenanceMode:d,triggerUpdate:O,saveScript:T,resetScript:C,saveSshConfig:w,deleteSshConfig:b,testSshConnection:s,fetchSuperuserStatus:c,fetchSetupStatus:l,deleteSetupServer:h,updateSetupApiKey:y,updateSelfStackId:x,removeSuperuserAccount:j}),[a,m,S,d,O,T,C,w,b,s,c,l,h,y,x,j]);return v.jsx(oN.Provider,{value:k,children:e})}function ea(){const e=P.useContext(oN);if(!e)throw new Error("useMaintenance must be used within a MaintenanceProvider");return e}const qB=[{value:"10",label:"10"},{value:"25",label:"25"},{value:"50",label:"50"},{value:"100",label:"100"},{value:"all",label:"Alle"}],Qw="50",aN=P.createContext(null),GB=(e,t)=>{const r=Number(e);if(Number.isFinite(r)&&r>0)return r;const n=Number(t);return Number.isFinite(n)&&n>0?n:1};function KB({children:e,initialPage:t=1,initialPerPage:r=Qw,perPageOptions:n=qB}){const[o,a]=P.useState(t),[i,u]=P.useState(r),[f,g]=P.useState(0),[m,S]=P.useState(0),O=P.useRef(t),T=P.useRef(r),C=P.useMemo(()=>new Set(n.map(A=>String(A.value))),[n]),w=i==="all",b=P.useCallback(()=>w?null:GB(i,r),[i,w,r]),d=P.useCallback((A,M)=>{g(Math.max(0,Number(A)||0)),S(Math.max(0,Number(M)||0))},[]),s=P.useCallback(()=>{a(O.current??1),u(T.current??Qw),g(0),S(0)},[]),c=P.useCallback((A,{resetPage:M=!0}={})=>{if(A==null)return;const D=String(A);C.has(D)&&(u(D),M&&a(1))},[C]),l=P.useCallback(A=>{var D;const M=typeof A=="string"?A:(D=A==null?void 0:A.target)==null?void 0:D.value;c(M,{resetPage:!0})},[c]),h=P.useCallback(A=>{if(w)return;const M=Number(A);if(!Number.isFinite(M)||M<1)return;const D=b();if(!D)return;const L=Math.max(1,Math.ceil((f||0)/D));M>L||a(M)},[w,b,f]),y=P.useMemo(()=>{if(w)return 1;const A=b();return A?Math.max(1,Math.ceil((f||0)/A)):1},[w,b,f]),x=P.useMemo(()=>{if(!f)return 0;if(w)return 1;const A=b();return(o-1)*A+1},[f,w,b,o]),j=P.useMemo(()=>{if(!f)return 0;if(w)return f;const A=b(),M=(o-1)*A+(m||A);return Math.min(f,M)},[f,w,b,o,m]),k=P.useMemo(()=>f?w?`Zeige alle ${f.toLocaleString()} Einträge`:`Zeige ${x.toLocaleString()} – ${j.toLocaleString()} von ${f.toLocaleString()} Einträgen`:"Keine Einträge",[f,w,x,j]),N=P.useMemo(()=>({page:o,perPage:i,perPageOptions:n,perPageIsAll:w,totalItems:f,visibleItems:m,totalPages:y,rangeStart:x,rangeEnd:j,summaryLabel:k,setPage:a,setPerPage:c,setTotals:d,setTotalItems:g,setVisibleItems:S,handlePageChange:h,handlePerPageChange:l,validPerPageValues:C,resetPagination:s}),[o,i,n,w,f,m,y,x,j,k,d,c,h,l,C,s]);return v.jsx(aN.Provider,{value:N,children:e})}function Bs(){const e=P.useContext(aN);if(!e)throw new Error("usePage must be used within a PageProvider");return e}function ju({disabled:e=!1}){const{summaryLabel:t,perPageIsAll:r,page:n,totalPages:o,handlePageChange:a}=Bs();return v.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[v.jsx("span",{children:t}),!r&&v.jsxs("div",{className:"flex items-center gap-2",children:[v.jsx("button",{onClick:()=>a(n-1),disabled:e||n<=1,className:"rounded-md border border-slate-300 p-2.5 text-center text-sm transition-all shadow-sm hover:shadow-lg text-slate-600 hover:text-white hover:bg-slate-800 hover:border-slate-800 focus:text-white focus:bg-slate-800 focus:border-slate-800 active:border-slate-800 active:text-white active:bg-slate-800 disabled:pointer-events-none disabled:opacity-50 disabled:shadow-none",type:"button",children:v.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",className:"h-4 w-4",children:v.jsx("path",{d:"M11.03 3.97a.75.75 0 0 1 0 1.06l-6.22 6.22H21a.75.75 0 0 1 0 1.5H4.81l6.22 6.22a.75.75 0 1 1-1.06 1.06l-7.5-7.5a.75.75 0 0 1 0-1.06l7.5-7.5a.75.75 0 0 1 1.06 0Z"})})}),v.jsxs("p",{className:"text-slate-600",children:["Seite ",v.jsx("strong",{className:"text-slate-800",children:n})," / ",v.jsx("strong",{className:"text-slate-800",children:o})]}),v.jsx("button",{onClick:()=>a(n+1),disabled:e||n>=o,className:"rounded-md border border-slate-300 p-2.5 text-center text-sm transition-all shadow-sm hover:shadow-lg text-slate-600 hover:text-white hover:bg-slate-800 hover:border-slate-800 focus:text-white focus:bg-slate-800 focus:border-slate-800 active:border-slate-800 active:text-white active:bg-slate-800 disabled:pointer-events-none disabled:opacity-50 disabled:shadow-none",type:"button",children:v.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",className:"h-4 w-4",children:v.jsx("path",{d:"M12.97 3.97a.75.75 0 0 1 1.06 0l7.5 7.5a.75.75 0 0 1 0 1.06l-7.5 7.5a.75.75 0 1 1-1.06-1.06l6.22-6.22H3a.75.75 0 0 1 0-1.5h16.19l-6.22-6.22a.75.75 0 0 1 0-1.06Z"})})})]})]})}const xc="stackSelectionPreference",YB=30*1e3,QB=30*1e3;let ti={data:null,timestamp:0},wc=null;const Mt={QUEUED:"queued",STARTED:"started",SUCCESS:"success",ERROR:"error",INFO:"info"},XB={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},ZB=()=>!!ti.data&&Date.now()-ti.timestamp{ti={data:e,timestamp:Date.now()}},JB=e=>Array.isArray(e)?[...e].sort((t,r)=>((t==null?void 0:t.Name)||"").localeCompare((r==null?void 0:r.Name)||"")):[];function eV(){const[e,t]=P.useState(()=>JB(ti.data)),[r,n]=P.useState(()=>!ti.data),[o,a]=P.useState(""),[i,u]=P.useState([]),[f,g]=P.useState("all"),[m,S]=P.useState(""),[O,T]=P.useState(!1),[C,w]=P.useState(!1),[b,d]=P.useState(!1),{showToast:s}=Ci(),{maintenance:c,update:l,script:h,ssh:y}=ea(),{hasPermission:x}=Wr(),j=x("stacks-redeploy-single","full"),k=x("stacks-redeploy-selection","full"),N=x("stacks-redeploy-all","full"),A=!!(c!=null&&c.active),M=c==null?void 0:c.message,D=!!(l!=null&&l.running),L=A||D,z=l!=null&&l.stage?XB[l.stage]??l.stage:"–",{page:V,perPage:Y,perPageOptions:q,setPage:B,setTotals:H,handlePerPageChange:K,resetPagination:X}=Bs(),re=P.useCallback(()=>{},[]);P.useEffect(()=>()=>X(),[X]),P.useEffect(()=>{L&&(n(!1),t([]),u([]))},[L]);const me=P.useRef(new Map),de=P.useCallback((oe,ge)=>{const te=new Map(oe.map(ie=>[ie.Id,ie]));return[...ge].sort((ie,se)=>ie.Name.localeCompare(se.Name)).map(ie=>{const se=te.get(ie.Id);if(se&&se.updateStatus==="✅"&&ie.updateStatus==="⚠️"){const Fe=ie.Name?`${ie.Name} (ID: ${ie.Id})`:`Stack ${ie.Id}`;s({variant:"warning",title:"Aktualisierung gefunden",description:Fe})}let fe=ie.redeployPhase??(se==null?void 0:se.redeployPhase)??null;!fe&&(ie.redeploying||se!=null&&se.redeploying)&&(fe=Mt.STARTED);const Oe=fe===Mt.QUEUED,xe=fe===Mt.STARTED;return{...ie,redeployPhase:fe,redeployQueued:Oe,redeploying:Oe||xe,redeployDisabled:ie.redeployDisabled??(se==null?void 0:se.redeployDisabled)??!1,duplicateName:ie.duplicateName??(se==null?void 0:se.duplicateName)??!1}})},[s]);P.useEffect(()=>{const oe=td("/",{path:"/socket.io",transports:["websocket"]});return console.log("🔌 Socket connected"),oe.on("redeployStatus",async(ge={})=>{const{stackId:te}=ge;if(!te)return;let ye=te;if(typeof te=="string"){const Fe=Number(te);Number.isNaN(Fe)||(ye=Fe)}const ie=ge.redeployPhase??ge.phase;let se=ie;se?ie==="started"||ie==="running"?se=Mt.STARTED:ie==="queued"?se=Mt.QUEUED:ie==="success"?se=Mt.SUCCESS:ie==="error"?se=Mt.ERROR:ie==="info"&&(se=Mt.INFO):ge.isRedeploying===!0?se=Mt.STARTED:ge.isRedeploying===!1&&(se=Mt.SUCCESS);const fe=me.current.get(ye)??me.current.get(String(ye)),Oe=ge.stackName??(fe==null?void 0:fe.Name),xe=Oe?`${Oe} (ID: ${ye})`:`Stack ${ye}`;if(console.log(`🔄 Stack ${ye} Redeploy Update: ${se??"unbekannt"}`),se===Mt.STARTED)s({variant:"info",title:"Redeploy gestartet",description:xe});else if(se===Mt.SUCCESS)s({variant:"success",title:"Redeploy abgeschlossen",description:xe});else if(se===Mt.ERROR){const Fe=ge.message?` – ${ge.message}`:"";s({variant:"error",title:"Redeploy fehlgeschlagen",description:`${xe}${Fe}`})}if(t(Fe=>Fe.map(Qe=>{if(String(Qe.Id)!==String(ye))return Qe;const ke=se??Qe.redeployPhase??null,bt=ke===Mt.QUEUED,ft=ke===Mt.STARTED,At=ke===Mt.SUCCESS,It=ke===Mt.ERROR,xt=bt||ft,Rt={...Qe,redeployPhase:ke,redeployQueued:bt,redeploying:xt};return At&&(Rt.updateStatus="✅",Rt.redeploying=!1,Rt.redeployQueued=!1),It&&(Rt.redeploying=!1,Rt.redeployQueued=!1),!xt&&!At&&!It&&se===void 0&&(Rt.redeploying=!1,Rt.redeployQueued=!1,Rt.redeployPhase=Qe.redeployPhase??null),Rt})),se===Mt.SUCCESS||se===Mt.ERROR||ge.isRedeploying===!1&&!se)try{const Fe=await Je.get("/api/stacks");Xw(Fe.data),t(Qe=>de(Qe,Fe.data))}catch(Fe){console.error("Fehler beim Aktualisieren nach Redeploy:",Fe)}}),()=>oe.disconnect()},[]);const ee=P.useCallback(async({force:oe=!1,silent:ge=!1}={})=>{if(A||D){ge||n(!1);return}const te=!!ti.data;if(!oe&&te&&(t(ie=>de(ie,ti.data)),!ge&&(n(!1),ZB())))return;const ye=!ge&&(!te||oe);ye&&n(!0);try{(oe||!wc)&&(wc=Je.get("/api/stacks").then(se=>(Xw(se.data),se.data)).finally(()=>{wc=null}));const ie=await wc;t(se=>de(se,ie)),a("")}catch(ie){console.error("❌ Fehler beim Abrufen der Stacks:",ie),!te&&!ge&&a("Fehler beim Laden der Stacks")}finally{ye&&n(!1)}},[A,D,de]);P.useEffect(()=>{ee()},[ee]),P.useEffect(()=>{if(typeof document>"u"||A||D)return;const oe=setInterval(()=>{document.hidden||ee({force:!0,silent:!0})},QB);return()=>clearInterval(oe)},[ee,A,D]),P.useEffect(()=>{if(typeof document>"u"||A||D)return;const oe=()=>{document.hidden||ee({force:!0,silent:!0})};return document.addEventListener("visibilitychange",oe),()=>{document.removeEventListener("visibilitychange",oe)}},[ee,A,D]),P.useEffect(()=>{u(oe=>{const ge=oe.filter(te=>{const ye=e.find(se=>se.Id===te);if(!ye||ye.updateStatus==="✅"||ye.redeployDisabled)return!1;const ie=ye.redeployPhase;return!(ie===Mt.STARTED||ie===Mt.QUEUED)});return ge.length===oe.length?oe:ge})},[e]),P.useEffect(()=>{const oe=new Map;e.forEach(ge=>{oe.set(ge.Id,ge),oe.set(String(ge.Id),ge)}),me.current=oe},[e]);const _e=m.trim().toLowerCase(),he=P.useMemo(()=>e.filter(oe=>!(f==="current"&&oe.updateStatus!=="✅"||f==="outdated"&&oe.updateStatus==="✅"||_e&&!`${oe.Name??""} ${oe.Id??""}`.toLowerCase().includes(_e))),[e,f,_e]),pe=P.useMemo(()=>he.filter(oe=>{if(oe.updateStatus==="✅"||oe.redeployDisabled)return!1;const ge=oe.redeployPhase;return!(ge===Mt.STARTED||ge===Mt.QUEUED)}),[he]),be=P.useMemo(()=>{const oe=new Map;return e.forEach(ge=>{oe.set(ge.Id,ge)}),oe},[e]);P.useMemo(()=>new Set(he.map(oe=>oe.Id)),[he]);const ve=P.useMemo(()=>{if(Y==="all")return he;const oe=Number(Y),ge=(V-1)*oe;return he.slice(ge,ge+oe)},[he,Y,V]);P.useEffect(()=>{H(he.length,ve.length)},[he.length,ve.length,H]);const Ce=P.useRef({action:"keep",remember:!1}),Ae=P.useRef({status:f,search:_e}),Ne=P.useRef(!1);P.useEffect(()=>{if(!(typeof window>"u"))try{const oe=window.sessionStorage.getItem(xc);if(!oe)return;const ge=JSON.parse(oe);ge&&(ge.action==="keep"||ge.action==="clear")&&(Ce.current={action:ge.action,remember:!0},d(!0))}catch(oe){console.error("⚠️ Konnte gespeicherte Auswahl-Einstellung nicht laden:",oe),Ce.current={action:"keep",remember:!1}}},[]),P.useEffect(()=>{const oe=_e;if(!Ne.current){Ne.current=!0,Ae.current={status:f,search:oe};return}const ge=Ae.current;if(!(ge.status!==f||ge.search!==oe)){f==="all"&&oe.length===0&&O&&T(!1);return}if(Ae.current={status:f,search:oe},i.length===0){T(!1);return}if(!(f!=="all"||oe.length>0)){T(!1);return}const ie=Ce.current;if(ie!=null&&ie.remember){ie.action==="clear"&&u([]),T(!1);return}w(!!(ie!=null&&ie.remember)),T(!0)},[f,_e,i.length,O]),P.useEffect(()=>{i.length===0&&O&&T(!1)},[i.length,O]);const ue=f!=="all"||_e.length>0;P.useEffect(()=>{B(1)},[f,_e,B]),P.useEffect(()=>{if(Y==="all"){V!==1&&B(1);return}const oe=Number(Y)||1,ge=Math.max(1,Math.ceil(he.length/oe));V>ge&&B(ge)},[he.length,Y,V,B]);const Ee=(oe,ge)=>{k&&(ge||u(te=>te.includes(oe)?te.filter(ye=>ye!==oe):[...te,oe]))};P.useEffect(()=>{k||(i.length&&u([]),O&&T(!1))},[k,i.length,O]);const $e=oe=>{if(!k)return;const ge=C;if(typeof window<"u")try{if(ge){const te={action:oe,remember:!0};window.sessionStorage.setItem(xc,JSON.stringify(te)),Ce.current=te}else window.sessionStorage.removeItem(xc),Ce.current={action:oe,remember:!1}}catch(te){console.error("⚠️ Konnte Auswahl-Einstellung nicht speichern:",te),Ce.current={action:oe,remember:!1}}else Ce.current={action:oe,remember:!1};d(ge),w(ge),oe==="clear"&&u([]),T(!1)},Ge=()=>{if(k){if(typeof window<"u")try{window.sessionStorage.removeItem(xc)}catch(oe){console.error("⚠️ Konnte gespeicherte Auswahl-Einstellung nicht löschen:",oe)}Ce.current={action:"keep",remember:!1},d(!1),w(!1),ue&&i.length>0&&T(!0)}},tt=()=>{k&&(u([]),T(!1))},ct=oe=>{k&&u(ge=>ge.filter(te=>te!==oe))},qe=async oe=>{if(!j)return;const ge=me.current.get(oe),te=ge==null?void 0:ge.redeployPhase;if(!(te===Mt.STARTED||te===Mt.QUEUED)){u(ye=>ye.filter(ie=>ie!==oe)),t(ye=>ye.map(ie=>ie.Id===oe?{...ie,redeployPhase:Mt.STARTED,redeploying:!0,redeployQueued:!1}:ie));try{await Je.put(`/api/stacks/${oe}/redeploy`)}catch(ye){if(console.error("❌ Fehler beim Redeploy:",ye),t(ie=>ie.map(se=>se.Id===oe?{...se,redeployPhase:null,redeploying:!1,redeployQueued:!1}:se)),!ye.response){const ie=me.current.get(oe),se=ie!=null&&ie.Name?`${ie.Name} (ID: ${oe})`:`Stack ${oe}`,fe=ye.message||"Unbekannter Fehler";s({variant:"error",title:"Redeploy fehlgeschlagen",description:`${se} – ${fe}`})}}}},it=async()=>{var te,ye;if(!N||!pe.length)return;const oe=pe.map(ie=>ie.Id),ge=new Set(oe.map(ie=>String(ie)));t(ie=>ie.map(se=>{const fe=String(se.Id);return ge.has(fe)?{...se,redeployPhase:Mt.QUEUED,redeploying:!0,redeployQueued:!0}:se}));try{ue?await Je.put("/api/stacks/redeploy-selection",{stackIds:oe}):await Je.put("/api/stacks/redeploy-all"),u(ie=>ie.filter(se=>!ge.has(String(se))))}catch(ie){console.error("❌ Fehler beim Redeploy ALL:",ie),t(fe=>fe.map(Oe=>{const xe=String(Oe.Id);return ge.has(xe)?{...Oe,redeployPhase:null,redeploying:!1,redeployQueued:!1}:Oe}));const se=((ye=(te=ie.response)==null?void 0:te.data)==null?void 0:ye.error)||ie.message||"Unbekannter Fehler";s({variant:"error",title:"Redeploy ALL fehlgeschlagen",description:se})}},mt=async()=>{var te,ye;if(!k||!i.length)return;const oe=i.filter(ie=>{const se=e.find(Oe=>Oe.Id===ie);if(!se||se.updateStatus==="✅"||se.redeployDisabled)return!1;const fe=se.redeployPhase;return!(fe===Mt.STARTED||fe===Mt.QUEUED)});if(!oe.length){u([]);return}const ge=new Set(oe);t(ie=>ie.map(se=>ge.has(se.Id)?{...se,redeployPhase:Mt.QUEUED,redeploying:!0,redeployQueued:!0}:se));try{await Je.put("/api/stacks/redeploy-selection",{stackIds:oe}),u(ie=>ie.filter(se=>!ge.has(se)))}catch(ie){console.error("❌ Fehler beim Redeploy Auswahl:",ie),t(fe=>fe.map(Oe=>ge.has(Oe.Id)?{...Oe,redeployPhase:null,redeploying:!1,redeployQueued:!1}:Oe));const se=((ye=(te=ie.response)==null?void 0:te.data)==null?void 0:ye.error)||ie.message||"Unbekannter Fehler";s({variant:"error",title:"Redeploy Auswahl fehlgeschlagen",description:se})}},We=k&&i.length>0,rt=pe.length>0,yt=k&&We||N,je=k&&We?`Redeploy Auswahl (${i.length})`:"Redeploy Alle",Ke=L||(k&&We?O||i.every(oe=>{const ge=e.find(ye=>ye.Id===oe);if(!ge||ge.updateStatus==="✅"||ge.redeployDisabled)return!0;const te=ge.redeployPhase;return te===Mt.STARTED||te===Mt.QUEUED}):!N||!rt),Te=()=>{if(L){s({variant:"warning",title:"Wartungsmodus aktiv",description:"Redeploy-Aktionen sind während des Wartungsmodus deaktiviert."});return}k&&We?mt():N&&it()};return v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(A||D)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",M?` – ${M}`:D?" – Portainer-Update läuft":"","."]}),D&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",z]})]})}),v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"p-4 pt-2 pb-2",children:!r&&!o?v.jsx(W.Typography,{variant:"h6",color:"white",children:v.jsx("span",{className:"flex items-center gap-2",children:v.jsx("span",{children:"Filter und Optionen"})})}):v.jsx(W.Typography,{variant:"h6",color:"white",children:v.jsx("span",{className:"flex items-center gap-2",children:v.jsx("span",{children:"Lade Stacks"})})})}),v.jsxs(W.CardBody,{children:[r?v.jsxs("p",{className:"flex py-6 text-center text-sm font-medium text-gray-400",children:[v.jsx(W.Spinner,{className:"mr-2 h-4 w-4 flex"}),"Lade Stacks..."]}):o?v.jsx("p",{className:"py-6 text-sm font-medium text-red-400",children:o}):v.jsxs("div",{className:"gap-4",children:[v.jsx("div",{className:"w-full",children:v.jsxs(W.ButtonGroup,{fullWidth:!0,children:[v.jsx(W.Button,{onClick:()=>g("all"),children:"Alle"}),v.jsx(W.Button,{onClick:()=>g("current"),children:"Aktuell"}),v.jsx(W.Button,{onClick:()=>g("outdated"),children:"Veraltet"})]})}),v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between mt-8",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(W.Input,{value:m,onChange:oe=>S(oe.target.value),variant:"static",placeholder:"Name oder ID"})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(W.Select,{variant:"static",label:"Einträge pro Seite",onChange:re,value:Y,children:q.map(({value:oe,label:ge})=>v.jsx(W.Option,{value:oe,onClick:()=>K(oe),children:ge},oe))})})]}),v.jsx("div",{className:"flex items-center justify-end gap-3 mt-5",children:k&&b&&v.jsx("button",{onClick:Ge,className:"block antialiased font-sans text-sm leading-normal text-inherit text-xs font-medium text-warmAmberGlow-500 underline underline-offset-2 transition hover:text-warmAmberGlow-600",children:"Gespeicherte Entscheidung löschen"})})]}),k&&O&&v.jsx("div",{className:"flex flex-col mt-5",children:v.jsxs("div",{className:"flex flex-col gap-3 rounded-lg border border-arcticBlue-800 bg-arcticBlue-900/90 px-4 py-3 text-arcticBlue-100 md:flex-row md:items-center md:justify-between",children:[v.jsxs("div",{className:"space-y-2 block antialiased font-sans text-sm font-light leading-normal text-inherit",children:[v.jsxs("p",{children:[i.length===1?"1 Stack ist weiterhin ausgewählt.":`${i.length} Stacks sind weiterhin ausgewählt.`," ","Soll die Auswahl entfernt werden?"]}),v.jsxs("label",{className:"flex items-center gap-2",children:[v.jsx("input",{type:"checkbox",checked:C,onChange:oe=>w(oe.target.checked),className:"h-4 w-4 rounded border border-arcticBlue-400 bg-arcticBlue-900 text-arcticBlue-400 focus:ring-arcticBlue-300"}),v.jsx("span",{className:"text-xs",children:"Einstellung merken (bis Browser geschlossen wird)"})]})]}),v.jsxs("div",{className:"flex gap-2",children:[v.jsx(W.Button,{onClick:()=>$e("keep"),className:"rounded-md border border-arcticBlue-600 bg-arcticBlue-700 px-4 py-2 font-sans font-bold text-center uppercase transition-all hover:bg-arcticBlue-800",children:"Auswahl behalten"}),v.jsx(W.Button,{onClick:()=>$e("clear"),className:"rounded-md border border-sunsetCoral-500 bg-sunsetCoral-600 px-4 py-2 font-sans font-bold text-center uppercase transition-all hover:bg-sunsetCoral-600",children:"Auswahl entfernen"})]})]})}),yt&&v.jsxs("div",{id:"collect",className:"mt-8 flex flex-col gap-4 md:flex-row md:items-start md:gap-6",children:[k&&i.length>0&&v.jsx("div",{className:"w-full md:order-first order-last md:w-3/4",children:v.jsxs("div",{className:"flex flex-col gap-3 text-sm text-gray-300",children:[v.jsx("div",{className:"flex flex-wrap items-center gap-2",children:i.map(oe=>{const ge=be.get(oe),te=(ge==null?void 0:ge.Name)||`Stack ${oe}`;return v.jsxs("button",{type:"button",onClick:()=>ct(oe),className:"inline-flex items-center gap-2 rounded-full bg-lavenderSmoke-600/80 px-2 py-0.5 text-white transition hover:bg-lavenderSmoke-600/90 focus:outline-none focus:ring-2 focus:ring-lavenderSmoke-400 cursor-pointer",children:[v.jsx("span",{children:te}),v.jsx("span",{className:"text-xs font-semibold text-lavenderSmoke-200",children:"x"})]},oe)})}),v.jsx("button",{type:"button",onClick:tt,className:"md:order-last self-start mt-1 text-xs font-medium text-gray-400 underline underline-offset-2 transition hover:text-gray-200",children:"Auswahl aufheben"})]})}),v.jsx("div",{className:"w-full md:w-1/4 md:ml-auto",children:v.jsx(W.Button,{className:"w-full bg-arcticBlue-500 hover:bg-arcticBlue-600",onClick:Te,disabled:Ke,children:je})})]})]})]}),v.jsx("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2",children:ve.map(oe=>{const ge=oe.redeployPhase,te=ge===Mt.QUEUED,ye=ge===Mt.STARTED,ie=te||ye,se=i.includes(oe.Id),fe=oe.updateStatus==="✅",Oe=!!oe.redeployDisabled,xe=!ie&&!fe&&!Oe,Ue=k&&xe;return v.jsx(W.Card,{children:v.jsxs(W.CardBody,{className:`flex w-full text-stormGrey-500 items-center justify-between gap-4 rounded-xl shadow-lg transition border - ${se?"border-purple-500 ring-1 ring-purple-500/40":"border-transparent"} - ${!xe||ie?"opacity-75 bg-stormGrey-200/20":""}`,children:[v.jsxs("div",{className:"flex items-center space-x-4",id:"left",children:[k&&v.jsx("input",{type:"checkbox",checked:se,onChange:()=>Ee(oe.Id,!Ue),className:`h-5 w-5 text-purple-500 focus:ring-purple-400 border-gray-600 bg-gray-900 rounded ${Ue?"":"opacity-40 cursor-not-allowed"}`,disabled:!Ue}),v.jsx("div",{className:`w-12 h-12 flex items-center justify-center rounded-full - ${oe.updateStatus==="✅"?"bg-mossGreen-600":oe.updateStatus==="⚠️"?"bg-warmAmberGlow-400":"bg-sunsetCoral-500"}`}),v.jsxs("div",{children:[v.jsx("p",{className:"text-lg antialiased font-sans font-semibold leading-normal text-inherit",children:oe.Name}),v.jsxs("p",{className:"text-sm antialiased font-sans font-light leading-normal text-inherit",children:["ID: ",oe.Id]}),oe.duplicateName&&v.jsx("p",{className:"text-xs text-amber-700",children:"⚠️ Doppelter Name erkannt"})]})]}),v.jsx("div",{className:"ml-auto flex flex-col items-end gap-1 text-sm",id:"right",children:ye?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-warmAmberGlow-600",children:"Redeploy"}),v.jsx("span",{className:"text-warmAmberGlow-500",children:"läuft…"})]}):te?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-warmAmberGlow-600",children:"Redeploy"}),v.jsx("span",{className:"text-warmAmberGlow-500",children:"in Warteliste…"})]}):Oe?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-stormGrey-500",children:"System"}),v.jsx("span",{className:"text-gray-300",children:"Redeploy deaktiviert"})]}):fe?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-stormGrey-500",children:"Status"}),v.jsx("span",{className:"text-mossGreen-600",children:"Aktuell"})]}):j?v.jsx(W.Button,{onClick:()=>qe(oe.Id),disabled:L||ie,className:"disabled:opacity-50 disabled:cursor-not-allowed",children:"Redeploy"}):null})]})},oe.Id)})}),v.jsx(ju,{disabled:r||!!o})]})}const tV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},_c=e=>{if(!e&&e!==0)return"-";const r=(n=>{if(n instanceof Date)return n;if(typeof n=="number"){const o=n>1e12?n:n*1e3;return new Date(o)}if(typeof n=="string"){const o=Number(n);if(!Number.isNaN(o)){const a=o>1e12?o:o*1e3;return new Date(a)}return new Date(n)}return null})(e);return!r||Number.isNaN(r.getTime())?String(e):r.toLocaleString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})},Mh=()=>({host:"",port:"22",username:"",password:"",extraSshArgs:""});function rV(){var Gs,Iu;const e=$n(),{hasPermission:t,user:r}=Wr(),n=P.useCallback(()=>{},[]),{maintenance:o,update:a,script:i,ssh:u,loading:f,error:g,setMaintenanceMode:m,triggerUpdate:S,saveScript:O,resetScript:T,saveSshConfig:C,deleteSshConfig:w,testSshConnection:b,fetchSuperuserStatus:d,fetchSetupStatus:s,deleteSetupServer:c,updateSetupApiKey:l,updateSelfStackId:h,removeSuperuserAccount:y}=ea(),x=!!(r!=null&&r.isSuperuser),j=!!(x||t("maintenance-access","read")),k=!!(x||t("maintenance-access","full")),N=!!(x||t("maintenance-server-manage","read")),A=!!(x||t("maintenance-server-edit","full")),M=!!(x||t("maintenance-server-delete","full")),D=!!(x||t("maintenance-superuser-delete","full"));x||t("maintenance-portainer","read");const L=!!(x||t("maintenance-update","full"));x||t("maintenance-ssh-update","read");const z=!!(x||t("maintenance-ssh-update","full"));x||t("maintenance-duplicates","read");const V=!!(x||t("maintenance-duplicates","full")),Y=!1,q=!1,B=!!(o!=null&&o.active),H=o==null?void 0:o.message,K=(Gs=o==null?void 0:o.extra)==null?void 0:Gs.type,X=!!(a!=null&&a.running),re=B||X,[me,de]=P.useState(""),[ee,_e]=P.useState(!1),[he,pe]=P.useState(!1),[be,ve]=P.useState(""),[Ce,Ae]=P.useState(!1),[Ne,ue]=P.useState(()=>Mh()),[Ee,$e]=P.useState(!1),[Ge,tt]=P.useState(!1),[ct,qe]=P.useState(!1),[it,mt]=P.useState(!1),[We,rt]=P.useState(!1),[yt,je]=P.useState(null);P.useEffect(()=>{if(!i)return;const Pe=i.custom??i.default??i.effective??"";de(Pe)},[i]),P.useEffect(()=>{if(!u){ue(Mh()),$e(!1),tt(!1),je(null);return}ue({host:u.host??"",port:String(u.port??"22"),username:u.username??"",password:"",extraSshArgs:Array.isArray(u.extraSshArgs)?u.extraSshArgs.join(` -`):""}),$e(!!u.passwordStored),tt(!1),je(null)},[u]),P.useMemo(()=>i?i.source==="custom"&&typeof i.custom=="string"?i.custom:i.default??i.effective??"":"",[i]),i==null||i.source;const[Ke,Te]=P.useState(!0),[oe,ge]=P.useState(!1),[te,ye]=P.useState(null),[ie,se]=P.useState(""),[fe,Oe]=P.useState(!1),[xe,Ue]=P.useState(null),[Fe,Qe]=P.useState(!0),[ke,bt]=P.useState(""),[ft,At]=P.useState(""),[It,xt]=P.useState(""),[Rt,Er]=P.useState(""),[ur,$r]=P.useState(""),[rr,Hn]=P.useState(!1),[Ir,_r]=P.useState({}),[cn,dn]=P.useState(null),[J,Re]=P.useState(null),[ze,Ut]=P.useState(""),[Nt,Et]=P.useState(!1),[Ht,qt]=P.useState(""),[Pt,Xr]=P.useState([]),[mr,dr]=P.useState(!0),[On,kn]=P.useState(""),[Sr,Nn]=P.useState(!1),[ta,fn]=P.useState(null),[bo,qn]=P.useState(null),Ie=P.useRef(null),[ot,dt]=P.useState(new Map),[Xe,wt]=P.useState(!1),[Dt,nr]=P.useState(""),Lt=P.useMemo(()=>{var Pe;return((Pe=xe==null?void 0:xe.servers)==null?void 0:Pe.items)??[]},[xe]);P.useMemo(()=>{var Ve;const Pe=((Ve=xe==null?void 0:xe.apiKeys)==null?void 0:Ve.items)??[];return new Map(Pe.map(Be=>[Be.serverId,Be]))},[xe]),P.useMemo(()=>!!(xe!=null&&xe.setupComplete),[xe]);const Zr=(xe==null?void 0:xe.selfStack)??null,pn=(Zr==null?void 0:Zr.current)??"";(Iu=xe==null?void 0:xe.envDefaults)==null||Iu.selfStackId;const{page:hn,perPage:vo,perPageOptions:Ti,perPageIsAll:Wa,handlePerPageChange:Vs,setPage:Au,setTotals:Us,resetPagination:Ru}=Bs();P.useEffect(()=>()=>Ru(),[Ru]);const[Pi,Qf]=P.useState(""),[yo,Mo]=P.useState(null),[Ws,$s]=P.useState(!0),[Xf,Hs]=P.useState(""),[Zf,Oi]=P.useState(!1),[Jf,ep]=P.useState(null),$a=P.useRef(null),Gn=P.useCallback(async({silent:Pe=!1}={})=>{var Ve,Be;Te(!0),se("");try{const Le=await d(),at=!!(Le!=null&&Le.exists);ge(at),ye(at?Le.user??null:null)}catch(Le){const at=((Be=(Ve=Le.response)==null?void 0:Ve.data)==null?void 0:Be.error)||Le.message||"Superuser-Status konnte nicht geladen werden";ge(!1),ye(null),se(at),Pe||n({variant:"error",title:"Statusabfrage fehlgeschlagen",description:at})}finally{Te(!1)}},[d,n]),Jr=P.useCallback(async({silent:Pe=!1}={})=>{var Ve,Be;Pe||Qe(!0),bt("");try{const Le=await s();Ue(Le),_r({})}catch(Le){const at=((Be=(Ve=Le.response)==null?void 0:Ve.data)==null?void 0:Be.error)||Le.message||"Setup-Daten konnten nicht geladen werden";bt(at),Pe||n({variant:"error",title:"Setup-Daten",description:at})}finally{Qe(!1)}},[s,n]),qs=P.useCallback(async({silent:Pe=!1}={})=>{if($a.current)return $a.current;const Ve=(async()=>{var Be,Le;Pe?Oi(!0):$s(!0),Hs("");try{const Bt=(await Je.get("/api/maintenance/portainer-status")).data??{};Mo(Bt),ep(new Date)}catch(at){const Bt=((Le=(Be=at.response)==null?void 0:Be.data)==null?void 0:Le.error)||at.message||"Fehler beim Prüfen des Portainer-Status";Hs(Bt),n({variant:"error",title:"Statusaktualisierung fehlgeschlagen",description:Bt})}finally{Pe?Oi(!1):$s(!1),$a.current=null}})();return $a.current=Ve,Ve},[n]),ra=P.useCallback(async({silent:Pe=!1}={})=>{if(B||X){Xr([]),kn("Wartungsmodus aktiv – Duplikat-Verwaltung ist vorübergehend deaktiviert."),dr(!1),Nn(!1);return}if(Ie.current)return Ie.current;const Ve=(async()=>{var Be,Le,at;Pe?Nn(!0):dr(!0),kn("");try{const Ot=(await Je.get("/api/maintenance/duplicates")).data,br=Array.isArray(Ot)?Ot:(Ot==null?void 0:Ot.items)??[];Xr(br),qn(new Date)}catch(Bt){if(((Be=Bt.response)==null?void 0:Be.status)===423){const Ot="Wartungsmodus aktiv – Duplikat-Verwaltung ist vorübergehend deaktiviert.";Xr([]),kn(Ot),n({variant:"warning",title:"Duplikat-Verwaltung gesperrt",description:Ot})}else{const Ot=((at=(Le=Bt.response)==null?void 0:Le.data)==null?void 0:at.error)||Bt.message||"Fehler beim Laden der Wartungsdaten";kn(Ot),n({variant:"error",title:"Duplikate konnten nicht geladen werden",description:Ot})}}finally{Pe?Nn(!1):dr(!1),Ie.current=null}})();return Ie.current=Ve,Ve},[B,X,n]);P.useEffect(()=>{Gn({silent:!0})},[Gn]),P.useEffect(()=>{Jr()},[Jr]),P.useEffect(()=>{qs()},[qs]),P.useEffect(()=>{ra()},[ra]),P.useEffect(()=>{if(!N||Fe)return;(async()=>{var Ve,Be;if(!Lt.length){dt(new Map);return}wt(!0),nr("");try{const Le=await Promise.all(Lt.map(async at=>{var Bt,Ot;try{const Cr=(await Je.get(`/api/setup/servers/${at.id}/check`)).data??{};return[at.id,{online:!!Cr.online,portainer:Cr.portainer??{},error:null}]}catch(br){const Cr=((Ot=(Bt=br.response)==null?void 0:Bt.data)==null?void 0:Ot.error)||br.message||"Status unbekannt";return[at.id,{online:!1,portainer:{},error:Cr}]}}));dt(new Map(Le))}catch(Le){const at=((Be=(Ve=Le.response)==null?void 0:Ve.data)==null?void 0:Be.error)||Le.message||"Server-Status konnte nicht geladen werden.";nr(at)}finally{wt(!1)}})()},[N,Fe,Lt,Us]);const Kn=P.useMemo(()=>{const Pe=Pi.trim().toLowerCase();return Pe?Lt.filter(Ve=>[Ve.name,Ve.url].map(Le=>String(Le||"").toLowerCase()).some(Le=>Le.includes(Pe))):Lt},[Pi,Lt]);P.useEffect(()=>{Us(Kn.length)},[Kn.length,Us]);const Ha=P.useMemo(()=>{if(Wa)return Kn;const Pe=(hn-1)*vo;return Kn.slice(Pe,Pe+vo)},[Kn,hn,vo,Wa]);P.useEffect(()=>{Ut(pn||""),qt("")},[pn]);const Mu=ze!==pn,tp=P.useCallback(Pe=>{Qf(Pe.target.value)},[]);P.useEffect(()=>{hn!==1&&Au(1)},[Pi,hn,Au]);const rp=P.useCallback(async()=>{var Le,at,Bt,Ot;if(!A||rr)return;const Pe=(ft||"").trim(),Ve=(It||"").trim(),Be=(Rt||"").trim();if(!Ve||!Be){$r("Bitte Name, URL und API-Key angeben.");return}$r(""),Hn(!0);try{await Je.post("/api/setup/servers",{name:Pe,url:Ve,apiKey:Be}),At(""),xt(""),Er(""),await Jr({silent:!0})}catch(br){const Cr=((at=(Le=br.response)==null?void 0:Le.data)==null?void 0:at.message)||((Ot=(Bt=br.response)==null?void 0:Bt.data)==null?void 0:Ot.error)||br.message||"Server konnte nicht angelegt werden.";$r(Cr)}finally{Hn(!1)}},[A,Rt,ft,It,rr,Jr]),np=P.useCallback(()=>{rr||(At(""),xt(""),Er(""),$r(""))},[rr]);P.useMemo(()=>{const Pe=Array.isArray(Pt)?Pt.length:0,Ve=Array.isArray(Pt)?Pt.reduce((Be,Le)=>{var at;return Be+(((at=Le==null?void 0:Le.duplicates)==null?void 0:at.length)||0)},0):0;return{groups:Pe,duplicateCount:Ve}},[Pt]),P.useCallback((Pe,Ve)=>{z&&(ue(Be=>({...Be,[Pe]:Ve})),Pe==="password"&&$e(!1))},[z]);const ki=P.useMemo(()=>{const Pe={host:Ne.host.trim(),port:Number.parseInt(Ne.port,10)||22,username:Ne.username.trim(),extraSshArgs:(Ne.extraSshArgs||"").split(/\r?\n/).map(Be=>Be.trim()).filter(Boolean)},Ve=Ne.password??"";return Ve?Pe.password=Ve:Ee||(Pe.password=""),Pe},[Ne,Ee]);P.useCallback(async()=>{var Pe,Ve;if(z&&i)try{_e(!0),await O(me),n({variant:"success",title:"Skript gespeichert",description:"Das benutzerdefinierte Portainer-Update-Skript wurde aktualisiert."})}catch(Be){const Le=((Ve=(Pe=Be.response)==null?void 0:Pe.data)==null?void 0:Ve.error)||Be.message||"Skript konnte nicht gespeichert werden";n({variant:"error",title:"Speichern fehlgeschlagen",description:Le})}finally{_e(!1)}},[z,O,me,i,n]),P.useCallback(async()=>{var Pe,Ve;if(z)try{_e(!0),await T(),n({variant:"info",title:"Standardskript wiederhergestellt",description:"Es wird wieder das Standard-Update-Skript verwendet."})}catch(Be){const Le=((Ve=(Pe=Be.response)==null?void 0:Pe.data)==null?void 0:Ve.error)||Be.message||"Standardskript konnte nicht wiederhergestellt werden";n({variant:"error",title:"Zurücksetzen fehlgeschlagen",description:Le})}finally{_e(!1)}},[z,T,n]),P.useCallback(async()=>{var Pe,Ve;if(z)try{qe(!0),await C(ki),je(null),tt(!1),n({variant:"success",title:"SSH-Konfiguration gespeichert",description:"Verbindungseinstellungen wurden aktualisiert."})}catch(Be){const Le=((Ve=(Pe=Be.response)==null?void 0:Pe.data)==null?void 0:Ve.error)||Be.message||"SSH-Konfiguration konnte nicht gespeichert werden";n({variant:"error",title:"Speichern fehlgeschlagen",description:Le})}finally{qe(!1)}},[z,ki,C,n]),P.useCallback(async()=>{var Pe,Ve;if(z)try{mt(!0);const Be=await b(ki);je({success:!0,timestamp:new Date,details:Be==null?void 0:Be.result}),n({variant:"success",title:"SSH-Verbindung erfolgreich",description:"Verbindung zum Portainer-Host wurde hergestellt."})}catch(Be){const Le=((Ve=(Pe=Be.response)==null?void 0:Pe.data)==null?void 0:Ve.error)||Be.message||"SSH-Verbindung fehlgeschlagen";je({success:!1,timestamp:new Date,error:Le}),n({variant:"error",title:"SSH-Test fehlgeschlagen",description:Le})}finally{mt(!1)}},[z,ki,b,n]),P.useCallback(async()=>{var Pe,Ve;if(z)try{rt(!0),await w(),ue(Mh()),$e(!1),tt(!1),je(null),n({variant:"info",title:"SSH-Konfiguration gelöscht",description:"Die Verbindungseinstellungen wurden zurückgesetzt."})}catch(Be){const Le=((Ve=(Pe=Be.response)==null?void 0:Pe.data)==null?void 0:Ve.error)||Be.message||"SSH-Konfiguration konnte nicht gelöscht werden";n({variant:"error",title:"Löschen fehlgeschlagen",description:Le})}finally{rt(!1)}},[z,w,n]);const op=P.useCallback(async()=>{var Pe,Ve,Be;if(!(!D||fe||Ke||!oe)&&!(typeof window<"u"&&!window.confirm(`Superuser und zugehörige Gruppe wirklich löschen? -Dies setzt die Superuser-Einrichtung zurück.`)))try{Oe(!0);const Le=await y(),at=Number((Le==null?void 0:Le.usersRemoved)??0);n({variant:"success",title:"Superuser gelöscht",description:at>1?`${at} Konten aus der Superuser-Gruppe wurden entfernt.`:"Superuser-Konto wurde entfernt."}),await Gn({silent:!0})}catch(Le){if(((Pe=Le.response)==null?void 0:Pe.status)===404)await Gn({silent:!0}),n({variant:"info",title:"Kein Superuser vorhanden",description:"Es ist kein Superuser mehr vorhanden."});else{const Bt=((Be=(Ve=Le.response)==null?void 0:Ve.data)==null?void 0:Be.error)||Le.message||"Superuser konnte nicht gelöscht werden";n({variant:"error",title:"Löschen fehlgeschlagen",description:Bt})}}finally{Oe(!1)}},[D,fe,Ke,oe,y,Gn,n]),ap=P.useCallback(async Pe=>{var at,Bt;if(!M||J===Pe)return;const Ve=Lt.find(Ot=>Ot.id===Pe);if(!Ve)return;const Be=Ve.name||Ve.url||`Server ${Pe}`,Le=[`Server "${Be}" wirklich löschen?`,"Das System benötigt anschließend erneut einen gültigen Server im Setup."].filter(Boolean).join(` -`);if(!(typeof window<"u"&&!window.confirm(Le))){Re(Pe);try{await c(Pe),n({variant:"success",title:"Server gelöscht",description:`Server "${Be}" wurde entfernt.`}),await Jr({silent:!0})}catch(Ot){const br=((Bt=(at=Ot.response)==null?void 0:at.data)==null?void 0:Bt.error)||Ot.message||"Server konnte nicht gelöscht werden.";n({variant:"error",title:"Server löschen fehlgeschlagen",description:br})}finally{Re(null)}}},[M,c,Jr,J,Lt,n]);P.useCallback((Pe,Ve)=>{A&&_r(Be=>({...Be,[Pe]:Ve}))},[A]),P.useCallback(async Pe=>{var Be,Le;if(!A)return;const Ve=(Ir[Pe]??"").trim();if(!Ve){n({variant:"warning",title:"API-Key fehlt",description:"Bitte gib einen API-Key ein."});return}if(cn!==Pe){dn(Pe);try{await l(Pe,Ve),n({variant:"success",title:"API-Key aktualisiert",description:"Der API-Key wurde gespeichert."}),_r(at=>({...at,[Pe]:""})),await Jr({silent:!0})}catch(at){const Bt=((Le=(Be=at.response)==null?void 0:Be.data)==null?void 0:Le.error)||at.message||"API-Key konnte nicht aktualisiert werden.";n({variant:"error",title:"Aktualisierung fehlgeschlagen",description:Bt})}finally{dn(null)}}},[Ir,cn,A,Jr,n,l]),P.useCallback(Pe=>{A&&(Ut(Pe),qt(""))},[A]),P.useCallback(async()=>{var Ve,Be;if(!A||!Mu)return;Et(!0),qt("");const Pe=typeof ze=="string"?ze.trim():"";try{await h(Pe),n({variant:"success",title:"Self-Stack-ID gespeichert",description:Pe?`Self-Stack-ID wurde auf "${Pe}" gesetzt.`:"Self-Stack-ID wurde entfernt."}),await Jr({silent:!0})}catch(Le){const at=((Be=(Ve=Le.response)==null?void 0:Ve.data)==null?void 0:Be.error)||Le.message||"Self-Stack-ID konnte nicht aktualisiert werden.";qt(at),n({variant:"error",title:"Self-Stack-ID",description:at})}finally{Et(!1)}},[A,Jr,Mu,ze,n,h]),P.useCallback(async()=>{var Pe,Ve;if(A&&!(!ze&&!pn)&&!(typeof window<"u"&&!window.confirm("Self-Stack-ID wirklich entfernen?"))){Et(!0),qt("");try{await h(""),Ut(""),n({variant:"success",title:"Self-Stack-ID entfernt",description:"Die Self-Stack-ID wurde gelöscht."}),await Jr({silent:!0})}catch(Be){const Le=((Ve=(Pe=Be.response)==null?void 0:Pe.data)==null?void 0:Ve.error)||Be.message||"Self-Stack-ID konnte nicht entfernt werden.";qt(Le),n({variant:"error",title:"Self-Stack-ID",description:Le})}finally{Et(!1)}}},[A,pn,Jr,ze,n,h]);const ip=P.useCallback(async Pe=>{var Ve,Be;if(k&&!(f||Ce)&&Pe!==B){if(X){n({variant:"warning",title:"Aktion nicht möglich",description:"Während eines laufenden Updates kann der Wartungsmodus nicht geändert werden."});return}Ae(!0);try{const Le=Pe&&!!K,at={active:Pe};Le&&H?at.message=H:at.message=null,await m(at),n({variant:Pe?"info":"success",title:Pe?"Wartungsmodus aktiviert":"Wartungsmodus deaktiviert",description:Pe?"Benutzer sehen jetzt die Wartungsseite.":"StackPulse steht wieder zur Verfügung."})}catch(Le){const at=((Be=(Ve=Le.response)==null?void 0:Ve.data)==null?void 0:Be.error)||Le.message||"Wartungsmodus konnte nicht geändert werden";n({variant:"error",title:"Änderung fehlgeschlagen",description:at})}finally{Ae(!1)}}},[k,f,Ce,B,X,m,H,K,n]);P.useCallback(async()=>{var Ve,Be;if(!L)return;if(B||X){n({variant:"warning",title:"Update nicht möglich",description:"Während eines aktiven Wartungsmodus kann kein weiteres Update gestartet werden."});return}const Pe=(yo==null?void 0:yo.latestVersion)??(yo==null?void 0:yo.currentVersion)??"unbekannt";if(!(typeof window<"u"&&!window.confirm(`Portainer-Update starten? -Zielversion: ${Pe}. -Während des Updates befindet sich StackPulse im Wartungsmodus. -Fortfahren?`)))try{ve(""),pe(!0),await S(),n({variant:"info",title:"Update gestartet",description:"Das Portainer-Update wurde gestartet."})}catch(Le){const at=((Be=(Ve=Le.response)==null?void 0:Ve.data)==null?void 0:Be.error)||Le.message||"Portainer-Update konnte nicht gestartet werden";ve(at),n({variant:"error",title:"Update fehlgeschlagen",description:at})}finally{pe(!1)}},[L,B,X,yo,S,n]),P.useCallback(async Pe=>{var at,Bt,Ot,br;if(!V||!Pe)return;if(B||X){n({variant:"warning",title:"Aktion nicht möglich",description:"Während des Wartungsmodus sind Bereinigungen deaktiviert."});return}const Ve=(at=Pe.canonical)==null?void 0:at.Id;if(!Ve)return;const Be=(Pe.duplicates||[]).map(Cr=>Cr.Id).filter(Boolean);if(!Be.length)return;const Le=((Bt=Pe.canonical)==null?void 0:Bt.Name)||Pe.name||`Stack ${Ve}`;if(!(typeof window<"u"&&!window.confirm(`Bereinigung für "${Le}" starten? -Es werden ${Be.length} Duplikate entfernt: ${Be.join(", ")}`))){fn(String(Ve));try{const Io=(await Je.post("/api/maintenance/duplicates/cleanup",{canonicalId:Ve,duplicateIds:Be})).data??{};if(Io.success===!1)throw new Error(Io.error||"Bereinigung fehlgeschlagen");const Du=Array.isArray(Io.results)?Io.results.filter(Yn=>Yn.status==="deleted").map(Yn=>Yn.id):Be;n({variant:"success",title:"Bereinigung abgeschlossen",description:`${Le} – entfernte IDs: ${Du.join(", ")}`}),await ra({silent:!0})}catch(Cr){const Io=((br=(Ot=Cr.response)==null?void 0:Ot.data)==null?void 0:br.error)||Cr.message||"Bereinigung fehlgeschlagen";n({variant:"error",title:"Bereinigung fehlgeschlagen",description:Io})}finally{fn(null)}}},[V,ra,B,n,X]),o!=null&&o.activatedAt&&_c(o.activatedAt),o!=null&&o.updatedAt&&_c(o.updatedAt),a==null||a.status;const xo=a!=null&&a.stage?tV[a.stage]??a.stage:"–";return a==null||a.logs,a==null||a.targetVersion,a==null||a.resultVersion,a!=null&&a.startedAt&&_c(a.startedAt),a!=null&&a.finishedAt&&_c(a.finishedAt),a==null||a.message,j?v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(B||X)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",H?` – ${H}`:X?" – Portainer-Update läuft":"","."]}),X&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",xo]})]})}),j&&v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(W.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:v.jsx("span",{children:"Wartungsmodus"})})}),v.jsxs(W.CardBody,{className:"flex flex-col gap-4 p-4",children:[v.jsxs("div",{className:"flex items-start justify-between gap-4",children:[v.jsx("div",{className:"space-y-1",children:v.jsx("p",{className:"text-sm antialiased font-sans text-sm font-light leading-normal text-inherit",children:"Schaltet StackPulse für Benutzer in den Wartungsmodus."})}),v.jsx(W.Switch,{checked:B,disabled:!k||Ce||f||X,onChange:Pe=>ip(Pe.target.checked),ripple:!1,color:"amber"})]}),Ce&&v.jsx("p",{className:"text-xs text-stormGrey-500",children:"Wartungsmodus wird aktualisiert…"})]})]}),N&&v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsxs(W.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:[v.jsx("span",{children:"Server"}),v.jsxs(W.Typography,{variant:"small",color:"white",children:[Lt.length," vorhanden"]})]})}),v.jsxs(W.CardBody,{className:"p-4",children:[A&&v.jsxs("div",{className:"mb-8 rounded-lg border border-blue-gray-50 p-4",children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-2",children:"Neuen Server hinzufügen"}),v.jsx("p",{className:"text-sm text-stormGrey-600 mb-4",children:"Hinterlege deine Portainer-Instanz. Die Verbindung wird beim Speichern automatisch geprüft."}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[v.jsx(W.Input,{label:"Servername",value:ft,onChange:Pe=>At(Pe.target.value),disabled:rr||re,crossOrigin:""}),v.jsx(W.Input,{label:"Server-URL oder IP",value:It,onChange:Pe=>xt(Pe.target.value),disabled:rr||re,crossOrigin:""}),v.jsx(W.Input,{type:"password",label:"Portainer API-Key",value:Rt,onChange:Pe=>Er(Pe.target.value),disabled:rr||re,crossOrigin:""})]}),v.jsxs("div",{className:"mt-4 flex flex-col gap-3 sm:flex-row sm:items-center",children:[v.jsx(W.Button,{color:"green",onClick:rp,disabled:rr||re,children:rr?"Verifiziere …":"Server anlegen"}),v.jsx(W.Button,{variant:"text",color:"blue-gray",onClick:np,disabled:rr,children:"Formular zurücksetzen"})]}),ur&&v.jsx("p",{className:"mt-2 text-sm text-sunsetCoral-600",children:ur})]}),v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(W.Input,{label:"Suchen nach Name oder URL",value:Pi,onChange:tp,crossOrigin:""})}),v.jsx("div",{className:"md:mt-0 mt-4 md:flex-1",children:v.jsx(W.Select,{variant:"static",label:"Einträge pro Seite",onChange:Vs,value:vo,children:Ti.map(({value:Pe,label:Ve})=>v.jsx(W.Option,{value:Pe,children:Ve},Pe))})})]}),ke&&v.jsx("div",{className:"mt-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:ke}),Dt&&!Fe&&v.jsx("div",{className:"mt-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:Dt}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50 mt-6",children:v.jsxs("table",{className:"w-full min-w-[720px] table-auto text-left",children:[v.jsx("thead",{children:v.jsxs("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:[v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Name"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"IP / Host"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Server Status"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Portainer Status"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Edition"}),v.jsx("th",{className:"px-6 py-4 font-semibold text-right",children:"Aktionen"})]})}),v.jsx("tbody",{children:Fe?v.jsx("tr",{children:v.jsx("td",{colSpan:6,className:"px-6 py-8 text-center text-blue-gray-400",children:"Server werden geladen ..."})}):Kn.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:6,className:"px-6 py-8 text-center text-blue-gray-400",children:"Keine Server gefunden."})}):Ha.map((Pe,Ve)=>{const Be=Ve===Ha.length-1?"":"border-b border-blue-gray-50",Le=ot.get(Pe.id)||{},at=Le.online===!0,Bt=Le.portainer||{},Ot=Bt.updateAvailable===!0?"update":Bt.updateAvailable===!1?"ok":"unknown",br=Bt.edition||"-",Cr=(()=>{try{return new URL(Pe.url).hostname||Pe.url}catch{return Pe.url}})();return v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${Be}`,children:[v.jsxs("td",{className:"px-6 py-4",children:[v.jsx(W.Typography,{variant:"small",className:"font-medium text-stormGrey-900",children:Pe.name||"–"}),v.jsx(W.Typography,{variant:"small",className:"text-xs text-stormGrey-500",children:Pe.url})]}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",children:Cr||"–"})}),v.jsx("td",{className:"px-6 py-4",children:Xe&&!Le?v.jsx("span",{className:"text-xs text-stormGrey-400",children:"Prüfe…"}):v.jsx(W.Chip,{value:at?"Online":"Offline",size:"sm",color:at?"green":"red",variant:"ghost"})}),v.jsx("td",{className:"px-6 py-4",children:Xe&&!Le?v.jsx("span",{className:"text-xs text-stormGrey-400",children:"Prüfe…"}):v.jsx(W.Chip,{value:Ot==="update"?"Update vorhanden":Ot==="ok"?"Aktuell":"Unbekannt",size:"sm",color:Ot==="update"?"amber":Ot==="ok"?"green":"blue-gray",variant:"ghost"})}),v.jsx("td",{className:"px-6 py-4",children:Xe&&!Le?v.jsx("span",{className:"text-xs text-stormGrey-400",children:"Prüfe…"}):v.jsx(W.Typography,{variant:"small",children:br})}),v.jsx("td",{className:"px-6 py-4",children:v.jsxs("div",{className:"flex justify-end gap-2",children:[v.jsx(W.Button,{size:"sm",variant:"outlined",color:"blue-gray",onClick:()=>e(`/dashboard/maintenance/servers/${Pe.id}`),disabled:!A,children:"Bearbeiten"}),v.jsx(W.Button,{size:"sm",variant:"text",color:"red",onClick:()=>ap(Pe.id),disabled:re||!M||J===Pe.id,children:J===Pe.id?"Lösche…":"Löschen"})]})})]},Pe.id)})})]})}),v.jsxs("div",{className:"mt-4 flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsxs(W.Typography,{variant:"small",color:"blue-gray",className:"text-sm",children:[Wa?"Alle Server":`${Ha.length} von ${Kn.length}`," angezeigt"]}),v.jsx(ju,{})]})]})]}),N&&v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(W.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:v.jsx("span",{children:"Superuser"})})}),v.jsxs(W.CardBody,{className:"flex flex-col gap-4 p-4",children:[v.jsxs("div",{className:"space-y-2",children:[Ke&&v.jsx("p",{className:"text-sm text-stormGrey-500",children:"Status wird geladen…"}),!Ke&&ie&&v.jsx("p",{className:"text-sm text-sunsetCoral-600",children:ie}),!Ke&&!ie&&oe&&v.jsxs("div",{className:"space-y-1",children:[v.jsx("p",{className:"text-sm",children:"Superuser ist angelegt."}),v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Benutzername: ",v.jsx("span",{className:"font-medium text-stormGrey-900",children:(te==null?void 0:te.username)??"unbekannt"}),te!=null&&te.email?` - ${te.email}`:""]})]}),!Ke&&!ie&&!oe&&v.jsx("p",{className:"text-sm",children:"Es ist kein Superuser vorhanden."})]}),v.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(W.Button,{variant:"outlined",color:"gray",onClick:()=>Gn(),disabled:re||Ke||fe,className:"w-full sm:w-auto",children:"Status aktualisieren"}),v.jsx(W.Button,{color:"red",onClick:op,disabled:re||!D||Ke||fe||!oe,className:"w-full sm:w-auto",children:fe?"Wird gelöscht…":"Superuser löschen"})]}),v.jsx("p",{className:"text-xs text-stormGrey-500",children:"Entfernt das Superuser-Konto samt zugehöriger Gruppe. Danach kann der Erstbenutzer bei Bedarf erneut angelegt werden."})]})]}),Y,q]}):null}const nV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},Qa=Eo.forwardRef(({value:e,onClick:t,onKeyDown:r,...n},o)=>{const{setOpen:a}=W.useSelect(),i=P.useCallback(()=>{(typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame:m=>setTimeout(m,0))(()=>{a(!0)})},[a]),u=P.useCallback(g=>{typeof t=="function"&&t(g),i()},[t,i]),f=P.useCallback(g=>{typeof r=="function"&&r(g),(g.key==="Enter"||g.key===" ")&&i()},[r,i]);return v.jsx(W.Option,{...n,value:e,ref:o,onClick:u,onKeyDown:f})});Qa.displayName="StickyOption";const oV={success:"text-mossGreen-500",warning:"text-warmAmberGlow-500",error:"text-sunsetCoral-500",started:"text-arcticBlue-500",running:"text-arcticBlue-500",info:"text-arcticBlue-500",queued:"text-indigo-500"},aV=e=>{if(!e)return"-";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})},Zw=e=>{if(e)return e.replace("T"," ")},Jw="eventLogFilters",Co="__all__",iV="- Alle -",sV=e=>!!(e.categories&&e.categories.length||e.eventTypes&&e.eventTypes.length||e.actions&&e.actions.length||e.statuses&&e.statuses.length||e.entityTypes&&e.entityTypes.length||e.contextTypes&&e.contextTypes.length||e.entityId&&e.entityId.trim()||e.contextId&&e.contextId.trim()||e.search&&e.search.trim()||e.from&&e.from.trim()||e.to&&e.to.trim()),lV=e=>{if(e==null)return"-";if(typeof e=="object")try{return JSON.stringify(e)}catch{return"[Objekt]"}return String(e)},uV=e=>{if(!e||typeof e!="object")return"";const t=Object.entries(e);return t.length?t.map(([r,n])=>`${r}: ${lV(n)}`).join(" • "):""};function cV(){const[e,t]=P.useState([]),[r,n]=P.useState(!0),[o,a]=P.useState(""),[i,u]=P.useState(!1),[f,g]=P.useState([]),[m,S]=P.useState([]),[O,T]=P.useState([]),[C,w]=P.useState([]),[b,d]=P.useState([]),[s,c]=P.useState([]),[l,h]=P.useState([]),[y,x]=P.useState([]),[j,k]=P.useState([]),[N,A]=P.useState([]),[M,D]=P.useState([]),[L,z]=P.useState([]),[V,Y]=P.useState(""),[q,B]=P.useState(""),[H,K]=P.useState(""),[X,re]=P.useState(""),[me,de]=P.useState(""),[ee,_e]=P.useState(!1),[he,pe]=P.useState(!1),[be,ve]=P.useState(!1),[Ce,Ae]=P.useState(0),{maintenance:Ne,update:ue}=ea(),Ee=!!(Ne!=null&&Ne.active),$e=Ne==null?void 0:Ne.message,Ge=!!(ue!=null&&ue.running),tt=Ee||Ge,ct=ue!=null&&ue.stage?nV[ue.stage]??ue.stage:"–",{hasPermission:qe}=Wr(),it=qe("logs-delete","full"),mt=qe("logs-export","full"),{page:We,perPage:rt,perPageOptions:yt,setPage:je,setPerPage:Ke,setTotals:Te,handlePerPageChange:oe,validPerPageValues:ge,resetPagination:te}=Bs(),ye=P.useCallback(()=>{},[]);P.useEffect(()=>()=>te(),[te]);const ie=P.useCallback(J=>{const Re=Array.isArray(J)?J:(J==null?void 0:J.items)??[],ze=new Set,Ut=new Set,Nt=new Set,Et=new Set,Ht=new Set,qt=new Set;Re.forEach(Pt=>{Pt.category&&ze.add(Pt.category),Pt.eventType&&Ut.add(Pt.eventType),Pt.action&&Nt.add(Pt.action),Pt.status&&Et.add(Pt.status),Pt.entityType&&Ht.add(Pt.entityType),Pt.contextType&&qt.add(Pt.contextType)}),g(Array.from(ze).sort()),S(Array.from(Ut).sort()),T(Array.from(Nt).sort()),w(Array.from(Et).sort()),d(Array.from(Ht).sort()),c(Array.from(qt).sort()),ve(!0)},[]);P.useEffect(()=>{be&&h(J=>{const Re=J.filter(ze=>f.includes(ze));return Re.length===J.length?J:Re})},[be,f]),P.useEffect(()=>{be&&x(J=>{const Re=J.filter(ze=>m.includes(ze));return Re.length===J.length?J:Re})},[be,m]),P.useEffect(()=>{be&&k(J=>{const Re=J.filter(ze=>O.includes(ze));return Re.length===J.length?J:Re})},[be,O]),P.useEffect(()=>{be&&A(J=>{const Re=J.filter(ze=>C.includes(ze));return Re.length===J.length?J:Re})},[be,C]),P.useEffect(()=>{be&&D(J=>{const Re=J.filter(ze=>b.includes(ze));return Re.length===J.length?J:Re})},[be,b]),P.useEffect(()=>{be&&z(J=>{const Re=J.filter(ze=>s.includes(ze));return Re.length===J.length?J:Re})},[be,s]),P.useEffect(()=>{if(typeof window>"u"){pe(!0);return}try{const J=window.localStorage.getItem(Jw);if(J){const Re=JSON.parse(J),ze=(Re==null?void 0:Re.filters)??Re??{},Ut=(Re==null?void 0:Re.pagination)??{};h(ze.categories||[]),x(ze.eventTypes||[]),k(ze.actions||[]),A(ze.statuses||[]),D(ze.entityTypes||[]),z(ze.contextTypes||[]),Y(ze.entityId||""),B(ze.contextId||""),K(ze.search||""),re(ze.from||""),de(ze.to||""),_e(sV(ze));const Nt=Ut.perPage;if(Nt!==void 0){const Ht=String(Nt);ge.has(Ht)&&Ke(Ht,{resetPage:!1})}const Et=Ut.page;typeof Et=="number"&&Et>0&&je(Et)}}catch(J){console.error("❌ Fehler beim Laden der gespeicherten Log-Filter:",J)}finally{pe(!0)}},[je,Ke,ge]);const se=P.useCallback(()=>{const J={};l.length&&(J.categories=l.join(",")),y.length&&(J.eventTypes=y.join(",")),j.length&&(J.actions=j.join(",")),N.length&&(J.statuses=N.join(",")),M.length&&(J.entityTypes=M.join(",")),L.length&&(J.contextTypes=L.join(",")),V.trim()&&(J.entityId=V.trim()),q.trim()&&(J.contextId=q.trim()),H.trim()&&(J.search=H.trim());const Re=Zw(X);Re&&(J.from=Re);const ze=Zw(me);return ze&&(J.to=ze),J},[l,y,j,N,M,L,V,q,H,X,me]);P.useEffect(()=>{if(!he)return;let J=!1;return Je.get("/api/logs",{params:{perPage:"all",page:1}}).then(Re=>{J||ie(Re.data)}).catch(Re=>{J||console.error("⚠️ Konnte Filteroptionen nicht aktualisieren:",Re)}),()=>{J=!0}},[he,ie,Ce]);const fe=P.useMemo(()=>({categories:l,eventTypes:y,actions:j,statuses:N,entityTypes:M,contextTypes:L,entityId:V,contextId:q,search:H,from:X,to:me}),[l,y,j,N,M,L,V,q,H,X,me]);P.useEffect(()=>{if(!he)return;const J={...se()};rt==="all"?(J.perPage="all",J.page=1):(J.perPage=rt,J.page=We);let Re=!1;return n(!0),a(""),Je.get("/api/logs",{params:J}).then(ze=>{if(Re)return;const Ut=ze.data||{},Nt=Array.isArray(Ut)?Ut:Ut.items??[],Et=Array.isArray(Ut)?Nt.length:Ut.total??Nt.length;if(t(Nt),Te(Et,Nt.length),rt==="all")We!==1&&je(1);else{const Ht=Math.max(1,Math.ceil((Et||0)/Number(rt))),qt=Math.min(Math.max(We,1),Ht);qt!==We&&je(qt)}}).catch(ze=>{Re||(console.error("❌ Fehler beim Laden der Logs:",ze),a("Fehler beim Laden der Logs"))}).finally(()=>{Re||n(!1)}),()=>{Re=!0}},[he,se,ie,Ce,rt,We,Te]),P.useEffect(()=>{if(he&&!(typeof window>"u"))try{window.localStorage.setItem(Jw,JSON.stringify({filters:fe,pagination:{perPage:rt,page:We}}))}catch(J){console.error("⚠️ Konnte Filter nicht speichern:",J)}},[he,fe,rt,We]);const Oe=P.useCallback(J=>Re=>{var Nt;if(typeof Re=="string"){const Et=Re;if(Et==="")return;J(Ht=>Et===Co?[]:Ht.includes(Et)?Ht.filter(qt=>qt!==Et):[...Ht,Et]),je(1);return}const ze=(Nt=Re==null?void 0:Re.target)==null?void 0:Nt.selectedOptions;if(!ze)return;const Ut=Array.from(ze).map(Et=>Et.value);Ut.includes(Co)?J([]):J(Ut),je(1)},[je]),xe=P.useMemo(()=>Oe(h),[Oe]),Ue=P.useMemo(()=>Oe(x),[Oe]),Fe=P.useMemo(()=>Oe(k),[Oe]),Qe=P.useMemo(()=>Oe(A),[Oe]),ke=P.useMemo(()=>Oe(D),[Oe]),bt=P.useMemo(()=>Oe(z),[Oe]),ft=(J,Re)=>{J(ze=>ze.filter(Ut=>Ut!==Re)),je(1)},At=()=>{h([]),x([]),k([]),A([]),D([]),z([]),Y(""),B(""),K(""),re(""),de(""),_e(!1),je(1)},It=()=>{_e(J=>!J)},xt=P.useCallback(J=>[{value:Co,label:iV},...J.filter(Re=>Re!==Co).map(Re=>({value:Re,label:Re}))],[]),Rt=P.useMemo(()=>xt(f),[xt,f]),Er=P.useMemo(()=>xt(m),[xt,m]),ur=P.useMemo(()=>xt(O),[xt,O]),$r=P.useMemo(()=>xt(C),[xt,C]),rr=P.useMemo(()=>xt(b),[xt,b]),Hn=P.useMemo(()=>xt(s),[xt,s]),Ir=P.useMemo(()=>{let J=0;return l.length&&(J+=l.length),y.length&&(J+=y.length),j.length&&(J+=j.length),N.length&&(J+=N.length),M.length&&(J+=M.length),L.length&&(J+=L.length),V.trim()&&(J+=1),q.trim()&&(J+=1),H.trim()&&(J+=1),X&&(J+=1),me&&(J+=1),J},[l,y,j,N,M,L,V,q,H,X,me]),_r=async J=>{if(!it){a("Dir fehlt die Berechtigung, einzelne Logeinträge zu löschen.");return}if(window.confirm("Diesen Log-Eintrag dauerhaft löschen?")){u(!0),a("");try{await Je.delete(`/api/logs/${J}`),Ae(Re=>Re+1)}catch(Re){console.error("❌ Fehler beim Löschen des Logs:",Re),a("Fehler beim Löschen des Logs")}finally{u(!1)}}},cn=async()=>{if(!it){a("Dir fehlt die Berechtigung, Logs zu löschen.");return}if(e.length&&window.confirm("Alle angezeigten Logs (entsprechend Filter) löschen?")){u(!0),a("");try{const J={...se(),ids:e.map(Re=>Re.id).join(",")};await Je.delete("/api/logs",{params:J}),Ae(Re=>Re+1)}catch(J){console.error("❌ Fehler beim Löschen der gefilterten Logs:",J),a("Fehler beim Löschen der gefilterten Logs")}finally{u(!1)}}},dn=async J=>{if(!mt){a("Dir fehlt die Berechtigung, Logs zu exportieren.");return}u(!0),a("");try{const Re=await Je.get("/api/logs/export",{params:{...se(),format:J},responseType:"blob"}),ze=Re.headers["content-type"]||(J==="sql"?"application/sql":"text/plain"),Nt=(Re.headers["content-disposition"]||"").match(/filename="?([^";]+)"?/i),Et=(Nt==null?void 0:Nt[1])||`event-logs.${J}`,Ht=new Blob([Re.data],{type:ze}),qt=window.URL.createObjectURL(Ht),Pt=document.createElement("a");Pt.href=qt,Pt.download=Et,document.body.appendChild(Pt),Pt.click(),Pt.remove(),window.URL.revokeObjectURL(qt)}catch(Re){console.error("❌ Fehler beim Export der Logs:",Re),a("Fehler beim Export der Logs")}finally{u(!1)}};return Eo.useState(!1),v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(Ee||Ge)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",$e?` – ${$e}`:Ge?" – Portainer-Update läuft":"","."]}),Ge&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",ct]})]})}),v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(W.Typography,{variant:"h6",color:"white",children:v.jsxs("button",{onClick:It,className:"flex w-full items-center justify-between",children:[v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{children:"Logs"}),Ir>0&&v.jsxs("span",{className:"rounded-full bg-blue-gray-500/80 px-2 py-0.5 text-xs text-white",children:[Ir," aktiv"]})]}),v.jsx("span",{className:"text-xs uppercase tracking-wide text-gray-400",children:ee?"Filter ausblenden":"Filter anzeigen"})]})})}),v.jsxs(W.CardBody,{className:"pt-0",children:[ee&&v.jsxs("div",{className:"mb-8",children:[(mt||it)&&v.jsxs("div",{className:"flex flex-wrap gap-2",children:[mt&&v.jsxs(v.Fragment,{children:[v.jsx(W.Button,{onClick:()=>dn("txt"),disabled:tt||i||r,className:"w-full md:flex-1",children:"Export TXT"}),v.jsx(W.Button,{onClick:()=>dn("sql"),disabled:tt||i||r,className:"w-full md:flex-1",children:"Export SQL"})]}),it&&v.jsx(W.Button,{onClick:cn,disabled:tt||i||r||e.length===0,className:"w-full md:flex-1 bg-sunsetCoral-500 hover:bg-sunsetCoral-600",children:"Angezeigte löschen"})]}),v.jsxs("div",{className:"grid gap-6 mt-10",children:[v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsxs("div",{className:"grid gap-3",children:[v.jsx(W.Select,{multiple:!0,onChange:ye,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Kategorien",children:Rt.map(({value:J,label:Re})=>v.jsx(Qa,{value:J,onClick:()=>xe(J),onKeyDown:ze=>{(ze.key==="Enter"||ze.key===" ")&&(ze.preventDefault(),xe(J))},className:`text-black-600 ${J===Co?"font-semibold text-black-800":""}`,children:Re},J))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:l.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Kategorien"}):v.jsx("span",{children:l.map(J=>v.jsx("button",{type:"button",onClick:()=>ft(h,J),className:"rounded-full bg-lavenderSmoke-600/80 px-2 py-0.5 text-white transition hover:bg-lavenderSmoke-600/90 focus:outline-none focus:ring-2 focus:ring-lavenderSmoke-400 cursor-pointer",title:"Filter entfernen",children:J},J))})})]}),v.jsxs("div",{className:"grid gap-3",children:[v.jsx(W.Select,{multiple:!0,onChange:ye,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Event-Typen",children:Er.map(({value:J,label:Re})=>v.jsx(Qa,{value:J,onClick:()=>Ue(J),onKeyDown:ze=>{(ze.key==="Enter"||ze.key===" ")&&(ze.preventDefault(),Ue(J))},className:`text-black-600 ${J===Co?"font-semibold text-black-800":""}`,children:Re},J))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:y.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Event-Typen"}):v.jsx("span",{children:y.map(J=>v.jsx("button",{type:"button",onClick:()=>ft(x,J),className:"rounded-full bg-citrusPunch-600/80 px-2 py-0.5 text-white transition hover:bg-citrusPunch-600/90 focus:outline-none focus:ring-2 focus:ring-citrusPunch-400 cursor-pointer",title:"Filter entfernen",children:J},J))})})]})]}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsxs("div",{className:"grid gap-3",children:[v.jsx(W.Select,{multiple:!0,onChange:ye,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Aktionen",children:ur.map(({value:J,label:Re})=>v.jsx(Qa,{value:J,onClick:()=>Fe(J),onKeyDown:ze=>{(ze.key==="Enter"||ze.key===" ")&&(ze.preventDefault(),Fe(J))},className:`text-black-600 ${J===Co?"font-semibold text-black-800":""}`,children:Re},J))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:j.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Aktionen"}):v.jsx("span",{children:j.map(J=>v.jsx("button",{type:"button",onClick:()=>ft(k,J),className:"rounded-full bg-emeraldMist-500/80 px-2 py-0.5 text-white transition hover:bg-emeraldMist-500/90 focus:outline-none focus:ring-2 focus:ring-emeraldMist-400 cursor-pointer",title:"Filter entfernen",children:J},J))})})]}),v.jsxs("div",{className:"grid gap-3",children:[v.jsx(W.Select,{multiple:!0,onChange:ye,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Status",children:$r.map(({value:J,label:Re})=>v.jsx(Qa,{value:J,onClick:()=>Qe(J),onKeyDown:ze=>{(ze.key==="Enter"||ze.key===" ")&&(ze.preventDefault(),Qe(J))},className:`text-black-600 ${J===Co?"font-semibold text-black-800":""}`,children:Re},J))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:N.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Status"}):v.jsx("span",{children:N.map(J=>v.jsx("button",{type:"button",onClick:()=>ft(A,J),className:"rounded-full bg-copperRust-600/80 px-2 py-0.5 text-white transition hover:bg-copperRust-600/90 focus:outline-none focus:ring-2 focus:ring-copperRust-400 cursor-pointer",title:"Filter entfernen",children:J},J))})})]})]}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsxs("div",{className:"grid gap-3",children:[v.jsx(W.Select,{multiple:!0,onChange:ye,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Entitäts-Typen",children:rr.map(({value:J,label:Re})=>v.jsx(Qa,{value:J,onClick:()=>ke(J),onKeyDown:ze=>{(ze.key==="Enter"||ze.key===" ")&&(ze.preventDefault(),ke(J))},className:`text-black-600 ${J===Co?"font-semibold text-black-800":""}`,children:Re},J))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:M.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Entitäten"}):v.jsx("span",{children:M.map(J=>v.jsx("button",{type:"button",onClick:()=>ft(D,J),className:"rounded-full bg-indigo-600/80 px-2 py-0.5 text-white transition hover:bg-indigo-600/90 focus:outline-none focus:ring-2 focus:ring-indigo-400 cursor-pointer",title:"Filter entfernen",children:J},J))})})]}),v.jsxs("div",{className:"grid gap-3",children:[v.jsx(W.Select,{multiple:!0,onChange:ye,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Kontext",children:Hn.map(({value:J,label:Re})=>v.jsx(Qa,{value:J,onClick:()=>bt(J),onKeyDown:ze=>{(ze.key==="Enter"||ze.key===" ")&&(ze.preventDefault(),bt(J))},className:`text-black-600 ${J===Co?"font-semibold text-black-800":""}`,children:Re},J))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:L.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Kontexte"}):v.jsx("span",{children:L.map(J=>v.jsx("button",{type:"button",onClick:()=>ft(z,J),className:"rounded-full bg-sunsetCoral-600/80 px-2 py-0.5 text-white transition hover:bg-sunsetCoral-600/90 focus:outline-none focus:ring-2 focus:ring-sunsetCoral-400 cursor-pointer",title:"Filter entfernen",children:J},J))})})]})]}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(W.Input,{value:V,onChange:J=>{Y(J.target.value),je(1)},variant:"static",label:"Entitäts-ID",placeholder:"z. B. Stack-ID"})}),v.jsx("div",{className:"md:flex-1",children:v.jsx(W.Input,{value:q,onChange:J=>{B(J.target.value),je(1)},variant:"static",label:"Kontext-ID",placeholder:"z. B. Server-ID"})})]}),v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(W.Input,{value:H,onChange:J=>{K(J.target.value),je(1)},variant:"static",label:"Suche (Nachricht & Details)",placeholder:"Freitext"})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(W.Select,{variant:"static",label:"Einträge pro Seite",onChange:ye,value:rt,children:yt.map(({value:J,label:Re})=>v.jsx(W.Option,{value:J,onClick:()=>oe(J),children:Re},J))})})]}),v.jsxs("div",{className:"flex flex-col md:flex-row flex-wrap gap-4",children:[v.jsx("div",{className:"flex-1 min-w-[200px]",children:v.jsx(W.Input,{type:"datetime-local",variant:"static",label:"Von",value:X,onChange:J=>{re(J.target.value),je(1)},className:"w-full"})}),v.jsx("div",{className:"flex-1 min-w-[200px]",children:v.jsx(W.Input,{type:"datetime-local",variant:"static",label:"Bis",value:me,onChange:J=>{de(J.target.value),je(1)},className:"w-full"})}),v.jsx("div",{className:"flex-1 min-w-[180px]",children:v.jsx(W.Button,{onClick:At,disabled:tt||i||r,className:"w-full",children:"Zurücksetzen"})})]})]})]}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50",children:v.jsxs("table",{className:"w-full min-w-[860px] table-auto text-left",children:[v.jsx("thead",{children:v.jsx("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:["Zeitpunkt","Kategorie","Status","Entität","Kontext","Nachricht","Details","Aktionen"].map(J=>v.jsx("th",{className:"px-6 py-4 font-semibold",children:J},J))})}),v.jsx("tbody",{children:r?v.jsx("tr",{children:v.jsx("td",{colSpan:8,className:"px-6 py-8 text-center text-stormGrey-400",children:"Logs werden geladen ..."})}):e.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:8,className:"px-6 py-8 text-center text-stormGrey-400",children:"Keine Logs gefunden."})}):e.map((J,Re)=>{const ze=oV[J.status]||"text-blue-300",Ut=Re===e.length-1?"":"border-b border-blue-gray-50",Nt=J.category||"-",Et=J.entityName||J.entityId||"-",Ht=[];J.entityName&&J.entityId?Ht.push(`ID: ${J.entityId}`):!J.entityName&&J.entityId&&Ht.push(`ID: ${J.entityId}`),J.entityType&&Ht.push(J.entityType);const qt=J.contextLabel||J.contextType||(J.contextId?`#${J.contextId}`:"-"),Pt=[];J.contextType&&Pt.push(J.contextType),J.contextId&&Pt.push(`#${J.contextId}`);const Xr=uV(J.metadata),mr=[];if(J.actorName||J.actorId){const dr=J.actorName?J.actorName:`#${J.actorId}`,On=J.actorName&&J.actorId?` (#${J.actorId})`:"";mr.push(`Akteur: ${dr}${On}`)}return J.source&&mr.push(`Quelle: ${J.source}`),Xr&&mr.push(Xr),mr.length||mr.push("-"),v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${Ut}`,children:[v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsx(W.Typography,{variant:"small",className:"block text-xs font-medium text-stormGrey-600",children:aV(J.timestamp)})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsxs("div",{className:"flex flex-col gap-2",children:[v.jsx("span",{className:"font-medium",children:Nt}),v.jsxs("div",{className:"flex flex-wrap gap-2 text-xs text-stormGrey-400",children:[J.eventType&&v.jsx("span",{className:"rounded-full bg-citrusPunch-600/80 px-2 py-0.5 text-white",children:J.eventType}),J.action&&v.jsx("span",{className:"rounded-full bg-emeraldMist-500/80 px-2 py-0.5 text-white",children:J.action})]})]})}),v.jsxs("td",{className:"px-6 py-4 align-top",children:[v.jsx(W.Typography,{variant:"small",className:`font-semibold ${ze}`,children:J.status||"-"}),J.severity&&v.jsx(W.Typography,{variant:"small",className:"text-xs text-stormGrey-400",children:J.severity})]}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsx("span",{className:"font-medium break-words",children:Et}),Ht.length>0&&v.jsx("div",{className:"flex flex-col text-xs text-stormGrey-400",children:Ht.map(dr=>v.jsx("span",{className:"break-words",children:dr},dr))})]})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsx("span",{className:"font-medium break-words",children:qt}),Pt.length>0&&v.jsx("div",{className:"flex flex-col text-xs text-stormGrey-400",children:Pt.map(dr=>v.jsx("span",{className:"break-words",children:dr},dr))})]})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsx(W.Typography,{variant:"small",className:"break-words",children:J.message||"-"})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsx("div",{className:"flex flex-col gap-1 text-xs text-stormGrey-500",children:mr.map((dr,On)=>v.jsx("span",{className:"break-words",children:dr},On))})}),v.jsx("td",{className:"px-6 py-4 align-top",children:it&&v.jsx(W.Typography,{variant:"small",children:v.jsx("button",{onClick:()=>_r(J.id),disabled:tt||i,className:"rounded-md border border-sunsetCoral-600 px-3 py-1 text-xs text-sunsetCoral-800 transition hover:bg-sunsetCoral-600/20 disabled:opacity-60",children:"Löschen"})})})]},J.id)})})]})}),v.jsxs("div",{className:"mt-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(W.Typography,{variant:"small",color:"gray",children:""}),v.jsx(ju,{disabled:r&&e.length===0})]})]})]})]})}const dV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},fV=e=>Array.isArray(e)?e.map(t=>{if(t&&typeof t=="object"){const r=Number(t.id),n=typeof t.name=="string"?t.name:"";return n?{id:Number.isFinite(r)?r:null,name:n}:null}if(typeof t=="string"){const r=t.trim();return r?{id:null,name:r}:null}return null}).filter(Boolean):[];function pV(){const[e,t]=P.useState([]),[r,n]=P.useState(!1),[o,a]=P.useState(""),[i,u]=P.useState(""),[f,g]=P.useState([]),[m,S]=P.useState(!1),[O,T]=P.useState(""),[C,w]=P.useState(""),[b,d]=P.useState(""),[s,c]=P.useState(""),[l,h]=P.useState(""),[y,x]=P.useState(""),[j,k]=P.useState(!1),[N,A]=P.useState(null),[M,D]=P.useState(null),{showToast:L}=Ci(),{maintenance:z,update:V}=ea(),Y=!!(z!=null&&z.active),q=z==null?void 0:z.message,B=!!(V!=null&&V.running),H=V!=null&&V.stage?dV[V.stage]??V.stage:"–",K=Y||B,X=$n(),re=P.useCallback(()=>{},[]),{hasPermission:me}=Wr(),de=me("users-edit","full"),ee=me("users-delete","full"),{page:_e,perPage:he,perPageOptions:pe,perPageIsAll:be,handlePerPageChange:ve,setPage:Ce,setTotals:Ae,resetPagination:Ne}=Bs();P.useEffect(()=>()=>Ne(),[Ne]);const ue=P.useCallback(async()=>{var te,ye,ie;n(!0),a("");try{const se=await Je.get("/api/users"),Oe=(Array.isArray((te=se.data)==null?void 0:te.items)?se.data.items:[]).map(xe=>({id:xe.id,username:xe.username||"",email:xe.email||"",isActive:!!xe.isActive,avatarColor:typeof xe.avatarColor=="string"?xe.avatarColor.trim():null,lastLogin:xe.lastLogin||null,createdAt:xe.createdAt||null,updatedAt:xe.updatedAt||null,groups:fV(xe.groups)})).sort((xe,Ue)=>xe.username.localeCompare(Ue.username,"de-DE"));t(Oe)}catch(se){const fe=((ie=(ye=se.response)==null?void 0:ye.data)==null?void 0:ie.error)||se.message||"Unbekannter Fehler";a(fe),L({variant:"error",title:"Benutzer konnten nicht geladen werden",description:fe})}finally{n(!1)}},[L]),Ee=P.useCallback(async()=>{var te,ye,ie;S(!0),T("");try{const se=await Je.get("/api/groups"),Oe=(Array.isArray((te=se.data)==null?void 0:te.items)?se.data.items:[]).map(xe=>({id:Number(xe.id),name:xe.name||""})).filter(xe=>Number.isFinite(xe.id)&&xe.id>0&&xe.name).filter(xe=>xe.name.toLowerCase()!=="superuser").sort((xe,Ue)=>xe.name.localeCompare(Ue.name,"de-DE"));g(Oe)}catch(se){const fe=((ie=(ye=se.response)==null?void 0:ye.data)==null?void 0:ie.error)||se.message||"Benutzergruppen konnten nicht geladen werden.";T(fe),L({variant:"error",title:"Benutzergruppen",description:fe})}finally{S(!1)}},[L]);P.useEffect(()=>{ue()},[ue]),P.useEffect(()=>{Ee()},[Ee]),P.useCallback(()=>{ue(),Ee()},[ue,Ee]);const $e=P.useCallback(te=>{u(te.target.value)},[]);P.useCallback(()=>{u("")},[]),P.useEffect(()=>{_e!==1&&Ce(1)},[i,_e,Ce]);const Ge=P.useMemo(()=>{const te=i.trim().toLowerCase();return te?e.filter(ye=>[ye.username,ye.email,...ye.groups.map(se=>se.name)].map(se=>String(se||"").toLowerCase()).some(se=>se.includes(te))):e},[e,i]),tt=P.useMemo(()=>{if(be)return null;const te=Number(he);return Number.isFinite(te)&&te>0?te:null},[he,be]),ct=P.useMemo(()=>{if(be||!tt)return Ge;const te=(_e-1)*tt;return Ge.slice(te,te+tt)},[Ge,_e,be,tt]),qe=Ge.length,it=ct.length;P.useEffect(()=>{if(be){Ae(qe,qe),_e!==1&&Ce(1);return}const te=Number(he);if(!Number.isFinite(te)||te<=0){Ae(qe,qe);return}const ye=Math.max(1,Math.ceil(qe/te));if(_e>ye){Ce(ye);return}Ae(qe,it)},[qe,it,_e,he,be,Ce,Ae]);const mt=P.useCallback(te=>{if(!te)return"–";const ye=typeof te=="string"?te.replace(" ","T"):te,ie=new Date(ye);return Number.isNaN(ie.getTime())?te:new Intl.DateTimeFormat("de-DE",{dateStyle:"short",timeStyle:"short"}).format(ie)},[]),We=P.useCallback(()=>{w(""),d(""),c(""),h(""),x("")},[]),rt=P.useCallback(async te=>{var fe,Oe;if(K||!(te!=null&&te.id)||!ee)return;if(Array.isArray(te==null?void 0:te.groups)?te.groups.some(xe=>((xe==null?void 0:xe.name)||"").toLowerCase()==="superuser"):!1){L({variant:"error",title:"Löschen nicht möglich",description:"Der Superuser kann nicht gelöscht werden."});return}if(!window.confirm(`Benutzer "${te.username}" wirklich löschen?`))return;const se=Number(te.id);if(!Number.isFinite(se)||se<=0){L({variant:"error",title:"Löschen fehlgeschlagen",description:"Ungültige Benutzer-ID."});return}A(se);try{await Je.delete(`/api/users/${se}`),L({variant:"success",title:"Benutzer gelöscht",description:`Der Benutzer "${te.username}" wurde entfernt.`}),ue()}catch(xe){const Ue=(Oe=(fe=xe.response)==null?void 0:fe.data)==null?void 0:Oe.error;let Fe="Der Benutzer konnte nicht gelöscht werden.";Ue==="INVALID_USER_ID"?Fe="Die Benutzer-ID ist ungültig.":Ue==="USER_NOT_FOUND"?Fe="Der Benutzer wurde bereits entfernt.":Ue==="USER_SUPERUSER_PROTECTED"&&(Fe="Der Superuser kann nicht gelöscht werden."),L({variant:"error",title:"Löschen fehlgeschlagen",description:Fe})}finally{A(null)}},[K,ee,L,ue]),yt=P.useCallback(async te=>{var fe,Oe;if(!(te!=null&&te.id)||!de)return;if(K){L({variant:"error",title:"Aktion nicht möglich",description:"Im Wartungsmodus oder während eines Updates sind Statusänderungen gesperrt."});return}if((Array.isArray(te==null?void 0:te.groups)?te.groups.some(xe=>((xe==null?void 0:xe.name)||"").toLowerCase()==="superuser"):!1)&&te.isActive){L({variant:"error",title:"Änderung nicht möglich",description:"Der Superuser kann nicht deaktiviert werden."});return}const ie=Number(te.id);if(!Number.isFinite(ie)||ie<=0){L({variant:"error",title:"Statusänderung fehlgeschlagen",description:"Ungültige Benutzer-ID."});return}const se=!te.isActive;D(ie);try{await Je.put(`/api/users/${ie}/active`,{isActive:se}),ue(),L({variant:"success",title:"Status aktualisiert",description:`Der Benutzer wurde ${se?"aktiviert":"deaktiviert"}.`})}catch(xe){const Ue=(Oe=(fe=xe.response)==null?void 0:fe.data)==null?void 0:Oe.error;let Fe="Der Benutzerstatus konnte nicht geändert werden.";Ue==="INVALID_USER_ID"?Fe="Die Benutzer-ID ist ungültig.":Ue==="USER_NOT_FOUND"?Fe="Der Benutzer wurde nicht gefunden.":Ue==="USER_SUPERUSER_PROTECTED"&&(Fe="Der Superuser kann nicht deaktiviert werden."),L({variant:"error",title:"Statusänderung fehlgeschlagen",description:Fe})}finally{D(null)}},[K,de,L,ue]),je=P.useCallback(async()=>{var ie,se,fe,Oe;if(K){x("Im Wartungsmodus oder während eines Updates können keine Benutzer angelegt werden.");return}if(!de){x("Du verfügst nicht über die Berechtigung zum Anlegen von Benutzern.");return}const te=C.trim();if(!te){x("Benutzername ist erforderlich.");return}const ye=typeof s=="string"?s.trim():"";if(ye.length<8){x("Passwort muss mindestens 8 Zeichen enthalten.");return}if(!l){x("Bitte eine globale Rolle auswählen.");return}k(!0),x("");try{const xe={username:te,password:ye,groupId:Number(l)},Ue=b.trim();Ue&&(xe.email=Ue);const Fe=await Je.post("/api/users",xe);We(),ue(),L({variant:"success",title:"Benutzer angelegt",description:`Der Benutzer "${((se=(ie=Fe.data)==null?void 0:ie.item)==null?void 0:se.username)??te}" wurde erstellt.`})}catch(xe){const Ue=(Oe=(fe=xe.response)==null?void 0:fe.data)==null?void 0:Oe.error;let Fe="Benutzer konnte nicht angelegt werden.";switch(Ue){case"USERNAME_REQUIRED":Fe="Benutzername ist erforderlich.";break;case"INVALID_EMAIL":Fe="Bitte eine gültige E-Mail-Adresse angeben.";break;case"INVALID_PASSWORD":case"PASSWORD_TOO_SHORT":Fe="Passwort muss mindestens 8 Zeichen enthalten.";break;case"INVALID_GROUP_ID":case"GROUP_NOT_FOUND":Fe="Bitte eine gültige globale Rolle auswählen.";break;case"USERNAME_TAKEN":Fe="Benutzername wird bereits verwendet.";break;case"EMAIL_TAKEN":Fe="E-Mail-Adresse wird bereits verwendet.";break}x(Fe),L({variant:"error",title:"Erstellen fehlgeschlagen",description:Fe})}finally{k(!1)}},[K,de,C,b,s,l,L,We,ue]),Ke=f.length>0,Te=K||j||m||!Ke,oe=K||j||m||!Ke,ge=P.useCallback(te=>{if(te&&te.props&&te.props.children)return te.props.children;if(!l)return"Bitte auswählen";const ye=f.find(ie=>String(ie.id)===l);return ye?ye.name:"Bitte auswählen"},[f,l]);return v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(Y||B)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",q?` – ${q}`:B?" – Portainer-Update läuft":"","."]}),B&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",H]})]})}),v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(W.Typography,{variant:"h6",color:"white",children:v.jsx("span",{children:"Benutzerverwaltung"})})}),v.jsxs(W.CardBody,{className:"pt-0",children:[de&&v.jsxs("div",{className:"mb-8 rounded-lg border border-blue-gray-100 bg-white p-4 shadow-sm",children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-2",children:"Neuen Benutzer anlegen"}),Ke?v.jsxs(v.Fragment,{children:[v.jsx(W.Typography,{variant:"small",className:"text-sm text-stormGrey-500 mb-4",children:"Benutzername, Passwort (mindestens 8 Zeichen) und eine globale Rolle sind Pflichtfelder."}),y&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:y}),O&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:O}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsx(W.Input,{label:"Benutzername",value:C,onChange:te=>w(te.target.value),disabled:K||j,crossOrigin:""}),v.jsx(W.Input,{label:"E-Mail (optional)",value:b,onChange:te=>d(te.target.value),disabled:K||j,crossOrigin:""}),v.jsx(W.Input,{type:"password",label:"Passwort",value:s,onChange:te=>c(te.target.value),disabled:K||j,crossOrigin:""}),v.jsxs(W.Select,{label:"Globale Rolle",variant:"outlined",value:l,onChange:h,disabled:oe,selected:ge,children:[v.jsx(W.Option,{value:"",children:"Bitte auswählen"}),f.map(te=>v.jsx(W.Option,{value:String(te.id),children:te.name},te.id))]})]}),v.jsx("div",{className:"mt-4 text-sm text-stormGrey-500",children:m?"Benutzergruppen werden geladen ...":""}),v.jsxs("div",{className:"mt-4 flex flex-col gap-3 sm:flex-row sm:items-center",children:[v.jsx(W.Button,{color:"green",onClick:je,disabled:Te,children:j?"Speichert ...":"Benutzer anlegen"}),v.jsx(W.Button,{variant:"text",color:"blue-gray",onClick:We,disabled:j||K,children:"Formular zurücksetzen"})]})]}):v.jsx("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:"Es existiert keine verfügbare Benutzergruppe. Bitte lege zuerst eine Gruppe an."})]}),v.jsx("div",{className:"mb-8",children:v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between mt-8",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(W.Input,{label:"Suchen nach Name, E-Mail oder Gruppe",value:i,onChange:$e,disabled:r&&!e.length,crossOrigin:""})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(W.Select,{variant:"static",label:"Einträge pro Seite",onChange:re,value:he,children:pe.map(({value:te,label:ye})=>v.jsx(W.Option,{value:te,children:ye},te))})})]})}),o&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:o}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50",children:v.jsxs("table",{className:"w-full min-w-[720px] table-auto text-left",children:[v.jsx("thead",{children:v.jsxs("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:[v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Benutzername"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"E-Mail"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Gruppen"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Status"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Letzte Anmeldung"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Erstellt am"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Aktionen"})]})}),v.jsx("tbody",{children:r&&e.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:7,className:"px-6 py-8 text-center text-blue-gray-400",children:"Benutzerdaten werden geladen ..."})}):ct.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:7,className:"px-6 py-8 text-center text-blue-gray-400",children:"Keine Benutzer gefunden."})}):ct.map((te,ye)=>{const ie=ye===ct.length-1?"":"border-b border-blue-gray-50",se=Array.isArray(te==null?void 0:te.groups)?te.groups.some(fe=>((fe==null?void 0:fe.name)||"").toLowerCase()==="superuser"):!1;return v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${ie}`,children:[v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",className:"font-medium text-stormGrey-900",children:te.username||"–"})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",children:te.email||"–"})}),v.jsx("td",{className:"px-6 py-4",children:te.groups.length>0?v.jsx("div",{className:"flex flex-wrap gap-2",children:te.groups.map(fe=>v.jsx(W.Chip,{value:fe.name,size:"sm",color:"blue-gray",variant:"ghost"},fe.id??fe.name))}):v.jsx("span",{className:"text-stormGrey-400",children:"–"})}),v.jsx("td",{className:"px-6 py-4",children:de?v.jsx("button",{type:"button",className:`inline-flex items-center rounded-full px-1 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 ${K?"cursor-not-allowed":"cursor-pointer"}`,onClick:()=>yt(te),disabled:K||M===te.id||Array.isArray(te.groups)&&te.groups.some(fe=>((fe==null?void 0:fe.name)||"").toLowerCase()==="superuser"&&te.isActive),children:v.jsx(W.Chip,{value:M===te.id?"Wechselt ...":te.isActive?"Aktiv":"Deaktiviert",size:"sm",color:te.isActive?"green":"red",variant:"ghost",className:"pointer-events-none"})}):v.jsx(W.Chip,{value:te.isActive?"Aktiv":"Deaktiviert",size:"sm",color:te.isActive?"green":"red",variant:"ghost"})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:mt(te.lastLogin)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:mt(te.createdAt)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-2",children:[v.jsx(W.Button,{size:"sm",variant:"outlined",color:"blue-gray",onClick:()=>X(`/dashboard/users/${te.id}`),children:"Details"}),ee&&!se&&v.jsx(W.Button,{size:"sm",variant:"text",color:"red",onClick:()=>rt(te),disabled:K||N===te.id,children:N===te.id?"Löscht ...":"Löschen"})]})})]},te.id)})})]})}),v.jsxs("div",{className:"mt-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(W.Typography,{variant:"small",color:"gray",children:""}),v.jsx(ju,{disabled:r&&e.length===0})]})]})]})]})}const hV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"};function gV(){const[e,t]=P.useState([]),[r,n]=P.useState(!1),[o,a]=P.useState(""),[i,u]=P.useState(""),[f,g]=P.useState(""),[m,S]=P.useState(""),[O,T]=P.useState(""),[C,w]=P.useState(!1),[b,d]=P.useState(null),{showToast:s}=Ci(),{maintenance:c,update:l}=ea(),h=!!(c!=null&&c.active),y=c==null?void 0:c.message,x=!!(l!=null&&l.running),j=l!=null&&l.stage?hV[l.stage]??l.stage:"–",k=h||x,N=$n(),{hasPermission:A}=Wr(),M=A("user-groups-edit","full"),D=A("user-groups-delete","full"),{page:L,perPage:z,perPageOptions:V,perPageIsAll:Y,handlePerPageChange:q,setPage:B,setTotals:H,resetPagination:K}=Bs();P.useEffect(()=>()=>K(),[K]);const X=P.useCallback(()=>{},[]),re=P.useCallback(async()=>{var ue,Ee,$e;n(!0),a("");try{const Ge=await Je.get("/api/groups"),ct=(Array.isArray((ue=Ge.data)==null?void 0:ue.items)?Ge.data.items:[]).map(qe=>({id:qe.id,name:qe.name||"",description:qe.description||"",avatarColor:qe.avatarColor||null,memberCount:Number(qe.memberCount)||0,members:Array.isArray(qe.members)?qe.members.map(it=>({id:it.id,username:it.username||""})).filter(it=>it.username):[],createdAt:qe.createdAt||null,updatedAt:qe.updatedAt||null})).sort((qe,it)=>qe.name.localeCompare(it.name,"de-DE"));t(ct)}catch(Ge){const tt=(($e=(Ee=Ge.response)==null?void 0:Ee.data)==null?void 0:$e.error)||Ge.message||"Unbekannter Fehler";a(tt),s({variant:"error",title:"Benutzergruppen konnten nicht geladen werden",description:tt})}finally{n(!1)}},[s]);P.useEffect(()=>{re()},[re]),P.useCallback(()=>{re()},[re]);const me=P.useCallback(ue=>{u(ue.target.value)},[]);P.useCallback(()=>{u("")},[]),P.useEffect(()=>{L!==1&&B(1)},[i,L,B]);const de=P.useMemo(()=>{const ue=i.trim().toLowerCase();return ue?e.filter(Ee=>[Ee.name,Ee.description,...Ee.members.map(Ge=>Ge.username)].map(Ge=>String(Ge||"").toLowerCase()).some(Ge=>Ge.includes(ue))):e},[e,i]),ee=P.useMemo(()=>{if(Y)return null;const ue=Number(z);return Number.isFinite(ue)&&ue>0?ue:null},[z,Y]),_e=P.useMemo(()=>{if(Y||!ee)return de;const ue=(L-1)*ee;return de.slice(ue,ue+ee)},[de,L,Y,ee]),he=de.length,pe=_e.length;P.useEffect(()=>{if(Y){H(he,he),L!==1&&B(1);return}const ue=Number(z);if(!Number.isFinite(ue)||ue<=0){H(he,he);return}const Ee=Math.max(1,Math.ceil(he/ue));if(L>Ee){B(Ee);return}H(he,pe)},[he,pe,L,z,Y,B,H]);const be=P.useCallback(ue=>{if(!ue)return"–";const Ee=typeof ue=="string"?ue.replace(" ","T"):ue,$e=new Date(Ee);return Number.isNaN($e.getTime())?ue:new Intl.DateTimeFormat("de-DE",{dateStyle:"short",timeStyle:"short"}).format($e)},[]),ve=P.useCallback(()=>{g(""),S(""),T("")},[]),Ce=P.useCallback(async()=>{var Ee,$e,Ge,tt;if(k){T("Im Wartungsmodus oder während eines Updates können keine Gruppen angelegt werden.");return}if(!M){T("Du verfügst nicht über die Berechtigung zum Anlegen von Gruppen.");return}const ue=f.trim();if(!ue){T("Gruppenname ist erforderlich.");return}w(!0),T("");try{const ct={name:ue},qe=m.trim();qe&&(ct.description=qe);const it=await Je.post("/api/groups",ct);s({variant:"success",title:"Gruppe angelegt",description:`Die Benutzergruppe "${(($e=(Ee=it.data)==null?void 0:Ee.item)==null?void 0:$e.name)??ue}" wurde erstellt.`}),ve(),re()}catch(ct){const qe=(tt=(Ge=ct.response)==null?void 0:Ge.data)==null?void 0:tt.error;let it="Benutzergruppe konnte nicht angelegt werden.";qe==="GROUP_NAME_REQUIRED"?it="Gruppenname ist erforderlich.":qe==="GROUP_NAME_TAKEN"&&(it="Der Gruppenname wird bereits verwendet."),T(it),s({variant:"error",title:"Erstellen fehlgeschlagen",description:it})}finally{w(!1)}},[k,M,f,m,s,ve,re]),Ae=k||C,Ne=P.useCallback(async ue=>{var ct,qe;if(k||!(ue!=null&&ue.id)||!D)return;if(((ue==null?void 0:ue.name)||"").toLowerCase()==="superuser"){s({variant:"error",title:"Löschen nicht möglich",description:"Die Superuser-Gruppe kann nicht gelöscht werden."});return}if((Number(ue.memberCount)||0)>0){s({variant:"error",title:"Löschen nicht möglich",description:"Die Gruppe enthält noch Benutzer. Bitte entfernen Sie diese zuerst."});return}if(!window.confirm(`Benutzergruppe "${ue.name}" wirklich löschen?`))return;const tt=Number(ue.id);if(!Number.isFinite(tt)||tt<=0){s({variant:"error",title:"Löschen fehlgeschlagen",description:"Ungültige Gruppen-ID."});return}d(tt);try{await Je.delete(`/api/groups/${tt}`),s({variant:"success",title:"Gruppe gelöscht",description:`Die Benutzergruppe "${ue.name}" wurde entfernt.`}),re()}catch(it){const mt=(qe=(ct=it.response)==null?void 0:ct.data)==null?void 0:qe.error;let We="Die Benutzergruppe konnte nicht gelöscht werden.";mt==="INVALID_GROUP_ID"?We="Die Gruppen-ID ist ungültig.":mt==="GROUP_NOT_FOUND"?We="Die Benutzergruppe wurde bereits entfernt.":mt==="GROUP_HAS_MEMBERS"?We="Die Gruppe enthält noch Benutzer. Bitte entfernen Sie diese zuerst.":mt==="GROUP_SUPERUSER_PROTECTED"&&(We="Die Superuser-Gruppe kann nicht gelöscht werden."),s({variant:"error",title:"Löschen fehlgeschlagen",description:We})}finally{d(null)}},[k,D,s,re]);return v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(h||x)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",y?` – ${y}`:x?" – Portainer-Update läuft":"","."]}),x&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",j]})]})}),v.jsxs(W.Card,{className:"border border-blue-gray-100 shadow-sm",children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(W.Typography,{variant:"h6",color:"white",children:v.jsx("span",{children:"Benutzergruppen"})})}),v.jsxs(W.CardBody,{className:"pt-0",children:[M&&v.jsxs("div",{className:"mb-8 rounded-lg border border-blue-gray-100 bg-white p-4 shadow-sm",children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-2",children:"Neue Benutzergruppe anlegen"}),v.jsx(W.Typography,{variant:"small",className:"text-sm text-stormGrey-500 mb-4",children:"Der Gruppenname ist Pflicht, die Beschreibung optional."}),O&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:O}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsx(W.Input,{label:"Gruppenname",value:f,onChange:ue=>g(ue.target.value),disabled:Ae,crossOrigin:""}),v.jsx(W.Input,{label:"Beschreibung (optional)",value:m,onChange:ue=>S(ue.target.value),disabled:Ae,crossOrigin:""})]}),v.jsxs("div",{className:"mt-4 flex flex-col gap-3 sm:flex-row sm:items-center",children:[v.jsx(W.Button,{color:"green",onClick:Ce,disabled:Ae,children:C?"Speichert ...":"Gruppe anlegen"}),v.jsx(W.Button,{variant:"text",color:"blue-gray",onClick:ve,disabled:C||k,children:"Formular zurücksetzen"})]})]}),v.jsx("div",{className:"mb-8",children:v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(W.Input,{label:"Suchen nach Name, E-Mail oder Gruppe",value:i,onChange:me,disabled:r&&!e.length,crossOrigin:""})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(W.Select,{variant:"static",label:"Einträge pro Seite",onChange:X,value:z,children:V.map(({value:ue,label:Ee})=>v.jsx(W.Option,{value:ue,children:Ee},ue))})})]})}),o&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:o}),o&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:o}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50",children:v.jsxs("table",{className:"w-full min-w-[720px] table-auto text-left",children:[v.jsx("thead",{children:v.jsxs("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:[v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Gruppenname"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Beschreibung"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Mitglieder"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Erstellt am"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Zuletzt aktualisiert"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Aktionen"})]})}),v.jsx("tbody",{children:r&&e.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:6,className:"px-6 py-8 text-center text-stormGrey-400",children:"Gruppen werden geladen ..."})}):_e.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:6,className:"px-6 py-8 text-center text-stormGrey-400",children:"Keine Gruppen gefunden."})}):_e.map((ue,Ee)=>{const $e=Ee===_e.length-1?"":"border-b border-blue-gray-50",Ge=((ue==null?void 0:ue.name)||"").toLowerCase()==="superuser";return v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${$e}`,children:[v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",className:"font-medium text-stormGrey-900",children:ue.name||"–"})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",children:ue.description?ue.description:v.jsx("span",{className:"text-stormGrey-400",children:"–"})})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:ue.memberCount.toLocaleString("de-DE")})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:be(ue.createdAt)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(W.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:be(ue.updatedAt)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-2",children:[v.jsx(W.Button,{size:"sm",variant:"outlined",color:"blue-gray",onClick:()=>N(`/dashboard/usergroups/${ue.id}`),children:"Details"}),D&&!Ge&&v.jsx(W.Button,{size:"sm",variant:"text",color:"red",onClick:()=>Ne(ue),disabled:k||b===ue.id||Number(ue.memberCount)>0,children:b===ue.id?"Löscht ...":"Löschen"})]})})]},ue.id)})})]})}),v.jsxs("div",{className:"mt-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(W.Typography,{variant:"small",color:"gray",children:!r&&e.length===0?"Noch keine Gruppen angelegt.":`${he.toLocaleString("de-DE")} Gruppen gefunden`}),v.jsx(ju,{disabled:r&&e.length===0})]})]})]})]})}const _s={chart:{toolbar:{show:!1}},title:{show:""},dataLabels:{enabled:!1},xaxis:{axisTicks:{show:!1},axisBorder:{show:!1},labels:{style:{colors:"#37474f",fontSize:"13px",fontFamily:"inherit",fontWeight:300}}},yaxis:{labels:{style:{colors:"#37474f",fontSize:"13px",fontFamily:"inherit",fontWeight:300}}},grid:{show:!0,borderColor:"#dddddd",strokeDashArray:5,xaxis:{lines:{show:!0}},padding:{top:5,right:20}},fill:{opacity:.8},tooltip:{theme:"dark"}};({..._s,xaxis:{..._s.xaxis}});({..._s,xaxis:{..._s.xaxis}});({..._s,xaxis:{..._s.xaxis}});const mV=[{title:"account",options:[{checked:!0,label:"Email me when someone follows me"},{checked:!1,label:"Email me when someone answers on my post"},{checked:!0,label:"Email me when someone mentions me"}]},{title:"application",options:[{checked:!1,label:"New launches and projects"},{checked:!0,label:"Monthly product updates"},{checked:!1,label:"Subscribe to newsletter"}]}],iN=["bg-arcticBlue-600","bg-copperRust-500","bg-sunsetCoral-600","bg-mintTea-400","bg-lavenderSmoke-500","bg-emeraldMist-500","bg-roseQuartz-500","bg-auroraTeal-500","bg-citrusPunch-500","bg-mossGreen-400"],bV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},vV=e=>Array.isArray(e)?e.map(t=>{if(t&&typeof t=="object"){const r=Number(t.id),n=typeof t.name=="string"?t.name:"";return n?{id:Number.isFinite(r)?r:null,name:n}:null}if(typeof t=="string"){const r=t.trim();return r?{id:null,name:r}:null}return null}).filter(Boolean):[],e_=e=>({id:(e==null?void 0:e.id)??null,username:(e==null?void 0:e.username)||"",email:(e==null?void 0:e.email)||"",isActive:!!(e!=null&&e.isActive),avatarColor:(e==null?void 0:e.avatarColor)||null,lastLogin:(e==null?void 0:e.lastLogin)||null,createdAt:(e==null?void 0:e.createdAt)||null,updatedAt:(e==null?void 0:e.updatedAt)||null,groups:vV(e==null?void 0:e.groups),securityPhraseDownloadedAt:(e==null?void 0:e.securityPhraseDownloadedAt)||null}),yV=e=>{if(!e||!Array.isArray(e.groups)||e.groups.length===0)return null;const t=e.groups.map(r=>Number(r.id)).find(r=>Number.isFinite(r)&&r>0);return Number.isFinite(t)?t:null},da=e=>{if(!e)return{username:"",email:"",password:"",groupId:null,avatarColor:""};const t=yV(e);return{username:e.username||"",email:e.email||"",password:"",groupId:Number.isFinite(t)?t:null,avatarColor:e.avatarColor||""}};function xV(){const{userId:e}=Cm(),{showToast:t}=Ci(),{maintenance:r,update:n}=ea(),{hasPermission:o,user:a}=Wr(),[i,u]=P.useState(null),[f,g]=P.useState(da(null)),m=P.useRef(da(null)),[S,O]=P.useState(!1),[T,C]=P.useState(""),[w,b]=P.useState(!1),[d,s]=P.useState([]),[c,l]=P.useState(!1),[h,y]=P.useState(""),[x,j]=P.useState(!1),[k,N]=P.useState(""),[A,M]=P.useState([]),[D,L]=P.useState(null),[z,V]=P.useState(!1),[Y,q]=P.useState(""),[B,H]=P.useState(!1),K=!!(r!=null&&r.active),X=r==null?void 0:r.message,re=!!(n!=null&&n.running),me=n!=null&&n.stage?bV[n.stage]??n.stage:"–",de=K||re,ee=!!(a!=null&&a.isSuperuser||o("users-edit","full")),_e=!!(a!=null&&a.isSuperuser||o("users-edit","read")),he=!!(a!=null&&a.isSuperuser||o("users-security-phrase","full")),pe=he;if(!_e)return null;const be=P.useMemo(()=>Array.isArray(i==null?void 0:i.groups)?i.groups.some(fe=>((fe==null?void 0:fe.name)||"").toLowerCase()==="superuser"):!1,[i]),ve=(a==null?void 0:a.isSuperuser)&&(i==null?void 0:i.id)&&Number(a.id)===Number(i.id),Ce=be&&!ve,Ae=P.useMemo(()=>{const fe=Number(e);return Number.isFinite(fe)?fe:null},[e]),Ne=P.useCallback(async()=>{var fe,Oe,xe,Ue;if(!Ae){C("Ungültige Benutzer-ID."),u(null),g(da(null)),m.current=da(null),b(!0);return}O(!0),C("");try{const Fe=await Je.get(`/api/users/${Ae}`),Qe=e_((fe=Fe.data)==null?void 0:fe.item);if(!Qe.id)throw new Error("USER_NOT_FOUND");u(Qe),M([]),L(Qe.securityPhraseDownloadedAt||null),q("");const ke=da(Qe);m.current={...ke},g(ke),N("")}catch(Fe){const Qe=(xe=(Oe=Fe.response)==null?void 0:Oe.data)==null?void 0:xe.error;let ke="Benutzerdetails konnten nicht geladen werden.";Qe==="USER_NOT_FOUND"?ke="Der angeforderte Benutzer wurde nicht gefunden.":Qe==="INVALID_USER_ID"?ke="Die angegebene Benutzer-ID ist ungültig.":((Ue=Fe.response)==null?void 0:Ue.status)===404&&(ke="Der angeforderte Benutzer existiert nicht."),u(null),m.current=da(null),g(da(null)),C(ke),t({variant:"error",title:"Fehler beim Laden",description:ke})}finally{O(!1),b(!0)}},[Ae,t]),ue=P.useCallback(async()=>{var fe,Oe,xe;l(!0),y("");try{const Ue=await Je.get("/api/groups"),Qe=(Array.isArray((fe=Ue.data)==null?void 0:fe.items)?Ue.data.items:[]).map(ke=>({id:Number(ke.id),name:ke.name||"",description:ke.description||"",memberCount:Number.isFinite(Number(ke.memberCount))?Number(ke.memberCount):0})).filter(ke=>Number.isFinite(ke.id)&&ke.id>0&&ke.name).sort((ke,bt)=>ke.name.localeCompare(bt.name,"de-DE"));s(Qe)}catch(Ue){const Fe=((xe=(Oe=Ue.response)==null?void 0:Oe.data)==null?void 0:xe.error)||Ue.message||"Benutzergruppen konnten nicht geladen werden.";y(Fe),t({variant:"error",title:"Benutzergruppen",description:Fe})}finally{l(!1)}},[t]);P.useEffect(()=>{Ne()},[Ne]),P.useEffect(()=>{ue()},[ue]);const Ee=P.useMemo(()=>{if(!w||!i)return!1;const fe=m.current;if(!fe)return!1;const Oe=fe.username||"",xe=f.username||"",Ue=fe.email||"",Fe=f.email||"",Qe=Number.isFinite(fe.groupId)?Number(fe.groupId):null,ke=Number.isFinite(f.groupId)?Number(f.groupId):null,bt=fe.avatarColor||"",ft=f.avatarColor||"",At=!!(f.password&&f.password.trim().length>0);return Oe!==xe||Ue!==Fe||!be&&Qe!==ke||bt!==ft||At},[f,w,i,be]),$e=P.useCallback(fe=>{var Oe;return(Oe=fe==null?void 0:fe.props)!=null&&Oe.children?fe.props.children:f.avatarColor?f.avatarColor:"Standardfarbe"},[f.avatarColor]),Ge=P.useCallback(fe=>{if(!ee)return;const{value:Oe}=fe.target;g(xe=>({...xe,username:Oe}))},[ee]),tt=P.useCallback(fe=>{if(!ee)return;const{value:Oe}=fe.target;g(xe=>({...xe,email:Oe}))},[ee]),ct=P.useCallback(fe=>{if(!ee)return;const{value:Oe}=fe.target;g(xe=>({...xe,password:Oe}))},[ee]),qe=P.useCallback(fe=>{if(!ee)return;if(!fe){g(xe=>({...xe,groupId:null}));return}const Oe=Number(fe);g(xe=>({...xe,groupId:Number.isFinite(Oe)&&Oe>0?Oe:null}))},[ee]),it=P.useCallback(fe=>{ee&&g(Oe=>({...Oe,avatarColor:fe||""}))},[ee]),mt=P.useCallback(async()=>{var fe,Oe,xe,Ue;if(!(!ee||!i||!Ee)){j(!0),N("");try{const Fe={username:f.username,email:f.email,password:f.password,avatarColor:f.avatarColor};be||(Fe.groupId=f.groupId);const Qe=await Je.put(`/api/users/${i.id}`,Fe),ke=e_(((fe=Qe.data)==null?void 0:fe.item)||((Oe=Qe.data)==null?void 0:Oe.user));u(ke);const bt=da(ke);m.current={...bt},g(bt),y(""),t({variant:"success",title:"Benutzer gespeichert",description:"Die Änderungen wurden erfolgreich gespeichert."})}catch(Fe){const Qe=(Ue=(xe=Fe.response)==null?void 0:xe.data)==null?void 0:Ue.error;let ke="Die Benutzerdaten konnten nicht gespeichert werden.";Qe==="USERNAME_REQUIRED"?ke="Bitte einen Benutzernamen angeben.":Qe==="USERNAME_TAKEN"?ke="Der Benutzername wird bereits verwendet.":Qe==="INVALID_EMAIL"?ke="Bitte eine gültige E-Mail-Adresse eingeben.":Qe==="EMAIL_TAKEN"?ke="Die E-Mail-Adresse wird bereits verwendet.":Qe==="INVALID_PASSWORD"?ke="Das Passwort ist ungültig.":Qe==="PASSWORD_TOO_SHORT"?ke="Das Passwort muss mindestens 8 Zeichen enthalten.":Qe==="INVALID_AVATAR_COLOR"?ke="Bitte eine gültige Avatar-Farbe auswählen.":Qe==="GROUP_NOT_FOUND"&&(ke="Die ausgewählte Benutzergruppe existiert nicht mehr.",y(ke)),N(ke),t({variant:"error",title:"Speichern fehlgeschlagen",description:ke})}finally{j(!1)}}},[ee,i,Ee,f,t,be]),We=P.useCallback(async()=>{var fe,Oe,xe,Ue,Fe,Qe;if(!(!he||!Ae)){V(!0),q("");try{const ke=await Je.get(`/api/users/${Ae}/security-phrase`),bt=Array.isArray((Oe=(fe=ke.data)==null?void 0:fe.item)==null?void 0:Oe.words)?ke.data.item.words:[];M(bt),L(((Ue=(xe=ke.data)==null?void 0:xe.item)==null?void 0:Ue.downloadedAt)||null)}catch(ke){const bt=(Qe=(Fe=ke.response)==null?void 0:Fe.data)==null?void 0:Qe.error;let ft="Sicherheitsschlüssel konnte nicht geladen werden.";bt==="USER_NOT_FOUND"?ft="Der Benutzer wurde nicht gefunden.":bt==="INVALID_USER_ID"?ft="Die Benutzer-ID ist ungültig.":bt==="INSUFFICIENT_PERMISSIONS"&&(ft="Keine Berechtigung zum Anzeigen des Sicherheitsschlüssels."),q(ft),M([]),L(null)}finally{V(!1)}}},[he,Ae]),rt=P.useCallback(()=>{pe&&(z||B||We())},[pe,We,B,z]),yt=P.useCallback(async()=>{var fe,Oe,xe,Ue,Fe,Qe;if(!(!pe||!Ae||de||B)){H(!0),q("");try{const ke=await Je.post(`/api/users/${Ae}/security-phrase/renew`),bt=Array.isArray((Oe=(fe=ke.data)==null?void 0:fe.item)==null?void 0:Oe.words)?ke.data.item.words:[];M(bt),L(((Ue=(xe=ke.data)==null?void 0:xe.item)==null?void 0:Ue.downloadedAt)||null),t({variant:"success",title:"Sicherheitsschlüssel erneuert",description:"Der Benutzer muss den neuen Schlüssel erneut herunterladen."})}catch(ke){const bt=(Qe=(Fe=ke.response)==null?void 0:Fe.data)==null?void 0:Qe.error;let ft="Der Sicherheitsschlüssel konnte nicht erneuert werden.";bt==="USER_NOT_FOUND"?ft="Der Benutzer wurde nicht gefunden.":bt==="INVALID_USER_ID"?ft="Die Benutzer-ID ist ungültig.":bt==="INSUFFICIENT_PERMISSIONS"&&(ft="Keine Berechtigung zum Erneuern des Sicherheitsschlüssels."),q(ft)}finally{H(!1)}}},[pe,Ae,de,B,t]),je=P.useMemo(()=>{const fe=(f.username||f.email||"").trim();return fe?fe.charAt(0).toUpperCase():"?"},[f.username,f.email]),Ke=P.useMemo(()=>f.avatarColor?f.avatarColor:(i==null?void 0:i.avatarColor)||"",[f.avatarColor,i]),Te=P.useMemo(()=>{if(!Array.isArray(A)||A.length===0)return[];const fe=[];for(let Oe=0;Oe{if(!D)return{text:"Noch nicht heruntergeladen",tone:"text-red-500"};const fe=new Date(D);return Number.isNaN(fe.getTime())?{text:"Zuletzt heruntergeladen: unbekannt",tone:"text-blue-gray-500"}:{text:`Zuletzt heruntergeladen: ${fe.toLocaleString("de-DE")}`,tone:"text-blue-gray-500"}},[D]),ge=P.useMemo(()=>Array.isArray(d)?d.filter(fe=>((fe==null?void 0:fe.name)||"").toLowerCase()!=="superuser"):[],[d]);P.useEffect(()=>{if(be)return;const fe=f.groupId?Number(f.groupId):null;ge.some(xe=>Number(xe.id)===fe)||g(xe=>({...xe,groupId:null}))},[ge,f.groupId,be]),P.useEffect(()=>{if(w){if(!he||!Ae){M([]),L(null),q(""),V(!1);return}We()}},[w,he,We,Ae]);const te=de||x||!i||!ee,ye=de||x||!i||c||!ee||be,ie=de||x||!i||!ee||Ce,se=f.groupId?String(f.groupId):"";return v.jsx(v.Fragment,{children:v.jsxs("div",{className:"mt-12 flex flex-col gap-12",children:[(K||re)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",X?` – ${X}`:re?" – Portainer-Update läuft":"","."]}),re&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",me]})]})}),v.jsx("div",{className:"relative h-72 w-full overflow-hidden rounded-xl bg-[url('/img/background-image.png')] bg-cover\\tbg-center",children:v.jsx("div",{className:"absolute inset-0 h-full w-full bg-gray-900/75"})}),v.jsx(W.Card,{className:"mx-3 -mt-16 mb-6 lg:mx-4 border border-blue-gray-100",children:v.jsxs(W.CardBody,{className:"p-4",children:[v.jsxs("div",{className:"mb-10 flex flex-wrap items-center justify-between gap-6",children:[v.jsxs("div",{className:"flex items-center gap-6",children:[v.jsx("div",{className:`text-black flex h-[74px] w-[74px] items-center justify-center rounded-xl text-3xl font-semibold uppercase shadow-lg shadow-blue-gray-500/40 ${Ke}`,"aria-label":f.username||"Benutzeravatar",children:je}),v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:f.username||"–"}),v.jsx(W.Typography,{className:"text-xs font-semibold tracking-wide text-stormGrey-400",children:f.email||"–"})]})]}),Ee&&v.jsx(W.Button,{color:"green",className:"normal-case",onClick:mt,disabled:de||x,children:x?"Speichert ...":"Änderungen speichern"})]}),S&&!i&&v.jsxs("div",{className:"mb-6 flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(W.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Benutzerdaten werden geladen ..."})]}),T&&!S&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:T}),k&&!S&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:k}),v.jsxs("div",{className:"grid-cols-1 mb-12 grid gap-12 px-4 lg:grid-cols-2 xl:grid-cols-3",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Allgemeine Einstellungen"}),be&&v.jsxs("div",{className:"mb-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:["Systemgruppe – Name und Beschreibung sind geschützt.",Ce&&v.jsx("span",{className:"mt-1 block text-xs text-amber-600",children:"Nur der Superuser selbst kann Benutzername, E-Mail-Adresse und Passwort ändern."})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Benutzername"}),v.jsx(W.Input,{value:f.username,onChange:Ge,placeholder:"Benutzername",disabled:te||Ce,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"E-Mail-Adresse"}),v.jsx(W.Input,{type:"email",value:f.email,onChange:tt,placeholder:"benutzer@example.com",disabled:te||Ce,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Neues Passwort"}),v.jsx(W.Input,{type:"password",value:f.password,onChange:ct,placeholder:"Passwort setzen",disabled:te||Ce,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}}),v.jsx(W.Typography,{className:"mt-1 text-xs text-blue-gray-400",children:"Das Passwort wird nur geändert, wenn ein neuer Wert eingetragen wird."})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Globale Rolle"}),be?v.jsx(W.Typography,{className:"block text-xs font-semibold uppercase text-blue-gray-500",children:"Die Rolle für den Superuser kann nicht geändert werden."}):c&&d.length===0?v.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(W.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Benutzergruppen werden geladen ..."})]}):ge.length===0?v.jsx(W.Typography,{className:"block text-xs font-semibold uppercase text-blue-gray-500",children:"Es sind keine weiteren Benutzergruppen vorhanden. Bitte lege zunächst eine neue Gruppe an."}):v.jsx(W.Select,{label:"Benutzergruppe wählen",value:se,onChange:qe,disabled:ye,variant:"outlined",children:ge.map(fe=>v.jsx(W.Option,{value:String(fe.id),children:fe.name},fe.id))})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Avatar-Farbe"}),v.jsxs(W.Select,{label:"Avatar-Farbe auswählen",variant:"outlined",value:f.avatarColor,onChange:it,disabled:ie,selected:$e,children:[v.jsx(W.Option,{value:"",children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:"h-4 w-4 rounded border border-blue-gray-100"}),v.jsx("span",{className:"text-xs",children:"Keine"})]})}),iN.map(fe=>v.jsx(W.Option,{value:fe,children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:`h-4 w-4 rounded border border-blue-gray-100 ${fe}`}),v.jsx("span",{className:"text-xs",children:fe})]})},fe))]})]})]}),v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-3",children:"Platform Settings"}),v.jsx("div",{className:"flex flex-col gap-12",children:mV.map(({title:fe,options:Oe})=>v.jsxs("div",{children:[v.jsx(W.Typography,{className:"mb-4 block text-xs font-semibold uppercase text-blue-gray-500",children:fe}),v.jsx("div",{className:"flex flex-col gap-6",children:Oe.map(({checked:xe,label:Ue})=>v.jsx(W.Switch,{id:Ue,label:Ue,defaultChecked:xe,labelProps:{className:"text-sm font-normal text-blue-gray-500"}},Ue))})]},fe))})]})]}),he&&v.jsxs("div",{className:"mt-10 border-t border-blue-gray-50 pt-8",children:[v.jsxs("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-4",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",children:"Sicherheitsschlüssel"}),v.jsx(W.Typography,{className:`text-sm ${oe.tone}`,children:oe.text})]}),v.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[v.jsx(W.Button,{variant:"outlined",color:"blue",className:"normal-case",onClick:rt,disabled:!pe||de||z||B,children:"Aktualisieren"}),v.jsx(W.Button,{color:"red",className:"normal-case",onClick:yt,disabled:!pe||de||z||B,children:B?"Erneuert ...":"Schlüssel erneuern"})]})]}),z?v.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(W.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Sicherheitsschlüssel wird geladen ..."})]}):Y?v.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700",children:[v.jsx("span",{children:Y}),v.jsx(W.Button,{variant:"text",size:"sm",color:"red",className:"normal-case",onClick:rt,disabled:!pe||de||z||B,children:"Erneut laden"})]}):Te.length>0?v.jsx("div",{className:"rounded-lg border border-blue-gray-100 bg-blue-gray-50/60 p-4",children:v.jsx("div",{className:"space-y-2 text-center font-mono text-base tracking-wide text-blue-gray-900 md:text-lg",children:Te.map((fe,Oe)=>v.jsx("div",{className:"flex flex-wrap items-center justify-center gap-4",children:fe.map((xe,Ue)=>v.jsx("span",{className:"uppercase",children:xe},`security-phrase-${Oe}-${Ue}`))},`security-phrase-row-${Oe}`))})}):v.jsx(W.Typography,{className:"text-sm text-blue-gray-500",children:"Kein Sicherheitsschlüssel verfügbar."}),v.jsx(W.Typography,{className:"mt-3 text-sm text-blue-gray-500",children:"Nach dem Erneuern muss der Benutzer den neuen Sicherheitsschlüssel erneut herunterladen."})]})]})})]})})}const wV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},t_=e=>({id:(e==null?void 0:e.id)??null,name:(e==null?void 0:e.name)||"",description:(e==null?void 0:e.description)||"",avatarColor:(e==null?void 0:e.avatarColor)||null,createdAt:(e==null?void 0:e.createdAt)||null,updatedAt:(e==null?void 0:e.updatedAt)||null,memberCount:Number.isFinite(Number(e==null?void 0:e.memberCount))?Number(e.memberCount):0,members:Array.isArray(e==null?void 0:e.members)?e.members.map(t=>({id:(t==null?void 0:t.id)??null,username:(t==null?void 0:t.username)||""})).filter(t=>t.username):[]}),fa=e=>e?{name:e.name||"",description:e.description||"",avatarColor:e.avatarColor||""}:{name:"",description:"",avatarColor:""},Ih=[{value:"full",label:"Vollzugriff"},{value:"read",label:"Nur lesen"},{value:"none",label:"Kein Zugriff"}],Sc={none:0,read:1,full:2},Dh=(e,t)=>e==="maintenance-server-delete"&&t!=="full"?"none":t;function _V(){const{groupId:e}=Cm(),{showToast:t}=Ci(),{maintenance:r,update:n}=ea(),{hasPermission:o,user:a}=Wr(),[i,u]=P.useState(null),[f,g]=P.useState(fa(null)),m=P.useRef(fa(null)),[S,O]=P.useState({}),[T,C]=P.useState(!1),[w,b]=P.useState(""),[d,s]=P.useState(!1),[c,l]=P.useState(!1),[h,y]=P.useState(""),[x,j]=P.useState([]),[k,N]=P.useState({}),[A,M]=P.useState({}),[D,L]=P.useState(!1),[z,V]=P.useState(""),Y=!!(r!=null&&r.active),q=r==null?void 0:r.message,B=!!(n!=null&&n.running),H=n!=null&&n.stage?wV[n.stage]??n.stage:"–",K=Y||B,X=P.useMemo(()=>((i==null?void 0:i.name)||"").toLowerCase()==="superuser",[i]),re=!!(a!=null&&a.isSuperuser),me=!!(re||o("user-groups-edit","full")),de=!!(re||o("user-groups-edit","read")),ee=!!(re||o("user-groups-edit","full")),_e=X&&!re,he=P.useMemo(()=>{const Te=Number(e);return Number.isFinite(Te)?Te:null},[e]),pe=P.useCallback(async Te=>{var ge,te,ye,ie;const oe=Number(Te);if(!Number.isFinite(oe)||oe<=0){j([]),N({}),M({}),V(""),O({}),L(!1);return}L(!0),V("");try{const se=await Je.get(`/api/groups/${oe}/permissions`),fe=Array.isArray((ge=se.data)==null?void 0:ge.sections)?se.data.sections:[],Oe=(te=se.data)!=null&&te.values&&typeof se.data.values=="object"?se.data.values:{},xe={},Ue={},Fe=(ke,bt)=>{if(!ke||typeof ke!="object")return null;const ft=ke.key||"",At=typeof ke.defaultLevel=="string"&&ke.defaultLevel?ke.defaultLevel:"none";xe[ft]=At;const It=Oe[ft];let xt=typeof It=="string"&&It?It:At;const Rt=Array.isArray(ke.availableLevels)&&ke.availableLevels.length?ke.availableLevels:Ih.map(ur=>ur.value);Rt.includes(xt)||(xt=At),Ue[ft]=xt;const Er=Array.isArray(ke.dependencies)?ke.dependencies:[];return{...ke,availableLevels:Rt,dependencies:Er,sortOrder:typeof ke.sortOrder=="number"?ke.sortOrder:bt}},Qe=fe.map((ke,bt)=>{const ft=Array.isArray(ke.items)?ke.items.map((It,xt)=>Fe(It,xt)).filter(Boolean):[],At=Array.isArray(ke.groups)?ke.groups.map((It,xt)=>{const Rt=Array.isArray(It.items)?It.items.map((Er,ur)=>Fe(Er,ur)).filter(Boolean):[];return{...It,sortOrder:typeof It.sortOrder=="number"?It.sortOrder:xt,items:Rt}}):[];return{...ke,sortOrder:typeof ke.sortOrder=="number"?ke.sortOrder:bt,hasNavigation:!!ke.hasNavigation,items:ft,groups:At}});j(Qe),M(xe),N({...Ue}),O({...Ue})}catch(se){let fe="Die Berechtigungen konnten nicht geladen werden.";((ie=(ye=se.response)==null?void 0:ye.data)==null?void 0:ie.error)==="GROUP_NOT_FOUND"&&(fe="Die angeforderte Benutzergruppe wurde nicht gefunden."),V(fe),j([]),N({}),M({}),O({}),t({variant:"error",title:"Fehler beim Laden",description:fe})}finally{L(!1)}},[t]),be=P.useCallback(async()=>{var Te,oe,ge,te;if(!he){b("Ungültige Gruppen-ID."),u(null),g(fa(null)),m.current=fa(null),j([]),N({}),M({}),V(""),s(!0);return}C(!0),b("");try{const ye=await Je.get(`/api/groups/${he}`),ie=t_((Te=ye.data)==null?void 0:Te.item);if(!ie.id)throw new Error("GROUP_NOT_FOUND");u(ie);const se=fa(ie);m.current={...se},g(se),y(""),(ie.name||"").toLowerCase()==="superuser"?(j([]),N({}),M({}),V(""),O({}),L(!1)):de?pe(ie.id):(j([]),N({}),M({}),V(""),O({}),L(!1))}catch(ye){const ie=(ge=(oe=ye.response)==null?void 0:oe.data)==null?void 0:ge.error;let se="Gruppendetails konnten nicht geladen werden.";ie==="GROUP_NOT_FOUND"?se="Die angeforderte Benutzergruppe wurde nicht gefunden.":ie==="INVALID_GROUP_ID"?se="Die angegebene Gruppen-ID ist ungültig.":((te=ye.response)==null?void 0:te.status)===404&&(se="Die angeforderte Benutzergruppe existiert nicht."),u(null),m.current=fa(null),g(fa(null)),j([]),N({}),M({}),V(""),L(!1),b(se),t({variant:"error",title:"Fehler beim Laden",description:se})}finally{C(!1),s(!0)}},[he,t,pe,de]);P.useEffect(()=>{be()},[be]);const ve=P.useMemo(()=>{if(!d||!i)return!1;const Te=m.current;if(!Te)return!1;const oe=Te.name||"",ge=f.name||"",te=Te.description||"",ye=f.description||"",ie=Te.avatarColor||"",se=f.avatarColor||"";return oe!==ge||te!==ye||ie!==se},[f,d,i]),Ce=P.useMemo(()=>{if(X)return!1;const Te=S||{},oe=k||{},ge=new Set([...Object.keys(Te),...Object.keys(oe)]);for(const te of ge){const ye=Te[te]??null,ie=oe[te]??null;if(ye!==ie)return!0}return!1},[k,S,X]),Ae=P.useMemo(()=>ve||Ce,[ve,Ce]),Ne=P.useCallback(Te=>{const{value:oe}=Te.target;g(ge=>({...ge,name:oe}))},[]),ue=P.useCallback(Te=>{const{value:oe}=Te.target;g(ge=>({...ge,description:oe}))},[]),Ee=P.useCallback(Te=>{g(oe=>({...oe,avatarColor:Te||""}))},[]),$e=P.useCallback(async()=>{var Te,oe,ge,te;if(!(!i||!ve&&!Ce)){if(ve&&!me){y("Dir fehlt die Berechtigung, diese Gruppe zu bearbeiten.");return}if(Ce&&!ee){y("Dir fehlt die Berechtigung, die Gruppenrechte anzupassen.");return}l(!0),y("");try{if(ve){const ye={avatarColor:f.avatarColor};X||(ye.name=f.name,ye.description=f.description);const ie=await Je.put(`/api/groups/${i.id}`,ye),se=t_(((Te=ie.data)==null?void 0:Te.item)||((oe=ie.data)==null?void 0:oe.group));if(se!=null&&se.id){u(se);const fe=fa(se);m.current={...fe},g(fe)}}Ce&&(await Je.put(`/api/groups/${i.id}/permissions`,{values:k}),N(ye=>({...ye,...k})),O({...k})),ve?t({variant:"success",title:"Gruppe gespeichert",description:"Die Änderungen wurden erfolgreich gespeichert."}):Ce&&t({variant:"success",title:"Berechtigungen gespeichert",description:"Die Berechtigungen wurden erfolgreich gespeichert."}),y("")}catch(ye){const ie=(te=(ge=ye.response)==null?void 0:ge.data)==null?void 0:te.error;let se="Die Änderungen konnten nicht gespeichert werden.";ie==="GROUP_NAME_REQUIRED"?se="Bitte einen Gruppennamen angeben.":ie==="GROUP_NAME_TAKEN"?se="Der Gruppenname wird bereits verwendet.":ie==="INVALID_AVATAR_COLOR"?se="Bitte eine gültige Avatar-Farbe auswählen.":ie==="GROUP_NOT_FOUND"?se="Die Benutzergruppe wurde nicht gefunden.":ie==="GROUP_SUPERUSER_PROTECTED"?se="Für die Superuser-Gruppe können Berechtigungen nicht angepasst werden.":ie==="PERMISSION_INVALID_PAYLOAD"?se="Ungültige Berechtigungsdaten übermittelt.":ie==="PERMISSION_INVALID_LEVEL"?se="Für mindestens eine Berechtigung wurde ein nicht erlaubter Wert übermittelt.":ie==="PERMISSION_UNKNOWN_KEY"&&(se="Es wurde eine unbekannte Berechtigung übermittelt."),y(se),t({variant:"error",title:"Speichern fehlgeschlagen",description:se})}finally{l(!1)}}},[i,ve,Ce,f,t,X,k,me,ee]),Ge=P.useMemo(()=>{const Te=(f.name||f.description||"").trim();return Te?Te.charAt(0).toUpperCase():"?"},[f.name,f.description]),tt=P.useMemo(()=>f.avatarColor?f.avatarColor:(i==null?void 0:i.avatarColor)||"",[f.avatarColor,i]),ct=K||c||!i||_e||!me,qe=K||c||!i||_e||!me,it=f.avatarColor||"",mt=P.useCallback((Te,oe)=>{if(!Te||!ee||X)return;const ge=Dh(Te,oe);N(te=>{const ye=Te==="maintenance-server-manage"&&ge!=="full",ie=Te==="maintenance-server-manage"&&ge==="none",se=Te==="maintenance-server-edit"&&ge!=="full";if(!ye&&!ie&&!se&&te[Te]===ge)return te;const fe={...te,[Te]:ge};return ye&&(fe["maintenance-server-delete"]="none"),ie&&(fe["maintenance-server-edit"]="none"),se&&(fe["maintenance-server-delete"]="none"),fe})},[ee,X]),We=P.useCallback(Te=>{if(!Te)return null;let oe=null;return Object.prototype.hasOwnProperty.call(k,Te)?oe=k[Te]:Object.prototype.hasOwnProperty.call(A,Te)&&(oe=A[Te]),typeof oe=="string"?Dh(Te,oe):oe},[k,A]),rt=P.useMemo(()=>v.jsx("span",{className:"mx-auto block h-2.5 w-2.5 rounded-full border border-blue-gray-400 bg-black"}),[]),yt=P.useMemo(()=>v.jsx("span",{className:"mx-auto block h-2.5 w-2.5 rounded-full border border-blue-gray-700 bg-gray-900"}),[]),je=P.useCallback(Te=>!Te||!Te.key?!1:(Array.isArray(Te.dependencies)?Te.dependencies:[]).every(ge=>{if(!ge||!ge.key)return!0;const te=We(ge.key)??"none",ye=ge.requiredLevel||"!=none";return ye==="!=none"?te!=="none":ye.startsWith("!=")?te!==ye.substring(2):ye.startsWith("=")?te===ye.substring(1):ye?te===ye:!0}),[We]),Ke=(Te,oe,ge={})=>{if(!je(Te))return null;const te=`permission-${oe}-${Te.key}`,ye=We(Te.key)??"none",ie=Dh(Te.key,ye),se=We("maintenance-server-manage")??"none",fe=We("maintenance-server-edit")??"none",{addTopBorder:Oe=!0}=ge,xe=["flex flex-col gap-2.5 px-4 py-4 md:flex-row md:items-center md:gap-6",Oe?"border-t border-blue-gray-100":""].filter(Boolean).join(" "),Ue=Array.isArray(Te.availableLevels)&&Te.availableLevels.length?Te.availableLevels:Ih.map(ke=>ke.value),Fe=new Set(Te.key==="maintenance-server-delete"?Ue.filter(ke=>ke==="full"||ke==="none"):Ue),Qe=Ih;return v.jsxs("div",{className:xe,children:[v.jsx("div",{className:"text-sm font-medium leading-5 text-blue-gray-600 md:w-1/2",children:Te.label}),v.jsx(W.List,{className:"flex-col gap-1.5 md:ml-auto md:flex-row md:flex-nowrap md:w-1/2 md:items-center md:justify-end md:gap-3",children:Qe.map(ke=>{const bt=`${te}-${ke.value}`,ft=ie===ke.value,At=Te.key==="maintenance-server-delete"&&ke.value==="full"&&(Sc[se]??0)mt(Te.key,ke.value),disabled:xt,ripple:!1,className:"h-4 w-4 hover:before:opacity-0",containerProps:{className:"p-0"},icon:rt,checkedIcon:yt})}),v.jsx(W.Typography,{color:"blue-gray",className:`text-sm font-medium leading-5 whitespace-nowrap ${xt?"text-blue-gray-300":"text-blue-gray-600"}`,children:ke.label})]})},`${oe}-${Te.key}-${ke.value}`)})})]},`${oe}-${Te.key}`)};return v.jsx(v.Fragment,{children:v.jsxs("div",{className:"mt-12 flex flex-col gap-12",children:[(Y||B)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",q?` – ${q}`:B?" – Portainer-Update läuft":"","."]}),B&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",H]})]})}),v.jsx("div",{className:"relative h-72 w-full overflow-hidden rounded-xl bg-[url('/img/background-image.png')] bg-cover\\tbg-center",children:v.jsx("div",{className:"absolute inset-0 h-full w-full bg-gray-900/75"})}),v.jsx(W.Card,{className:"mx-3 -mt-16 mb-6 lg:mx-4 border border-blue-gray-100",children:v.jsxs(W.CardBody,{className:"p-4",children:[v.jsxs("div",{className:"mb-10 flex flex-wrap items-center justify-between gap-6",children:[v.jsxs("div",{className:"flex items-center gap-6",children:[v.jsx("div",{className:`text-black flex h-[74px] w-[74px] items-center justify-center rounded-xl text-3xl font-semibold uppercase shadow-lg shadow-blue-gray-500/40 ${tt}`,"aria-label":f.name||"Gruppenavatar",children:Ge}),v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:f.name||"–"}),v.jsxs(W.Typography,{className:"text-xs font-semibold tracking-wide text-stormGrey-400",children:["Gruppen-ID: ",(i==null?void 0:i.id)??"–"]})]})]}),Ae&&v.jsx(W.Button,{color:"green",className:"normal-case",onClick:$e,disabled:K||c,children:c?"Speichert ...":"Änderungen speichern"})]}),T&&!i&&v.jsxs("div",{className:"mb-6 flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(W.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Gruppendaten werden geladen ..."})]}),w&&!T&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:w}),h&&!T&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:h}),v.jsxs("div",{className:"grid-cols-1 mb-12 grid gap-12 px-4 lg:grid-cols-2 xl:grid-cols-3",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Gruppendaten"}),X&&v.jsxs("div",{className:"mb-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:["Systemgruppe – Name und Beschreibung sind geschützt.",_e&&v.jsx("span",{className:"mt-1 block text-xs text-amber-600",children:"Nur der Superuser darf die Superuser-Gruppe bearbeiten."})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Gruppenname"}),v.jsx(W.Input,{value:f.name,onChange:Ne,placeholder:"Gruppenname",disabled:ct,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Beschreibung"}),v.jsx(W.Input,{value:f.description,onChange:ue,placeholder:"Beschreibung der Gruppe",disabled:ct,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Avatar-Farbe"}),v.jsxs(W.Select,{label:"Avatar-Farbe auswählen",variant:"outlined",value:it,onChange:Ee,disabled:qe,selected:Te=>{var oe;return(oe=Te==null?void 0:Te.props)!=null&&oe.children?Te.props.children:f.avatarColor?f.avatarColor:"Standardfarbe"},children:[v.jsx(W.Option,{value:"",children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:"h-4 w-4 rounded border border-blue-gray-100"}),v.jsx("span",{className:"text-xs",children:"Keine"})]})}),iN.map(Te=>v.jsx(W.Option,{value:Te,children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:`h-4 w-4 rounded border border-blue-gray-100 ${Te}`}),v.jsx("span",{className:"text-xs",children:Te})]})},Te))]})]})]}),v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Mitglieder"}),!i||i.members.length===0?v.jsx(W.Typography,{className:"text-sm text-stormGrey-500",children:"Aktuell sind keine Benutzer dieser Gruppe zugeordnet."}):v.jsx("div",{className:"flex flex-wrap gap-2",children:i.members.map(Te=>v.jsx(W.Chip,{value:Te.username,size:"sm",color:"blue-gray",variant:"ghost"},`${i.id}-${Te.id}-${Te.username}`))}),v.jsx("div",{className:"mt-6 text-xs text-stormGrey-400",children:v.jsxs("p",{children:["Mitglieder insgesamt: ",(i==null?void 0:i.memberCount)??0]})})]}),v.jsx("div",{className:"lg:col-span-2 xl:col-span-3",children:!Y&&!B&&v.jsxs(v.Fragment,{children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Berechtigungen (Ansicht)"}),X?v.jsx("div",{className:"rounded-xl border border-blue-gray-100 bg-white px-4 py-4 text-sm text-blue-gray-600 shadow-sm",children:"Die Superuser-Gruppe besitzt automatisch Vollzugriff auf alle Bereiche. Berechtigungen können hier nicht angepasst werden."}):de?v.jsxs("div",{className:"rounded-xl border border-blue-gray-100 bg-white shadow-sm",children:[D&&v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4",children:v.jsxs("div",{className:"flex items-center gap-3 text-sm text-blue-gray-500",children:[v.jsx(W.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Berechtigungen werden geladen ..."})]})}),!D&&z&&v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4 text-sm text-red-700",children:z}),!D&&!z&&(x.length===0?v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4 text-sm text-blue-gray-500",children:"Für diese Gruppe sind keine Berechtigungen definiert."}):x.map((Te,oe)=>{const ge=Array.isArray(Te.items)?Te.items:[],te=Array.isArray(Te.groups)?Te.groups:[];return v.jsxs("div",{className:oe===0?"":"border-t border-blue-gray-100",children:[v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4",children:v.jsx(W.Typography,{variant:"h6",className:"text-lg font-semibold text-blue-gray-700",children:Te.title})}),ge.map((ye,ie)=>Ke(ye,Te.key||oe,{addTopBorder:ie!==0})),te.map((ye,ie)=>{const se=Array.isArray(ye.items)?ye.items:[];return se.some(je)?v.jsxs("div",{className:"border-t border-blue-gray-100",children:[v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-3",children:v.jsx(W.Typography,{className:"text-sm font-semibold uppercase tracking-wide text-blue-gray-600",children:ye.title})}),se.map((Oe,xe)=>Ke(Oe,ye.key||`${Te.key||oe}-${ie}`,{addTopBorder:xe!==0}))]},ye.key||`${Te.key||oe}-${ie}`):null})]},Te.key||oe)}))]}):null]})})]})]})})]})})}const SV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},CV=(e=[])=>{if(!Array.isArray(e)||e.length===0)return"";const t=[];for(let r=0;r{if(!Array.isArray(e))return[];const t=[];for(let r=0;rTV(m),[m]),h=P.useCallback(k=>{if(!k)return;const N=new Blob([k],{type:"text/plain;charset=utf-8"}),A=URL.createObjectURL(N),M=document.createElement("a");M.href=A;const D=t!=null&&t.username?`${t.username}-sicherheitsschluessel`:"security-phrase";M.download=`${D}.txt`,document.body.appendChild(M),M.click(),document.body.removeChild(M),URL.revokeObjectURL(A)},[t==null?void 0:t.username]),y=P.useCallback(async()=>{var k,N,A,M,D,L,z,V;u(!0),g("");try{const Y=await Je.get("/api/users/me/security-phrase"),q=Array.isArray((N=(k=Y.data)==null?void 0:k.item)==null?void 0:N.words)?Y.data.item.words:[];if(!q.length)throw new Error("EMPTY_SECURITY_PHRASE");S(q),w(!1)}catch(Y){if(((A=Y==null?void 0:Y.response)==null?void 0:A.status)===409||((D=(M=Y==null?void 0:Y.response)==null?void 0:M.data)==null?void 0:D.error)==="SECURITY_PHRASE_ALREADY_DOWNLOADED"){await n(),e("/dashboard/stacks",{replace:!0});return}if(((L=Y==null?void 0:Y.response)==null?void 0:L.status)===401){await n(),e("/auth/sign-in",{replace:!0});return}const q=((V=(z=Y==null?void 0:Y.response)==null?void 0:z.data)==null?void 0:V.error)||(Y==null?void 0:Y.message)||"Sicherheitsschlüssel konnte nicht geladen werden.";g(q)}finally{u(!1)}},[e,n]);P.useEffect(()=>{if(!t){e("/auth/sign-in",{replace:!0});return}if(!b){e("/dashboard/stacks",{replace:!0});return}y()},[t,b,y,e]);const x=P.useCallback(()=>{y()},[y]),j=P.useCallback(async()=>{var k,N,A,M,D,L;if(!(O||!Array.isArray(m)||m.length===0)){T(!0),g("");try{const z=CV(m);h(z);const V=await Je.post("/api/users/me/security-phrase/downloaded"),Y=((N=(k=V.data)==null?void 0:k.item)==null?void 0:N.downloadedAt)||null,q=(A=V.data)==null?void 0:A.session;q!=null&&q.user?r(q):await n(),w(!!Y),e("/dashboard/stacks",{replace:!0})}catch(z){if(((M=z==null?void 0:z.response)==null?void 0:M.status)===401){await n(),e("/auth/sign-in",{replace:!0});return}const V=((L=(D=z==null?void 0:z.response)==null?void 0:D.data)==null?void 0:L.error)||(z==null?void 0:z.message)||"Download konnte nicht bestätigt werden.";g(V)}finally{T(!1)}}},[m,O,h,n,e,r]);return b?v.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center bg-blue-gray-50/50 px-4 py-10",children:[v.jsxs("div",{className:"mb-6 text-center",children:[v.jsx(W.Typography,{variant:"h2",className:"font-semibold text-blue-gray-800",children:"Sicherheitsschlüssel sichern"}),v.jsx(W.Typography,{color:"blue-gray",className:"mt-2 max-w-3xl text-base",children:"Bitte lade den einmaligen Sicherheitsschlüssel herunter und bewahre ihn sicher auf. Er wird benötigt, um dein Passwort zurückzusetzen. Ohne den Download kannst du die Anwendung nicht weiter nutzen."})]}),v.jsx(W.Card,{className:"w-full max-w-3xl shadow-lg",children:v.jsxs(W.CardBody,{className:"space-y-6",children:[i&&v.jsx("div",{className:"flex items-center justify-center py-10",children:v.jsx(W.Spinner,{className:"h-10 w-10 text-blue-gray-500"})}),!i&&f&&v.jsx(W.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",icon:v.jsx(zz,{className:"h-5 w-5"}),children:v.jsxs("div",{className:"flex items-start justify-between gap-4",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"h6",color:"red",children:"Fehler"}),v.jsx(W.Typography,{color:"red",className:"text-sm",children:f})]}),v.jsx(W.Button,{size:"sm",color:"red",variant:"text",onClick:x,className:"normal-case",children:"Erneut versuchen"})]})}),!i&&!f&&v.jsxs(v.Fragment,{children:[v.jsxs("div",{className:"rounded-lg border border-blue-gray-100 bg-blue-gray-50/60 p-6",children:[v.jsx(W.Typography,{variant:"h5",className:"mb-4 text-blue-gray-800",children:"Deine Sicherheitsphrase"}),v.jsx("div",{className:"space-y-3",children:l.map((k,N)=>v.jsx("div",{className:"flex flex-wrap items-center justify-center gap-4 text-lg font-mono tracking-wide text-blue-gray-900 md:text-xl",children:k.map((A,M)=>v.jsx("span",{className:"uppercase",children:A},`phrase-${N}-${M}`))},`phrase-row-${N}`))})]}),v.jsxs("div",{className:"flex flex-col items-center justify-between gap-4 md:flex-row",children:[v.jsx("div",{className:"text-sm text-blue-gray-600",children:"Der Download startet im TXT-Format. Bewahre die Datei sicher auf – sie kann später nicht erneut angezeigt werden."}),v.jsxs(W.Button,{color:"blue",size:"md",className:"flex items-center gap-2 normal-case",onClick:j,disabled:c||O||C||m.length===0,children:[v.jsx(Dz,{className:"h-5 w-5"}),"Sicherheitsschlüssel herunterladen"]})]})]})]})})]}):null}const Lh=e=>{if(!e&&e!==0)return"-";const r=(n=>{if(n instanceof Date)return n;if(typeof n=="number"){const o=n>1e12?n:n*1e3;return new Date(o)}if(typeof n=="string"){const o=Number(n);if(!Number.isNaN(o)){const a=o>1e12?o:o*1e3;return new Date(a)}return new Date(n)}return null})(e);return!r||Number.isNaN(r.getTime())?String(e):r.toLocaleString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})},Fh=()=>({host:"",port:"22",username:"",password:"",extraSshArgs:""});function OV(){var Nn,ta,fn,bo,qn;const e=$n(),{serverId:t}=Cm(),r=P.useMemo(()=>{const Ie=Number(t);return Number.isFinite(Ie)?Ie:null},[t]),{hasPermission:n,user:o}=Wr(),{deleteSetupServer:a,updateSetupApiKey:i}=ea(),{showToast:u}=Ci(),f=!!(o!=null&&o.isSuperuser),g=!!(f||n("maintenance-server-manage","read")),m=!!(f||n("maintenance-server-edit","full")),S=!!(f||n("maintenance-server-delete","full")),O=!!(f||n("maintenance-ssh-update","read")),T=!!(f||n("maintenance-ssh-update","full")),[C,w]=P.useState(null),[b,d]=P.useState(null),[s,c]=P.useState(!0),[l,h]=P.useState(""),[y,x]=P.useState(!1),[j,k]=P.useState(null),[N,A]=P.useState({name:"",url:""}),[M,D]=P.useState(""),[L,z]=P.useState(!1),[V,Y]=P.useState(null),[q,B]=P.useState(!1),[H,K]=P.useState(""),[X,re]=P.useState(null),[me,de]=P.useState(""),[ee,_e]=P.useState(!1),[he,pe]=P.useState(!1),[be,ve]=P.useState(""),[Ce,Ae]=P.useState(null),[Ne,ue]=P.useState(null),[Ee,$e]=P.useState({agentUrl:"",agentToken:""}),[Ge,tt]=P.useState(!1),[ct,qe]=P.useState(""),[it,mt]=P.useState(!1),[We,rt]=P.useState(null),[yt,je]=P.useState(()=>Fh()),[Ke,Te]=P.useState(!1),[oe,ge]=P.useState(!1),[te,ye]=P.useState(!1),[ie,se]=P.useState(!1),[fe,Oe]=P.useState(!1),[xe,Ue]=P.useState(null),[Fe,Qe]=P.useState(!1),[ke,bt]=P.useState(""),ft=P.useCallback(async()=>{var Ie,ot,dt,Xe;if(!r){w(null),d(null);return}c(!0),h("");try{const wt=await Je.get(`/api/setup/servers/${r}`);w(((Ie=wt.data)==null?void 0:Ie.server)??null),d(((ot=wt.data)==null?void 0:ot.apiKey)??null)}catch(wt){const Dt=((Xe=(dt=wt.response)==null?void 0:dt.data)==null?void 0:Xe.error)||wt.message||"Serverdetails konnten nicht geladen werden";h(Dt),w(null),d(null)}finally{c(!1)}},[r]),At=P.useCallback(async({silent:Ie=!1}={})=>{var ot,dt;if(!r){Y(null),K(""),re(null);return}Ie||B(!0),K("");try{const Xe=await Je.get(`/api/setup/servers/${r}/check`);Y(Xe.data??null),re(new Date)}catch(Xe){const wt=((dt=(ot=Xe.response)==null?void 0:ot.data)==null?void 0:dt.error)||Xe.message||"Status konnte nicht ermittelt werden";K(wt),Y(null),re(null)}finally{B(!1)}},[r]),It=P.useCallback(async()=>{var Ie,ot;if(!r){ue(null),$e({agentUrl:"",agentToken:""});return}tt(!0),qe("");try{const Xe=(await Je.get(`/api/servers/${r}/agent`)).data??null;ue(Xe),$e({agentUrl:(Xe==null?void 0:Xe.agentUrl)??"",agentToken:(Xe==null?void 0:Xe.agentToken)??""})}catch(dt){const Xe=((ot=(Ie=dt.response)==null?void 0:Ie.data)==null?void 0:ot.error)||dt.message||"Agent konnte nicht geladen werden";qe(Xe),ue(null),$e({agentUrl:"",agentToken:""})}finally{tt(!1)}},[r]),xt=P.useCallback(async()=>{var Ie,ot,dt;if(!r){Ae(null),de("");return}pe(!0),ve("");try{const wt=((Ie=(await Je.get(`/api/setup/servers/${r}/update-script`)).data)==null?void 0:Ie.script)??null;Ae(wt);const Dt=(wt==null?void 0:wt.custom)??(wt==null?void 0:wt.default)??(wt==null?void 0:wt.effective)??"";de(Dt)}catch(Xe){const wt=((dt=(ot=Xe.response)==null?void 0:ot.data)==null?void 0:dt.error)||Xe.message||"Update-Skript konnte nicht geladen werden";ve(wt),Ae(null),de("")}finally{pe(!1)}},[r]),Rt=P.useCallback(async()=>{var Ie,ot,dt;if(!r){rt(null);return}Qe(!0),bt("");try{const Xe=await Je.get(`/api/setup/servers/${r}/ssh-config`);rt(((Ie=Xe.data)==null?void 0:Ie.ssh)??null)}catch(Xe){const wt=((dt=(ot=Xe.response)==null?void 0:ot.data)==null?void 0:dt.error)||Xe.message||"SSH-Konfiguration konnte nicht geladen werden";bt(wt),rt(null)}finally{Qe(!1)}},[r]);P.useEffect(()=>{ft()},[ft]),P.useEffect(()=>{At()},[At]),P.useEffect(()=>{xt()},[xt]),P.useEffect(()=>{Rt()},[Rt]),P.useEffect(()=>{It()},[It]),P.useEffect(()=>{if(!C){A({name:"",url:""});return}A({name:C.name||"",url:C.url||""})},[C]),P.useEffect(()=>{if(!We){je(Fh()),Te(!1),ge(!1),Ue(null);return}je({host:We.host??"",port:String(We.port??"22"),username:We.username??"",password:"",extraSshArgs:Array.isArray(We.extraSshArgs)?We.extraSshArgs.join(` -`):""}),Te(!!We.passwordStored),ge(!1),Ue(null)},[We]);const Er=P.useMemo(()=>Ce?Ce.source==="custom"&&typeof Ce.custom=="string"?Ce.custom:Ce.default??Ce.effective??"":"",[Ce]),ur=Ce?me!==Er:!1,$r=(Ce==null?void 0:Ce.source)==="custom"?"Benutzerdefiniert":"Standard",rr=C?(N.name||"").trim()!==(C.name||"")||(N.url||"").trim()!==(C.url||""):!1,Hn=P.useMemo(()=>{if(!(C!=null&&C.url))return"-";try{return new URL(C.url).hostname||C.url}catch{return C.url}},[C]),Ir=((Nn=V==null?void 0:V.portainer)==null?void 0:Nn.edition)??"-",_r=(Ir||"").toLowerCase().includes("community"),cn=((ta=V==null?void 0:V.agent)==null?void 0:ta.online)??(Ne==null?void 0:Ne.online)??null,dn=cn===!0?"Agent online":cn===!1?"Agent offline":"Unbekannt",J=P.useMemo(()=>{const Ie={host:yt.host.trim(),port:Number.parseInt(yt.port,10)||22,username:yt.username.trim(),extraSshArgs:(yt.extraSshArgs||"").split(/\r?\n/).map(dt=>dt.trim()).filter(Boolean)},ot=yt.password??"";return ot?Ie.password=ot:Ke||(Ie.password=""),Ie},[yt,Ke]),Re=P.useCallback((Ie,ot)=>{m&&A(dt=>({...dt,[Ie]:ot}))},[m]),ze=P.useCallback(async()=>{var Ie,ot,dt,Xe;if(!(!m||!r||!rr)){x(!0);try{await Je.put(`/api/setup/servers/${r}`,{name:((Ie=N.name)==null?void 0:Ie.trim())??"",url:((ot=N.url)==null?void 0:ot.trim())??""}),u({variant:"success",title:"Server gespeichert",description:"Serverdetails wurden aktualisiert."}),await ft(),await At({silent:!0})}catch(wt){const Dt=((Xe=(dt=wt.response)==null?void 0:dt.data)==null?void 0:Xe.error)||wt.message||"Server konnte nicht aktualisiert werden";u({variant:"error",title:"Speichern fehlgeschlagen",description:Dt})}finally{x(!1)}}},[m,r,rr,N,ft,At,u]),Ut=P.useCallback((Ie,ot)=>{$e(dt=>({...dt,[Ie]:ot}))},[]),Nt=P.useCallback(async()=>{var Ie,ot;if(r){mt(!0);try{await Je.put(`/api/servers/${r}/agent`,{agentUrl:Ee.agentUrl}),u({variant:"success",title:"Agent gespeichert",description:"Agent-Einstellungen wurden aktualisiert."}),await It()}catch(dt){const Xe=((ot=(Ie=dt.response)==null?void 0:Ie.data)==null?void 0:ot.error)||dt.message||"Agent konnte nicht aktualisiert werden";u({variant:"error",title:"Agent speichern fehlgeschlagen",description:Xe})}finally{mt(!1)}}},[r,Ee,It,u]),Et=P.useCallback(async()=>{var ot,dt;if(!m||!r)return;const Ie=(M||"").trim();if(!Ie){u({variant:"warning",title:"API-Key fehlt",description:"Bitte gib einen API-Key ein."});return}z(!0);try{await i(r,Ie),u({variant:"success",title:"API-Key gespeichert",description:"Der neue API-Key wurde hinterlegt."}),D(""),await ft(),await At({silent:!0})}catch(Xe){const wt=((dt=(ot=Xe.response)==null?void 0:ot.data)==null?void 0:dt.error)||Xe.message||"API-Key konnte nicht gespeichert werden";u({variant:"error",title:"Speichern fehlgeschlagen",description:wt})}finally{z(!1)}},[M,m,r,i,ft,At,u]),Ht=P.useCallback(()=>{At()},[At]),qt=P.useCallback(async()=>{var ot,dt;if(!S||!r||j===r)return;const Ie=(C==null?void 0:C.name)||(C==null?void 0:C.url)||`Server ${r}`;if(!(typeof window<"u"&&!window.confirm(`Server "${Ie}" wirklich löschen?`))){k(r);try{await a(r),u({variant:"success",title:"Server gelöscht",description:`Server "${Ie}" wurde entfernt.`}),e("/dashboard/maintenance/servers")}catch(Xe){const wt=((dt=(ot=Xe.response)==null?void 0:ot.data)==null?void 0:dt.error)||Xe.message||"Server konnte nicht gelöscht werden";u({variant:"error",title:"Löschen fehlgeschlagen",description:wt})}finally{k(null)}}},[S,a,e,r,j,C,u]),Pt=P.useCallback(async()=>{var Ie,ot;if(!(!T||!r||!Ce))try{_e(!0),ve(""),await Je.put(`/api/setup/servers/${r}/update-script`,{script:me}),await xt(),u({variant:"success",title:"Skript gespeichert",description:"Das benutzerdefinierte Portainer-Update-Skript wurde aktualisiert."})}catch(dt){const Xe=((ot=(Ie=dt.response)==null?void 0:Ie.data)==null?void 0:ot.error)||dt.message||"Skript konnte nicht gespeichert werden";ve(Xe),u({variant:"error",title:"Speichern fehlgeschlagen",description:Xe})}finally{_e(!1)}},[T,r,Ce,me,xt,u]),Xr=P.useCallback(async()=>{var Ie,ot;if(!(!T||!r))try{_e(!0),ve(""),await Je.delete(`/api/setup/servers/${r}/update-script`),await xt(),u({variant:"info",title:"Standardskript wiederhergestellt",description:"Es wird wieder das Standard-Update-Skript verwendet."})}catch(dt){const Xe=((ot=(Ie=dt.response)==null?void 0:Ie.data)==null?void 0:ot.error)||dt.message||"Standardskript konnte nicht wiederhergestellt werden";ve(Xe),u({variant:"error",title:"Zurücksetzen fehlgeschlagen",description:Xe})}finally{_e(!1)}},[T,r,xt,u]),mr=P.useCallback((Ie,ot)=>{T&&(je(dt=>({...dt,[Ie]:ot})),Ie==="password"&&Te(!1))},[T]),dr=P.useCallback(async()=>{var Ie,ot;if(!(!T||!r))try{ye(!0),await Je.put(`/api/setup/servers/${r}/ssh-config`,J),Ue(null),ge(!1),await Rt(),u({variant:"success",title:"SSH-Konfiguration gespeichert",description:"Verbindungseinstellungen wurden aktualisiert."})}catch(dt){const Xe=((ot=(Ie=dt.response)==null?void 0:Ie.data)==null?void 0:ot.error)||dt.message||"SSH-Konfiguration konnte nicht gespeichert werden";bt(Xe),u({variant:"error",title:"Speichern fehlgeschlagen",description:Xe})}finally{ye(!1)}},[T,J,r,Rt,u]),On=P.useCallback(async()=>{var Ie,ot,dt;if(!(!T||!r))try{se(!0);const Xe=await Je.post(`/api/setup/servers/${r}/test-ssh`,J);Ue({success:!0,timestamp:new Date,details:(Ie=Xe.data)==null?void 0:Ie.result}),u({variant:"success",title:"SSH-Verbindung erfolgreich",description:"Verbindung zum Portainer-Host wurde hergestellt."})}catch(Xe){const wt=((dt=(ot=Xe.response)==null?void 0:ot.data)==null?void 0:dt.error)||Xe.message||"SSH-Verbindung fehlgeschlagen";Ue({success:!1,timestamp:new Date,error:wt}),u({variant:"error",title:"SSH-Test fehlgeschlagen",description:wt})}finally{se(!1)}},[T,J,r,u]),kn=P.useCallback(async()=>{var Ie,ot;if(!(!T||!r))try{Oe(!0),await Je.delete(`/api/setup/servers/${r}/ssh-config`),rt(null),je(Fh()),Te(!1),ge(!1),Ue(null),u({variant:"info",title:"SSH-Konfiguration gelöscht",description:"Die Verbindungseinstellungen wurden zurückgesetzt."})}catch(dt){const Xe=((ot=(Ie=dt.response)==null?void 0:Ie.data)==null?void 0:ot.error)||dt.message||"SSH-Konfiguration konnte nicht gelöscht werden";bt(Xe),u({variant:"error",title:"Löschen fehlgeschlagen",description:Xe})}finally{Oe(!1)}},[T,r,u]),Sr=!T||te||ie||fe||Fe||!r;return g?r?v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsxs(W.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:[v.jsxs("span",{children:["Serverdetails ",C?`– ${C.name||"Ohne Namen"}`:""]}),v.jsxs("div",{className:"flex items-center gap-2",children:[v.jsx(W.Button,{variant:"text",color:"white",size:"sm",onClick:()=>e("/dashboard/maintenance/servers"),children:"Zur Übersicht"}),S&&v.jsx(W.Button,{variant:"text",color:"white",size:"sm",onClick:qt,disabled:j===r,children:j===r?"Lösche…":"Löschen"})]})]})}),v.jsxs(W.CardBody,{className:"flex flex-col gap-6 p-4",children:[s&&v.jsx("p",{className:"text-sm text-stormGrey-500",children:"Serverdetails werden geladen…"}),!s&&l&&v.jsx(W.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:l}),!s&&!l&&!C&&v.jsx(W.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:"Der angeforderte Server wurde nicht gefunden."}),C&&v.jsxs(v.Fragment,{children:[v.jsxs("div",{className:"rounded-md border border-blue-gray-100 p-4",children:[v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"small",color:"blue-gray",className:"font-semibold uppercase",children:"Verbindungsstatus"}),v.jsx("p",{className:"text-sm text-stormGrey-600 break-all",children:C.url}),v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Host: ",Hn]}),v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Edition: ",Ir]}),X&&v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Stand: ",Lh(X)]}),H&&v.jsx("p",{className:"text-xs text-sunsetCoral-600 mt-2",children:H})]}),v.jsxs("div",{className:"flex flex-wrap gap-2",children:[v.jsx(W.Chip,{value:(V==null?void 0:V.online)===!0?"Server online":(V==null?void 0:V.online)===!1?"Offline":"Unbekannt",size:"sm",color:(V==null?void 0:V.online)===!0?"green":(V==null?void 0:V.online)===!1?"red":"blue-gray",variant:"ghost"}),v.jsx(W.Chip,{value:(()=>{var ot;const Ie=(ot=V==null?void 0:V.portainer)==null?void 0:ot.updateAvailable;return Ie===!0?"Update vorhanden":Ie===!1?"Portainer aktuell":"Portainer unbekannt"})(),size:"sm",color:((fn=V==null?void 0:V.portainer)==null?void 0:fn.updateAvailable)===!0?"amber":"blue-gray",variant:"ghost"})]})]}),v.jsxs("div",{className:"mt-4 grid gap-2 text-sm",children:[v.jsxs("div",{className:"flex items-center justify-between",children:[v.jsx("span",{children:"Installierte Version"}),v.jsx("span",{className:"font-medium",children:((bo=V==null?void 0:V.portainer)==null?void 0:bo.currentVersion)??"–"})]}),v.jsxs("div",{className:"flex items-center justify-between",children:[v.jsx("span",{children:"Neueste Version"}),v.jsx("span",{className:"font-medium",children:((qn=V==null?void 0:V.portainer)==null?void 0:qn.latestVersion)??"–"})]}),v.jsxs("div",{className:"flex items-center justify-between",children:[v.jsx("span",{children:"Edition"}),v.jsx("span",{className:"font-medium",children:Ir})]})]}),v.jsx("div",{className:"mt-4 flex justify-end",children:v.jsx(W.Button,{variant:"outlined",color:"gray",size:"sm",onClick:Ht,disabled:q,children:q?"Prüfe…":"Status aktualisieren"})})]}),_r&&v.jsxs("div",{className:"rounded-md border border-blue-gray-100 p-4",children:[v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{variant:"small",color:"blue-gray",className:"font-semibold uppercase",children:"Agent (CE)"}),v.jsx("p",{className:"text-sm text-stormGrey-600 break-all",children:Ee.agentUrl||"Keine Agent-URL hinterlegt"}),ct&&v.jsx("p",{className:"text-xs text-sunsetCoral-600 mt-1",children:ct})]}),v.jsx(W.Chip,{value:dn,size:"sm",color:cn===!0?"green":cn===!1?"red":"blue-gray",variant:"ghost"})]}),v.jsxs("div",{className:"mt-4 grid gap-3 md:grid-cols-2",children:[v.jsx(W.Input,{label:"Agent URL",value:Ee.agentUrl,onChange:Ie=>Ut("agentUrl",Ie.target.value),disabled:it}),v.jsx("div",{className:"w-full",children:v.jsxs("div",{className:"relative w-full",children:[v.jsx(W.Input,{label:"Agent Token",value:Ee.agentToken,readOnly:!0,disabled:!0,className:"pr-24"}),v.jsx(W.Button,{variant:"outlined",color:"gray",size:"sm",className:"!absolute right-1 top-1",onClick:()=>{Ee.agentToken&&(navigator.clipboard.writeText(Ee.agentToken),u({variant:"success",title:"Token kopiert",description:"Agent-Token wurde in die Zwischenablage kopiert."}))},children:"Kopieren"})]})})]}),v.jsxs("div",{className:"mt-4 flex justify-end gap-2",children:[v.jsx(W.Button,{variant:"outlined",color:"gray",size:"sm",onClick:It,disabled:Ge,children:Ge?"Lade…":"Agent neu laden"}),v.jsx(W.Button,{color:"blue",size:"sm",onClick:Nt,disabled:it,children:it?"Speichere…":"Agent speichern"})]})]}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsx(W.Input,{label:"Servername",value:N.name,onChange:Ie=>Re("name",Ie.target.value),disabled:!m||y}),v.jsx(W.Input,{label:"Server-URL",value:N.url,onChange:Ie=>Re("url",Ie.target.value),disabled:!m||y})]}),m&&v.jsx("div",{className:"flex justify-end",children:v.jsx(W.Button,{color:"blue",size:"sm",onClick:ze,disabled:y||!rr,children:y?"Speichere…":"Server speichern"})}),v.jsxs("div",{className:"flex flex-col gap-2 md:max-w-md",children:[v.jsx(W.Typography,{variant:"small",className:"font-semibold text-blue-gray-800",children:"Portainer API-Key"}),v.jsxs("p",{className:"text-xs text-stormGrey-500",children:[b!=null&&b.hasKey?"API-Key gespeichert":"Kein API-Key hinterlegt",b!=null&&b.updatedAt?` – aktualisiert am ${Lh(b.updatedAt)}`:""]}),v.jsx(W.Input,{type:"password",label:"Neuer API-Key",value:M,onChange:Ie=>D(Ie.target.value),disabled:!m||L}),m&&v.jsx("div",{className:"flex justify-end",children:v.jsx(W.Button,{color:"blue",size:"sm",onClick:Et,disabled:L||!M.trim(),children:L?"Speichere…":"API-Key speichern"})})]})]})]})]}),O&&v.jsxs("div",{className:"grid gap-6 lg:grid-cols-2",children:[v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(W.Typography,{variant:"h6",color:"white",children:"SSH-Verbindung"})}),v.jsxs(W.CardBody,{className:"flex flex-col gap-3 p-4",children:[v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Host"}),v.jsx("input",{type:"text",value:yt.host,onChange:Ie=>mr("host",Ie.target.value),disabled:Sr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none"})]}),v.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Port"}),v.jsx("input",{type:"number",min:"1",value:yt.port,onChange:Ie=>mr("port",Ie.target.value),disabled:Sr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none"})]}),v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Benutzer"}),v.jsx("input",{type:"text",value:yt.username,onChange:Ie=>mr("username",Ie.target.value),disabled:Sr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none"})]})]}),v.jsxs("div",{className:"grid gap-1",children:[v.jsxs("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide",children:[v.jsx("label",{htmlFor:"server-ssh-password",className:"cursor-pointer",children:"Passwort"}),v.jsx("button",{type:"button",onClick:()=>ge(Ie=>!Ie),disabled:Sr,className:"text-[11px] font-medium text-blue-500 transition hover:text-blue-800 disabled:opacity-50",children:oe?"Verbergen":"Anzeigen"})]}),v.jsx("input",{id:"server-ssh-password",type:oe?"text":"password",value:yt.password,onChange:Ie=>mr("password",Ie.target.value),disabled:Sr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none",placeholder:"Passwort für den SSH-Benutzer",autoComplete:"off",spellCheck:!1}),Ke&&!yt.password&&v.jsx("span",{className:"text-[11px] text-stormGrey-500",children:"Ein Passwort ist gespeichert. Neuer Inhalt ersetzt es oder lösche die Konfiguration unten."})]}),v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Weitere SSH-Argumente"}),v.jsx("textarea",{rows:3,value:yt.extraSshArgs,onChange:Ie=>mr("extraSshArgs",Ie.target.value),disabled:Sr,className:"w-full rounded-md border border-gray-300 px-3 py-2 font-mono text-[11px] focus:border-blue-500 focus:outline-none",placeholder:"je Zeile ein Argument (optional)"})]}),v.jsxs("div",{className:"mt-2 grid gap-2",children:[v.jsx(W.Button,{onClick:dr,disabled:Sr,children:te?"Speichern…":"SSH-Konfiguration speichern"}),v.jsx(W.Button,{onClick:On,disabled:Sr,className:"bg-arcticBlue-500 hover:bg-arcticBlue-600",children:ie?"Test läuft…":"Verbindung testen"}),v.jsx(W.Button,{onClick:kn,disabled:Sr,className:"bg-sunsetCoral-500 hover:bg-sunsetCoral-600",children:fe?"Löschen…":"SSH-Einstellungen löschen"})]}),Fe&&v.jsx("p",{className:"text-xs text-stormGrey-500",children:"SSH-Konfiguration wird geladen…"}),ke&&v.jsx("p",{className:"text-xs text-sunsetCoral-500",children:ke}),xe&&v.jsx("p",{className:`text-xs ${xe.success?"text-mossGreen-600":"text-sunsetCoral-500"}`,children:xe.success?"SSH-Verbindung erfolgreich.":`SSH-Verbindung fehlgeschlagen: ${xe.error}`})]})]}),v.jsxs(W.Card,{children:[v.jsx(W.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsxs(W.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:[v.jsx("span",{children:"Update-Skript"}),v.jsxs("span",{className:"text-xs",children:["Quelle: ",$r]})]})}),v.jsxs(W.CardBody,{className:"flex flex-col gap-3 p-4",children:[v.jsx("textarea",{value:me,onChange:Ie=>de(Ie.target.value),rows:12,disabled:!T||ee||he||!r,className:"w-full rounded-md border border-blue-gray-100 px-3 py-2 font-mono text-xs focus:border-blue-500 focus:outline-none"}),he&&v.jsx("p",{className:"text-xs text-stormGrey-500",children:"Skript wird geladen…"}),be&&v.jsx("p",{className:"text-xs text-sunsetCoral-500",children:be}),v.jsxs("div",{className:"grid gap-2",children:[v.jsx(W.Button,{onClick:Pt,disabled:!T||!ur||ee||he||!r,children:"Speichern"}),v.jsx(W.Button,{color:"purple",onClick:Xr,disabled:!T||!Ce||Ce.source!=="custom"||ee||he||!r,className:"bg-sunsetCoral-500 hover:bg-sunsetCoral-600",children:"Standard wiederherstellen"})]}),(Ce==null?void 0:Ce.customUpdatedAt)&&v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Zuletzt geändert: ",Lh(Ce.customUpdatedAt)]})]})]})]})]}):v.jsxs("div",{className:"mt-12 flex flex-col gap-4",children:[v.jsx(W.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-800",children:"Ungültige Server-ID."}),v.jsx(W.Button,{variant:"outlined",color:"gray",onClick:()=>e("/dashboard/maintenance/servers"),children:"Zurück zur Übersicht"})]}):null}const kV="/assets/pattern-68ea7609.png";function NV(){const e=$n(),{setSession:t,refreshSession:r}=Wr(),[n,o]=P.useState(""),[a,i]=P.useState(""),[u,f]=P.useState(!1),[g,m]=P.useState(null),[S,O]=P.useState(!1);P.useEffect(()=>{let C=!0;const w=new AbortController;return(async()=>{try{const d=await fetch("/api/setup/status",{credentials:"include",signal:w.signal});if(d.ok&&!(await d.json()).setupComplete&&C){e("/setup",{replace:!0});return}const s=await fetch("/api/auth/session",{credentials:"include",signal:w.signal});if(s.ok){const c=await s.json();if(c!=null&&c.user&&t(c),c!=null&&c.user&&C){const l=!!c.user.requiresSecurityPhraseDownload;e(l?"/dashboard/security-phrase":"/dashboard/stacks",{replace:!0});return}}}catch(d){d.name!=="AbortError"&&console.error("⚠️ [Auth] Initiale Prüfung fehlgeschlagen:",d)}finally{C&&O(!0)}})(),()=>{C=!1,w.abort()}},[e,t]);const T=P.useCallback(async C=>{var d,s;if(C.preventDefault(),u)return;m(null);const w=n.trim(),b=a.trim();if(!w||!b){m("Bitte fülle beide Felder aus.");return}f(!0);try{const c=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({identifier:w,password:b})}),l=await c.json().catch(()=>({}));if(!c.ok){if(c.status===401||l.error==="INVALID_CREDENTIALS")m("Ungültige Zugangsdaten.");else if(l.error==="MISSING_CREDENTIALS")m("Bitte fülle beide Felder aus.");else if(l.error==="SETUP_REQUIRED"||l.error==="SUPERUSER_REQUIRED"){e("/setup",{replace:!0});return}else l.error==="USER_INACTIVE"?m("Dieses Konto ist deaktiviert. Bitte wende dich an einen Administrator."):m("Anmeldung fehlgeschlagen. Bitte versuche es erneut.");return}let h=null;if(l!=null&&l.user)t(l),h=l;else{const x=await r();x!=null&&x.ok&&((d=x==null?void 0:x.data)!=null&&d.user)&&(h=x.data)}const y=!!((s=h==null?void 0:h.user)!=null&&s.requiresSecurityPhraseDownload);e(y?"/dashboard/security-phrase":"/dashboard/stacks",{replace:!0})}catch(c){console.error("⚠️ [Auth] Anmeldung fehlgeschlagen:",c),m("Netzwerkfehler – bitte erneut versuchen.")}finally{f(!1)}},[n,a,u,e,r,t]);return S?v.jsxs("section",{className:"m-8 flex gap-4",children:[v.jsxs("div",{className:"w-full lg:w-3/5 mt-24",children:[v.jsxs("div",{className:"text-center",children:[v.jsx(W.Typography,{variant:"h2",className:"font-bold mb-4",children:"Anmelden"}),v.jsx(W.Typography,{variant:"paragraph",color:"blue-gray",className:"text-lg font-normal",children:"Gib deine E-Mail oder deinen Benutzernamen sowie dein Passwort ein, um dich anzumelden."})]}),v.jsxs("form",{className:"mt-8 mb-2 mx-auto w-80 max-w-screen-lg lg:w-1/2",onSubmit:T,children:[v.jsxs("div",{className:"mb-1 flex flex-col gap-6",children:[v.jsx(W.Typography,{variant:"small",color:"blue-gray",className:"-mb-3 font-medium",children:"E-Mail oder Benutzername"}),v.jsx(W.Input,{size:"lg",placeholder:"E-Mail oder Benutzername",value:n,onChange:C=>o(C.target.value),required:!0,autoFocus:!0,disabled:u,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}}),v.jsx(W.Typography,{variant:"small",color:"blue-gray",className:"-mb-3 font-medium",children:"Passwort"}),v.jsx(W.Input,{type:"password",size:"lg",placeholder:"********",value:a,onChange:C=>i(C.target.value),required:!0,disabled:u,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),g&&v.jsx(W.Alert,{color:"red",className:"mt-2 border border-red-200 bg-red-50 text-red-700",children:g}),v.jsx(W.Button,{type:"submit",className:"mt-6",fullWidth:!0,disabled:u,children:u?"Anmeldung läuft ...":"Anmelden"}),v.jsx(W.Typography,{as:"button",type:"button",onClick:()=>e("/auth/forgot-password"),className:"mt-4 text-sm font-medium text-blue-600 transition hover:text-blue-800",children:"Passwort vergessen?"})]})]}),v.jsx("div",{className:"w-2/5 h-full hidden lg:block",children:v.jsx("img",{src:kV,className:"h-full w-full object-cover rounded-3xl"})})]}):v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Pruefe Anmeldestatus ..."})})}function EV(){return v.jsxs("section",{className:"m-8 flex",children:[v.jsx("div",{className:"w-2/5 h-full hidden lg:block",children:v.jsx("img",{src:"/img/pattern.png",className:"h-full w-full object-cover rounded-3xl"})}),v.jsxs("div",{className:"w-full lg:w-3/5 flex flex-col items-center justify-center",children:[v.jsxs("div",{className:"text-center",children:[v.jsx(W.Typography,{variant:"h2",className:"font-bold mb-4",children:"Join Us Today"}),v.jsx(W.Typography,{variant:"paragraph",color:"blue-gray",className:"text-lg font-normal",children:"Enter your email and password to register."})]}),v.jsxs("form",{className:"mt-8 mb-2 mx-auto w-80 max-w-screen-lg lg:w-1/2",children:[v.jsxs("div",{className:"mb-1 flex flex-col gap-6",children:[v.jsx(W.Typography,{variant:"small",color:"blue-gray",className:"-mb-3 font-medium",children:"Your email"}),v.jsx(W.Input,{size:"lg",placeholder:"name@mail.com",className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsx(W.Checkbox,{label:v.jsxs(W.Typography,{variant:"small",color:"gray",className:"flex items-center justify-start font-medium",children:["I agree the ",v.jsx("a",{href:"#",className:"font-normal text-black transition-colors hover:text-gray-900 underline",children:"Terms and Conditions"})]}),containerProps:{className:"-ml-2.5"}}),v.jsx(W.Button,{className:"mt-6",fullWidth:!0,children:"Register Now"}),v.jsxs("div",{className:"space-y-4 mt-8",children:[v.jsxs(W.Button,{size:"lg",color:"white",className:"flex items-center gap-2 justify-center shadow-md",fullWidth:!0,children:[v.jsxs("svg",{width:"17",height:"16",viewBox:"0 0 17 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[v.jsxs("g",{clipPath:"url(#clip0_1156_824)",children:[v.jsx("path",{d:"M16.3442 8.18429C16.3442 7.64047 16.3001 7.09371 16.206 6.55872H8.66016V9.63937H12.9813C12.802 10.6329 12.2258 11.5119 11.3822 12.0704V14.0693H13.9602C15.4741 12.6759 16.3442 10.6182 16.3442 8.18429Z",fill:"#4285F4"}),v.jsx("path",{d:"M8.65974 16.0006C10.8174 16.0006 12.637 15.2922 13.9627 14.0693L11.3847 12.0704C10.6675 12.5584 9.7415 12.8347 8.66268 12.8347C6.5756 12.8347 4.80598 11.4266 4.17104 9.53357H1.51074V11.5942C2.86882 14.2956 5.63494 16.0006 8.65974 16.0006Z",fill:"#34A853"}),v.jsx("path",{d:"M4.16852 9.53356C3.83341 8.53999 3.83341 7.46411 4.16852 6.47054V4.40991H1.51116C0.376489 6.67043 0.376489 9.33367 1.51116 11.5942L4.16852 9.53356Z",fill:"#FBBC04"}),v.jsx("path",{d:"M8.65974 3.16644C9.80029 3.1488 10.9026 3.57798 11.7286 4.36578L14.0127 2.08174C12.5664 0.72367 10.6469 -0.0229773 8.65974 0.000539111C5.63494 0.000539111 2.86882 1.70548 1.51074 4.40987L4.1681 6.4705C4.8001 4.57449 6.57266 3.16644 8.65974 3.16644Z",fill:"#EA4335"})]}),v.jsx("defs",{children:v.jsx("clipPath",{id:"clip0_1156_824",children:v.jsx("rect",{width:"16",height:"16",fill:"white",transform:"translate(0.5)"})})})]}),v.jsx("span",{children:"Sign in With Google"})]}),v.jsxs(W.Button,{size:"lg",color:"white",className:"flex items-center gap-2 justify-center shadow-md",fullWidth:!0,children:[v.jsx("img",{src:"/img/twitter-logo.svg",height:24,width:24,alt:""}),v.jsx("span",{children:"Sign in With Twitter"})]})]}),v.jsxs(W.Typography,{variant:"paragraph",className:"text-center text-blue-gray-500 font-medium mt-4",children:["Already have an account?",v.jsx(YC,{to:"/auth/sign-in",className:"text-gray-900 ml-1",children:"Sign in"})]})]})]})]})}function sN(){const e=$n(),{logout:t}=Wr(),[r,n]=P.useState("abmelden..."),[o,a]=P.useState(null);return P.useEffect(()=>{let i=!1;return(async()=>{try{n("Abmeldung läuft …"),a(null),await t()}catch(f){i||(console.error("⚠️ [Auth] Logout fehlgeschlagen:",f),a("Abmeldung fehlgeschlagen. Bitte versuche es erneut."))}finally{i||e("/auth/sign-in",{replace:!0})}})(),()=>{i=!0}},[t,e]),v.jsx("section",{className:"m-8 flex min-h-[60vh] items-center justify-center",children:v.jsx(W.Card,{className:"w-full max-w-md border border-blue-gray-100 shadow-sm",children:v.jsxs(W.CardBody,{className:"space-y-4 text-center",children:[v.jsxs("div",{className:"flex items-center justify-center gap-3",children:[v.jsx(W.Spinner,{className:"h-5 w-5 text-blue-gray-500"}),v.jsx(W.Typography,{color:"blue-gray",className:"text-sm font-medium",children:r})]}),o&&v.jsx(W.Typography,{color:"red",className:"text-sm",children:o}),v.jsx(W.Typography,{className:"text-xs text-blue-gray-400",children:"Du wirst automatisch weitergeleitet …"})]})})})}sN.displayName="/src/pages/auth/sign-out.jsx";const Cc=8,lN=e=>String(e||"").trim().toLowerCase(),jV=(e="")=>{const t=String(e||"").replace(/[\r\n\t]+/g," ").trim().toLowerCase();return t?t.split(/\s+/).filter(Boolean):[]},AV=(e=[])=>{const t=e.map(lN).filter(Boolean);return{words:t,canonical:t.join("")}};function RV(){const e=$n(),{showToast:t}=Ci(),{user:r}=Wr(),[n,o]=P.useState(""),[a,i]=P.useState(Array(Cc).fill("")),[u,f]=P.useState(""),[g,m]=P.useState(""),[S,O]=P.useState(""),[T,C]=P.useState(!1),[w,b]=P.useState(""),[d,s]=P.useState(""),[c,l]=P.useState(""),[h,y]=P.useState(!1),[x,j]=P.useState("");P.useEffect(()=>{r&&e("/dashboard/stacks",{replace:!0})},[r,e]);const k=P.useMemo(()=>g.trim()?jV(g):a.map(lN).filter(Boolean),[g,a]),N=P.useCallback((z,V)=>{i(Y=>{const q=[...Y];return q[z]=V,q})},[]),A=P.useCallback(z=>{const[V]=z.target.files||[];if(!V){f(""),m("");return}f(V.name);const Y=new FileReader;Y.onload=q=>{var H;const B=String(((H=q.target)==null?void 0:H.result)||"");m(B),i(Array(Cc).fill(""))},Y.onerror=()=>{f(""),m(""),t({variant:"error",title:"Datei konnte nicht gelesen werden",description:"Bitte lade die Datei erneut hoch."})},Y.readAsText(V)},[t]),M=P.useCallback(async()=>{var B,H,K;O(""),b("");const z=n.trim();if(!z){O("Bitte gib deinen Benutzernamen ein.");return}const V=k,Y=!!g.trim();if(!Y&&V.length!==Cc){O("Bitte gib alle acht Wörter des Sicherheitsschlüssels ein.");return}if(Y&&V.length!==Cc){O("Die hochgeladene Datei enthält nicht genau acht Wörter.");return}const q=AV(V);if(!q.canonical){O("Der Sicherheitsschlüssel ist ungültig oder leer.");return}C(!0);try{const re=(B=(await Je.post("/api/auth/recover/verify",{username:z,phrase:q.canonical,words:q.words})).data)==null?void 0:B.token;if(!re)throw new Error("TOKEN_MISSING");b(re),t({variant:"success",title:"Sicherheitsschlüssel bestätigt",description:"Du kannst jetzt ein neues Passwort festlegen."})}catch(X){const re=(K=(H=X.response)==null?void 0:H.data)==null?void 0:K.error;O(re==="USER_NOT_FOUND"?"Der angegebene Benutzer wurde nicht gefunden.":re==="PHRASE_MISMATCH"?"Der Sicherheitsschlüssel passt nicht zum Benutzer.":re==="PHRASE_NOT_INITIALIZED"?"Für diesen Benutzer ist aktuell kein Sicherheitsschlüssel hinterlegt.":re==="PHRASE_REQUIRED"?"Bitte gib den Sicherheitsschlüssel ein.":re==="USERNAME_REQUIRED"?"Der Benutzername darf nicht leer sein.":re==="INVALID_PASSWORD"?"Der Sicherheitsschlüssel ist ungültig.":"Die Sicherheitsprüfung ist fehlgeschlagen. Bitte versuche es erneut.")}finally{C(!1)}},[g,k,t,n]),D=P.useCallback(async()=>{var Y,q;if(j(""),!w){j("Bitte bestätige zuerst deinen Sicherheitsschlüssel.");return}const z=d.trim(),V=c.trim();if(!z||!V){j("Bitte gib das neue Passwort zweimal ein.");return}if(z!==V){j("Die Passwörter stimmen nicht überein.");return}y(!0);try{await Je.post("/api/auth/recover/reset",{token:w,password:z,confirmPassword:V}),t({variant:"success",title:"Passwort aktualisiert",description:"Du kannst dich jetzt mit deinem neuen Passwort anmelden."}),e("/auth/sign-in",{replace:!0})}catch(B){const H=(q=(Y=B.response)==null?void 0:Y.data)==null?void 0:q.error;H==="TOKEN_INVALID_OR_EXPIRED"?(j("Die Wiederherstellungssitzung ist abgelaufen. Bitte starte den Vorgang erneut."),b("")):j(H==="PASSWORD_TOO_SHORT"?"Das Passwort muss mindestens 8 Zeichen enthalten.":H==="PASSWORD_REQUIRED"?"Bitte gib ein neues Passwort ein.":H==="PASSWORD_MISMATCH"?"Die Passwörter stimmen nicht überein.":"Das Passwort konnte nicht zurückgesetzt werden. Bitte versuche es erneut.")}finally{y(!1)}},[c,e,d,t,w]),L=!!w;return v.jsx("section",{className:"m-8 flex justify-center",children:v.jsxs(W.Card,{className:"w-full max-w-3xl",children:[v.jsxs(W.CardHeader,{floated:!1,shadow:!1,className:"rounded-none border-b border-blue-gray-50 bg-white px-6 py-5",children:[v.jsx(W.Typography,{variant:"h4",color:"blue-gray",className:"font-semibold",children:"Passwort zurücksetzen"}),v.jsx(W.Typography,{color:"blue-gray",className:"mt-1 text-sm",children:"Gib deinen Benutzernamen und den Sicherheitsschlüssel (8 Wörter) ein oder lade die gespeicherte Schlüsseldatei."})]}),v.jsxs(W.CardBody,{className:"space-y-8",children:[v.jsxs("div",{className:"space-y-4",children:[v.jsx(W.Typography,{variant:"h6",color:"blue-gray",children:"Schritt 1: Sicherheitsschlüssel prüfen"}),v.jsxs("div",{children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Benutzername"}),v.jsx(W.Input,{size:"lg",placeholder:"Benutzername",value:n,onChange:z=>o(z.target.value),disabled:L||T,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Sicherheitsschlüssel eingeben"}),v.jsx("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-4 min-w-[20px] [&>div]:!min-w-0",children:a.map((z,V)=>v.jsx(W.Input,{placeholder:`Wort ${V+1}`,value:z,onChange:Y=>N(V,Y.target.value),disabled:L||T||!!g.trim(),className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}},`phrase-input-${V}`))})]}),v.jsxs("div",{children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Alternativ: Schlüsseldatei (.txt) hochladen"}),v.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-center",children:[v.jsx("input",{type:"file",accept:".txt",onChange:A,disabled:L||T,className:"block w-full max-w-xs text-sm text-blue-gray-500 file:mr-4 file:rounded-md file:border-0 file:bg-blue-gray-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-gray-700 hover:file:bg-blue-gray-100"}),u&&v.jsxs(W.Typography,{className:"text-xs text-blue-gray-500",children:["Ausgewählte Datei: ",v.jsx("span",{className:"font-medium text-blue-gray-700",children:u})]})]})]}),S&&v.jsx(W.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:S}),v.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[v.jsx(W.Button,{color:"blue",className:"normal-case",onClick:M,disabled:T||L,children:T?v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx(W.Spinner,{className:"h-4 w-4"})," Prüfe Sicherheitsschlüssel ..."]}):"Sicherheitsschlüssel prüfen"}),L&&v.jsx(W.Typography,{className:"text-sm text-blue-gray-500",children:"Die Wiederherstellung bleibt für kurze Zeit aktiv. Bitte setze dein Passwort zeitnah zurück."})]})]}),v.jsxs("div",{className:"space-y-4",children:[v.jsx(W.Typography,{variant:"h6",color:L?"blue-gray":"gray",children:"Schritt 2: Neues Passwort festlegen"}),!L&&v.jsx(W.Typography,{className:"text-sm text-blue-gray-500",children:"Nach erfolgreicher Prüfung des Sicherheitsschlüssels kannst du hier ein neues Passwort vergeben."}),L&&v.jsxs("div",{className:"space-y-4",children:[v.jsxs("div",{children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Neues Passwort"}),v.jsx(W.Input,{type:"password",size:"lg",placeholder:"Neues Passwort",value:d,onChange:z=>s(z.target.value),disabled:h,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{children:[v.jsx(W.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Passwort bestätigen"}),v.jsx(W.Input,{type:"password",size:"lg",placeholder:"Passwort bestätigen",value:c,onChange:z=>l(z.target.value),disabled:h,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),x&&v.jsx(W.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:x}),v.jsx(W.Button,{color:"green",className:"normal-case",onClick:D,disabled:h,children:h?v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx(W.Spinner,{className:"h-4 w-4"})," Speichere Passwort ..."]}):"Neues Passwort speichern"})]})]}),v.jsx("div",{className:"border-t border-blue-gray-50 pt-4",children:v.jsx(W.Typography,{as:"button",type:"button",onClick:()=>e("/auth/sign-in"),className:"text-sm font-medium text-blue-600 transition hover:text-blue-800",children:"Zurück zur Anmeldung"})})]})]})})}function Sa({permission:e,requiredLevel:t="full",loadingFallback:r=null,children:n}){const{initialized:o,loading:a,hasPermission:i}=Wr();return e?!o||a?r??v.jsx("div",{className:"flex min-h-[200px] items-center justify-center",children:v.jsx(W.Typography,{variant:"small",color:"blue-gray",children:"Berechtigungen werden geladen …"})}):i(e,t)?n:v.jsx("div",{className:"mt-12 flex items-center justify-center px-4",children:v.jsx(W.Card,{className:"max-w-xl border border-blue-gray-100 shadow-sm",children:v.jsxs(W.CardBody,{className:"space-y-3 text-center",children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:"Kein Zugriff auf diesen Bereich"}),v.jsxs(W.Typography,{variant:"small",className:"text-blue-gray-500",children:["Für diese Funktion wird die Berechtigung ",v.jsx("code",{children:e})," benötigt."]})]})})}):n}Sa.propTypes={permission:vn.string,requiredLevel:vn.string,loadingFallback:vn.node,children:vn.node.isRequired};const Do={className:"w-5 h-5 text-inherit"},v0=[{layout:"dashboard",pages:[{icon:v.jsx(p4,{...Do}),name:"stacks",path:"/stacks",element:v.jsx(eV,{}),permission:null},{icon:v.jsx(_4,{...Do}),name:"wartung",path:"/maintenance",element:v.jsx(Sa,{permission:"maintenance-access",requiredLevel:"read",children:v.jsx(rV,{})}),permission:{key:"maintenance-access",requiredLevel:"read"}},{icon:v.jsx(o4,{...Do}),name:"logs",path:"/logs",element:v.jsx(Sa,{permission:"logs-access",requiredLevel:"full",children:v.jsx(cV,{})}),permission:{key:"logs-access",requiredLevel:"full"}},{icon:v.jsx(y4,{...Do}),name:"benutzer",path:"/users",element:v.jsx(Sa,{permission:"users-access",requiredLevel:"read",children:v.jsx(pV,{})}),permission:{key:"users-access",requiredLevel:"read"}},{icon:v.jsx(m4,{...Do}),name:"rechtegruppen",path:"/usergroups",element:v.jsx(Sa,{permission:"user-groups-access",requiredLevel:"read",children:v.jsx(gV,{})}),permission:{key:"user-groups-access",requiredLevel:"read"}}]},{title:"auth pages",layout:"auth",pages:[{icon:v.jsx(c4,{...Do}),name:"sign in",path:"/sign-in",element:v.jsx(NV,{})},{icon:v.jsx(t4,{...Do}),name:"passwort vergessen",path:"/forgot-password",element:v.jsx(RV,{}),hidden:!0},{icon:v.jsx(GI,{...Do}),name:"log out",path:"/logout",element:v.jsx(sN,{})},{icon:v.jsx(s4,{...Do}),name:"sign up",path:"/sign-up",element:v.jsx(EV,{})}]}];function uN(){const[e,t]=qf(),{sidenavType:r}=e,n=Va(),o=$n(),[a,i]=P.useState(!1),[u,f]=P.useState(!0),{initialized:g,loading:m,isAuthenticated:S,refreshSession:O,user:T}=Wr(),C=P.useCallback(async()=>{i(!1);try{const b=await fetch("/api/setup/status",{credentials:"include"});if(!b.ok)throw new Error("STATUS_REQUEST_FAILED");const d=await b.json();f(!d.setupComplete)}catch(b){console.error("⚠️ [Setup] Statusprüfung fehlgeschlagen:",b),f(!0)}finally{i(!0)}},[]);if(P.useEffect(()=>{C()},[C]),P.useEffect(()=>{!a||u||g||m||O()},[a,u,g,m,O]),P.useEffect(()=>{if(!a)return;if(u){n.pathname!=="/setup"&&o("/setup",{replace:!0});return}if(!g)return;if(!S){n.pathname!=="/auth/sign-in"&&o("/auth/sign-in",{replace:!0});return}const b=!!(T!=null&&T.requiresSecurityPhraseDownload),d=n.pathname==="/dashboard/security-phrase";if(b&&!d){o("/dashboard/security-phrase",{replace:!0});return}!b&&d&&o("/dashboard/stacks",{replace:!0})},[a,u,g,S,n.pathname,o,T==null?void 0:T.requiresSecurityPhraseDownload]),P.useEffect(()=>{if(!a||u||!g||m)return;if(!S){n.pathname!=="/auth/sign-in"&&o("/auth/sign-in",{replace:!0});return}const b=n.pathname.startsWith("/auth/"),d=n.pathname==="/auth/logout";(n.pathname==="/setup"||b&&!d)&&o("/dashboard/stacks",{replace:!0})},[a,u,g,m,S,n.pathname,o]),!a)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Pruefe Systemkonfiguration ..."})});if(u)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Setup erforderlich ..."})});if(!g||m)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Pruefe Anmeldung ..."})});if(!S)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Weiterleitung zur Anmeldung ..."})});const w=n.pathname==="/dashboard/security-phrase";return v.jsxs("div",{className:"min-h-screen bg-blue-gray-50/50",children:[!w&&v.jsx(Gf,{routes:v0,brandImg:r==="dark"?"/img/logo-ct.png":"/img/logo-ct-dark.png"}),v.jsxs("div",{className:w?"":"p-4 xl:ml-80",children:[!w&&v.jsxs(v.Fragment,{children:[v.jsx(Vk,{}),v.jsx(Uk,{}),v.jsx(W.IconButton,{size:"lg",color:"white",className:"fixed bottom-8 right-8 z-40 rounded-full shadow-blue-gray-900/10 xl:hidden",ripple:!1,onClick:()=>Eb(t,!0),children:v.jsx(QC,{className:"h-5 w-5"})})]}),v.jsxs(Tm,{children:[v0.map(({layout:b,pages:d})=>b==="dashboard"&&d.map(({path:s,element:c})=>v.jsx(no,{exact:!0,path:s,element:c}))),v.jsx(no,{path:"security-phrase",element:v.jsx(PV,{})}),v.jsx(no,{path:"users/:userId",element:v.jsx(Sa,{permission:"users-access",requiredLevel:"read",children:v.jsx(xV,{})})}),v.jsx(no,{path:"usergroups/:groupId",element:v.jsx(Sa,{permission:"user-groups-access",requiredLevel:"read",children:v.jsx(_V,{})})}),v.jsx(no,{path:"maintenance/servers/:serverId",element:v.jsx(Sa,{permission:"maintenance-server-manage",requiredLevel:"read",children:v.jsx(OV,{})})})]}),!w&&v.jsx("div",{className:"text-blue-gray-600",children:v.jsx(Wk,{})})]})]})}uN.displayName="/src/layout/dashboard.jsx";function cN(){return v.jsx("div",{className:"relative min-h-screen w-full",children:v.jsx(Tm,{children:v0.map(({layout:e,pages:t})=>e==="auth"&&t.map(({path:r,element:n})=>v.jsx(no,{exact:!0,path:r,element:n})))})})}cN.displayName="/src/layout/Auth.jsx";const hl=["Willkommen","Superuser","Server & API-Key","Stack auswählen (optional)","Abschluss"],MV=e=>typeof(e==null?void 0:e.Name)=="string"&&e.Name.toLowerCase().includes("stackpulse"),IV={username:"",email:"",password:""},DV={name:"",url:""};function LV(){var qe,it,mt,We,rt,yt;const e=$n(),[t,r]=P.useState(null),[n,o]=P.useState(!0),[a,i]=P.useState(null),[u,f]=P.useState(IV),[g,m]=P.useState(DV),[S,O]=P.useState(""),[T,C]=P.useState({loading:!1,success:!1,tried:!1,message:""}),[w,b]=P.useState({loading:!1,fetched:!1,error:"",items:[],updatedAt:null}),[d,s]=P.useState(""),[c,l]=P.useState(""),[h,y]=P.useState(0),[x,j]=P.useState(!1),[k,N]=P.useState(null),[A,M]=P.useState(!1);P.useEffect(()=>{let je=!0;const Ke=new AbortController;return(async()=>{var oe,ge,te;o(!0),i(null);try{const ye=await fetch("/api/setup/status",{signal:Ke.signal,credentials:"include"});if(!ye.ok)throw new Error("STATUS_REQUEST_FAILED");const ie=await ye.json();if(!je)return;if(r(ie),ie.setupComplete){e("/auth/sign-in",{replace:!0});return}f(fe=>{var Oe,xe,Ue,Fe,Qe,ke;return{username:(xe=(Oe=ie.envDefaults)==null?void 0:Oe.superuserUsername)!=null&&xe.length?ie.envDefaults.superuserUsername:fe.username,email:(Fe=(Ue=ie.envDefaults)==null?void 0:Ue.superuserEmail)!=null&&Fe.length?ie.envDefaults.superuserEmail:fe.email,password:(ke=(Qe=ie.envDefaults)==null?void 0:Qe.superuserPassword)!=null&&ke.length?ie.envDefaults.superuserPassword:fe.password}}),m(fe=>{var Oe,xe,Ue,Fe;return{name:(xe=(Oe=ie.envDefaults)==null?void 0:Oe.serverName)!=null&&xe.length?ie.envDefaults.serverName:fe.name,url:(Fe=(Ue=ie.envDefaults)==null?void 0:Ue.serverUrl)!=null&&Fe.length?ie.envDefaults.serverUrl:fe.url}}),O(fe=>{var Oe,xe;return(xe=(Oe=ie.envDefaults)==null?void 0:Oe.apiKeyValue)!=null&&xe.length?ie.envDefaults.apiKeyValue:fe});const se=((oe=ie.selfStack)==null?void 0:oe.current)||((ge=ie.envDefaults)==null?void 0:ge.selfStackId)||"";l(se),s((te=ie.selfStack)!=null&&te.current?String(ie.selfStack.current):""),y(0),C({loading:!1,success:!1,tried:!1,message:""}),b({loading:!1,fetched:!1,error:"",items:[],updatedAt:null}),N(null),M(!1)}catch(ye){if(ye.name==="AbortError")return;console.error("⚠️ [Setup] Status konnte nicht geladen werden:",ye),je&&i("Setup-Status konnte nicht geladen werden. Bitte Seite aktualisieren.")}finally{je&&o(!1)}})(),()=>{je=!1,Ke.abort()}},[e]);const D=(t==null?void 0:t.envDefaults)||{},L=!!((qe=t==null?void 0:t.requirements)!=null&&qe.superuser),z=!!((it=t==null?void 0:t.requirements)!=null&&it.server),V=!!((mt=t==null?void 0:t.requirements)!=null&&mt.apiKey),Y=!!((We=t==null?void 0:t.apiKeys)!=null&&We.count),q=!!(D.serverUrl||(rt=t==null?void 0:t.servers)!=null&&rt.envProvided),B=!!(D.apiKeyValue||(yt=t==null?void 0:t.apiKeys)!=null&&yt.envProvided),H=z||q,K=V||!Y||B,X=!!D.superuserUsername,re=!!D.superuserEmail,me=!!D.superuserPassword,de=!!D.serverNameFromEnv,ee=!!D.serverUrl,_e=!!D.apiKeyValue,he=P.useCallback(()=>{C(je=>je.loading||!je.tried?je:{loading:!1,success:!1,tried:!1,message:""})},[]),pe=P.useCallback(je=>Ke=>{const Te=Ke.target.value;f(oe=>({...oe,[je]:Te}))},[]),be=P.useCallback(je=>Ke=>{if(je==="name"&&de||je==="url"&&ee)return;const Te=Ke.target.value;m(oe=>({...oe,[je]:Te})),he()},[he,de,ee]),ve=P.useCallback(je=>{_e||(O(je.target.value),he())},[_e,he]),Ce=P.useCallback(async()=>{const je=g.url.trim(),Ke=S.trim();if(!je){C({loading:!1,success:!1,tried:!0,message:"Bitte gib eine Server-URL an."});return}if(!Ke){C({loading:!1,success:!1,tried:!0,message:"Bitte gib einen API-Key ein."});return}C({loading:!0,success:!1,tried:!0,message:""});try{const Te=await fetch("/api/setup/test-portainer",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({server:{name:g.name.trim()||null,url:je},apiKey:Ke})});if(!Te.ok){const ge=(await Te.json().catch(()=>({}))).message||"Verbindungstest fehlgeschlagen. Bitte Daten prüfen.";throw new Error(ge)}C({loading:!1,success:!0,tried:!0,message:"Verbindung wurde erfolgreich hergestellt."})}catch(Te){console.error("⚠️ [Setup] Verbindungstest fehlgeschlagen:",Te),C({loading:!1,success:!1,tried:!0,message:Te.message||"Verbindungstest fehlgeschlagen."})}},[S,g]),Ae=P.useCallback(async({silent:je=!1}={})=>{if(!T.success){b(oe=>({...oe,error:"Bitte teste zuerst die Verbindung."}));return}const Ke=g.url.trim(),Te=S.trim();if(!(!Ke||!Te)){b(oe=>({...oe,loading:!je,error:"",fetched:!0}));try{const oe=await fetch("/api/setup/portainer-stacks",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({server:{name:g.name.trim()||null,url:Ke},apiKey:Te})});if(!oe.ok){const se=(await oe.json().catch(()=>({}))).message||"Stacks konnten nicht geladen werden.";throw new Error(se)}const ge=await oe.json().catch(()=>({stacks:[]})),ye=(Array.isArray(ge.stacks)?ge.stacks:[]).filter(MV);b({loading:!1,fetched:!0,error:ye.length?"":"Es wurden keine passenden Stacks gefunden.",items:ye,updatedAt:new Date})}catch(oe){console.error("⚠️ [Setup] Stack-Abruf fehlgeschlagen:",oe),b({loading:!1,fetched:!0,error:oe.message||"Stacks konnten nicht geladen werden.",items:[],updatedAt:new Date})}}},[S,T.success,g]);P.useEffect(()=>{h===3&&T.success&&!w.loading&&!w.fetched&&Ae({silent:!0})},[h,T.success,Ae,w.fetched,w.loading]),P.useEffect(()=>{T.success||(b(je=>({...je,items:[],fetched:!1,error:""})),s(""))},[T.success]);const Ne=(d||c||"").trim(),ue=P.useMemo(()=>{switch(h){case 0:return!0;case 1:return L?u.username.trim()&&u.email.trim()&&u.password.trim():!0;case 2:{const je=H?!!g.url.trim():!0,Ke=K?!!S.trim():!0,Te=H||K?T.success:!0;return je&&Ke&&Te}case 3:return!0;case 4:return!0;default:return!1}},[h,S,T.success,L,K,H,u.email,u.password,u.username,g.url]),Ee=P.useCallback(()=>{h>=hl.length-1||y(je=>Math.min(je+1,hl.length-1))},[h]),$e=P.useCallback(()=>{y(je=>Math.max(je-1,0))},[]),Ge=P.useCallback(async()=>{if(!(!t||x)){N(null),M(!1),j(!0);try{const je={};L&&(je.superuser={username:u.username.trim(),email:u.email.trim(),password:u.password}),H&&(je.server={name:g.name.trim(),url:g.url.trim()}),(K||S.trim())&&(je.apiKey={value:S.trim()}),Ne&&(je.selfStackId=Ne);const Ke=await fetch("/api/setup/complete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(je)});if(!Ke.ok){const oe=await Ke.json().catch(()=>({})),ge=(()=>{switch(oe.error){case"SERVER_DETAILS_REQUIRED":return"Bitte gib eine gültige Server-URL an.";case"API_KEY_REQUIRED":return"Bitte gib einen gültigen API-Key an.";case"USERNAME_REQUIRED":return"Benutzername wird benötigt.";case"EMAIL_INVALID":return"Bitte gib eine gültige E-Mail-Adresse an.";case"PASSWORD_TOO_SHORT":return"Passwort muss mindestens 8 Zeichen enthalten.";case"INVALID_PASSWORD":return"Das Passwort ist ungültig.";case"API_KEY_ENCRYPT_FAILED":return"API-Key konnte nicht verschlüsselt werden.";case"SUPERUSER_EXISTS":return"Der Superuser wurde bereits angelegt.";default:return"Setup konnte nicht abgeschlossen werden."}})();throw new Error(ge)}const Te=await Ke.json().catch(()=>({}));r(Te.status),M(!0),setTimeout(()=>{e("/auth/sign-in",{replace:!0})},1500)}catch(je){console.error("⚠️ [Setup] Abschluss fehlgeschlagen:",je),N(je.message||"Setup fehlgeschlagen.")}finally{j(!1)}}},[S,Ne,x,e,L,K,H,t,u.email,u.password,u.username,g.name,g.url]),tt=P.useMemo(()=>w.items,[w.items]),ct=()=>{switch(h){case 0:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:"Willkommen bei StackPulse"}),v.jsx(W.Typography,{className:"text-sm text-blue-gray-600",children:"Dieser Assistent führt dich durch fünf Schritte:"}),v.jsxs("ol",{className:"list-decimal space-y-2 pl-5 text-sm text-blue-gray-600",children:[v.jsx("li",{children:"Superuser-Zugang anlegen"}),v.jsx("li",{children:"Server-URL und Portainer API-Key hinterlegen und testen"}),v.jsx("li",{children:"Den eigenen Stack in Portainer identifizieren"}),v.jsx("li",{children:"Alle Angaben überprüfen und Setup abschließen"})]}),v.jsx(W.Alert,{color:"blue",className:"bg-blue-50 text-blue-800",children:"Du kannst jederzeit zum vorherigen Schritt zurückkehren. Vorwärts geht es, sobald alle Pflichtangaben eines Schritts erledigt sind."})]});case 1:return L?v.jsxs("div",{className:"space-y-4",children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:"Superuser anlegen"}),v.jsx(W.Typography,{className:"text-sm text-blue-gray-600",children:"Dieser Benutzer hat Zugriff auf alle Funktionen."}),v.jsxs("div",{className:"grid gap-4",children:[v.jsx(W.Input,{label:"Benutzername",value:u.username,onChange:pe("username"),readOnly:X}),v.jsx(W.Input,{label:"E-Mail-Adresse",type:"email",value:u.email,onChange:pe("email"),readOnly:re}),v.jsx(W.Input,{label:"Passwort",type:"password",value:u.password,onChange:pe("password"),readOnly:me})]})]}):v.jsx(W.Alert,{color:"green",className:"bg-green-50 text-green-800",children:"Superuser ist bereits vorhanden. Du kannst direkt zum nächsten Schritt gehen."});case 2:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:"Server und Portainer-Zugriff"}),v.jsx(W.Typography,{className:"text-sm text-blue-gray-600",children:"Gib die URL zu deiner Portainer-Instanz sowie den dazugehörigen Business-API-Key ein und teste anschließend die Verbindung."}),v.jsxs("div",{className:"grid gap-4",children:[v.jsx(W.Input,{label:"Server-Name",value:g.name,onChange:be("name"),readOnly:de}),v.jsx(W.Input,{label:"Server-URL",required:H,value:g.url,onChange:be("url"),readOnly:ee}),v.jsx(W.Input,{label:"Portainer API-Key",type:"password",required:K,value:S,onChange:ve,readOnly:_e}),v.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[v.jsx(W.Button,{color:"blue",onClick:Ce,disabled:T.loading,className:"w-full sm:w-auto",children:T.loading?"Teste Verbindung…":"Verbindung testen"}),T.tried&&v.jsx("span",{className:`text-sm ${T.success?"text-green-600":"text-red-600"}`,children:T.message||(T.success?"Verbindung erfolgreich":"Verbindungstest fehlgeschlagen")})]})]})]});case 3:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:"Eigenen Stack wählen (optional)"}),v.jsx(W.Typography,{className:"text-sm text-blue-gray-600",children:"StackPulse kann deinen eigenen Stack hinterlegen, um spätere Wartungsschritte zu erleichtern. Wir versuchen, passende Stacks automatisch zu finden."}),v.jsx(W.Alert,{color:"blue",className:"bg-blue-50 text-blue-800",children:"Dieser Schritt ist optional. Du kannst die Self-Stack-ID später jederzeit im Bereich „Wartung > Server & API-Keys“ hinterlegen oder anpassen."}),v.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(W.Button,{color:"blue",variant:"outlined",onClick:()=>Ae({silent:!1}),disabled:!T.success||w.loading,className:"w-full sm:w-auto",children:w.loading?"Lade…":"Stacks neu laden"}),w.updatedAt&&v.jsxs("span",{className:"text-xs text-blue-gray-500",children:["Stand: ",w.updatedAt.toLocaleTimeString("de-DE")]})]}),w.error&&v.jsx(W.Alert,{color:"red",className:"bg-red-50 text-red-700",children:w.error}),v.jsx("div",{className:"space-y-3",children:tt.length===0&&!w.loading?v.jsx("p",{className:"text-sm text-blue-gray-500",children:'Es wurden keine Stacks gefunden, die "stackpulse" im Namen enthalten. Bitte die ID manuell eingeben oder die Suche erneut ausführen.'}):tt.map(je=>v.jsxs("label",{className:"flex cursor-pointer items-center justify-between rounded-md border border-blue-gray-100 p-3",children:[v.jsxs("div",{children:[v.jsx("p",{className:"text-sm font-medium text-blue-gray-900",children:je.Name||"Ohne Namen"}),v.jsxs("p",{className:"text-xs text-blue-gray-500",children:["ID: ",je.Id]})]}),v.jsx(W.Radio,{name:"stack-selection",value:String(je.Id),checked:d===String(je.Id),onChange:()=>{s(String(je.Id)),l("")},ripple:!1})]},je.Id))}),v.jsxs("div",{className:"space-y-2",children:[v.jsx(W.Typography,{className:"text-sm font-semibold text-blue-gray-700",children:"Alternative: Stack-ID manuell eintragen (optional)"}),v.jsx(W.Input,{label:"Stack-ID (optional)",value:c,onChange:je=>{l(je.target.value),s("")},placeholder:"z. B. 42"})]})]});case 4:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(W.Typography,{variant:"h5",color:"blue-gray",children:"Zusammenfassung"}),v.jsxs("div",{className:"space-y-4 rounded-md border border-blue-gray-100 p-4 text-sm text-blue-gray-700",children:[v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"Superuser"}),v.jsx("p",{children:L?`${u.username||"-"} (${u.email||"ohne E-Mail"})`:"Bereits vorhanden"})]}),v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"Server"}),v.jsx("p",{children:g.url||"-"})]}),v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"API-Key"}),v.jsx("p",{children:S?"(ausgefüllt)":"nicht angegeben"})]}),v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"Self-Stack-ID"}),v.jsx("p",{children:Ne||"nicht ausgewählt"})]})]}),k&&v.jsx(W.Alert,{color:"red",className:"bg-red-50 text-red-700",children:k}),A&&v.jsx(W.Alert,{color:"green",className:"bg-green-50 text-green-800",children:"Setup abgeschlossen. Du wirst zum Login weitergeleitet …"})]});default:return null}};return n?v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Lade Setup-Status …"})}):a?v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx(W.Alert,{color:"red",className:"w-full max-w-lg border border-red-200 bg-red-50 text-red-700",children:a})}):t?v.jsx("div",{className:"flex min-h-screen w-full items-center justify-center py-10",children:v.jsxs(W.Card,{className:"w-full max-w-3xl border border-blue-gray-100 shadow-sm",children:[v.jsxs(W.CardHeader,{floated:!1,shadow:!1,className:"grid gap-1 rounded-none bg-transparent p-6 text-left",children:[v.jsx(W.Typography,{variant:"h4",color:"blue-gray",children:"System Setup"}),v.jsx(W.Typography,{color:"gray",className:"text-sm",children:"Folge den Schritten, um StackPulse mit deiner Portainer-Instanz zu verbinden."})]}),v.jsxs(W.CardBody,{className:"pt-0",children:[v.jsx(W.Stepper,{activeStep:h,className:"w-full py-6",children:hl.map((je,Ke)=>v.jsx(W.Step,{onClick:()=>y(Ke),className:"cursor-pointer",activeClassName:"bg-blue-600 text-white",completedClassName:"bg-blue-600 text-white",children:Ke+1},je))}),v.jsx("div",{className:"mt-4 grid grid-cols-1 gap-2 text-center text-xs font-medium text-blue-gray-600 sm:grid-cols-5",children:hl.map(je=>v.jsx("span",{children:je},je))}),v.jsx("div",{className:"mt-6 min-h-[260px] space-y-6",children:ct()}),v.jsxs("div",{className:"mt-10 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(W.Button,{variant:"text",color:"blue",onClick:$e,disabled:h===0||x,className:"w-full sm:w-auto",children:"Zurück"}),h:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-amber-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(255 179 0 / var(--tw-divide-opacity))}.divide-blue-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 136 229 / var(--tw-divide-opacity))}.divide-blue-gray-50>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(236 239 241 / var(--tw-divide-opacity))}.divide-blue-gray-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(84 110 122 / var(--tw-divide-opacity))}.divide-brown-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(109 76 65 / var(--tw-divide-opacity))}.divide-cyan-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(0 172 193 / var(--tw-divide-opacity))}.divide-deep-orange-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(244 81 30 / var(--tw-divide-opacity))}.divide-deep-purple-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(94 53 177 / var(--tw-divide-opacity))}.divide-gray-800>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(66 66 66 / var(--tw-divide-opacity))}.divide-green-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(22 163 74 / var(--tw-divide-opacity))}.divide-indigo-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(57 73 171 / var(--tw-divide-opacity))}.divide-light-blue-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(3 155 229 / var(--tw-divide-opacity))}.divide-light-green-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(124 179 66 / var(--tw-divide-opacity))}.divide-lime-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(192 202 51 / var(--tw-divide-opacity))}.divide-orange-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(234 88 12 / var(--tw-divide-opacity))}.divide-pink-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(216 27 96 / var(--tw-divide-opacity))}.divide-purple-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(142 36 170 / var(--tw-divide-opacity))}.divide-red-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 57 53 / var(--tw-divide-opacity))}.divide-teal-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(0 137 123 / var(--tw-divide-opacity))}.divide-yellow-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(253 216 53 / var(--tw-divide-opacity))}.self-start{align-self:flex-start}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.\!overflow-visible{overflow:visible!important}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-full{border-radius:9999px!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[7px\]{border-radius:7px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-br-none{border-bottom-right-radius:0}.rounded-tl-none{border-top-left-radius:0}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r-0{border-right-width:0px}.border-r-2{border-right-width:2px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(255 224 130 / var(--tw-border-opacity))}.border-amber-500{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.border-arcticBlue-400{--tw-border-opacity: 1;border-color:rgb(102 182 231 / var(--tw-border-opacity))}.border-arcticBlue-500{--tw-border-opacity: 1;border-color:rgb(51 158 222 / var(--tw-border-opacity))}.border-arcticBlue-600{--tw-border-opacity: 1;border-color:rgb(31 134 195 / var(--tw-border-opacity))}.border-arcticBlue-800{--tw-border-opacity: 1;border-color:rgb(15 75 111 / var(--tw-border-opacity))}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.border-blue-gray-100{--tw-border-opacity: 1;border-color:rgb(207 216 220 / var(--tw-border-opacity))}.border-blue-gray-200{--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.border-blue-gray-400{--tw-border-opacity: 1;border-color:rgb(120 144 156 / var(--tw-border-opacity))}.border-blue-gray-50{--tw-border-opacity: 1;border-color:rgb(236 239 241 / var(--tw-border-opacity))}.border-blue-gray-500{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.border-blue-gray-700{--tw-border-opacity: 1;border-color:rgb(69 90 100 / var(--tw-border-opacity))}.border-brown-500{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.border-cyan-500\/60{border-color:#00bcd499}.border-deep-orange-500{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.border-deep-purple-500{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(238 238 238 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(224 224 224 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(117 117 117 / var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(97 97 97 / var(--tw-border-opacity))}.border-gray-700\/20{border-color:#61616133}.border-gray-900{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-indigo-500{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.border-light-blue-500{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.border-light-green-500{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.border-mossGreen-500\/80{border-color:#60b240cc}.border-mossGreen-700{--tw-border-opacity: 1;border-color:rgb(59 107 39 / var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(239 154 154 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity))}.border-sunsetCoral-500{--tw-border-opacity: 1;border-color:rgb(255 106 93 / var(--tw-border-opacity))}.border-sunsetCoral-500\/40{border-color:#ff6a5d66}.border-sunsetCoral-500\/60{border-color:#ff6a5d99}.border-sunsetCoral-500\/80{border-color:#ff6a5dcc}.border-sunsetCoral-600{--tw-border-opacity: 1;border-color:rgb(230 80 72 / var(--tw-border-opacity))}.border-teal-500{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-warmAmberGlow-500\/80{border-color:#ff8f00cc}.border-warmAmberGlow-600{--tw-border-opacity: 1;border-color:rgb(230 118 0 / var(--tw-border-opacity))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.border-white\/80{border-color:#fffc}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.\!border-t-blue-gray-200{--tw-border-opacity: 1 !important;border-top-color:rgb(176 190 197 / var(--tw-border-opacity))!important}.\!border-t-transparent{border-top-color:transparent!important}.border-b-blue-gray-100{--tw-border-opacity: 1;border-bottom-color:rgb(207 216 220 / var(--tw-border-opacity))}.border-l-transparent{border-left-color:transparent}.border-r-transparent{border-right-color:transparent}.border-t-blue-gray-100{--tw-border-opacity: 1;border-top-color:rgb(207 216 220 / var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 248 225 / var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.bg-amber-500\/10{background-color:#ffc1071a}.bg-amber-500\/20{background-color:#ffc10733}.bg-arcticBlue-400{--tw-bg-opacity: 1;background-color:rgb(102 182 231 / var(--tw-bg-opacity))}.bg-arcticBlue-500{--tw-bg-opacity: 1;background-color:rgb(51 158 222 / var(--tw-bg-opacity))}.bg-arcticBlue-600{--tw-bg-opacity: 1;background-color:rgb(31 134 195 / var(--tw-bg-opacity))}.bg-arcticBlue-700{--tw-bg-opacity: 1;background-color:rgb(22 105 155 / var(--tw-bg-opacity))}.bg-arcticBlue-900{--tw-bg-opacity: 1;background-color:rgb(8 45 67 / var(--tw-bg-opacity))}.bg-arcticBlue-900\/90{background-color:#082d43e6}.bg-auroraTeal-500{--tw-bg-opacity: 1;background-color:rgb(56 198 204 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(227 242 253 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.bg-blue-500\/10{background-color:#2196f31a}.bg-blue-500\/20{background-color:#2196f333}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(30 136 229 / var(--tw-bg-opacity))}.bg-blue-gray-100{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.bg-blue-gray-50{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.bg-blue-gray-50\/40{background-color:#eceff166}.bg-blue-gray-50\/50{background-color:#eceff180}.bg-blue-gray-50\/60{background-color:#eceff199}.bg-blue-gray-500{--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.bg-blue-gray-500\/10{background-color:#607d8b1a}.bg-blue-gray-500\/20{background-color:#607d8b33}.bg-blue-gray-500\/80{background-color:#607d8bcc}.bg-brown-500{--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.bg-brown-500\/10{background-color:#7955481a}.bg-brown-500\/20{background-color:#79554833}.bg-citrusPunch-500{--tw-bg-opacity: 1;background-color:rgb(255 214 51 / var(--tw-bg-opacity))}.bg-citrusPunch-600\/80{background-color:#e6bd00cc}.bg-copperRust-500{--tw-bg-opacity: 1;background-color:rgb(141 77 85 / var(--tw-bg-opacity))}.bg-copperRust-600\/80{background-color:#7a444bcc}.bg-current{background-color:currentColor}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.bg-cyan-500\/10{background-color:#00bcd41a}.bg-cyan-500\/20{background-color:#00bcd433}.bg-cyan-900\/30{background-color:#0060644d}.bg-deep-orange-500{--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.bg-deep-orange-500\/10{background-color:#ff57221a}.bg-deep-orange-500\/20{background-color:#ff572233}.bg-deep-purple-500{--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.bg-deep-purple-500\/10{background-color:#673ab71a}.bg-deep-purple-500\/20{background-color:#673ab733}.bg-emeraldMist-500{--tw-bg-opacity: 1;background-color:rgb(63 181 134 / var(--tw-bg-opacity))}.bg-emeraldMist-500\/80{background-color:#3fb586cc}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(224 224 224 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(158 158 158 / var(--tw-bg-opacity))}.bg-gray-800\/60{background-color:#42424299}.bg-gray-800\/70{background-color:#424242b3}.bg-gray-800\/80{background-color:#424242cc}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.bg-gray-900\/10{background-color:#2121211a}.bg-gray-900\/40{background-color:#21212166}.bg-gray-900\/75{background-color:#212121bf}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/20{background-color:#22c55e33}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.bg-indigo-500\/10{background-color:#3f51b51a}.bg-indigo-500\/20{background-color:#3f51b533}.bg-indigo-600\/80{background-color:#3949abcc}.bg-lavenderSmoke-500{--tw-bg-opacity: 1;background-color:rgb(150 112 184 / var(--tw-bg-opacity))}.bg-lavenderSmoke-600\/80{background-color:#7a5894cc}.bg-light-blue-500{--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.bg-light-blue-500\/10{background-color:#03a9f41a}.bg-light-blue-500\/20{background-color:#03a9f433}.bg-light-green-500{--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.bg-light-green-500\/10{background-color:#8bc34a1a}.bg-light-green-500\/20{background-color:#8bc34a33}.bg-lime-500{--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.bg-lime-500\/10{background-color:#cddc391a}.bg-lime-500\/20{background-color:#cddc3933}.bg-mintTea-400{--tw-bg-opacity: 1;background-color:rgb(102 207 201 / var(--tw-bg-opacity))}.bg-mossGreen-400{--tw-bg-opacity: 1;background-color:rgb(140 197 111 / var(--tw-bg-opacity))}.bg-mossGreen-500{--tw-bg-opacity: 1;background-color:rgb(96 178 64 / var(--tw-bg-opacity))}.bg-mossGreen-600{--tw-bg-opacity: 1;background-color:rgb(77 143 51 / var(--tw-bg-opacity))}.bg-mossGreen-800{--tw-bg-opacity: 1;background-color:rgb(42 73 29 / var(--tw-bg-opacity))}.bg-mossGreen-900\/90{background-color:#1c3012e6}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.bg-orange-500\/10{background-color:#f973161a}.bg-orange-500\/20{background-color:#f9731633}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.bg-pink-500\/10{background-color:#e91e631a}.bg-pink-500\/20{background-color:#e91e6333}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.bg-purple-500\/10{background-color:#9c27b01a}.bg-purple-500\/20{background-color:#9c27b033}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(255 235 238 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.bg-red-500\/10{background-color:#f443361a}.bg-red-500\/20{background-color:#f4433633}.bg-roseQuartz-500{--tw-bg-opacity: 1;background-color:rgb(212 91 137 / var(--tw-bg-opacity))}.bg-stormGrey-200\/20{background-color:#d9dce233}.bg-stormGrey-700{--tw-bg-opacity: 1;background-color:rgb(62 68 86 / var(--tw-bg-opacity))}.bg-stormGrey-700\/60{background-color:#3e445699}.bg-sunsetCoral-400{--tw-bg-opacity: 1;background-color:rgb(255 145 137 / var(--tw-bg-opacity))}.bg-sunsetCoral-500{--tw-bg-opacity: 1;background-color:rgb(255 106 93 / var(--tw-bg-opacity))}.bg-sunsetCoral-600{--tw-bg-opacity: 1;background-color:rgb(230 80 72 / var(--tw-bg-opacity))}.bg-sunsetCoral-600\/80{background-color:#e65048cc}.bg-sunsetCoral-900\/20{background-color:#5c1c1a33}.bg-sunsetCoral-900\/40{background-color:#5c1c1a66}.bg-sunsetCoral-900\/90{background-color:#5c1c1ae6}.bg-teal-500{--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.bg-teal-500\/10{background-color:#0096881a}.bg-teal-500\/20{background-color:#00968833}.bg-transparent{background-color:transparent}.bg-warmAmberGlow-400{--tw-bg-opacity: 1;background-color:rgb(255 173 77 / var(--tw-bg-opacity))}.bg-warmAmberGlow-700{--tw-bg-opacity: 1;background-color:rgb(179 90 0 / var(--tw-bg-opacity))}.bg-warmAmberGlow-900\/90{background-color:#4d2600e6}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/50{background-color:#ffffff80}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.bg-yellow-500\/10{background-color:#ffeb3b1a}.bg-yellow-500\/20{background-color:#ffeb3b33}.bg-opacity-60{--tw-bg-opacity: .6}.bg-opacity-80{--tw-bg-opacity: .8}.bg-\[url\(\'\/img\/background-image\.png\'\)\]{background-image:url(/img/background-image.png)}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-amber-600{--tw-gradient-from: #ffb300 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 179 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-black{--tw-gradient-from: #000000 var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from: #1e88e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 136 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-gray-600{--tw-gradient-from: #546e7a var(--tw-gradient-from-position);--tw-gradient-to: rgb(84 110 122 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-gray-800{--tw-gradient-from: #37474f var(--tw-gradient-from-position);--tw-gradient-to: rgb(55 71 79 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-brown-600{--tw-gradient-from: #6d4c41 var(--tw-gradient-from-position);--tw-gradient-to: rgb(109 76 65 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-600{--tw-gradient-from: #00acc1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 172 193 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-deep-orange-600{--tw-gradient-from: #f4511e var(--tw-gradient-from-position);--tw-gradient-to: rgb(244 81 30 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-deep-purple-600{--tw-gradient-from: #5e35b1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(94 53 177 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-600{--tw-gradient-from: #757575 var(--tw-gradient-from-position);--tw-gradient-to: rgb(117 117 117 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-800{--tw-gradient-from: #424242 var(--tw-gradient-from-position);--tw-gradient-to: rgb(66 66 66 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-900{--tw-gradient-from: #212121 var(--tw-gradient-from-position);--tw-gradient-to: rgb(33 33 33 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-400{--tw-gradient-from: #4ade80 var(--tw-gradient-from-position);--tw-gradient-to: rgb(74 222 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-600{--tw-gradient-from: #16a34a var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-600{--tw-gradient-from: #3949ab var(--tw-gradient-from-position);--tw-gradient-to: rgb(57 73 171 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-light-blue-600{--tw-gradient-from: #039be5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(3 155 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-light-green-600{--tw-gradient-from: #7cb342 var(--tw-gradient-from-position);--tw-gradient-to: rgb(124 179 66 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-lime-600{--tw-gradient-from: #c0ca33 var(--tw-gradient-from-position);--tw-gradient-to: rgb(192 202 51 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-400{--tw-gradient-from: #fb923c var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 146 60 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-600{--tw-gradient-from: #ea580c var(--tw-gradient-from-position);--tw-gradient-to: rgb(234 88 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-400{--tw-gradient-from: #ec407a var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 64 122 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-600{--tw-gradient-from: #d81b60 var(--tw-gradient-from-position);--tw-gradient-to: rgb(216 27 96 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-600{--tw-gradient-from: #8e24aa var(--tw-gradient-from-position);--tw-gradient-to: rgb(142 36 170 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-400{--tw-gradient-from: #ef5350 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 83 80 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-600{--tw-gradient-from: #e53935 var(--tw-gradient-from-position);--tw-gradient-to: rgb(229 57 53 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-teal-600{--tw-gradient-from: #00897b var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 137 123 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-600{--tw-gradient-from: #fdd835 var(--tw-gradient-from-position);--tw-gradient-to: rgb(253 216 53 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-amber-400{--tw-gradient-to: #ffca28 var(--tw-gradient-to-position)}.to-black{--tw-gradient-to: #000000 var(--tw-gradient-to-position)}.to-blue-400{--tw-gradient-to: #42a5f5 var(--tw-gradient-to-position)}.to-blue-gray-400{--tw-gradient-to: #78909c var(--tw-gradient-to-position)}.to-blue-gray-900{--tw-gradient-to: #263238 var(--tw-gradient-to-position)}.to-brown-400{--tw-gradient-to: #8d6e63 var(--tw-gradient-to-position)}.to-cyan-400{--tw-gradient-to: #26c6da var(--tw-gradient-to-position)}.to-deep-orange-400{--tw-gradient-to: #ff7043 var(--tw-gradient-to-position)}.to-deep-purple-400{--tw-gradient-to: #7e57c2 var(--tw-gradient-to-position)}.to-gray-400{--tw-gradient-to: #bdbdbd var(--tw-gradient-to-position)}.to-gray-800{--tw-gradient-to: #424242 var(--tw-gradient-to-position)}.to-gray-900{--tw-gradient-to: #212121 var(--tw-gradient-to-position)}.to-green-400{--tw-gradient-to: #4ade80 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-indigo-400{--tw-gradient-to: #5c6bc0 var(--tw-gradient-to-position)}.to-light-blue-400{--tw-gradient-to: #29b6f6 var(--tw-gradient-to-position)}.to-light-green-400{--tw-gradient-to: #9ccc65 var(--tw-gradient-to-position)}.to-lime-400{--tw-gradient-to: #d4e157 var(--tw-gradient-to-position)}.to-orange-400{--tw-gradient-to: #fb923c var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-400{--tw-gradient-to: #ec407a var(--tw-gradient-to-position)}.to-pink-600{--tw-gradient-to: #d81b60 var(--tw-gradient-to-position)}.to-purple-400{--tw-gradient-to: #ab47bc var(--tw-gradient-to-position)}.to-red-400{--tw-gradient-to: #ef5350 var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to: #e53935 var(--tw-gradient-to-position)}.to-teal-400{--tw-gradient-to: #26a69a var(--tw-gradient-to-position)}.to-yellow-400{--tw-gradient-to: #ffee58 var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-clip-border{background-clip:border-box}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.px-px{padding-left:1px;padding-right:1px}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.\!pr-7{padding-right:1.75rem!important}.\!pr-9{padding-right:2.25rem!important}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-6{padding-bottom:1.5rem}.pl-5{padding-left:1.25rem}.pr-24{padding-right:6rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.pt-\[9px\]{padding-top:9px}.pt-px{padding-top:1px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-start{text-align:start}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-sans{font-family:Roboto,sans-serif}.\!text-\[11px\]{font-size:11px!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.\!leading-tight{line-height:1.25!important}.leading-5{line-height:1.25rem}.leading-\[1\.3\]{line-height:1.3}.leading-\[3\.75\]{line-height:3.75}.leading-\[4\.1\]{line-height:4.1}.leading-\[4\.25\]{line-height:4.25}.leading-\[4\.875\]{line-height:4.875}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0em}.tracking-wide{letter-spacing:.025em}.\!text-black{--tw-text-opacity: 1 !important;color:rgb(0 0 0 / var(--tw-text-opacity))!important}.\!text-white{--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.text-amber-200{--tw-text-opacity: 1;color:rgb(255 224 130 / var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity: 1;color:rgb(255 193 7 / var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity: 1;color:rgb(255 179 0 / var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity: 1;color:rgb(255 160 0 / var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity: 1;color:rgb(255 143 0 / var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity: 1;color:rgb(255 111 0 / var(--tw-text-opacity))}.text-arcticBlue-100{--tw-text-opacity: 1;color:rgb(230 243 251 / var(--tw-text-opacity))}.text-arcticBlue-400{--tw-text-opacity: 1;color:rgb(102 182 231 / var(--tw-text-opacity))}.text-arcticBlue-500{--tw-text-opacity: 1;color:rgb(51 158 222 / var(--tw-text-opacity))}.text-arcticBlue-700{--tw-text-opacity: 1;color:rgb(22 105 155 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity: 1;color:rgb(100 181 246 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(33 150 243 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(30 136 229 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(25 118 210 / var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity: 1;color:rgb(21 101 192 / var(--tw-text-opacity))}.text-blue-900{--tw-text-opacity: 1;color:rgb(13 71 161 / var(--tw-text-opacity))}.text-blue-gray-200{--tw-text-opacity: 1;color:rgb(176 190 197 / var(--tw-text-opacity))}.text-blue-gray-300{--tw-text-opacity: 1;color:rgb(144 164 174 / var(--tw-text-opacity))}.text-blue-gray-400{--tw-text-opacity: 1;color:rgb(120 144 156 / var(--tw-text-opacity))}.text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.text-blue-gray-600{--tw-text-opacity: 1;color:rgb(84 110 122 / var(--tw-text-opacity))}.text-blue-gray-700{--tw-text-opacity: 1;color:rgb(69 90 100 / var(--tw-text-opacity))}.text-blue-gray-800{--tw-text-opacity: 1;color:rgb(55 71 79 / var(--tw-text-opacity))}.text-blue-gray-900{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.text-brown-500{--tw-text-opacity: 1;color:rgb(121 85 72 / var(--tw-text-opacity))}.text-brown-700{--tw-text-opacity: 1;color:rgb(93 64 55 / var(--tw-text-opacity))}.text-brown-900{--tw-text-opacity: 1;color:rgb(62 39 35 / var(--tw-text-opacity))}.text-current{color:currentColor}.text-cyan-500{--tw-text-opacity: 1;color:rgb(0 188 212 / var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity: 1;color:rgb(0 151 167 / var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity: 1;color:rgb(0 96 100 / var(--tw-text-opacity))}.text-deep-orange-500{--tw-text-opacity: 1;color:rgb(255 87 34 / var(--tw-text-opacity))}.text-deep-orange-700{--tw-text-opacity: 1;color:rgb(230 74 25 / var(--tw-text-opacity))}.text-deep-orange-900{--tw-text-opacity: 1;color:rgb(191 54 12 / var(--tw-text-opacity))}.text-deep-purple-500{--tw-text-opacity: 1;color:rgb(103 58 183 / var(--tw-text-opacity))}.text-deep-purple-700{--tw-text-opacity: 1;color:rgb(81 45 168 / var(--tw-text-opacity))}.text-deep-purple-900{--tw-text-opacity: 1;color:rgb(49 27 146 / var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(238 238 238 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(224 224 224 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(189 189 189 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(158 158 158 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(97 97 97 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(33 33 33 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(63 81 181 / var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(48 63 159 / var(--tw-text-opacity))}.text-indigo-900{--tw-text-opacity: 1;color:rgb(26 35 126 / var(--tw-text-opacity))}.text-inherit{color:inherit}.text-lavenderSmoke-200{--tw-text-opacity: 1;color:rgb(236 226 243 / var(--tw-text-opacity))}.text-lavenderSmoke-700{--tw-text-opacity: 1;color:rgb(93 67 115 / var(--tw-text-opacity))}.text-light-blue-500{--tw-text-opacity: 1;color:rgb(3 169 244 / var(--tw-text-opacity))}.text-light-blue-700{--tw-text-opacity: 1;color:rgb(2 136 209 / var(--tw-text-opacity))}.text-light-blue-900{--tw-text-opacity: 1;color:rgb(1 87 155 / var(--tw-text-opacity))}.text-light-green-500{--tw-text-opacity: 1;color:rgb(139 195 74 / var(--tw-text-opacity))}.text-light-green-700{--tw-text-opacity: 1;color:rgb(104 159 56 / var(--tw-text-opacity))}.text-light-green-900{--tw-text-opacity: 1;color:rgb(51 105 30 / var(--tw-text-opacity))}.text-lime-500{--tw-text-opacity: 1;color:rgb(205 220 57 / var(--tw-text-opacity))}.text-lime-700{--tw-text-opacity: 1;color:rgb(175 180 43 / var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity: 1;color:rgb(130 119 23 / var(--tw-text-opacity))}.text-mossGreen-100{--tw-text-opacity: 1;color:rgb(235 245 229 / var(--tw-text-opacity))}.text-mossGreen-500{--tw-text-opacity: 1;color:rgb(96 178 64 / var(--tw-text-opacity))}.text-mossGreen-600{--tw-text-opacity: 1;color:rgb(77 143 51 / var(--tw-text-opacity))}.text-mossGreen-700{--tw-text-opacity: 1;color:rgb(59 107 39 / var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity: 1;color:rgb(233 30 99 / var(--tw-text-opacity))}.text-pink-700{--tw-text-opacity: 1;color:rgb(194 24 91 / var(--tw-text-opacity))}.text-pink-900{--tw-text-opacity: 1;color:rgb(136 14 79 / var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity: 1;color:rgb(156 39 176 / var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity: 1;color:rgb(123 31 162 / var(--tw-text-opacity))}.text-purple-900{--tw-text-opacity: 1;color:rgb(74 20 140 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(239 83 80 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(229 57 53 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(211 47 47 / var(--tw-text-opacity))}.text-red-800{--tw-text-opacity: 1;color:rgb(198 40 40 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(183 28 28 / var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity))}.text-stormGrey-300{--tw-text-opacity: 1;color:rgb(182 187 200 / var(--tw-text-opacity))}.text-stormGrey-400{--tw-text-opacity: 1;color:rgb(139 145 164 / var(--tw-text-opacity))}.text-stormGrey-500{--tw-text-opacity: 1;color:rgb(96 103 128 / var(--tw-text-opacity))}.text-stormGrey-600{--tw-text-opacity: 1;color:rgb(79 85 107 / var(--tw-text-opacity))}.text-stormGrey-700{--tw-text-opacity: 1;color:rgb(62 68 86 / var(--tw-text-opacity))}.text-stormGrey-900{--tw-text-opacity: 1;color:rgb(27 30 41 / var(--tw-text-opacity))}.text-sunsetCoral-500{--tw-text-opacity: 1;color:rgb(255 106 93 / var(--tw-text-opacity))}.text-sunsetCoral-600{--tw-text-opacity: 1;color:rgb(230 80 72 / var(--tw-text-opacity))}.text-sunsetCoral-700{--tw-text-opacity: 1;color:rgb(185 61 56 / var(--tw-text-opacity))}.text-sunsetCoral-800{--tw-text-opacity: 1;color:rgb(138 44 40 / var(--tw-text-opacity))}.text-teal-500{--tw-text-opacity: 1;color:rgb(0 150 136 / var(--tw-text-opacity))}.text-teal-700{--tw-text-opacity: 1;color:rgb(0 121 107 / var(--tw-text-opacity))}.text-teal-900{--tw-text-opacity: 1;color:rgb(0 77 64 / var(--tw-text-opacity))}.text-transparent{color:transparent}.text-warmAmberGlow-500{--tw-text-opacity: 1;color:rgb(255 143 0 / var(--tw-text-opacity))}.text-warmAmberGlow-600{--tw-text-opacity: 1;color:rgb(230 118 0 / var(--tw-text-opacity))}.text-warmAmberGlow-700{--tw-text-opacity: 1;color:rgb(179 90 0 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/60{color:#fff9}.text-white\/80{color:#fffc}.text-yellow-500{--tw-text-opacity: 1;color:rgb(255 235 59 / var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(251 192 45 / var(--tw-text-opacity))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(245 127 23 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-amber-500\/20{--tw-shadow-color: rgb(255 193 7 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-amber-500\/40{--tw-shadow-color: rgb(255 193 7 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/20{--tw-shadow-color: rgb(33 150 243 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/40{--tw-shadow-color: rgb(33 150 243 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/10{--tw-shadow-color: rgb(96 125 139 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/20{--tw-shadow-color: rgb(96 125 139 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/25{--tw-shadow-color: rgb(96 125 139 / .25);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/40{--tw-shadow-color: rgb(96 125 139 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/5{--tw-shadow-color: rgb(96 125 139 / .05);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-900\/10{--tw-shadow-color: rgb(38 50 56 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-brown-500\/20{--tw-shadow-color: rgb(121 85 72 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-brown-500\/40{--tw-shadow-color: rgb(121 85 72 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-500\/20{--tw-shadow-color: rgb(0 188 212 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-500\/40{--tw-shadow-color: rgb(0 188 212 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-orange-500\/20{--tw-shadow-color: rgb(255 87 34 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-orange-500\/40{--tw-shadow-color: rgb(255 87 34 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-purple-500\/20{--tw-shadow-color: rgb(103 58 183 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-purple-500\/40{--tw-shadow-color: rgb(103 58 183 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-gray-900\/10{--tw-shadow-color: rgb(33 33 33 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-gray-900\/20{--tw-shadow-color: rgb(33 33 33 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-green-500\/20{--tw-shadow-color: rgb(34 197 94 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-green-500\/40{--tw-shadow-color: rgb(34 197 94 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-indigo-500\/20{--tw-shadow-color: rgb(63 81 181 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-indigo-500\/40{--tw-shadow-color: rgb(63 81 181 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-blue-500\/20{--tw-shadow-color: rgb(3 169 244 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-blue-500\/40{--tw-shadow-color: rgb(3 169 244 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-green-500\/20{--tw-shadow-color: rgb(139 195 74 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-green-500\/40{--tw-shadow-color: rgb(139 195 74 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-lime-500\/20{--tw-shadow-color: rgb(205 220 57 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-lime-500\/40{--tw-shadow-color: rgb(205 220 57 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-orange-500\/20{--tw-shadow-color: rgb(249 115 22 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-orange-500\/40{--tw-shadow-color: rgb(249 115 22 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-pink-500\/20{--tw-shadow-color: rgb(233 30 99 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-pink-500\/40{--tw-shadow-color: rgb(233 30 99 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-purple-500\/20{--tw-shadow-color: rgb(156 39 176 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-purple-500\/40{--tw-shadow-color: rgb(156 39 176 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-500\/20{--tw-shadow-color: rgb(244 67 54 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-500\/40{--tw-shadow-color: rgb(244 67 54 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-teal-500\/20{--tw-shadow-color: rgb(0 150 136 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-teal-500\/40{--tw-shadow-color: rgb(0 150 136 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-yellow-500\/20{--tw-shadow-color: rgb(255 235 59 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-yellow-500\/40{--tw-shadow-color: rgb(255 235 59 / .4);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-0{outline-width:0px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-purple-500\/40{--tw-ring-color: rgb(156 39 176 / .4)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-2xl{--tw-backdrop-blur: blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-saturate-200{--tw-backdrop-saturate: saturate(2);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.content-\[\'\'\]{--tw-content: "";content:var(--tw-content)}.\[-webkit-appearance\:none\]{-webkit-appearance:none}.file\:mr-4::file-selector-button{margin-right:1rem}.file\:rounded-md::file-selector-button{border-radius:.375rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-blue-gray-50::file-selector-button{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.file\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.file\:py-2::file-selector-button{padding-top:.5rem;padding-bottom:.5rem}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-semibold::file-selector-button{font-weight:600}.file\:text-blue-gray-700::file-selector-button{--tw-text-opacity: 1;color:rgb(69 90 100 / var(--tw-text-opacity))}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:left-2\/4:before{content:var(--tw-content);left:50%}.before\:top-2\/4:before{content:var(--tw-content);top:50%}.before\:mr-1:before{content:var(--tw-content);margin-right:.25rem}.before\:mt-\[6\.5px\]:before{content:var(--tw-content);margin-top:6.5px}.before\:box-border:before{content:var(--tw-content);box-sizing:border-box}.before\:block:before{content:var(--tw-content);display:block}.before\:h-1:before{content:var(--tw-content);height:.25rem}.before\:h-1\.5:before{content:var(--tw-content);height:.375rem}.before\:h-10:before{content:var(--tw-content);height:2.5rem}.before\:h-12:before{content:var(--tw-content);height:3rem}.before\:w-10:before{content:var(--tw-content);width:2.5rem}.before\:w-12:before{content:var(--tw-content);width:3rem}.before\:w-2:before{content:var(--tw-content);width:.5rem}.before\:w-2\.5:before{content:var(--tw-content);width:.625rem}.before\:-translate-x-2\/4:before{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:-translate-y-2\/4:before{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:rounded-full:before{content:var(--tw-content);border-radius:9999px}.before\:rounded-tl-md:before{content:var(--tw-content);border-top-left-radius:.375rem}.before\:border-l:before{content:var(--tw-content);border-left-width:1px}.before\:border-l-2:before{content:var(--tw-content);border-left-width:2px}.before\:border-t:before{content:var(--tw-content);border-top-width:1px}.before\:border-t-2:before{content:var(--tw-content);border-top-width:2px}.before\:\!border-blue-gray-200:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(176 190 197 / var(--tw-border-opacity))!important}.before\:border-amber-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.before\:border-black:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.before\:border-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.before\:border-blue-gray-200:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.before\:border-blue-gray-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.before\:border-brown-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.before\:border-cyan-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.before\:border-deep-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.before\:border-deep-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.before\:border-gray-900:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.before\:border-green-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.before\:border-indigo-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.before\:border-light-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.before\:border-light-green-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.before\:border-lime-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.before\:border-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.before\:border-pink-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.before\:border-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.before\:border-red-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.before\:border-teal-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.before\:border-white:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.before\:border-yellow-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.before\:border-l-transparent:before{content:var(--tw-content);border-left-color:transparent}.before\:border-t-transparent:before{content:var(--tw-content);border-top-color:transparent}.before\:bg-blue-gray-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.before\:opacity-0:before{content:var(--tw-content);opacity:0}.before\:transition-all:before{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:transition-opacity:before{content:var(--tw-content);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:content-none:before{--tw-content: none;content:var(--tw-content)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-bottom-0:after{content:var(--tw-content);bottom:-0px}.after\:-bottom-1:after{content:var(--tw-content);bottom:-.25rem}.after\:-bottom-1\.5:after{content:var(--tw-content);bottom:-.375rem}.after\:-bottom-2:after{content:var(--tw-content);bottom:-.5rem}.after\:-bottom-2\.5:after{content:var(--tw-content);bottom:-.625rem}.after\:-bottom-6:after{content:var(--tw-content);bottom:-1.5rem}.after\:left-2\/4:after{content:var(--tw-content);left:50%}.after\:ml-1:after{content:var(--tw-content);margin-left:.25rem}.after\:mt-\[6\.5px\]:after{content:var(--tw-content);margin-top:6.5px}.after\:box-border:after{content:var(--tw-content);box-sizing:border-box}.after\:block:after{content:var(--tw-content);display:block}.after\:h-0:after{content:var(--tw-content);height:0px}.after\:h-1:after{content:var(--tw-content);height:.25rem}.after\:h-1\.5:after{content:var(--tw-content);height:.375rem}.after\:h-4\/6:after{content:var(--tw-content);height:66.666667%}.after\:w-0:after{content:var(--tw-content);width:0px}.after\:w-0\.5:after{content:var(--tw-content);width:.125rem}.after\:w-2:after{content:var(--tw-content);width:.5rem}.after\:w-2\.5:after{content:var(--tw-content);width:.625rem}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:flex-grow:after{content:var(--tw-content);flex-grow:1}.after\:-translate-x-2\/4:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:scale-x-0:after{content:var(--tw-content);--tw-scale-x: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:scale-x-100:after{content:var(--tw-content);--tw-scale-x: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:rounded-tr-md:after{content:var(--tw-content);border-top-right-radius:.375rem}.after\:border-b-2:after{content:var(--tw-content);border-bottom-width:2px}.after\:border-r:after{content:var(--tw-content);border-right-width:1px}.after\:border-r-2:after{content:var(--tw-content);border-right-width:2px}.after\:border-t:after{content:var(--tw-content);border-top-width:1px}.after\:border-t-2:after{content:var(--tw-content);border-top-width:2px}.after\:\!border-blue-gray-200:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(176 190 197 / var(--tw-border-opacity))!important}.after\:border-amber-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.after\:border-black:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.after\:border-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.after\:border-blue-gray-200:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.after\:border-blue-gray-50:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(236 239 241 / var(--tw-border-opacity))}.after\:border-blue-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.after\:border-brown-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.after\:border-cyan-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.after\:border-deep-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.after\:border-deep-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.after\:border-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(158 158 158 / var(--tw-border-opacity))}.after\:border-gray-900:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.after\:border-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.after\:border-indigo-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.after\:border-light-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.after\:border-light-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.after\:border-lime-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.after\:border-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.after\:border-pink-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.after\:border-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.after\:border-red-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.after\:border-teal-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.after\:border-white:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.after\:border-yellow-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.after\:border-r-transparent:after{content:var(--tw-content);border-right-color:transparent}.after\:border-t-transparent:after{content:var(--tw-content);border-top-color:transparent}.after\:bg-blue-gray-50:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:duration-300:after{content:var(--tw-content);transition-duration:.3s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.after\:content-none:after{--tw-content: none;content:var(--tw-content)}.last\:mb-0:last-child{margin-bottom:0}.checked\:border-amber-500:checked{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.checked\:border-blue-500:checked{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.checked\:border-blue-gray-500:checked{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.checked\:border-brown-500:checked{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.checked\:border-cyan-500:checked{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.checked\:border-deep-orange-500:checked{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.checked\:border-deep-purple-500:checked{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.checked\:border-gray-900:checked{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.checked\:border-green-500:checked{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.checked\:border-indigo-500:checked{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.checked\:border-light-blue-500:checked{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.checked\:border-light-green-500:checked{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.checked\:border-lime-500:checked{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.checked\:border-orange-500:checked{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.checked\:border-pink-500:checked{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.checked\:border-purple-500:checked{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.checked\:border-red-500:checked{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.checked\:border-teal-500:checked{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.checked\:border-yellow-500:checked{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.checked\:bg-amber-500:checked{--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.checked\:bg-blue-500:checked{--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.checked\:bg-blue-gray-500:checked{--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.checked\:bg-brown-500:checked{--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.checked\:bg-cyan-500:checked{--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.checked\:bg-deep-orange-500:checked{--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.checked\:bg-deep-purple-500:checked{--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.checked\:bg-gray-900:checked{--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.checked\:bg-green-500:checked{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.checked\:bg-indigo-500:checked{--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.checked\:bg-light-blue-500:checked{--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.checked\:bg-light-green-500:checked{--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.checked\:bg-lime-500:checked{--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.checked\:bg-orange-500:checked{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.checked\:bg-pink-500:checked{--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.checked\:bg-purple-500:checked{--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.checked\:bg-red-500:checked{--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.checked\:bg-teal-500:checked{--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.checked\:bg-yellow-500:checked{--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.checked\:before\:bg-amber-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.checked\:before\:bg-blue-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.checked\:before\:bg-blue-gray-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.checked\:before\:bg-brown-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.checked\:before\:bg-cyan-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.checked\:before\:bg-deep-orange-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.checked\:before\:bg-deep-purple-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.checked\:before\:bg-gray-900:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.checked\:before\:bg-green-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.checked\:before\:bg-indigo-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.checked\:before\:bg-light-blue-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.checked\:before\:bg-light-green-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.checked\:before\:bg-lime-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.checked\:before\:bg-orange-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.checked\:before\:bg-pink-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.checked\:before\:bg-purple-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.checked\:before\:bg-red-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.checked\:before\:bg-teal-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.checked\:before\:bg-yellow-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.placeholder-shown\:border:-moz-placeholder-shown{border-width:1px}.placeholder-shown\:border:placeholder-shown{border-width:1px}.placeholder-shown\:border-blue-gray-200:-moz-placeholder-shown{--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-blue-gray-200:placeholder-shown{--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-green-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-green-500:placeholder-shown{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-red-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.placeholder-shown\:border-red-500:placeholder-shown{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.placeholder-shown\:border-t-blue-gray-200:-moz-placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-t-blue-gray-200:placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-t-green-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-t-green-500:placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-t-red-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(244 67 54 / var(--tw-border-opacity))}.placeholder-shown\:border-t-red-500:placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(244 67 54 / var(--tw-border-opacity))}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-slate-800:hover{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.hover\:bg-amber-500\/10:hover{background-color:#ffc1071a}.hover\:bg-arcticBlue-600:hover{--tw-bg-opacity: 1;background-color:rgb(31 134 195 / var(--tw-bg-opacity))}.hover\:bg-arcticBlue-800:hover{--tw-bg-opacity: 1;background-color:rgb(15 75 111 / var(--tw-bg-opacity))}.hover\:bg-blue-500\/10:hover{background-color:#2196f31a}.hover\:bg-blue-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.hover\:bg-blue-gray-50\/60:hover{background-color:#eceff199}.hover\:bg-blue-gray-500\/10:hover{background-color:#607d8b1a}.hover\:bg-brown-500\/10:hover{background-color:#7955481a}.hover\:bg-citrusPunch-600\/90:hover{background-color:#e6bd00e6}.hover\:bg-copperRust-600\/90:hover{background-color:#7a444be6}.hover\:bg-cyan-500\/10:hover{background-color:#00bcd41a}.hover\:bg-deep-orange-500\/10:hover{background-color:#ff57221a}.hover\:bg-deep-purple-500\/10:hover{background-color:#673ab71a}.hover\:bg-emeraldMist-500\/90:hover{background-color:#3fb586e6}.hover\:bg-gray-900\/10:hover{background-color:#2121211a}.hover\:bg-green-500\/10:hover{background-color:#22c55e1a}.hover\:bg-indigo-500\/10:hover{background-color:#3f51b51a}.hover\:bg-indigo-600\/90:hover{background-color:#3949abe6}.hover\:bg-lavenderSmoke-600\/90:hover{background-color:#7a5894e6}.hover\:bg-light-blue-500\/10:hover{background-color:#03a9f41a}.hover\:bg-light-green-500\/10:hover{background-color:#8bc34a1a}.hover\:bg-lime-500\/10:hover{background-color:#cddc391a}.hover\:bg-orange-500\/10:hover{background-color:#f973161a}.hover\:bg-pink-500\/10:hover{background-color:#e91e631a}.hover\:bg-purple-500\/10:hover{background-color:#9c27b01a}.hover\:bg-red-500\/10:hover{background-color:#f443361a}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.hover\:bg-sunsetCoral-600:hover{--tw-bg-opacity: 1;background-color:rgb(230 80 72 / var(--tw-bg-opacity))}.hover\:bg-sunsetCoral-600\/20:hover{background-color:#e6504833}.hover\:bg-sunsetCoral-600\/90:hover{background-color:#e65048e6}.hover\:bg-teal-500\/10:hover{background-color:#0096881a}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-yellow-500\/10:hover{background-color:#ffeb3b1a}.hover\:bg-opacity-80:hover{--tw-bg-opacity: .8}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(21 101 192 / var(--tw-text-opacity))}.hover\:text-blue-gray-500:hover{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.hover\:text-blue-gray-900:hover{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(238 238 238 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(33 33 33 / var(--tw-text-opacity))}.hover\:text-light-blue-500:hover{--tw-text-opacity: 1;color:rgb(3 169 244 / var(--tw-text-opacity))}.hover\:text-warmAmberGlow-600:hover{--tw-text-opacity: 1;color:rgb(230 118 0 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:text-white\/90:hover{color:#ffffffe6}.hover\:opacity-75:hover{opacity:.75}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-amber-500\/40:hover{--tw-shadow-color: rgb(255 193 7 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-blue-500\/40:hover{--tw-shadow-color: rgb(33 150 243 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-blue-gray-500\/20:hover{--tw-shadow-color: rgb(96 125 139 / .2);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-blue-gray-500\/40:hover{--tw-shadow-color: rgb(96 125 139 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-brown-500\/40:hover{--tw-shadow-color: rgb(121 85 72 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-cyan-500\/40:hover{--tw-shadow-color: rgb(0 188 212 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-deep-orange-500\/40:hover{--tw-shadow-color: rgb(255 87 34 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-deep-purple-500\/40:hover{--tw-shadow-color: rgb(103 58 183 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-gray-900\/20:hover{--tw-shadow-color: rgb(33 33 33 / .2);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-green-500\/40:hover{--tw-shadow-color: rgb(34 197 94 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-indigo-500\/40:hover{--tw-shadow-color: rgb(63 81 181 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-light-blue-500\/40:hover{--tw-shadow-color: rgb(3 169 244 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-light-green-500\/40:hover{--tw-shadow-color: rgb(139 195 74 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-lime-500\/40:hover{--tw-shadow-color: rgb(205 220 57 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-orange-500\/40:hover{--tw-shadow-color: rgb(249 115 22 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-pink-500\/40:hover{--tw-shadow-color: rgb(233 30 99 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-purple-500\/40:hover{--tw-shadow-color: rgb(156 39 176 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-red-500\/40:hover{--tw-shadow-color: rgb(244 67 54 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-teal-500\/40:hover{--tw-shadow-color: rgb(0 150 136 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-yellow-500\/40:hover{--tw-shadow-color: rgb(255 235 59 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:file\:bg-blue-gray-100::file-selector-button:hover{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.hover\:before\:opacity-0:hover:before{content:var(--tw-content);opacity:0}.hover\:before\:opacity-10:hover:before{content:var(--tw-content);opacity:.1}.focus\:scale-110:focus{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.focus\:border-2:focus{border-width:2px}.focus\:border-amber-500:focus{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.focus\:border-black:focus{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.focus\:border-blue-gray-500:focus{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.focus\:border-blue-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(38 50 56 / var(--tw-border-opacity))}.focus\:border-brown-500:focus{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.focus\:border-cyan-500:focus{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.focus\:border-deep-orange-500:focus{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.focus\:border-deep-purple-500:focus{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.focus\:border-gray-500:focus{--tw-border-opacity: 1;border-color:rgb(158 158 158 / var(--tw-border-opacity))}.focus\:border-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.focus\:border-green-500:focus{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.focus\:border-light-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.focus\:border-light-green-500:focus{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.focus\:border-lime-500:focus{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.focus\:border-orange-500:focus{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.focus\:border-pink-500:focus{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.focus\:border-purple-500:focus{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.focus\:border-slate-800:focus{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.focus\:border-teal-500:focus{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.focus\:border-white:focus{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.focus\:border-yellow-500:focus{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.focus\:\!border-t-gray-900:focus{--tw-border-opacity: 1 !important;border-top-color:rgb(33 33 33 / var(--tw-border-opacity))!important}.focus\:border-t-transparent:focus{border-top-color:transparent}.focus\:bg-blue-gray-50:focus{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.focus\:bg-slate-800:focus{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.focus\:bg-transparent:focus{background-color:transparent}.focus\:bg-opacity-80:focus{--tw-bg-opacity: .8}.focus\:text-blue-gray-500:focus{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.focus\:text-blue-gray-900:focus{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.focus\:text-white:focus{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.focus\:opacity-\[0\.85\]:focus{opacity:.85}.focus\:shadow-none:focus{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-0:focus{outline-width:0px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-amber-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 224 130 / var(--tw-ring-opacity))}.focus\:ring-arcticBlue-300:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(153 206 239 / var(--tw-ring-opacity))}.focus\:ring-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(144 202 249 / var(--tw-ring-opacity))}.focus\:ring-blue-gray-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(176 190 197 / var(--tw-ring-opacity))}.focus\:ring-brown-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(188 170 164 / var(--tw-ring-opacity))}.focus\:ring-citrusPunch-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 224 102 / var(--tw-ring-opacity))}.focus\:ring-copperRust-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(178 138 134 / var(--tw-ring-opacity))}.focus\:ring-cyan-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(128 222 234 / var(--tw-ring-opacity))}.focus\:ring-deep-orange-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 171 145 / var(--tw-ring-opacity))}.focus\:ring-deep-purple-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(179 157 219 / var(--tw-ring-opacity))}.focus\:ring-emeraldMist-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(110 200 163 / var(--tw-ring-opacity))}.focus\:ring-gray-300:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(224 224 224 / var(--tw-ring-opacity))}.focus\:ring-green-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(187 247 208 / var(--tw-ring-opacity))}.focus\:ring-indigo-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(159 168 218 / var(--tw-ring-opacity))}.focus\:ring-indigo-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(92 107 192 / var(--tw-ring-opacity))}.focus\:ring-lavenderSmoke-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(184 138 207 / var(--tw-ring-opacity))}.focus\:ring-light-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(129 212 250 / var(--tw-ring-opacity))}.focus\:ring-light-green-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(197 225 165 / var(--tw-ring-opacity))}.focus\:ring-lime-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(230 238 156 / var(--tw-ring-opacity))}.focus\:ring-orange-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(254 215 170 / var(--tw-ring-opacity))}.focus\:ring-pink-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(244 143 177 / var(--tw-ring-opacity))}.focus\:ring-purple-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(206 147 216 / var(--tw-ring-opacity))}.focus\:ring-purple-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(171 71 188 / var(--tw-ring-opacity))}.focus\:ring-red-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 154 154 / var(--tw-ring-opacity))}.focus\:ring-sunsetCoral-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 145 137 / var(--tw-ring-opacity))}.focus\:ring-teal-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(128 203 196 / var(--tw-ring-opacity))}.focus\:ring-white\/50:focus{--tw-ring-color: rgb(255 255 255 / .5)}.focus\:ring-yellow-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 245 157 / var(--tw-ring-opacity))}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-blue-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(33 150 243 / var(--tw-ring-opacity))}.active\:scale-100:active{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:border-slate-800:active{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.active\:bg-amber-500\/30:active{background-color:#ffc1074d}.active\:bg-blue-500\/30:active{background-color:#2196f34d}.active\:bg-blue-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.active\:bg-blue-gray-500\/30:active{background-color:#607d8b4d}.active\:bg-brown-500\/30:active{background-color:#7955484d}.active\:bg-cyan-500\/30:active{background-color:#00bcd44d}.active\:bg-deep-orange-500\/30:active{background-color:#ff57224d}.active\:bg-deep-purple-500\/30:active{background-color:#673ab74d}.active\:bg-gray-900\/20:active{background-color:#21212133}.active\:bg-green-500\/30:active{background-color:#22c55e4d}.active\:bg-indigo-500\/30:active{background-color:#3f51b54d}.active\:bg-light-blue-500\/30:active{background-color:#03a9f44d}.active\:bg-light-green-500\/30:active{background-color:#8bc34a4d}.active\:bg-lime-500\/30:active{background-color:#cddc394d}.active\:bg-orange-500\/30:active{background-color:#f973164d}.active\:bg-pink-500\/30:active{background-color:#e91e634d}.active\:bg-purple-500\/30:active{background-color:#9c27b04d}.active\:bg-red-500\/30:active{background-color:#f443364d}.active\:bg-slate-800:active{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.active\:bg-teal-500\/30:active{background-color:#0096884d}.active\:bg-transparent:active{background-color:transparent}.active\:bg-white\/30:active{background-color:#ffffff4d}.active\:bg-yellow-500\/30:active{background-color:#ffeb3b4d}.active\:bg-opacity-80:active{--tw-bg-opacity: .8}.active\:text-blue-gray-500:active{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.active\:text-blue-gray-900:active{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.active\:text-white:active{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.active\:opacity-\[0\.85\]:active{opacity:.85}.active\:shadow-none:active{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:resize-none:disabled{resize:none}.disabled\:border-0:disabled{border-width:0px}.disabled\:bg-blue-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:shadow-none:disabled{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:checked~.peer-checked\:translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:border-amber-500{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-blue-500{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-blue-gray-500{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-brown-500{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-cyan-500{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-deep-orange-500{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-deep-purple-500{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-gray-900{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-indigo-500{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-light-blue-500{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-light-green-500{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-lime-500{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-pink-500{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-purple-500{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-red-500{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-teal-500{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-yellow-500{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:opacity-100{opacity:1}.peer:checked~.peer-checked\:before\:bg-amber-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-blue-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-blue-gray-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-brown-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-cyan-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-deep-orange-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-deep-purple-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-gray-900:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-green-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-indigo-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-light-blue-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-light-green-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-lime-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-orange-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-pink-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-purple-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-red-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-teal-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-yellow-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.875rem;line-height:1.25rem}.peer:placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.875rem;line-height:1.25rem}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[3\.75\]{line-height:3.75}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[3\.75\]{line-height:3.75}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[4\.1\]{line-height:4.1}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[4\.1\]{line-height:4.1}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[4\.25\]{line-height:4.25}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[4\.25\]{line-height:4.25}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[4\.875\]{line-height:4.875}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[4\.875\]{line-height:4.875}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-tight{line-height:1.25}.peer:placeholder-shown~.peer-placeholder-shown\:leading-tight{line-height:1.25}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:placeholder-shown~.peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.peer:placeholder-shown~.peer-placeholder-shown\:text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.peer:placeholder-shown~.peer-placeholder-shown\:text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.peer:placeholder-shown~.peer-placeholder-shown\:before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.peer:placeholder-shown~.peer-placeholder-shown\:after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.peer:focus~.peer-focus\:text-\[11px\]{font-size:11px}.peer:focus~.peer-focus\:text-sm{font-size:.875rem;line-height:1.25rem}.peer:focus~.peer-focus\:leading-tight{line-height:1.25}.peer:focus~.peer-focus\:text-amber-500{--tw-text-opacity: 1;color:rgb(255 193 7 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-blue-500{--tw-text-opacity: 1;color:rgb(33 150 243 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-brown-500{--tw-text-opacity: 1;color:rgb(121 85 72 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-cyan-500{--tw-text-opacity: 1;color:rgb(0 188 212 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-deep-orange-500{--tw-text-opacity: 1;color:rgb(255 87 34 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-deep-purple-500{--tw-text-opacity: 1;color:rgb(103 58 183 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-gray-900{--tw-text-opacity: 1;color:rgb(33 33 33 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-indigo-500{--tw-text-opacity: 1;color:rgb(63 81 181 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-light-blue-500{--tw-text-opacity: 1;color:rgb(3 169 244 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-light-green-500{--tw-text-opacity: 1;color:rgb(139 195 74 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-lime-500{--tw-text-opacity: 1;color:rgb(205 220 57 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-pink-500{--tw-text-opacity: 1;color:rgb(233 30 99 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-purple-500{--tw-text-opacity: 1;color:rgb(156 39 176 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-teal-500{--tw-text-opacity: 1;color:rgb(0 150 136 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-yellow-500{--tw-text-opacity: 1;color:rgb(255 235 59 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:before\:border-l-2:before{content:var(--tw-content);border-left-width:2px}.peer:focus~.peer-focus\:before\:border-t-2:before{content:var(--tw-content);border-top-width:2px}.peer:focus~.peer-focus\:before\:\!border-amber-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 193 7 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-black:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 0 0 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 150 243 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-blue-gray-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(96 125 139 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-brown-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(121 85 72 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-cyan-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 188 212 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-deep-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 87 34 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-deep-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(103 58 183 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-gray-900:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 33 33 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-green-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(34 197 94 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-indigo-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(63 81 181 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-light-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(3 169 244 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-light-green-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(139 195 74 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-lime-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(205 220 57 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(249 115 22 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-pink-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(233 30 99 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(156 39 176 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-red-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(244 67 54 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-teal-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 150 136 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-white:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-yellow-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 235 59 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:border-green-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:before\:border-red-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:scale-x-100:after{content:var(--tw-content);--tw-scale-x: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:after\:border-r-2:after{content:var(--tw-content);border-right-width:2px}.peer:focus~.peer-focus\:after\:border-t-2:after{content:var(--tw-content);border-top-width:2px}.peer:focus~.peer-focus\:after\:\!border-amber-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 193 7 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-black:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 0 0 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 150 243 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-blue-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(96 125 139 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-brown-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(121 85 72 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-cyan-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 188 212 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-deep-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 87 34 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-deep-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(103 58 183 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-gray-900:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 33 33 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-green-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(34 197 94 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-indigo-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(63 81 181 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-light-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(3 169 244 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-light-green-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(139 195 74 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-lime-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(205 220 57 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(249 115 22 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-pink-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(233 30 99 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(156 39 176 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-red-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(244 67 54 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-teal-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 150 136 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-white:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-yellow-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 235 59 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:border-amber-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-black:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-blue-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-brown-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-cyan-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-deep-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-deep-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-gray-900:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-indigo-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-light-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-light-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-lime-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-pink-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-red-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-teal-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-yellow-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.peer:disabled~.peer-disabled\:text-blue-gray-400{--tw-text-opacity: 1;color:rgb(120 144 156 / var(--tw-text-opacity))}.peer:disabled~.peer-disabled\:text-transparent{color:transparent}.peer:disabled~.peer-disabled\:before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.peer:disabled~.peer-disabled\:after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.peer:disabled:-moz-placeholder-shown~.peer-disabled\:peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:disabled:placeholder-shown~.peer-disabled\:peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}@media (min-width: 540px){.sm\:w-auto{width:auto}.sm\:max-w-xs{max-width:20rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}.sm\:text-right{text-align:right}}@media (min-width: 720px){.md\:order-first{order:-9999}.md\:order-last{order:9999}.md\:ml-auto{margin-left:auto}.md\:mt-0{margin-top:0}.md\:w-1\/2{width:50%}.md\:w-1\/4{width:25%}.md\:w-2\/3{width:66.666667%}.md\:w-3\/4{width:75%}.md\:w-3\/5{width:60%}.md\:w-5\/6{width:83.333333%}.md\:w-auto{width:auto}.md\:min-w-\[60\%\]{min-width:60%}.md\:min-w-\[66\.666667\%\]{min-width:66.666667%}.md\:min-w-\[75\%\]{min-width:75%}.md\:min-w-\[83\.333333\%\]{min-width:83.333333%}.md\:max-w-\[60\%\]{max-width:60%}.md\:max-w-\[66\.666667\%\]{max-width:66.666667%}.md\:max-w-\[75\%\]{max-width:75%}.md\:max-w-\[83\.333333\%\]{max-width:83.333333%}.md\:max-w-md{max-width:28rem}.md\:flex-1{flex:1 1 0%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-nowrap{flex-wrap:nowrap}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-3{gap:.75rem}.md\:gap-6{gap:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 960px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-4{margin-left:1rem;margin-right:1rem}.lg\:mb-0{margin-bottom:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:inline-block{display:inline-block}.lg\:hidden{display:none}.lg\:w-1\/2,.lg\:w-2\/4{width:50%}.lg\:w-2\/5{width:40%}.lg\:w-3\/4{width:75%}.lg\:w-3\/5{width:60%}.lg\:min-w-\[40\%\]{min-width:40%}.lg\:min-w-\[50\%\]{min-width:50%}.lg\:min-w-\[60\%\]{min-width:60%}.lg\:min-w-\[75\%\]{min-width:75%}.lg\:max-w-\[40\%\]{max-width:40%}.lg\:max-w-\[50\%\]{max-width:50%}.lg\:max-w-\[60\%\]{max-width:60%}.lg\:max-w-\[75\%\]{max-width:75%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:gap-6{gap:1.5rem}}@media (min-width: 1140px){.xl\:col-span-2{grid-column:span 2 / span 2}.xl\:col-span-3{grid-column:span 3 / span 3}.xl\:ml-80{margin-left:20rem}.xl\:flex{display:flex}.xl\:hidden{display:none}.xl\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1320px){.\32xl\:w-1\/3{width:33.333333%}.\32xl\:w-1\/4{width:25%}.\32xl\:w-2\/5{width:40%}.\32xl\:w-3\/4{width:75%}.\32xl\:w-3\/5{width:60%}.\32xl\:min-w-\[25\%\]{min-width:25%}.\32xl\:min-w-\[33\.333333\%\]{min-width:33.333333%}.\32xl\:min-w-\[40\%\]{min-width:40%}.\32xl\:min-w-\[60\%\]{min-width:60%}.\32xl\:min-w-\[75\%\]{min-width:75%}.\32xl\:max-w-\[25\%\]{max-width:25%}.\32xl\:max-w-\[33\.333333\%\]{max-width:33.333333%}.\32xl\:max-w-\[40\%\]{max-width:40%}.\32xl\:max-w-\[60\%\]{max-width:60%}.\32xl\:max-w-\[75\%\]{max-width:75%}}.\[\&\:\:-moz-range-thumb\]\:relative::-moz-range-thumb{position:relative}.\[\&\:\:-moz-range-thumb\]\:z-20::-moz-range-thumb{z-index:20}.\[\&\:\:-moz-range-thumb\]\:-mt-1::-moz-range-thumb{margin-top:-.25rem}.\[\&\:\:-moz-range-thumb\]\:-mt-\[3px\]::-moz-range-thumb{margin-top:-3px}.\[\&\:\:-moz-range-thumb\]\:h-2\.5::-moz-range-thumb{height:.625rem}.\[\&\:\:-moz-range-thumb\]\:h-3\.5::-moz-range-thumb{height:.875rem}.\[\&\:\:-moz-range-thumb\]\:h-5::-moz-range-thumb{height:1.25rem}.\[\&\:\:-moz-range-thumb\]\:w-2\.5::-moz-range-thumb{width:.625rem}.\[\&\:\:-moz-range-thumb\]\:w-3\.5::-moz-range-thumb{width:.875rem}.\[\&\:\:-moz-range-thumb\]\:w-5::-moz-range-thumb{width:1.25rem}.\[\&\:\:-moz-range-thumb\]\:appearance-none::-moz-range-thumb{-moz-appearance:none;-webkit-appearance:none;appearance:none}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:9999px}.\[\&\:\:-moz-range-thumb\]\:border-0::-moz-range-thumb{border-width:0px}.\[\&\:\:-moz-range-thumb\]\:bg-white::-moz-range-thumb{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.\[\&\:\:-moz-range-thumb\]\:ring-2::-moz-range-thumb{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.\[\&\:\:-moz-range-thumb\]\:ring-current::-moz-range-thumb{--tw-ring-color: currentColor}.\[\&\:\:-moz-range-thumb\]\:\[-webkit-appearance\:none\]::-moz-range-thumb{-webkit-appearance:none}.\[\&\:\:-moz-range-track\]\:h-full::-moz-range-track{height:100%}.\[\&\:\:-moz-range-track\]\:rounded-full::-moz-range-track{border-radius:9999px}.\[\&\:\:-moz-range-track\]\:bg-blue-gray-100::-moz-range-track{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.\[\&\:\:-webkit-slider-runnable-track\]\:h-full::-webkit-slider-runnable-track{height:100%}.\[\&\:\:-webkit-slider-runnable-track\]\:rounded-full::-webkit-slider-runnable-track{border-radius:9999px}.\[\&\:\:-webkit-slider-runnable-track\]\:bg-blue-gray-100::-webkit-slider-runnable-track{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.\[\&\:\:-webkit-slider-thumb\]\:relative::-webkit-slider-thumb{position:relative}.\[\&\:\:-webkit-slider-thumb\]\:z-20::-webkit-slider-thumb{z-index:20}.\[\&\:\:-webkit-slider-thumb\]\:-mt-1::-webkit-slider-thumb{margin-top:-.25rem}.\[\&\:\:-webkit-slider-thumb\]\:-mt-\[3px\]::-webkit-slider-thumb{margin-top:-3px}.\[\&\:\:-webkit-slider-thumb\]\:h-2\.5::-webkit-slider-thumb{height:.625rem}.\[\&\:\:-webkit-slider-thumb\]\:h-3\.5::-webkit-slider-thumb{height:.875rem}.\[\&\:\:-webkit-slider-thumb\]\:h-5::-webkit-slider-thumb{height:1.25rem}.\[\&\:\:-webkit-slider-thumb\]\:w-2\.5::-webkit-slider-thumb{width:.625rem}.\[\&\:\:-webkit-slider-thumb\]\:w-3\.5::-webkit-slider-thumb{width:.875rem}.\[\&\:\:-webkit-slider-thumb\]\:w-5::-webkit-slider-thumb{width:1.25rem}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:9999px}.\[\&\:\:-webkit-slider-thumb\]\:border-0::-webkit-slider-thumb{border-width:0px}.\[\&\:\:-webkit-slider-thumb\]\:bg-white::-webkit-slider-thumb{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.\[\&\:\:-webkit-slider-thumb\]\:ring-2::-webkit-slider-thumb{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.\[\&\:\:-webkit-slider-thumb\]\:ring-current::-webkit-slider-thumb{--tw-ring-color: currentColor}.\[\&\:\:-webkit-slider-thumb\]\:\[-webkit-appearance\:none\]::-webkit-slider-thumb{-webkit-appearance:none}.\[\&\>div\]\:\!min-w-0>div{min-width:0px!important} diff --git a/backend/public/assets/index-c3010de9.js b/backend/public/assets/index-c3010de9.js new file mode 100644 index 0000000..66c724d --- /dev/null +++ b/backend/public/assets/index-c3010de9.js @@ -0,0 +1,91 @@ +function HE(e,t){for(var r=0;rn[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(o){if(o.ep)return;o.ep=!0;const a=r(o);fetch(o.href,a)}})();function Zw(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function su(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}),r}var Jw={exports:{}},Zd={},e_={exports:{}},zt={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var lu=Symbol.for("react.element"),GE=Symbol.for("react.portal"),qE=Symbol.for("react.fragment"),KE=Symbol.for("react.strict_mode"),YE=Symbol.for("react.profiler"),QE=Symbol.for("react.provider"),XE=Symbol.for("react.context"),ZE=Symbol.for("react.forward_ref"),JE=Symbol.for("react.suspense"),eA=Symbol.for("react.memo"),tA=Symbol.for("react.lazy"),ay=Symbol.iterator;function rA(e){return e===null||typeof e!="object"?null:(e=ay&&e[ay]||e["@@iterator"],typeof e=="function"?e:null)}var t_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},r_=Object.assign,n_={};function ws(e,t,r){this.props=e,this.context=t,this.refs=n_,this.updater=r||t_}ws.prototype.isReactComponent={};ws.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};ws.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function o_(){}o_.prototype=ws.prototype;function a0(e,t,r){this.props=e,this.context=t,this.refs=n_,this.updater=r||t_}var i0=a0.prototype=new o_;i0.constructor=a0;r_(i0,ws.prototype);i0.isPureReactComponent=!0;var iy=Array.isArray,a_=Object.prototype.hasOwnProperty,s0={current:null},i_={key:!0,ref:!0,__self:!0,__source:!0};function s_(e,t,r){var n,o={},a=null,i=null;if(t!=null)for(n in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(a=""+t.key),t)a_.call(t,n)&&!i_.hasOwnProperty(n)&&(o[n]=t[n]);var l=arguments.length-2;if(l===1)o.children=r;else if(1t=>{const r=pA.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),ho=e=>(e=e.toLowerCase(),t=>Jd(t)===e),ef=e=>t=>typeof t===e,{isArray:_s}=Array,Rl=ef("undefined");function hA(e){return e!==null&&!Rl(e)&&e.constructor!==null&&!Rl(e.constructor)&&wn(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const c_=ho("ArrayBuffer");function gA(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&c_(e.buffer),t}const mA=ef("string"),wn=ef("function"),d_=ef("number"),tf=e=>e!==null&&typeof e=="object",bA=e=>e===!0||e===!1,Oc=e=>{if(Jd(e)!=="object")return!1;const t=c0(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},vA=ho("Date"),yA=ho("File"),xA=ho("Blob"),wA=ho("FileList"),_A=e=>tf(e)&&wn(e.pipe),SA=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||wn(e.append)&&((t=Jd(e))==="formdata"||t==="object"&&wn(e.toString)&&e.toString()==="[object FormData]"))},CA=ho("URLSearchParams"),[TA,PA,OA,kA]=["ReadableStream","Request","Response","Headers"].map(ho),NA=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function uu(e,t,{allOwnKeys:r=!1}={}){if(e===null||typeof e>"u")return;let n,o;if(typeof e!="object"&&(e=[e]),_s(e))for(n=0,o=e.length;n0;)if(o=r[n],t===o.toLowerCase())return o;return null}const Ya=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),p_=e=>!Rl(e)&&e!==Ya;function Th(){const{caseless:e}=p_(this)&&this||{},t={},r=(n,o)=>{const a=e&&f_(t,o)||o;Oc(t[a])&&Oc(n)?t[a]=Th(t[a],n):Oc(n)?t[a]=Th({},n):_s(n)?t[a]=n.slice():t[a]=n};for(let n=0,o=arguments.length;n(uu(t,(o,a)=>{r&&wn(o)?e[a]=u_(o,r):e[a]=o},{allOwnKeys:n}),e),EA=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),AA=(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},RA=(e,t,r,n)=>{let o,a,i;const l={};if(t=t||{},e==null)return t;do{for(o=Object.getOwnPropertyNames(e),a=o.length;a-- >0;)i=o[a],(!n||n(i,e,t))&&!l[i]&&(t[i]=e[i],l[i]=!0);e=r!==!1&&c0(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},MA=(e,t,r)=>{e=String(e),(r===void 0||r>e.length)&&(r=e.length),r-=t.length;const n=e.indexOf(t,r);return n!==-1&&n===r},IA=e=>{if(!e)return null;if(_s(e))return e;let t=e.length;if(!d_(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},DA=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&c0(Uint8Array)),LA=(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let o;for(;(o=n.next())&&!o.done;){const a=o.value;t.call(e,a[0],a[1])}},FA=(e,t)=>{let r;const n=[];for(;(r=e.exec(t))!==null;)n.push(r);return n},zA=ho("HTMLFormElement"),BA=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,o){return n.toUpperCase()+o}),ly=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),VA=ho("RegExp"),h_=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),n={};uu(r,(o,a)=>{let i;(i=t(o,a,e))!==!1&&(n[a]=i||o)}),Object.defineProperties(e,n)},UA=e=>{h_(e,(t,r)=>{if(wn(e)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=e[r];if(wn(n)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},WA=(e,t)=>{const r={},n=o=>{o.forEach(a=>{r[a]=!0})};return _s(e)?n(e):n(String(e).split(t)),r},$A=()=>{},HA=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,kp="abcdefghijklmnopqrstuvwxyz",uy="0123456789",g_={DIGIT:uy,ALPHA:kp,ALPHA_DIGIT:kp+kp.toUpperCase()+uy},GA=(e=16,t=g_.ALPHA_DIGIT)=>{let r="";const{length:n}=t;for(;e--;)r+=t[Math.random()*n|0];return r};function qA(e){return!!(e&&wn(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const KA=e=>{const t=new Array(10),r=(n,o)=>{if(tf(n)){if(t.indexOf(n)>=0)return;if(!("toJSON"in n)){t[o]=n;const a=_s(n)?[]:{};return uu(n,(i,l)=>{const f=r(i,o+1);!Rl(f)&&(a[l]=f)}),t[o]=void 0,a}}return n};return r(e,0)},YA=ho("AsyncFunction"),QA=e=>e&&(tf(e)||wn(e))&&wn(e.then)&&wn(e.catch),m_=((e,t)=>e?setImmediate:t?((r,n)=>(Ya.addEventListener("message",({source:o,data:a})=>{o===Ya&&a===r&&n.length&&n.shift()()},!1),o=>{n.push(o),Ya.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",wn(Ya.postMessage)),XA=typeof queueMicrotask<"u"?queueMicrotask.bind(Ya):typeof process<"u"&&process.nextTick||m_,Se={isArray:_s,isArrayBuffer:c_,isBuffer:hA,isFormData:SA,isArrayBufferView:gA,isString:mA,isNumber:d_,isBoolean:bA,isObject:tf,isPlainObject:Oc,isReadableStream:TA,isRequest:PA,isResponse:OA,isHeaders:kA,isUndefined:Rl,isDate:vA,isFile:yA,isBlob:xA,isRegExp:VA,isFunction:wn,isStream:_A,isURLSearchParams:CA,isTypedArray:DA,isFileList:wA,forEach:uu,merge:Th,extend:jA,trim:NA,stripBOM:EA,inherits:AA,toFlatObject:RA,kindOf:Jd,kindOfTest:ho,endsWith:MA,toArray:IA,forEachEntry:LA,matchAll:FA,isHTMLForm:zA,hasOwnProperty:ly,hasOwnProp:ly,reduceDescriptors:h_,freezeMethods:UA,toObjectSet:WA,toCamelCase:BA,noop:$A,toFiniteNumber:HA,findKey:f_,global:Ya,isContextDefined:p_,ALPHABET:g_,generateString:GA,isSpecCompliantForm:qA,toJSONObject:KA,isAsyncFn:YA,isThenable:QA,setImmediate:m_,asap:XA};function jt(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}Se.inherits(jt,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Se.toJSONObject(this.config),code:this.code,status:this.status}}});const b_=jt.prototype,v_={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{v_[e]={value:e}});Object.defineProperties(jt,v_);Object.defineProperty(b_,"isAxiosError",{value:!0});jt.from=(e,t,r,n,o,a)=>{const i=Object.create(b_);return Se.toFlatObject(e,i,function(f){return f!==Error.prototype},l=>l!=="isAxiosError"),jt.call(i,e.message,t,r,n,o),i.cause=e,i.name=e.name,a&&Object.assign(i,a),i};const ZA=null;function Ph(e){return Se.isPlainObject(e)||Se.isArray(e)}function y_(e){return Se.endsWith(e,"[]")?e.slice(0,-2):e}function cy(e,t,r){return e?e.concat(t).map(function(o,a){return o=y_(o),!r&&a?"["+o+"]":o}).join(r?".":""):t}function JA(e){return Se.isArray(e)&&!e.some(Ph)}const e2=Se.toFlatObject(Se,{},null,function(t){return/^is[A-Z]/.test(t)});function rf(e,t,r){if(!Se.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,r=Se.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,b){return!Se.isUndefined(b[w])});const n=r.metaTokens,o=r.visitor||m,a=r.dots,i=r.indexes,f=(r.Blob||typeof Blob<"u"&&Blob)&&Se.isSpecCompliantForm(t);if(!Se.isFunction(o))throw new TypeError("visitor must be a function");function g(C){if(C===null)return"";if(Se.isDate(C))return C.toISOString();if(!f&&Se.isBlob(C))throw new jt("Blob is not supported. Use a Buffer instead.");return Se.isArrayBuffer(C)||Se.isTypedArray(C)?f&&typeof Blob=="function"?new Blob([C]):Buffer.from(C):C}function m(C,w,b){let d=C;if(C&&!b&&typeof C=="object"){if(Se.endsWith(w,"{}"))w=n?w:w.slice(0,-2),C=JSON.stringify(C);else if(Se.isArray(C)&&JA(C)||(Se.isFileList(C)||Se.endsWith(w,"[]"))&&(d=Se.toArray(C)))return w=y_(w),d.forEach(function(c,u){!(Se.isUndefined(c)||c===null)&&t.append(i===!0?cy([w],u,a):i===null?w:w+"[]",g(c))}),!1}return Ph(C)?!0:(t.append(cy(b,w,a),g(C)),!1)}const S=[],O=Object.assign(e2,{defaultVisitor:m,convertValue:g,isVisitable:Ph});function T(C,w){if(!Se.isUndefined(C)){if(S.indexOf(C)!==-1)throw Error("Circular reference detected in "+w.join("."));S.push(C),Se.forEach(C,function(d,s){(!(Se.isUndefined(d)||d===null)&&o.call(t,d,Se.isString(s)?s.trim():s,w,O))===!0&&T(d,w?w.concat(s):[s])}),S.pop()}}if(!Se.isObject(e))throw new TypeError("data must be an object");return T(e),t}function dy(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(n){return t[n]})}function d0(e,t){this._pairs=[],e&&rf(e,this,t)}const x_=d0.prototype;x_.append=function(t,r){this._pairs.push([t,r])};x_.toString=function(t){const r=t?function(n){return t.call(this,n,dy)}:dy;return this._pairs.map(function(o){return r(o[0])+"="+r(o[1])},"").join("&")};function t2(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function w_(e,t,r){if(!t)return e;const n=r&&r.encode||t2,o=r&&r.serialize;let a;if(o?a=o(t,r):a=Se.isURLSearchParams(t)?t.toString():new d0(t,r).toString(n),a){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class r2{constructor(){this.handlers=[]}use(t,r,n){return this.handlers.push({fulfilled:t,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){Se.forEach(this.handlers,function(n){n!==null&&t(n)})}}const fy=r2,__={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},n2=typeof URLSearchParams<"u"?URLSearchParams:d0,o2=typeof FormData<"u"?FormData:null,a2=typeof Blob<"u"?Blob:null,i2={isBrowser:!0,classes:{URLSearchParams:n2,FormData:o2,Blob:a2},protocols:["http","https","file","blob","url","data"]},f0=typeof window<"u"&&typeof document<"u",Oh=typeof navigator=="object"&&navigator||void 0,s2=f0&&(!Oh||["ReactNative","NativeScript","NS"].indexOf(Oh.product)<0),l2=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),u2=f0&&window.location.href||"http://localhost",c2=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:f0,hasStandardBrowserEnv:s2,hasStandardBrowserWebWorkerEnv:l2,navigator:Oh,origin:u2},Symbol.toStringTag,{value:"Module"})),_n={...c2,...i2};function d2(e,t){return rf(e,new _n.classes.URLSearchParams,Object.assign({visitor:function(r,n,o,a){return _n.isNode&&Se.isBuffer(r)?(this.append(n,r.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}function f2(e){return Se.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function p2(e){const t={},r=Object.keys(e);let n;const o=r.length;let a;for(n=0;n=r.length;return i=!i&&Se.isArray(o)?o.length:i,f?(Se.hasOwnProp(o,i)?o[i]=[o[i],n]:o[i]=n,!l):((!o[i]||!Se.isObject(o[i]))&&(o[i]=[]),t(r,n,o[i],a)&&Se.isArray(o[i])&&(o[i]=p2(o[i])),!l)}if(Se.isFormData(e)&&Se.isFunction(e.entries)){const r={};return Se.forEachEntry(e,(n,o)=>{t(f2(n),o,r,0)}),r}return null}function h2(e,t,r){if(Se.isString(e))try{return(t||JSON.parse)(e),Se.trim(e)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(e)}const p0={transitional:__,adapter:["xhr","http","fetch"],transformRequest:[function(t,r){const n=r.getContentType()||"",o=n.indexOf("application/json")>-1,a=Se.isObject(t);if(a&&Se.isHTMLForm(t)&&(t=new FormData(t)),Se.isFormData(t))return o?JSON.stringify(S_(t)):t;if(Se.isArrayBuffer(t)||Se.isBuffer(t)||Se.isStream(t)||Se.isFile(t)||Se.isBlob(t)||Se.isReadableStream(t))return t;if(Se.isArrayBufferView(t))return t.buffer;if(Se.isURLSearchParams(t))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(a){if(n.indexOf("application/x-www-form-urlencoded")>-1)return d2(t,this.formSerializer).toString();if((l=Se.isFileList(t))||n.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return rf(l?{"files[]":t}:t,f&&new f,this.formSerializer)}}return a||o?(r.setContentType("application/json",!1),h2(t)):t}],transformResponse:[function(t){const r=this.transitional||p0.transitional,n=r&&r.forcedJSONParsing,o=this.responseType==="json";if(Se.isResponse(t)||Se.isReadableStream(t))return t;if(t&&Se.isString(t)&&(n&&!this.responseType||o)){const i=!(r&&r.silentJSONParsing)&&o;try{return JSON.parse(t)}catch(l){if(i)throw l.name==="SyntaxError"?jt.from(l,jt.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:_n.classes.FormData,Blob:_n.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Se.forEach(["delete","get","head","post","put","patch"],e=>{p0.headers[e]={}});const h0=p0,g2=Se.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),m2=e=>{const t={};let r,n,o;return e&&e.split(` +`).forEach(function(i){o=i.indexOf(":"),r=i.substring(0,o).trim().toLowerCase(),n=i.substring(o+1).trim(),!(!r||t[r]&&g2[r])&&(r==="set-cookie"?t[r]?t[r].push(n):t[r]=[n]:t[r]=t[r]?t[r]+", "+n:n)}),t},py=Symbol("internals");function Zs(e){return e&&String(e).trim().toLowerCase()}function kc(e){return e===!1||e==null?e:Se.isArray(e)?e.map(kc):String(e)}function b2(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}const v2=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Np(e,t,r,n,o){if(Se.isFunction(n))return n.call(this,t,r);if(o&&(t=r),!!Se.isString(t)){if(Se.isString(n))return t.indexOf(n)!==-1;if(Se.isRegExp(n))return n.test(t)}}function y2(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,r,n)=>r.toUpperCase()+n)}function x2(e,t){const r=Se.toCamelCase(" "+t);["get","set","has"].forEach(n=>{Object.defineProperty(e,n+r,{value:function(o,a,i){return this[n].call(this,t,o,a,i)},configurable:!0})})}class nf{constructor(t){t&&this.set(t)}set(t,r,n){const o=this;function a(l,f,g){const m=Zs(f);if(!m)throw new Error("header name must be a non-empty string");const S=Se.findKey(o,m);(!S||o[S]===void 0||g===!0||g===void 0&&o[S]!==!1)&&(o[S||f]=kc(l))}const i=(l,f)=>Se.forEach(l,(g,m)=>a(g,m,f));if(Se.isPlainObject(t)||t instanceof this.constructor)i(t,r);else if(Se.isString(t)&&(t=t.trim())&&!v2(t))i(m2(t),r);else if(Se.isHeaders(t))for(const[l,f]of t.entries())a(f,l,n);else t!=null&&a(r,t,n);return this}get(t,r){if(t=Zs(t),t){const n=Se.findKey(this,t);if(n){const o=this[n];if(!r)return o;if(r===!0)return b2(o);if(Se.isFunction(r))return r.call(this,o,n);if(Se.isRegExp(r))return r.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,r){if(t=Zs(t),t){const n=Se.findKey(this,t);return!!(n&&this[n]!==void 0&&(!r||Np(this,this[n],n,r)))}return!1}delete(t,r){const n=this;let o=!1;function a(i){if(i=Zs(i),i){const l=Se.findKey(n,i);l&&(!r||Np(n,n[l],l,r))&&(delete n[l],o=!0)}}return Se.isArray(t)?t.forEach(a):a(t),o}clear(t){const r=Object.keys(this);let n=r.length,o=!1;for(;n--;){const a=r[n];(!t||Np(this,this[a],a,t,!0))&&(delete this[a],o=!0)}return o}normalize(t){const r=this,n={};return Se.forEach(this,(o,a)=>{const i=Se.findKey(n,a);if(i){r[i]=kc(o),delete r[a];return}const l=t?y2(a):String(a).trim();l!==a&&delete r[a],r[l]=kc(o),n[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const r=Object.create(null);return Se.forEach(this,(n,o)=>{n!=null&&n!==!1&&(r[o]=t&&Se.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,r])=>t+": "+r).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...r){const n=new this(t);return r.forEach(o=>n.set(o)),n}static accessor(t){const n=(this[py]=this[py]={accessors:{}}).accessors,o=this.prototype;function a(i){const l=Zs(i);n[l]||(x2(o,i),n[l]=!0)}return Se.isArray(t)?t.forEach(a):a(t),this}}nf.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);Se.reduceDescriptors(nf.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(n){this[r]=n}}});Se.freezeMethods(nf);const oo=nf;function jp(e,t){const r=this||h0,n=t||r,o=oo.from(n.headers);let a=n.data;return Se.forEach(e,function(l){a=l.call(r,a,o.normalize(),t?t.status:void 0)}),o.normalize(),a}function C_(e){return!!(e&&e.__CANCEL__)}function Ss(e,t,r){jt.call(this,e??"canceled",jt.ERR_CANCELED,t,r),this.name="CanceledError"}Se.inherits(Ss,jt,{__CANCEL__:!0});function T_(e,t,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?e(r):t(new jt("Request failed with status code "+r.status,[jt.ERR_BAD_REQUEST,jt.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function w2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function _2(e,t){e=e||10;const r=new Array(e),n=new Array(e);let o=0,a=0,i;return t=t!==void 0?t:1e3,function(f){const g=Date.now(),m=n[a];i||(i=g),r[o]=f,n[o]=g;let S=a,O=0;for(;S!==o;)O+=r[S++],S=S%e;if(o=(o+1)%e,o===a&&(a=(a+1)%e),g-i{r=m,o=null,a&&(clearTimeout(a),a=null),e.apply(null,g)};return[(...g)=>{const m=Date.now(),S=m-r;S>=n?i(g,m):(o=g,a||(a=setTimeout(()=>{a=null,i(o)},n-S)))},()=>o&&i(o)]}const rd=(e,t,r=3)=>{let n=0;const o=_2(50,250);return S2(a=>{const i=a.loaded,l=a.lengthComputable?a.total:void 0,f=i-n,g=o(f),m=i<=l;n=i;const S={loaded:i,total:l,progress:l?i/l:void 0,bytes:f,rate:g||void 0,estimated:g&&l&&m?(l-i)/g:void 0,event:a,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(S)},r)},hy=(e,t)=>{const r=e!=null;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},gy=e=>(...t)=>Se.asap(()=>e(...t)),C2=_n.hasStandardBrowserEnv?function(){const t=_n.navigator&&/(msie|trident)/i.test(_n.navigator.userAgent),r=document.createElement("a");let n;function o(a){let i=a;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:r.pathname.charAt(0)==="/"?r.pathname:"/"+r.pathname}}return n=o(window.location.href),function(i){const l=Se.isString(i)?o(i):i;return l.protocol===n.protocol&&l.host===n.host}}():function(){return function(){return!0}}(),T2=_n.hasStandardBrowserEnv?{write(e,t,r,n,o,a){const i=[e+"="+encodeURIComponent(t)];Se.isNumber(r)&&i.push("expires="+new Date(r).toGMTString()),Se.isString(n)&&i.push("path="+n),Se.isString(o)&&i.push("domain="+o),a===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function P2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function O2(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function P_(e,t){return e&&!P2(t)?O2(e,t):t}const my=e=>e instanceof oo?{...e}:e;function ni(e,t){t=t||{};const r={};function n(g,m,S){return Se.isPlainObject(g)&&Se.isPlainObject(m)?Se.merge.call({caseless:S},g,m):Se.isPlainObject(m)?Se.merge({},m):Se.isArray(m)?m.slice():m}function o(g,m,S){if(Se.isUndefined(m)){if(!Se.isUndefined(g))return n(void 0,g,S)}else return n(g,m,S)}function a(g,m){if(!Se.isUndefined(m))return n(void 0,m)}function i(g,m){if(Se.isUndefined(m)){if(!Se.isUndefined(g))return n(void 0,g)}else return n(void 0,m)}function l(g,m,S){if(S in t)return n(g,m);if(S in e)return n(void 0,g)}const f={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:l,headers:(g,m)=>o(my(g),my(m),!0)};return Se.forEach(Object.keys(Object.assign({},e,t)),function(m){const S=f[m]||o,O=S(e[m],t[m],m);Se.isUndefined(O)&&S!==l||(r[m]=O)}),r}const O_=e=>{const t=ni({},e);let{data:r,withXSRFToken:n,xsrfHeaderName:o,xsrfCookieName:a,headers:i,auth:l}=t;t.headers=i=oo.from(i),t.url=w_(P_(t.baseURL,t.url),e.params,e.paramsSerializer),l&&i.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):"")));let f;if(Se.isFormData(r)){if(_n.hasStandardBrowserEnv||_n.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[g,...m]=f?f.split(";").map(S=>S.trim()).filter(Boolean):[];i.setContentType([g||"multipart/form-data",...m].join("; "))}}if(_n.hasStandardBrowserEnv&&(n&&Se.isFunction(n)&&(n=n(t)),n||n!==!1&&C2(t.url))){const g=o&&a&&T2.read(a);g&&i.set(o,g)}return t},k2=typeof XMLHttpRequest<"u",N2=k2&&function(e){return new Promise(function(r,n){const o=O_(e);let a=o.data;const i=oo.from(o.headers).normalize();let{responseType:l,onUploadProgress:f,onDownloadProgress:g}=o,m,S,O,T,C;function w(){T&&T(),C&&C(),o.cancelToken&&o.cancelToken.unsubscribe(m),o.signal&&o.signal.removeEventListener("abort",m)}let b=new XMLHttpRequest;b.open(o.method.toUpperCase(),o.url,!0),b.timeout=o.timeout;function d(){if(!b)return;const c=oo.from("getAllResponseHeaders"in b&&b.getAllResponseHeaders()),h={data:!l||l==="text"||l==="json"?b.responseText:b.response,status:b.status,statusText:b.statusText,headers:c,config:e,request:b};T_(function(x){r(x),w()},function(x){n(x),w()},h),b=null}"onloadend"in b?b.onloadend=d:b.onreadystatechange=function(){!b||b.readyState!==4||b.status===0&&!(b.responseURL&&b.responseURL.indexOf("file:")===0)||setTimeout(d)},b.onabort=function(){b&&(n(new jt("Request aborted",jt.ECONNABORTED,e,b)),b=null)},b.onerror=function(){n(new jt("Network Error",jt.ERR_NETWORK,e,b)),b=null},b.ontimeout=function(){let u=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const h=o.transitional||__;o.timeoutErrorMessage&&(u=o.timeoutErrorMessage),n(new jt(u,h.clarifyTimeoutError?jt.ETIMEDOUT:jt.ECONNABORTED,e,b)),b=null},a===void 0&&i.setContentType(null),"setRequestHeader"in b&&Se.forEach(i.toJSON(),function(u,h){b.setRequestHeader(h,u)}),Se.isUndefined(o.withCredentials)||(b.withCredentials=!!o.withCredentials),l&&l!=="json"&&(b.responseType=o.responseType),g&&([O,C]=rd(g,!0),b.addEventListener("progress",O)),f&&b.upload&&([S,T]=rd(f),b.upload.addEventListener("progress",S),b.upload.addEventListener("loadend",T)),(o.cancelToken||o.signal)&&(m=c=>{b&&(n(!c||c.type?new Ss(null,e,b):c),b.abort(),b=null)},o.cancelToken&&o.cancelToken.subscribe(m),o.signal&&(o.signal.aborted?m():o.signal.addEventListener("abort",m)));const s=w2(o.url);if(s&&_n.protocols.indexOf(s)===-1){n(new jt("Unsupported protocol "+s+":",jt.ERR_BAD_REQUEST,e));return}b.send(a||null)})},j2=(e,t)=>{let r=new AbortController,n;const o=function(f){if(!n){n=!0,i();const g=f instanceof Error?f:this.reason;r.abort(g instanceof jt?g:new Ss(g instanceof Error?g.message:g))}};let a=t&&setTimeout(()=>{o(new jt(`timeout ${t} of ms exceeded`,jt.ETIMEDOUT))},t);const i=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(f=>{f&&(f.removeEventListener?f.removeEventListener("abort",o):f.unsubscribe(o))}),e=null)};e.forEach(f=>f&&f.addEventListener&&f.addEventListener("abort",o));const{signal:l}=r;return l.unsubscribe=i,[l,()=>{a&&clearTimeout(a),a=null}]},E2=j2,A2=function*(e,t){let r=e.byteLength;if(!t||r{const a=R2(e,t,o);let i=0,l,f=g=>{l||(l=!0,n&&n(g))};return new ReadableStream({async pull(g){try{const{done:m,value:S}=await a.next();if(m){f(),g.close();return}let O=S.byteLength;if(r){let T=i+=O;r(T)}g.enqueue(new Uint8Array(S))}catch(m){throw f(m),m}},cancel(g){return f(g),a.return()}},{highWaterMark:2})},of=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",k_=of&&typeof ReadableStream=="function",kh=of&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),N_=(e,...t)=>{try{return!!e(...t)}catch{return!1}},M2=k_&&N_(()=>{let e=!1;const t=new Request(_n.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),vy=64*1024,Nh=k_&&N_(()=>Se.isReadableStream(new Response("").body)),nd={stream:Nh&&(e=>e.body)};of&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!nd[t]&&(nd[t]=Se.isFunction(e[t])?r=>r[t]():(r,n)=>{throw new jt(`Response type '${t}' is not supported`,jt.ERR_NOT_SUPPORT,n)})})})(new Response);const I2=async e=>{if(e==null)return 0;if(Se.isBlob(e))return e.size;if(Se.isSpecCompliantForm(e))return(await new Request(e).arrayBuffer()).byteLength;if(Se.isArrayBufferView(e)||Se.isArrayBuffer(e))return e.byteLength;if(Se.isURLSearchParams(e)&&(e=e+""),Se.isString(e))return(await kh(e)).byteLength},D2=async(e,t)=>{const r=Se.toFiniteNumber(e.getContentLength());return r??I2(t)},L2=of&&(async e=>{let{url:t,method:r,data:n,signal:o,cancelToken:a,timeout:i,onDownloadProgress:l,onUploadProgress:f,responseType:g,headers:m,withCredentials:S="same-origin",fetchOptions:O}=O_(e);g=g?(g+"").toLowerCase():"text";let[T,C]=o||a||i?E2([o,a],i):[],w,b;const d=()=>{!w&&setTimeout(()=>{T&&T.unsubscribe()}),w=!0};let s;try{if(f&&M2&&r!=="get"&&r!=="head"&&(s=await D2(m,n))!==0){let x=new Request(t,{method:"POST",body:n,duplex:"half"}),E;if(Se.isFormData(n)&&(E=x.headers.get("content-type"))&&m.setContentType(E),x.body){const[k,j]=hy(s,rd(gy(f)));n=by(x.body,vy,k,j,kh)}}Se.isString(S)||(S=S?"include":"omit");const c="credentials"in Request.prototype;b=new Request(t,{...O,signal:T,method:r.toUpperCase(),headers:m.normalize().toJSON(),body:n,duplex:"half",credentials:c?S:void 0});let u=await fetch(b);const h=Nh&&(g==="stream"||g==="response");if(Nh&&(l||h)){const x={};["status","statusText","headers"].forEach(A=>{x[A]=u[A]});const E=Se.toFiniteNumber(u.headers.get("content-length")),[k,j]=l&&hy(E,rd(gy(l),!0))||[];u=new Response(by(u.body,vy,k,()=>{j&&j(),h&&d()},kh),x)}g=g||"text";let y=await nd[Se.findKey(nd,g)||"text"](u,e);return!h&&d(),C&&C(),await new Promise((x,E)=>{T_(x,E,{data:y,headers:oo.from(u.headers),status:u.status,statusText:u.statusText,config:e,request:b})})}catch(c){throw d(),c&&c.name==="TypeError"&&/fetch/i.test(c.message)?Object.assign(new jt("Network Error",jt.ERR_NETWORK,e,b),{cause:c.cause||c}):jt.from(c,c&&c.code,e,b)}}),jh={http:ZA,xhr:N2,fetch:L2};Se.forEach(jh,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const yy=e=>`- ${e}`,F2=e=>Se.isFunction(e)||e===null||e===!1,j_={getAdapter:e=>{e=Se.isArray(e)?e:[e];const{length:t}=e;let r,n;const o={};for(let a=0;a`adapter ${l} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?a.length>1?`since : +`+a.map(yy).join(` +`):" "+yy(a[0]):"as no adapter specified";throw new jt("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return n},adapters:jh};function Ep(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ss(null,e)}function xy(e){return Ep(e),e.headers=oo.from(e.headers),e.data=jp.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),j_.getAdapter(e.adapter||h0.adapter)(e).then(function(n){return Ep(e),n.data=jp.call(e,e.transformResponse,n),n.headers=oo.from(n.headers),n},function(n){return C_(n)||(Ep(e),n&&n.response&&(n.response.data=jp.call(e,e.transformResponse,n.response),n.response.headers=oo.from(n.response.headers))),Promise.reject(n)})}const E_="1.7.5",g0={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{g0[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const wy={};g0.transitional=function(t,r,n){function o(a,i){return"[Axios v"+E_+"] Transitional option '"+a+"'"+i+(n?". "+n:"")}return(a,i,l)=>{if(t===!1)throw new jt(o(i," has been removed"+(r?" in "+r:"")),jt.ERR_DEPRECATED);return r&&!wy[i]&&(wy[i]=!0,console.warn(o(i," has been deprecated since v"+r+" and will be removed in the near future"))),t?t(a,i,l):!0}};function z2(e,t,r){if(typeof e!="object")throw new jt("options must be an object",jt.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let o=n.length;for(;o-- >0;){const a=n[o],i=t[a];if(i){const l=e[a],f=l===void 0||i(l,a,e);if(f!==!0)throw new jt("option "+a+" must be "+f,jt.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new jt("Unknown option "+a,jt.ERR_BAD_OPTION)}}const Eh={assertOptions:z2,validators:g0},oa=Eh.validators;class od{constructor(t){this.defaults=t,this.interceptors={request:new fy,response:new fy}}async request(t,r){try{return await this._request(t,r)}catch(n){if(n instanceof Error){let o;Error.captureStackTrace?Error.captureStackTrace(o={}):o=new Error;const a=o.stack?o.stack.replace(/^.+\n/,""):"";try{n.stack?a&&!String(n.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(n.stack+=` +`+a):n.stack=a}catch{}}throw n}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=ni(this.defaults,r);const{transitional:n,paramsSerializer:o,headers:a}=r;n!==void 0&&Eh.assertOptions(n,{silentJSONParsing:oa.transitional(oa.boolean),forcedJSONParsing:oa.transitional(oa.boolean),clarifyTimeoutError:oa.transitional(oa.boolean)},!1),o!=null&&(Se.isFunction(o)?r.paramsSerializer={serialize:o}:Eh.assertOptions(o,{encode:oa.function,serialize:oa.function},!0)),r.method=(r.method||this.defaults.method||"get").toLowerCase();let i=a&&Se.merge(a.common,a[r.method]);a&&Se.forEach(["delete","get","head","post","put","patch","common"],C=>{delete a[C]}),r.headers=oo.concat(i,a);const l=[];let f=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(r)===!1||(f=f&&w.synchronous,l.unshift(w.fulfilled,w.rejected))});const g=[];this.interceptors.response.forEach(function(w){g.push(w.fulfilled,w.rejected)});let m,S=0,O;if(!f){const C=[xy.bind(this),void 0];for(C.unshift.apply(C,l),C.push.apply(C,g),O=C.length,m=Promise.resolve(r);S{if(!n._listeners)return;let a=n._listeners.length;for(;a-- >0;)n._listeners[a](o);n._listeners=null}),this.promise.then=o=>{let a;const i=new Promise(l=>{n.subscribe(l),a=l}).then(o);return i.cancel=function(){n.unsubscribe(a)},i},t(function(a,i,l){n.reason||(n.reason=new Ss(a,i,l),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}static source(){let t;return{token:new m0(function(o){t=o}),cancel:t}}}const B2=m0;function V2(e){return function(r){return e.apply(null,r)}}function U2(e){return Se.isObject(e)&&e.isAxiosError===!0}const Ah={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ah).forEach(([e,t])=>{Ah[t]=e});const W2=Ah;function A_(e){const t=new Nc(e),r=u_(Nc.prototype.request,t);return Se.extend(r,Nc.prototype,t,{allOwnKeys:!0}),Se.extend(r,t,null,{allOwnKeys:!0}),r.create=function(o){return A_(ni(e,o))},r}const wr=A_(h0);wr.Axios=Nc;wr.CanceledError=Ss;wr.CancelToken=B2;wr.isCancel=C_;wr.VERSION=E_;wr.toFormData=rf;wr.AxiosError=jt;wr.Cancel=wr.CanceledError;wr.all=function(t){return Promise.all(t)};wr.spread=V2;wr.isAxiosError=U2;wr.mergeConfig=ni;wr.AxiosHeaders=oo;wr.formToJSON=e=>S_(Se.isHTMLForm(e)?new FormData(e):e);wr.getAdapter=j_.getAdapter;wr.HttpStatusCode=W2;wr.default=wr;const Je=wr;var Rh={},R_={exports:{}},On={},M_={exports:{}},I_={};/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(e){function t(G,B){var $=G.length;G.push(B);e:for(;0<$;){var q=$-1>>>1,ee=G[q];if(0>>1;qo(fe,$))reo(be,fe)?(G[q]=be,G[re]=$,q=re):(G[q]=fe,G[ge]=$,q=ge);else if(reo(be,$))G[q]=be,G[re]=$,q=re;else break e}}return B}function o(G,B){var $=G.sortIndex-B.sortIndex;return $!==0?$:G.id-B.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var i=Date,l=i.now();e.unstable_now=function(){return i.now()-l}}var f=[],g=[],m=1,S=null,O=3,T=!1,C=!1,w=!1,b=typeof setTimeout=="function"?setTimeout:null,d=typeof clearTimeout=="function"?clearTimeout:null,s=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function c(G){for(var B=r(g);B!==null;){if(B.callback===null)n(g);else if(B.startTime<=G)n(g),B.sortIndex=B.expirationTime,t(f,B);else break;B=r(g)}}function u(G){if(w=!1,c(G),!C)if(r(f)!==null)C=!0,H(h);else{var B=r(g);B!==null&&Y(u,B.startTime-G)}}function h(G,B){C=!1,w&&(w=!1,d(E),E=-1),T=!0;var $=O;try{for(c(B),S=r(f);S!==null&&(!(S.expirationTime>B)||G&&!A());){var q=S.callback;if(typeof q=="function"){S.callback=null,O=S.priorityLevel;var ee=q(S.expirationTime<=B);B=e.unstable_now(),typeof ee=="function"?S.callback=ee:S===r(f)&&n(f),c(B)}else n(f);S=r(f)}if(S!==null)var oe=!0;else{var ge=r(g);ge!==null&&Y(u,ge.startTime-B),oe=!1}return oe}finally{S=null,O=$,T=!1}}var y=!1,x=null,E=-1,k=5,j=-1;function A(){return!(e.unstable_now()-jG||125q?(G.sortIndex=$,t(g,G),r(f)===null&&G===r(g)&&(w?(d(E),E=-1):w=!0,Y(u,$-q))):(G.sortIndex=ee,t(f,G),C||T||(C=!0,H(h))),G},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(G){var B=O;return function(){var $=O;O=B;try{return G.apply(this,arguments)}finally{O=$}}}})(I_);M_.exports=I_;var $2=M_.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var D_=P,Tn=$2;function Re(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Mh=Object.prototype.hasOwnProperty,H2=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,_y={},Sy={};function G2(e){return Mh.call(Sy,e)?!0:Mh.call(_y,e)?!1:H2.test(e)?Sy[e]=!0:(_y[e]=!0,!1)}function q2(e,t,r,n){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function K2(e,t,r,n){if(t===null||typeof t>"u"||q2(e,t,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function nn(e,t,r,n,o,a,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var zr={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){zr[e]=new nn(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];zr[t]=new nn(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){zr[e]=new nn(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){zr[e]=new nn(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){zr[e]=new nn(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){zr[e]=new nn(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){zr[e]=new nn(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){zr[e]=new nn(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){zr[e]=new nn(e,5,!1,e.toLowerCase(),null,!1,!1)});var b0=/[\-:]([a-z])/g;function v0(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(b0,v0);zr[t]=new nn(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(b0,v0);zr[t]=new nn(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(b0,v0);zr[t]=new nn(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){zr[e]=new nn(e,1,!1,e.toLowerCase(),null,!1,!1)});zr.xlinkHref=new nn("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){zr[e]=new nn(e,1,!1,e.toLowerCase(),null,!0,!0)});function y0(e,t,r,n){var o=zr.hasOwnProperty(t)?zr[t]:null;(o!==null?o.type!==0:n||!(2l||o[i]!==a[l]){var f=` +`+o[i].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=i&&0<=l);break}}}finally{Rp=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?fl(e):""}function Y2(e){switch(e.tag){case 5:return fl(e.type);case 16:return fl("Lazy");case 13:return fl("Suspense");case 19:return fl("SuspenseList");case 0:case 2:case 15:return e=Mp(e.type,!1),e;case 11:return e=Mp(e.type.render,!1),e;case 1:return e=Mp(e.type,!0),e;default:return""}}function Fh(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Di:return"Fragment";case Ii:return"Portal";case Ih:return"Profiler";case x0:return"StrictMode";case Dh:return"Suspense";case Lh:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case z_:return(e.displayName||"Context")+".Consumer";case F_:return(e._context.displayName||"Context")+".Provider";case w0:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case _0:return t=e.displayName||null,t!==null?t:Fh(e.type)||"Memo";case ca:t=e._payload,e=e._init;try{return Fh(e(t))}catch{}}return null}function Q2(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Fh(t);case 8:return t===x0?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ja(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function V_(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function X2(e){var t=V_(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var o=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){n=""+i,a.call(this,i)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(i){n=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Qu(e){e._valueTracker||(e._valueTracker=X2(e))}function U_(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=V_(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function ad(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function zh(e,t){var r=t.checked;return fr({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function Ty(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=ja(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function W_(e,t){t=t.checked,t!=null&&y0(e,"checked",t,!1)}function Bh(e,t){W_(e,t);var r=ja(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Vh(e,t.type,r):t.hasOwnProperty("defaultValue")&&Vh(e,t.type,ja(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Py(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function Vh(e,t,r){(t!=="number"||ad(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var pl=Array.isArray;function Yi(e,t,r,n){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=Xu.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Il(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var yl={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Z2=["Webkit","ms","Moz","O"];Object.keys(yl).forEach(function(e){Z2.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),yl[t]=yl[e]})});function q_(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||yl.hasOwnProperty(e)&&yl[e]?(""+t).trim():t+"px"}function K_(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,o=q_(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,o):e[r]=o}}var J2=fr({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function $h(e,t){if(t){if(J2[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Re(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Re(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(Re(61))}if(t.style!=null&&typeof t.style!="object")throw Error(Re(62))}}function Hh(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Gh=null;function S0(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var qh=null,Qi=null,Xi=null;function Ny(e){if(e=fu(e)){if(typeof qh!="function")throw Error(Re(280));var t=e.stateNode;t&&(t=cf(t),qh(e.stateNode,e.type,t))}}function Y_(e){Qi?Xi?Xi.push(e):Xi=[e]:Qi=e}function Q_(){if(Qi){var e=Qi,t=Xi;if(Xi=Qi=null,Ny(e),t)for(e=0;e>>=0,e===0?32:31-(cR(e)/dR|0)|0}var Zu=64,Ju=4194304;function hl(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ud(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,o=e.suspendedLanes,a=e.pingedLanes,i=r&268435455;if(i!==0){var l=i&~o;l!==0?n=hl(l):(a&=i,a!==0&&(n=hl(a)))}else i=r&~o,i!==0?n=hl(i):a!==0&&(n=hl(a));if(n===0)return 0;if(t!==0&&t!==n&&!(t&o)&&(o=n&-n,a=t&-t,o>=a||o===16&&(a&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function cu(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ao(t),e[t]=r}function gR(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0=wl),Fy=String.fromCharCode(32),zy=!1;function mS(e,t){switch(e){case"keyup":return WR.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bS(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Li=!1;function HR(e,t){switch(e){case"compositionend":return bS(t);case"keypress":return t.which!==32?null:(zy=!0,Fy);case"textInput":return e=t.data,e===Fy&&zy?null:e;default:return null}}function GR(e,t){if(Li)return e==="compositionend"||!E0&&mS(e,t)?(e=hS(),Ec=k0=ga=null,Li=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Wy(r)}}function wS(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?wS(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function _S(){for(var e=window,t=ad();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=ad(e.document)}return t}function A0(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function tM(e){var t=_S(),r=e.focusedElem,n=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&wS(r.ownerDocument.documentElement,r)){if(n!==null&&A0(r)){if(t=n.start,e=n.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=r.textContent.length,a=Math.min(n.start,o);n=n.end===void 0?a:Math.min(n.end,o),!e.extend&&a>n&&(o=n,n=a,a=o),o=$y(r,a);var i=$y(r,n);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),a>n?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,Fi=null,Jh=null,Sl=null,eg=!1;function Hy(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;eg||Fi==null||Fi!==ad(n)||(n=Fi,"selectionStart"in n&&A0(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Sl&&Vl(Sl,n)||(Sl=n,n=fd(Jh,"onSelect"),0Vi||(e.current=ig[Vi],ig[Vi]=null,Vi--)}function Jt(e,t){Vi++,ig[Vi]=e.current,e.current=t}var Ea={},Kr=Ma(Ea),fn=Ma(!1),oi=Ea;function ss(e,t){var r=e.type.contextTypes;if(!r)return Ea;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var o={},a;for(a in r)o[a]=t[a];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function pn(e){return e=e.childContextTypes,e!=null}function hd(){rr(fn),rr(Kr)}function Zy(e,t,r){if(Kr.current!==Ea)throw Error(Re(168));Jt(Kr,t),Jt(fn,r)}function ES(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var o in n)if(!(o in t))throw Error(Re(108,Q2(e)||"Unknown",o));return fr({},r,n)}function gd(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ea,oi=Kr.current,Jt(Kr,e),Jt(fn,fn.current),!0}function Jy(e,t,r){var n=e.stateNode;if(!n)throw Error(Re(169));r?(e=ES(e,t,oi),n.__reactInternalMemoizedMergedChildContext=e,rr(fn),rr(Kr),Jt(Kr,e)):rr(fn),Jt(fn,r)}var Mo=null,df=!1,Kp=!1;function AS(e){Mo===null?Mo=[e]:Mo.push(e)}function pM(e){df=!0,AS(e)}function Ia(){if(!Kp&&Mo!==null){Kp=!0;var e=0,t=Kt;try{var r=Mo;for(Kt=1;e>=i,o-=i,Io=1<<32-ao(t)+o|r<E?(k=x,x=null):k=x.sibling;var j=O(d,x,c[E],u);if(j===null){x===null&&(x=k);break}e&&x&&j.alternate===null&&t(d,x),s=a(j,s,E),y===null?h=j:y.sibling=j,y=j,x=k}if(E===c.length)return r(d,x),ir&&Ga(d,E),h;if(x===null){for(;EE?(k=x,x=null):k=x.sibling;var A=O(d,x,j.value,u);if(A===null){x===null&&(x=k);break}e&&x&&A.alternate===null&&t(d,x),s=a(A,s,E),y===null?h=A:y.sibling=A,y=A,x=k}if(j.done)return r(d,x),ir&&Ga(d,E),h;if(x===null){for(;!j.done;E++,j=c.next())j=S(d,j.value,u),j!==null&&(s=a(j,s,E),y===null?h=j:y.sibling=j,y=j);return ir&&Ga(d,E),h}for(x=n(d,x);!j.done;E++,j=c.next())j=T(x,d,E,j.value,u),j!==null&&(e&&j.alternate!==null&&x.delete(j.key===null?E:j.key),s=a(j,s,E),y===null?h=j:y.sibling=j,y=j);return e&&x.forEach(function(M){return t(d,M)}),ir&&Ga(d,E),h}function b(d,s,c,u){if(typeof c=="object"&&c!==null&&c.type===Di&&c.key===null&&(c=c.props.children),typeof c=="object"&&c!==null){switch(c.$$typeof){case Yu:e:{for(var h=c.key,y=s;y!==null;){if(y.key===h){if(h=c.type,h===Di){if(y.tag===7){r(d,y.sibling),s=o(y,c.props.children),s.return=d,d=s;break e}}else if(y.elementType===h||typeof h=="object"&&h!==null&&h.$$typeof===ca&&ix(h)===y.type){r(d,y.sibling),s=o(y,c.props),s.ref=ol(d,y,c),s.return=d,d=s;break e}r(d,y);break}else t(d,y);y=y.sibling}c.type===Di?(s=ti(c.props.children,d.mode,u,c.key),s.return=d,d=s):(u=zc(c.type,c.key,c.props,null,d.mode,u),u.ref=ol(d,s,c),u.return=d,d=u)}return i(d);case Ii:e:{for(y=c.key;s!==null;){if(s.key===y)if(s.tag===4&&s.stateNode.containerInfo===c.containerInfo&&s.stateNode.implementation===c.implementation){r(d,s.sibling),s=o(s,c.children||[]),s.return=d,d=s;break e}else{r(d,s);break}else t(d,s);s=s.sibling}s=rh(c,d.mode,u),s.return=d,d=s}return i(d);case ca:return y=c._init,b(d,s,y(c._payload),u)}if(pl(c))return C(d,s,c,u);if(Js(c))return w(d,s,c,u);ic(d,c)}return typeof c=="string"&&c!==""||typeof c=="number"?(c=""+c,s!==null&&s.tag===6?(r(d,s.sibling),s=o(s,c),s.return=d,d=s):(r(d,s),s=th(c,d.mode,u),s.return=d,d=s),i(d)):r(d,s)}return b}var us=BS(!0),VS=BS(!1),pu={},To=Ma(pu),Hl=Ma(pu),Gl=Ma(pu);function Za(e){if(e===pu)throw Error(Re(174));return e}function V0(e,t){switch(Jt(Gl,t),Jt(Hl,e),Jt(To,pu),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Wh(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Wh(t,e)}rr(To),Jt(To,t)}function cs(){rr(To),rr(Hl),rr(Gl)}function US(e){Za(Gl.current);var t=Za(To.current),r=Wh(t,e.type);t!==r&&(Jt(Hl,e),Jt(To,r))}function U0(e){Hl.current===e&&(rr(To),rr(Hl))}var lr=Ma(0);function wd(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Yp=[];function W0(){for(var e=0;er?r:4,e(!0);var n=Qp.transition;Qp.transition={};try{e(!1),t()}finally{Kt=r,Qp.transition=n}}function oC(){return $n().memoizedState}function bM(e,t,r){var n=Ta(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},aC(e))iC(t,r);else if(r=DS(e,t,r,n),r!==null){var o=tn();io(r,e,n,o),sC(r,t,n)}}function vM(e,t,r){var n=Ta(e),o={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(aC(e))iC(t,o);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var i=t.lastRenderedState,l=a(i,r);if(o.hasEagerState=!0,o.eagerState=l,lo(l,i)){var f=t.interleaved;f===null?(o.next=o,z0(t)):(o.next=f.next,f.next=o),t.interleaved=o;return}}catch{}finally{}r=DS(e,t,o,n),r!==null&&(o=tn(),io(r,e,n,o),sC(r,t,n))}}function aC(e){var t=e.alternate;return e===cr||t!==null&&t===cr}function iC(e,t){Cl=_d=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function sC(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,T0(e,r)}}var Sd={readContext:Wn,useCallback:Ur,useContext:Ur,useEffect:Ur,useImperativeHandle:Ur,useInsertionEffect:Ur,useLayoutEffect:Ur,useMemo:Ur,useReducer:Ur,useRef:Ur,useState:Ur,useDebugValue:Ur,useDeferredValue:Ur,useTransition:Ur,useMutableSource:Ur,useSyncExternalStore:Ur,useId:Ur,unstable_isNewReconciler:!1},yM={readContext:Wn,useCallback:function(e,t){return _o().memoizedState=[e,t===void 0?null:t],e},useContext:Wn,useEffect:lx,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,Ic(4194308,4,JS.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Ic(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ic(4,2,e,t)},useMemo:function(e,t){var r=_o();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=_o();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=bM.bind(null,cr,e),[n.memoizedState,e]},useRef:function(e){var t=_o();return e={current:e},t.memoizedState=e},useState:sx,useDebugValue:K0,useDeferredValue:function(e){return _o().memoizedState=e},useTransition:function(){var e=sx(!1),t=e[0];return e=mM.bind(null,e[1]),_o().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var n=cr,o=_o();if(ir){if(r===void 0)throw Error(Re(407));r=r()}else{if(r=t(),Ar===null)throw Error(Re(349));ii&30||HS(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,lx(qS.bind(null,n,a,e),[e]),n.flags|=2048,Yl(9,GS.bind(null,n,a,r,t),void 0,null),r},useId:function(){var e=_o(),t=Ar.identifierPrefix;if(ir){var r=Do,n=Io;r=(n&~(1<<32-ao(n)-1)).toString(32)+r,t=":"+t+"R"+r,r=ql++,0<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=i.createElement(r,{is:n.is}):(e=i.createElement(r),r==="select"&&(i=e,n.multiple?i.multiple=!0:n.size&&(i.size=n.size))):e=i.createElementNS(e,r),e[So]=t,e[$l]=n,mC(e,t,!1,!1),t.stateNode=e;e:{switch(i=Hh(r,n),r){case"dialog":er("cancel",e),er("close",e),o=n;break;case"iframe":case"object":case"embed":er("load",e),o=n;break;case"video":case"audio":for(o=0;ofs&&(t.flags|=128,n=!0,al(a,!1),t.lanes=4194304)}else{if(!n)if(e=wd(i),e!==null){if(t.flags|=128,n=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),al(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!ir)return Wr(t),null}else 2*mr()-a.renderingStartTime>fs&&r!==1073741824&&(t.flags|=128,n=!0,al(a,!1),t.lanes=4194304);a.isBackwards?(i.sibling=t.child,t.child=i):(r=a.last,r!==null?r.sibling=i:t.child=i,a.last=i)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=mr(),t.sibling=null,r=lr.current,Jt(lr,n?r&1|2:r&1),t):(Wr(t),null);case 22:case 23:return em(),n=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(t.flags|=8192),n&&t.mode&1?vn&1073741824&&(Wr(t),t.subtreeFlags&6&&(t.flags|=8192)):Wr(t),null;case 24:return null;case 25:return null}throw Error(Re(156,t.tag))}function OM(e,t){switch(M0(t),t.tag){case 1:return pn(t.type)&&hd(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return cs(),rr(fn),rr(Kr),W0(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return U0(t),null;case 13:if(rr(lr),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Re(340));ls()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return rr(lr),null;case 4:return cs(),null;case 10:return F0(t.type._context),null;case 22:case 23:return em(),null;case 24:return null;default:return null}}var lc=!1,Gr=!1,kM=typeof WeakSet=="function"?WeakSet:Set,nt=null;function Hi(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){pr(e,t,n)}else r.current=null}function vg(e,t,r){try{r()}catch(n){pr(e,t,n)}}var bx=!1;function NM(e,t){if(tg=cd,e=_S(),A0(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var o=n.anchorOffset,a=n.focusNode;n=n.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var i=0,l=-1,f=-1,g=0,m=0,S=e,O=null;t:for(;;){for(var T;S!==r||o!==0&&S.nodeType!==3||(l=i+o),S!==a||n!==0&&S.nodeType!==3||(f=i+n),S.nodeType===3&&(i+=S.nodeValue.length),(T=S.firstChild)!==null;)O=S,S=T;for(;;){if(S===e)break t;if(O===r&&++g===o&&(l=i),O===a&&++m===n&&(f=i),(T=S.nextSibling)!==null)break;S=O,O=S.parentNode}S=T}r=l===-1||f===-1?null:{start:l,end:f}}else r=null}r=r||{start:0,end:0}}else r=null;for(rg={focusedElem:e,selectionRange:r},cd=!1,nt=t;nt!==null;)if(t=nt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,nt=e;else for(;nt!==null;){t=nt;try{var C=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(C!==null){var w=C.memoizedProps,b=C.memoizedState,d=t.stateNode,s=d.getSnapshotBeforeUpdate(t.elementType===t.type?w:Xn(t.type,w),b);d.__reactInternalSnapshotBeforeUpdate=s}break;case 3:var c=t.stateNode.containerInfo;c.nodeType===1?c.textContent="":c.nodeType===9&&c.documentElement&&c.removeChild(c.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Re(163))}}catch(u){pr(t,t.return,u)}if(e=t.sibling,e!==null){e.return=t.return,nt=e;break}nt=t.return}return C=bx,bx=!1,C}function Tl(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,a!==void 0&&vg(t,r,a)}o=o.next}while(o!==n)}}function hf(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function yg(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function yC(e){var t=e.alternate;t!==null&&(e.alternate=null,yC(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[So],delete t[$l],delete t[ag],delete t[dM],delete t[fM])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function xC(e){return e.tag===5||e.tag===3||e.tag===4}function vx(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||xC(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function xg(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=pd));else if(n!==4&&(e=e.child,e!==null))for(xg(e,t,r),e=e.sibling;e!==null;)xg(e,t,r),e=e.sibling}function wg(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(wg(e,t,r),e=e.sibling;e!==null;)wg(e,t,r),e=e.sibling}var Lr=null,Zn=!1;function aa(e,t,r){for(r=r.child;r!==null;)wC(e,t,r),r=r.sibling}function wC(e,t,r){if(Co&&typeof Co.onCommitFiberUnmount=="function")try{Co.onCommitFiberUnmount(af,r)}catch{}switch(r.tag){case 5:Gr||Hi(r,t);case 6:var n=Lr,o=Zn;Lr=null,aa(e,t,r),Lr=n,Zn=o,Lr!==null&&(Zn?(e=Lr,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Lr.removeChild(r.stateNode));break;case 18:Lr!==null&&(Zn?(e=Lr,r=r.stateNode,e.nodeType===8?qp(e.parentNode,r):e.nodeType===1&&qp(e,r),zl(e)):qp(Lr,r.stateNode));break;case 4:n=Lr,o=Zn,Lr=r.stateNode.containerInfo,Zn=!0,aa(e,t,r),Lr=n,Zn=o;break;case 0:case 11:case 14:case 15:if(!Gr&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){o=n=n.next;do{var a=o,i=a.destroy;a=a.tag,i!==void 0&&(a&2||a&4)&&vg(r,t,i),o=o.next}while(o!==n)}aa(e,t,r);break;case 1:if(!Gr&&(Hi(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(l){pr(r,t,l)}aa(e,t,r);break;case 21:aa(e,t,r);break;case 22:r.mode&1?(Gr=(n=Gr)||r.memoizedState!==null,aa(e,t,r),Gr=n):aa(e,t,r);break;default:aa(e,t,r)}}function yx(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new kM),t.forEach(function(n){var o=FM.bind(null,e,n);r.has(n)||(r.add(n),n.then(o,o))})}}function Yn(e,t){var r=t.deletions;if(r!==null)for(var n=0;no&&(o=i),n&=~a}if(n=o,n=mr()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*EM(n/1960))-n,10e?16:e,ma===null)var n=!1;else{if(e=ma,ma=null,Pd=0,Ht&6)throw Error(Re(331));var o=Ht;for(Ht|=4,nt=e.current;nt!==null;){var a=nt,i=a.child;if(nt.flags&16){var l=a.deletions;if(l!==null){for(var f=0;fmr()-Z0?ei(e,0):X0|=r),hn(e,t)}function NC(e,t){t===0&&(e.mode&1?(t=Ju,Ju<<=1,!(Ju&130023424)&&(Ju=4194304)):t=1);var r=tn();e=Uo(e,t),e!==null&&(cu(e,t,r),hn(e,r))}function LM(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),NC(e,r)}function FM(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(Re(314))}n!==null&&n.delete(t),NC(e,r)}var jC;jC=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||fn.current)cn=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return cn=!1,TM(e,t,r);cn=!!(e.flags&131072)}else cn=!1,ir&&t.flags&1048576&&RS(t,bd,t.index);switch(t.lanes=0,t.tag){case 2:var n=t.type;Dc(e,t),e=t.pendingProps;var o=ss(t,Kr.current);Ji(t,r),o=H0(null,t,n,e,o,r);var a=G0();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,pn(n)?(a=!0,gd(t)):a=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,B0(t),o.updater=ff,t.stateNode=o,o._reactInternals=t,dg(t,n,e,r),t=hg(null,t,n,!0,a,r)):(t.tag=0,ir&&a&&R0(t),en(null,t,o,r),t=t.child),t;case 16:n=t.elementType;e:{switch(Dc(e,t),e=t.pendingProps,o=n._init,n=o(n._payload),t.type=n,o=t.tag=BM(n),e=Xn(n,e),o){case 0:t=pg(null,t,n,e,r);break e;case 1:t=hx(null,t,n,e,r);break e;case 11:t=fx(null,t,n,e,r);break e;case 14:t=px(null,t,n,Xn(n.type,e),r);break e}throw Error(Re(306,n,""))}return t;case 0:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Xn(n,o),pg(e,t,n,o,r);case 1:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Xn(n,o),hx(e,t,n,o,r);case 3:e:{if(pC(t),e===null)throw Error(Re(387));n=t.pendingProps,a=t.memoizedState,o=a.element,LS(e,t),xd(t,n,null,r);var i=t.memoizedState;if(n=i.element,a.isDehydrated)if(a={element:n,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){o=ds(Error(Re(423)),t),t=gx(e,t,n,r,o);break e}else if(n!==o){o=ds(Error(Re(424)),t),t=gx(e,t,n,r,o);break e}else for(yn=_a(t.stateNode.containerInfo.firstChild),Sn=t,ir=!0,eo=null,r=VS(t,null,n,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(ls(),n===o){t=Wo(e,t,r);break e}en(e,t,n,r)}t=t.child}return t;case 5:return US(t),e===null&&lg(t),n=t.type,o=t.pendingProps,a=e!==null?e.memoizedProps:null,i=o.children,ng(n,o)?i=null:a!==null&&ng(n,a)&&(t.flags|=32),fC(e,t),en(e,t,i,r),t.child;case 6:return e===null&&lg(t),null;case 13:return hC(e,t,r);case 4:return V0(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=us(t,null,n,r):en(e,t,n,r),t.child;case 11:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Xn(n,o),fx(e,t,n,o,r);case 7:return en(e,t,t.pendingProps,r),t.child;case 8:return en(e,t,t.pendingProps.children,r),t.child;case 12:return en(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(n=t.type._context,o=t.pendingProps,a=t.memoizedProps,i=o.value,Jt(vd,n._currentValue),n._currentValue=i,a!==null)if(lo(a.value,i)){if(a.children===o.children&&!fn.current){t=Wo(e,t,r);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var l=a.dependencies;if(l!==null){i=a.child;for(var f=l.firstContext;f!==null;){if(f.context===n){if(a.tag===1){f=Lo(-1,r&-r),f.tag=2;var g=a.updateQueue;if(g!==null){g=g.shared;var m=g.pending;m===null?f.next=f:(f.next=m.next,m.next=f),g.pending=f}}a.lanes|=r,f=a.alternate,f!==null&&(f.lanes|=r),ug(a.return,r,t),l.lanes|=r;break}f=f.next}}else if(a.tag===10)i=a.type===t.type?null:a.child;else if(a.tag===18){if(i=a.return,i===null)throw Error(Re(341));i.lanes|=r,l=i.alternate,l!==null&&(l.lanes|=r),ug(i,r,t),i=a.sibling}else i=a.child;if(i!==null)i.return=a;else for(i=a;i!==null;){if(i===t){i=null;break}if(a=i.sibling,a!==null){a.return=i.return,i=a;break}i=i.return}a=i}en(e,t,o.children,r),t=t.child}return t;case 9:return o=t.type,n=t.pendingProps.children,Ji(t,r),o=Wn(o),n=n(o),t.flags|=1,en(e,t,n,r),t.child;case 14:return n=t.type,o=Xn(n,t.pendingProps),o=Xn(n.type,o),px(e,t,n,o,r);case 15:return cC(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Xn(n,o),Dc(e,t),t.tag=1,pn(n)?(e=!0,gd(t)):e=!1,Ji(t,r),zS(t,n,o),dg(t,n,o,r),hg(null,t,n,!0,e,r);case 19:return gC(e,t,r);case 22:return dC(e,t,r)}throw Error(Re(156,t.tag))};function EC(e,t){return nS(e,t)}function zM(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function zn(e,t,r,n){return new zM(e,t,r,n)}function rm(e){return e=e.prototype,!(!e||!e.isReactComponent)}function BM(e){if(typeof e=="function")return rm(e)?1:0;if(e!=null){if(e=e.$$typeof,e===w0)return 11;if(e===_0)return 14}return 2}function Pa(e,t){var r=e.alternate;return r===null?(r=zn(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function zc(e,t,r,n,o,a){var i=2;if(n=e,typeof e=="function")rm(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Di:return ti(r.children,o,a,t);case x0:i=8,o|=8;break;case Ih:return e=zn(12,r,t,o|2),e.elementType=Ih,e.lanes=a,e;case Dh:return e=zn(13,r,t,o),e.elementType=Dh,e.lanes=a,e;case Lh:return e=zn(19,r,t,o),e.elementType=Lh,e.lanes=a,e;case B_:return mf(r,o,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case F_:i=10;break e;case z_:i=9;break e;case w0:i=11;break e;case _0:i=14;break e;case ca:i=16,n=null;break e}throw Error(Re(130,e==null?e:typeof e,""))}return t=zn(i,r,t,o),t.elementType=e,t.type=n,t.lanes=a,t}function ti(e,t,r,n){return e=zn(7,e,n,t),e.lanes=r,e}function mf(e,t,r,n){return e=zn(22,e,n,t),e.elementType=B_,e.lanes=r,e.stateNode={isHidden:!1},e}function th(e,t,r){return e=zn(6,e,null,t),e.lanes=r,e}function rh(e,t,r){return t=zn(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function VM(e,t,r,n,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Dp(0),this.expirationTimes=Dp(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Dp(0),this.identifierPrefix=n,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function nm(e,t,r,n,o,a,i,l,f){return e=new VM(e,t,r,l,f),t===1?(t=1,a===!0&&(t|=8)):t=0,a=zn(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},B0(a),e}function UM(e,t,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(IC)}catch(e){console.error(e)}}IC(),R_.exports=On;var $o=R_.exports,Ox=$o;Rh.createRoot=Ox.createRoot,Rh.hydrateRoot=Ox.hydrateRoot;/** + * @remix-run/router v1.10.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Xl(){return Xl=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function sm(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function KM(){return Math.random().toString(36).substr(2,8)}function Nx(e,t){return{usr:e.state,key:e.key,idx:t}}function Pg(e,t,r,n){return r===void 0&&(r=null),Xl({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Ps(t):t,{state:r,key:t&&t.key||n||KM()})}function Nd(e){let{pathname:t="/",search:r="",hash:n=""}=e;return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Ps(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function YM(e,t,r,n){n===void 0&&(n={});let{window:o=document.defaultView,v5Compat:a=!1}=n,i=o.history,l=ba.Pop,f=null,g=m();g==null&&(g=0,i.replaceState(Xl({},i.state,{idx:g}),""));function m(){return(i.state||{idx:null}).idx}function S(){l=ba.Pop;let b=m(),d=b==null?null:b-g;g=b,f&&f({action:l,location:w.location,delta:d})}function O(b,d){l=ba.Push;let s=Pg(w.location,b,d);r&&r(s,b),g=m()+1;let c=Nx(s,g),u=w.createHref(s);try{i.pushState(c,"",u)}catch(h){if(h instanceof DOMException&&h.name==="DataCloneError")throw h;o.location.assign(u)}a&&f&&f({action:l,location:w.location,delta:1})}function T(b,d){l=ba.Replace;let s=Pg(w.location,b,d);r&&r(s,b),g=m();let c=Nx(s,g),u=w.createHref(s);i.replaceState(c,"",u),a&&f&&f({action:l,location:w.location,delta:0})}function C(b){let d=o.location.origin!=="null"?o.location.origin:o.location.href,s=typeof b=="string"?b:Nd(b);return dr(d,"No window.location.(origin|href) available to create URL for href: "+s),new URL(s,d)}let w={get action(){return l},get location(){return e(o,i)},listen(b){if(f)throw new Error("A history only accepts one active listener");return o.addEventListener(kx,S),f=b,()=>{o.removeEventListener(kx,S),f=null}},createHref(b){return t(o,b)},createURL:C,encodeLocation(b){let d=C(b);return{pathname:d.pathname,search:d.search,hash:d.hash}},push:O,replace:T,go(b){return i.go(b)}};return w}var jx;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(jx||(jx={}));function QM(e,t,r){r===void 0&&(r="/");let n=typeof t=="string"?Ps(t):t,o=Zl(n.pathname||"/",r);if(o==null)return null;let a=DC(e);XM(a);let i=null;for(let l=0;i==null&&l{let f={relativePath:l===void 0?a.path||"":l,caseSensitive:a.caseSensitive===!0,childrenIndex:i,route:a};f.relativePath.startsWith("/")&&(dr(f.relativePath.startsWith(n),'Absolute route path "'+f.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),f.relativePath=f.relativePath.slice(n.length));let g=Oa([n,f.relativePath]),m=r.concat(f);a.children&&a.children.length>0&&(dr(a.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+g+'".')),DC(a.children,t,m,g)),!(a.path==null&&!a.index)&&t.push({path:g,score:oI(g,a.index),routesMeta:m})};return e.forEach((a,i)=>{var l;if(a.path===""||!((l=a.path)!=null&&l.includes("?")))o(a,i);else for(let f of LC(a.path))o(a,i,f)}),t}function LC(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t,o=r.endsWith("?"),a=r.replace(/\?$/,"");if(n.length===0)return o?[a,""]:[a];let i=LC(n.join("/")),l=[];return l.push(...i.map(f=>f===""?a:[a,f].join("/"))),o&&l.push(...i),l.map(f=>e.startsWith("/")&&f===""?"/":f)}function XM(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:aI(t.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}const ZM=/^:\w+$/,JM=3,eI=2,tI=1,rI=10,nI=-2,Ex=e=>e==="*";function oI(e,t){let r=e.split("/"),n=r.length;return r.some(Ex)&&(n+=nI),t&&(n+=eI),r.filter(o=>!Ex(o)).reduce((o,a)=>o+(ZM.test(a)?JM:a===""?tI:rI),n)}function aI(e,t){return e.length===t.length&&e.slice(0,-1).every((n,o)=>n===t[o])?e[e.length-1]-t[t.length-1]:0}function iI(e,t){let{routesMeta:r}=e,n={},o="/",a=[];for(let i=0;i{if(m==="*"){let O=l[S]||"";i=a.slice(0,a.length-O.length).replace(/(.)\/+$/,"$1")}return g[m]=uI(l[S]||"",m),g},{}),pathname:a,pathnameBase:i,pattern:e}}function sI(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!0),sm(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,(i,l)=>(n.push(l),"/([^\\/]+)"));return e.endsWith("*")?(n.push("*"),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),n]}function lI(e){try{return decodeURI(e)}catch(t){return sm(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function uI(e,t){try{return decodeURIComponent(e)}catch(r){return sm(!1,'The value for the URL param "'+t+'" will not be decoded because'+(' the string "'+e+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+r+").")),e}}function Zl(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&n!=="/"?null:e.slice(r)||"/"}function cI(e,t){t===void 0&&(t="/");let{pathname:r,search:n="",hash:o=""}=typeof e=="string"?Ps(e):e;return{pathname:r?r.startsWith("/")?r:dI(r,t):t,search:pI(n),hash:hI(o)}}function dI(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?r.length>1&&r.pop():o!=="."&&r.push(o)}),r.length>1?r.join("/"):"/"}function nh(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function lm(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function um(e,t,r,n){n===void 0&&(n=!1);let o;typeof e=="string"?o=Ps(e):(o=Xl({},e),dr(!o.pathname||!o.pathname.includes("?"),nh("?","pathname","search",o)),dr(!o.pathname||!o.pathname.includes("#"),nh("#","pathname","hash",o)),dr(!o.search||!o.search.includes("#"),nh("#","search","hash",o)));let a=e===""||o.pathname==="",i=a?"/":o.pathname,l;if(n||i==null)l=r;else{let S=t.length-1;if(i.startsWith("..")){let O=i.split("/");for(;O[0]==="..";)O.shift(),S-=1;o.pathname=O.join("/")}l=S>=0?t[S]:"/"}let f=cI(o,l),g=i&&i!=="/"&&i.endsWith("/"),m=(a||i===".")&&r.endsWith("/");return!f.pathname.endsWith("/")&&(g||m)&&(f.pathname+="/"),f}const Oa=e=>e.join("/").replace(/\/\/+/g,"/"),fI=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),pI=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,hI=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function gI(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const FC=["post","put","patch","delete"];new Set(FC);const mI=["get",...FC];new Set(mI);/** + * React Router v6.17.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function jd(){return jd=Object.assign?Object.assign.bind():function(e){for(var t=1;tf.pathnameBase)),i=P.useRef(!1);return VC(()=>{i.current=!0}),P.useCallback(function(f,g){if(g===void 0&&(g={}),!i.current)return;if(typeof f=="number"){r.go(f);return}let m=um(f,JSON.parse(a),o,g.relative==="path");e==null&&t!=="/"&&(m.pathname=m.pathname==="/"?t:Oa([t,m.pathname])),(g.replace?r.replace:r.push)(m,g.state,g)},[t,r,a,o,e])}function cm(){let{matches:e}=P.useContext(qo),t=e[e.length-1];return t?t.params:{}}function Sf(e,t){let{relative:r}=t===void 0?{}:t,{matches:n}=P.useContext(qo),{pathname:o}=Da(),a=JSON.stringify(lm(n).map(i=>i.pathnameBase));return P.useMemo(()=>um(e,JSON.parse(a),o,r==="path"),[e,a,o,r])}function yI(e,t){return xI(e,t)}function xI(e,t,r){Os()||dr(!1);let{navigator:n}=P.useContext(gi),{matches:o}=P.useContext(qo),a=o[o.length-1],i=a?a.params:{};a&&a.pathname;let l=a?a.pathnameBase:"/";a&&a.route;let f=Da(),g;if(t){var m;let w=typeof t=="string"?Ps(t):t;l==="/"||(m=w.pathname)!=null&&m.startsWith(l)||dr(!1),g=w}else g=f;let S=g.pathname||"/",O=l==="/"?S:S.slice(l.length)||"/",T=QM(e,{pathname:O}),C=TI(T&&T.map(w=>Object.assign({},w,{params:Object.assign({},i,w.params),pathname:Oa([l,n.encodeLocation?n.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?l:Oa([l,n.encodeLocation?n.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),o,r);return t&&C?P.createElement(_f.Provider,{value:{location:jd({pathname:"/",search:"",hash:"",state:null,key:"default"},g),navigationType:ba.Pop}},C):C}function wI(){let e=NI(),t=gI(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},a=null;return P.createElement(P.Fragment,null,P.createElement("h2",null,"Unexpected Application Error!"),P.createElement("h3",{style:{fontStyle:"italic"}},t),r?P.createElement("pre",{style:o},r):null,a)}const _I=P.createElement(wI,null);class SI extends P.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error||r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error?P.createElement(qo.Provider,{value:this.props.routeContext},P.createElement(BC.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function CI(e){let{routeContext:t,match:r,children:n}=e,o=P.useContext(wf);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),P.createElement(qo.Provider,{value:t},n)}function TI(e,t,r){var n;if(t===void 0&&(t=[]),r===void 0&&(r=null),e==null){var o;if((o=r)!=null&&o.errors)e=r.matches;else return null}let a=e,i=(n=r)==null?void 0:n.errors;if(i!=null){let l=a.findIndex(f=>f.route.id&&(i==null?void 0:i[f.route.id]));l>=0||dr(!1),a=a.slice(0,Math.min(a.length,l+1))}return a.reduceRight((l,f,g)=>{let m=f.route.id?i==null?void 0:i[f.route.id]:null,S=null;r&&(S=f.route.errorElement||_I);let O=t.concat(a.slice(0,g+1)),T=()=>{let C;return m?C=S:f.route.Component?C=P.createElement(f.route.Component,null):f.route.element?C=f.route.element:C=l,P.createElement(CI,{match:f,routeContext:{outlet:l,matches:O,isDataRoute:r!=null},children:C})};return r&&(f.route.ErrorBoundary||f.route.errorElement||g===0)?P.createElement(SI,{location:r.location,revalidation:r.revalidation,component:S,error:m,children:T(),routeContext:{outlet:null,matches:O,isDataRoute:!0}}):T()},null)}var UC=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(UC||{}),Ed=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Ed||{});function PI(e){let t=P.useContext(wf);return t||dr(!1),t}function OI(e){let t=P.useContext(zC);return t||dr(!1),t}function kI(e){let t=P.useContext(qo);return t||dr(!1),t}function WC(e){let t=kI(),r=t.matches[t.matches.length-1];return r.route.id||dr(!1),r.route.id}function NI(){var e;let t=P.useContext(BC),r=OI(Ed.UseRouteError),n=WC(Ed.UseRouteError);return t||((e=r.errors)==null?void 0:e[n])}function jI(){let{router:e}=PI(UC.UseNavigateStable),t=WC(Ed.UseNavigateStable),r=P.useRef(!1);return VC(()=>{r.current=!0}),P.useCallback(function(o,a){a===void 0&&(a={}),r.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,jd({fromRouteId:t},a)))},[e,t])}function EI(e){let{to:t,replace:r,state:n,relative:o}=e;Os()||dr(!1);let{matches:a}=P.useContext(qo),{pathname:i}=Da(),l=Hn(),f=um(t,lm(a).map(m=>m.pathnameBase),i,o==="path"),g=JSON.stringify(f);return P.useEffect(()=>l(JSON.parse(g),{replace:r,state:n,relative:o}),[l,g,o,r,n]),null}function to(e){dr(!1)}function AI(e){let{basename:t="/",children:r=null,location:n,navigationType:o=ba.Pop,navigator:a,static:i=!1}=e;Os()&&dr(!1);let l=t.replace(/^\/*/,"/"),f=P.useMemo(()=>({basename:l,navigator:a,static:i}),[l,a,i]);typeof n=="string"&&(n=Ps(n));let{pathname:g="/",search:m="",hash:S="",state:O=null,key:T="default"}=n,C=P.useMemo(()=>{let w=Zl(g,l);return w==null?null:{location:{pathname:w,search:m,hash:S,state:O,key:T},navigationType:o}},[l,g,m,S,O,T,o]);return C==null?null:P.createElement(gi.Provider,{value:f},P.createElement(_f.Provider,{children:r,value:C}))}function dm(e){let{children:t,location:r}=e;return yI(kg(t),r)}new Promise(()=>{});function kg(e,t){t===void 0&&(t=[]);let r=[];return P.Children.forEach(e,(n,o)=>{if(!P.isValidElement(n))return;let a=[...t,o];if(n.type===P.Fragment){r.push.apply(r,kg(n.props.children,a));return}n.type!==to&&dr(!1),!n.props.index||!n.props.children||dr(!1);let i={id:n.props.id||a.join("-"),caseSensitive:n.props.caseSensitive,element:n.props.element,Component:n.props.Component,index:n.props.index,path:n.props.path,loader:n.props.loader,action:n.props.action,errorElement:n.props.errorElement,ErrorBoundary:n.props.ErrorBoundary,hasErrorBoundary:n.props.ErrorBoundary!=null||n.props.errorElement!=null,shouldRevalidate:n.props.shouldRevalidate,handle:n.props.handle,lazy:n.props.lazy};n.props.children&&(i.children=kg(n.props.children,a)),r.push(i)}),r}/** + * React Router DOM v6.17.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Ad(){return Ad=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(r[o]=e[o]);return r}function RI(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function MI(e,t){return e.button===0&&(!t||t==="_self")&&!RI(e)}const II=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],DI=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],LI=P.createContext({isTransitioning:!1}),FI="startTransition",Ax=u0[FI];function zI(e){let{basename:t,children:r,future:n,window:o}=e,a=P.useRef();a.current==null&&(a.current=qM({window:o,v5Compat:!0}));let i=a.current,[l,f]=P.useState({action:i.action,location:i.location}),{v7_startTransition:g}=n||{},m=P.useCallback(S=>{g&&Ax?Ax(()=>f(S)):f(S)},[f,g]);return P.useLayoutEffect(()=>i.listen(m),[i,m]),P.createElement(AI,{basename:t,children:r,location:l.location,navigationType:l.action,navigator:i})}const BI=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",VI=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,HC=P.forwardRef(function(t,r){let{onClick:n,relative:o,reloadDocument:a,replace:i,state:l,target:f,to:g,preventScrollReset:m,unstable_viewTransition:S}=t,O=$C(t,II),{basename:T}=P.useContext(gi),C,w=!1;if(typeof g=="string"&&VI.test(g)&&(C=g,BI))try{let c=new URL(window.location.href),u=g.startsWith("//")?new URL(c.protocol+g):new URL(g),h=Zl(u.pathname,T);u.origin===c.origin&&h!=null?g=h+u.search+u.hash:w=!0}catch{}let b=bI(g,{relative:o}),d=$I(g,{replace:i,state:l,target:f,preventScrollReset:m,relative:o,unstable_viewTransition:S});function s(c){n&&n(c),c.defaultPrevented||d(c)}return P.createElement("a",Ad({},O,{href:C||b,onClick:w||a?n:s,ref:r,target:f}))}),UI=P.forwardRef(function(t,r){let{"aria-current":n="page",caseSensitive:o=!1,className:a="",end:i=!1,style:l,to:f,unstable_viewTransition:g,children:m}=t,S=$C(t,DI),O=Sf(f,{relative:S.relative}),T=Da(),C=P.useContext(zC),{navigator:w}=P.useContext(gi),b=C!=null&&HI(O)&&g===!0,d=w.encodeLocation?w.encodeLocation(O).pathname:O.pathname,s=T.pathname,c=C&&C.navigation&&C.navigation.location?C.navigation.location.pathname:null;o||(s=s.toLowerCase(),c=c?c.toLowerCase():null,d=d.toLowerCase());let u=s===d||!i&&s.startsWith(d)&&s.charAt(d.length)==="/",h=c!=null&&(c===d||!i&&c.startsWith(d)&&c.charAt(d.length)==="/"),y={isActive:u,isPending:h,isTransitioning:b},x=u?n:void 0,E;typeof a=="function"?E=a(y):E=[a,u?"active":null,h?"pending":null,b?"transitioning":null].filter(Boolean).join(" ");let k=typeof l=="function"?l(y):l;return P.createElement(HC,Ad({},S,{"aria-current":x,className:E,ref:r,style:k,to:f,unstable_viewTransition:g}),typeof m=="function"?m(y):m)});var Ng;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Ng||(Ng={}));var Rx;(function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Rx||(Rx={}));function WI(e){let t=P.useContext(wf);return t||dr(!1),t}function $I(e,t){let{target:r,replace:n,state:o,preventScrollReset:a,relative:i,unstable_viewTransition:l}=t===void 0?{}:t,f=Hn(),g=Da(),m=Sf(e,{relative:i});return P.useCallback(S=>{if(MI(S,r)){S.preventDefault();let O=n!==void 0?n:Nd(g)===Nd(m);f(e,{replace:O,state:o,preventScrollReset:a,relative:i,unstable_viewTransition:l})}},[g,f,m,n,o,r,e,a,i,l])}function HI(e,t){t===void 0&&(t={});let r=P.useContext(LI);r==null&&dr(!1);let{basename:n}=WI(Ng.useViewTransitionState),o=Sf(e,{relative:t.relative});if(!r.isTransitioning)return!1;let a=Zl(r.currentLocation.pathname,n)||r.currentLocation.pathname,i=Zl(r.nextLocation.pathname,n)||r.nextLocation.pathname;return Og(o.pathname,i)!=null||Og(o.pathname,a)!=null}function GI({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M7.5 3.75A1.5 1.5 0 006 5.25v13.5a1.5 1.5 0 001.5 1.5h6a1.5 1.5 0 001.5-1.5V15a.75.75 0 011.5 0v3.75a3 3 0 01-3 3h-6a3 3 0 01-3-3V5.25a3 3 0 013-3h6a3 3 0 013 3V9A.75.75 0 0115 9V5.25a1.5 1.5 0 00-1.5-1.5h-6zm5.03 4.72a.75.75 0 010 1.06l-1.72 1.72h10.94a.75.75 0 010 1.5H10.81l1.72 1.72a.75.75 0 11-1.06 1.06l-3-3a.75.75 0 010-1.06l3-3a.75.75 0 011.06 0z",clipRule:"evenodd"}))}const qI=P.forwardRef(GI),KI=qI;function YI({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M3 6.75A.75.75 0 013.75 6h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 6.75zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 5.25a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z",clipRule:"evenodd"}))}const QI=P.forwardRef(YI),XI=QI;function ZI({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M11.078 2.25c-.917 0-1.699.663-1.85 1.567L9.05 4.889c-.02.12-.115.26-.297.348a7.493 7.493 0 00-.986.57c-.166.115-.334.126-.45.083L6.3 5.508a1.875 1.875 0 00-2.282.819l-.922 1.597a1.875 1.875 0 00.432 2.385l.84.692c.095.078.17.229.154.43a7.598 7.598 0 000 1.139c.015.2-.059.352-.153.43l-.841.692a1.875 1.875 0 00-.432 2.385l.922 1.597a1.875 1.875 0 002.282.818l1.019-.382c.115-.043.283-.031.45.082.312.214.641.405.985.57.182.088.277.228.297.35l.178 1.071c.151.904.933 1.567 1.85 1.567h1.844c.916 0 1.699-.663 1.85-1.567l.178-1.072c.02-.12.114-.26.297-.349.344-.165.673-.356.985-.57.167-.114.335-.125.45-.082l1.02.382a1.875 1.875 0 002.28-.819l.923-1.597a1.875 1.875 0 00-.432-2.385l-.84-.692c-.095-.078-.17-.229-.154-.43a7.614 7.614 0 000-1.139c-.016-.2.059-.352.153-.43l.84-.692c.708-.582.891-1.59.433-2.385l-.922-1.597a1.875 1.875 0 00-2.282-.818l-1.02.382c-.114.043-.282.031-.449-.083a7.49 7.49 0 00-.985-.57c-.183-.087-.277-.227-.297-.348l-.179-1.072a1.875 1.875 0 00-1.85-1.567h-1.843zM12 15.75a3.75 3.75 0 100-7.5 3.75 3.75 0 000 7.5z",clipRule:"evenodd"}))}const JI=P.forwardRef(ZI),GC=JI;function e4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M15.75 1.5a6.75 6.75 0 00-6.651 7.906c.067.39-.032.717-.221.906l-6.5 6.499a3 3 0 00-.878 2.121v2.818c0 .414.336.75.75.75H6a.75.75 0 00.75-.75v-1.5h1.5A.75.75 0 009 19.5V18h1.5a.75.75 0 00.53-.22l2.658-2.658c.19-.189.517-.288.906-.22A6.75 6.75 0 1015.75 1.5zm0 3a.75.75 0 000 1.5A2.25 2.25 0 0118 8.25a.75.75 0 001.5 0 3.75 3.75 0 00-3.75-3.75z",clipRule:"evenodd"}))}const t4=P.forwardRef(e4),r4=t4;function n4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M2.625 6.75a1.125 1.125 0 112.25 0 1.125 1.125 0 01-2.25 0zm4.875 0A.75.75 0 018.25 6h12a.75.75 0 010 1.5h-12a.75.75 0 01-.75-.75zM2.625 12a1.125 1.125 0 112.25 0 1.125 1.125 0 01-2.25 0zM7.5 12a.75.75 0 01.75-.75h12a.75.75 0 010 1.5h-12A.75.75 0 017.5 12zm-4.875 5.25a1.125 1.125 0 112.25 0 1.125 1.125 0 01-2.25 0zm4.875 0a.75.75 0 01.75-.75h12a.75.75 0 010 1.5h-12a.75.75 0 01-.75-.75z",clipRule:"evenodd"}))}const o4=P.forwardRef(n4),a4=o4;function i4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{d:"M5.566 4.657A4.505 4.505 0 016.75 4.5h10.5c.41 0 .806.055 1.183.157A3 3 0 0015.75 3h-7.5a3 3 0 00-2.684 1.657zM2.25 12a3 3 0 013-3h13.5a3 3 0 013 3v6a3 3 0 01-3 3H5.25a3 3 0 01-3-3v-6zM5.25 7.5c-.41 0-.806.055-1.184.157A3 3 0 016.75 6h10.5a3 3 0 012.683 1.657A4.505 4.505 0 0018.75 7.5H5.25z"}))}const s4=P.forwardRef(i4),l4=s4;function u4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{d:"M5.507 4.048A3 3 0 017.785 3h8.43a3 3 0 012.278 1.048l1.722 2.008A4.533 4.533 0 0019.5 6h-15c-.243 0-.482.02-.715.056l1.722-2.008z"}),P.createElement("path",{fillRule:"evenodd",d:"M1.5 10.5a3 3 0 013-3h15a3 3 0 110 6h-15a3 3 0 01-3-3zm15 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm2.25.75a.75.75 0 100-1.5.75.75 0 000 1.5zM4.5 15a3 3 0 100 6h15a3 3 0 100-6h-15zm11.25 3.75a.75.75 0 100-1.5.75.75 0 000 1.5zM19.5 18a.75.75 0 11-1.5 0 .75.75 0 011.5 0z",clipRule:"evenodd"}))}const c4=P.forwardRef(u4),d4=c4;function f4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{d:"M11.644 1.59a.75.75 0 01.712 0l9.75 5.25a.75.75 0 010 1.32l-9.75 5.25a.75.75 0 01-.712 0l-9.75-5.25a.75.75 0 010-1.32l9.75-5.25z"}),P.createElement("path",{d:"M3.265 10.602l7.668 4.129a2.25 2.25 0 002.134 0l7.668-4.13 1.37.739a.75.75 0 010 1.32l-9.75 5.25a.75.75 0 01-.71 0l-9.75-5.25a.75.75 0 010-1.32l1.37-.738z"}),P.createElement("path",{d:"M10.933 19.231l-7.668-4.13-1.37.739a.75.75 0 000 1.32l9.75 5.25c.221.12.489.12.71 0l9.75-5.25a.75.75 0 000-1.32l-1.37-.738-7.668 4.13a2.25 2.25 0 01-2.134-.001z"}))}const p4=P.forwardRef(f4),h4=p4;function g4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M8.25 6.75a3.75 3.75 0 117.5 0 3.75 3.75 0 01-7.5 0zM15.75 9.75a3 3 0 116 0 3 3 0 01-6 0zM2.25 9.75a3 3 0 116 0 3 3 0 01-6 0zM6.31 15.117A6.745 6.745 0 0112 12a6.745 6.745 0 016.709 7.498.75.75 0 01-.372.568A12.696 12.696 0 0112 21.75c-2.305 0-4.47-.612-6.337-1.684a.75.75 0 01-.372-.568 6.787 6.787 0 011.019-4.38z",clipRule:"evenodd"}),P.createElement("path",{d:"M5.082 14.254a8.287 8.287 0 00-1.308 5.135 9.687 9.687 0 01-1.764-.44l-.115-.04a.563.563 0 01-.373-.487l-.01-.121a3.75 3.75 0 013.57-4.047zM20.226 19.389a8.287 8.287 0 00-1.308-5.135 3.75 3.75 0 013.57 4.047l-.01.121a.563.563 0 01-.373.486l-.115.04c-.567.2-1.156.349-1.764.441z"}))}const m4=P.forwardRef(g4),b4=m4;function v4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z",clipRule:"evenodd"}))}const y4=P.forwardRef(v4),x4=y4;function w4({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{fillRule:"evenodd",d:"M12 6.75a5.25 5.25 0 016.775-5.025.75.75 0 01.313 1.248l-3.32 3.319c.063.475.276.934.641 1.299.365.365.824.578 1.3.64l3.318-3.319a.75.75 0 011.248.313 5.25 5.25 0 01-5.472 6.756c-1.018-.086-1.87.1-2.309.634L7.344 21.3A3.298 3.298 0 112.7 16.657l8.684-7.151c.533-.44.72-1.291.634-2.309A5.342 5.342 0 0112 6.75zM4.117 19.125a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75h-.008a.75.75 0 01-.75-.75v-.008z",clipRule:"evenodd"}),P.createElement("path",{d:"M10.076 8.64l-2.201-2.2V4.874a.75.75 0 00-.364-.643l-3.75-2.25a.75.75 0 00-.916.113l-.75.75a.75.75 0 00-.113.916l2.25 3.75a.75.75 0 00.643.364h1.564l2.062 2.062 1.575-1.297z"}),P.createElement("path",{fillRule:"evenodd",d:"M12.556 17.329l4.183 4.182a3.375 3.375 0 004.773-4.773l-3.306-3.305a6.803 6.803 0 01-1.53.043c-.394-.034-.682-.006-.867.042a.589.589 0 00-.167.063l-3.086 3.748zm3.414-1.36a.75.75 0 011.06 0l1.875 1.876a.75.75 0 11-1.06 1.06L15.97 17.03a.75.75 0 010-1.06z",clipRule:"evenodd"}))}const _4=P.forwardRef(w4),S4=_4;var V={},qC={},KC={exports:{}};/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/(function(e){(function(){var t={}.hasOwnProperty;function r(){for(var n=[],o=0;oe&&(t=0,n=r,r=new Map)}return{get:function(a){var i=r.get(a);return i!==void 0?i:(i=n.get(a))!==void 0?(o(a,i),i):void 0},set:function(a,i){r.has(a)?r.set(a,i):o(a,i)}}}function P4(e){var t=e.separator||":";return function(r){for(var n=0,o=[],a=0,i=0;i1?t-1:0),n=1;nf.length)&&(g=f.length);for(var m=0,S=new Array(g);mb.length)&&(d=b.length);for(var s=0,c=new Array(d);ss.length)&&(c=s.length);for(var u=0,h=new Array(c);us.length)&&(c=s.length);for(var u=0,h=new Array(c);ux.length)&&(E=x.length);for(var k=0,j=new Array(E);ku.length)&&(h=u.length);for(var y=0,x=new Array(h);yd.length)&&(s=d.length);for(var c=0,u=new Array(s);ch.length)&&(y=h.length);for(var x=0,E=new Array(y);xc.length)&&(u=c.length);for(var h=0,y=new Array(u);hT.length)&&(C=T.length);for(var w=0,b=new Array(C);ww.length)&&(b=w.length);for(var d=0,s=new Array(b);d"u"?l[g]=i.cloneUnlessOtherwiseSpecified(f,i):i.isMergeableObject(f)?l[g]=(0,t.default)(o[g],f,i):o.indexOf(f)===-1&&l.push(f)}),l}})(bT);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{MaterialTailwindTheme:function(){return m},ThemeProvider:function(){return S},useTheme:function(){return O}});var r=g(P),n=l(vt),o=l(Br),a=l(pm),i=l(bT);function l(T){return T&&T.__esModule?T:{default:T}}function f(T){if(typeof WeakMap!="function")return null;var C=new WeakMap,w=new WeakMap;return(f=function(b){return b?w:C})(T)}function g(T,C){if(!C&&T&&T.__esModule)return T;if(T===null||typeof T!="object"&&typeof T!="function")return{default:T};var w=f(C);if(w&&w.has(T))return w.get(T);var b={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in T)if(s!=="default"&&Object.prototype.hasOwnProperty.call(T,s)){var c=d?Object.getOwnPropertyDescriptor(T,s):null;c&&(c.get||c.set)?Object.defineProperty(b,s,c):b[s]=T[s]}return b.default=T,w&&w.set(T,b),b}var m=(0,r.createContext)(a.default);m.displayName="MaterialTailwindThemeProvider";function S(T){var C=T.value,w=C===void 0?a.default:C,b=T.children,d=(0,o.default)(a.default,w,{arrayMerge:i.default});return r.default.createElement(m.Provider,{value:d},b)}var O=function(){return(0,r.useContext)(m)};S.propTypes={value:n.default.instanceOf(Object),children:n.default.node.isRequired}})(ut);var Tf={},mu={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(O,T){for(var C in T)Object.defineProperty(O,C,{enumerable:!0,get:T[C]})}t(e,{propTypesOpen:function(){return a},propTypesIcon:function(){return i},propTypesAnimate:function(){return l},propTypesDisabled:function(){return f},propTypesClassName:function(){return g},propTypesValue:function(){return m},propTypesChildren:function(){return S}});var r=o(vt),n=nr;function o(O){return O&&O.__esModule?O:{default:O}}var a=r.default.bool.isRequired,i=r.default.node,l=n.propTypesAnimation,f=r.default.bool,g=r.default.string,m=r.default.instanceOf(Object).isRequired,S=r.default.node.isRequired})(mu);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(f,g){for(var m in g)Object.defineProperty(f,m,{enumerable:!0,get:g[m]})}t(e,{AccordionContext:function(){return a},useAccordion:function(){return i},AccordionContextProvider:function(){return l}});var r=o(P),n=mu;function o(f){return f&&f.__esModule?f:{default:f}}var a=r.default.createContext(null);a.displayName="MaterialTailwind.AccordionContext";function i(){var f=r.default.useContext(a);if(!f)throw new Error("useAccordion() must be used within an Accordion. It happens when you use AccordionHeader or AccordionBody components outside the Accordion component.");return f}var l=function(f){var g=f.value,m=f.children;return r.default.createElement(a.Provider,{value:g},m)};l.propTypes={value:n.propTypesValue,children:n.propTypesChildren},l.displayName="MaterialTailwind.AccordionContextProvider"})(Tf);var vT={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{AccordionHeader:function(){return C},default:function(){return w}});var r=S(P),n=S(St),o=bt,a=S(ht),i=Tf,l=ut,f=mu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=r.default.forwardRef(function(b,d){var s=b.className,c=b.children,u=O(b,["className","children"]),h=(0,i.useAccordion)(),y=h.open,x=h.icon,E=h.disabled,k=(0,l.useTheme)().accordion,j=k.styles.base;s=s??"";var A=(0,o.twMerge)((0,n.default)((0,a.default)(j.header.initial),g({},(0,a.default)(j.header.active),y)),s),M=(0,n.default)((0,a.default)(j.header.icon));return r.default.createElement("button",m({},u,{ref:d,type:"button",disabled:E,className:A}),c,r.default.createElement("span",{className:M},x??(y?r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M5 10a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1z",clipRule:"evenodd"})):r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M10 5a1 1 0 011 1v3h3a1 1 0 110 2h-3v3a1 1 0 11-2 0v-3H6a1 1 0 110-2h3V6a1 1 0 011-1z",clipRule:"evenodd"})))))});C.propTypes={className:f.propTypesClassName,children:f.propTypesChildren},C.displayName="MaterialTailwind.AccordionHeader";var w=C})(vT);var yT={},Rr={},Rg=function(e,t){return Rg=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])},Rg(e,t)};function xT(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Rg(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}var Md=function(){return Md=Object.assign||function(t){for(var r,n=1,o=arguments.length;n=0;l--)(i=e[l])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a}function _T(e,t){return function(r,n){t(r,n,e)}}function ST(e,t,r,n,o,a){function i(d){if(d!==void 0&&typeof d!="function")throw new TypeError("Function expected");return d}for(var l=n.kind,f=l==="getter"?"get":l==="setter"?"set":"value",g=!t&&e?n.static?e:e.prototype:null,m=t||(g?Object.getOwnPropertyDescriptor(g,n.name):{}),S,O=!1,T=r.length-1;T>=0;T--){var C={};for(var w in n)C[w]=w==="access"?{}:n[w];for(var w in n.access)C.access[w]=n.access[w];C.addInitializer=function(d){if(O)throw new TypeError("Cannot add initializers after decoration has completed");a.push(i(d||null))};var b=(0,r[T])(l==="accessor"?{get:m.get,set:m.set}:m[f],C);if(l==="accessor"){if(b===void 0)continue;if(b===null||typeof b!="object")throw new TypeError("Object expected");(S=i(b.get))&&(m.get=S),(S=i(b.set))&&(m.set=S),(S=i(b.init))&&o.unshift(S)}else(S=i(b))&&(l==="field"?o.unshift(S):m[f]=S)}g&&Object.defineProperty(g,n.name,m),O=!0}function CT(e,t,r){for(var n=arguments.length>2,o=0;o0&&a[a.length-1])&&(g[0]===6||g[0]===2)){r=0;continue}if(g[0]===3&&(!a||g[1]>a[0]&&g[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Nm(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,a=[],i;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(l){i={error:l}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return a}function ET(){for(var e=[],t=0;t1||f(T,w)})},C&&(o[T]=C(o[T])))}function f(T,C){try{g(n[T](C))}catch(w){O(a[0][3],w)}}function g(T){T.value instanceof hs?Promise.resolve(T.value.v).then(m,S):O(a[0][2],T)}function m(T){f("next",T)}function S(T){f("throw",T)}function O(T,C){T(C),a.shift(),a.length&&f(a[0][0],a[0][1])}}function IT(e){var t,r;return t={},n("next"),n("throw",function(o){throw o}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(o,a){t[o]=e[o]?function(i){return(r=!r)?{value:hs(e[o](i)),done:!1}:a?a(i):i}:a}}function DT(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Id=="function"?Id(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(a){r[a]=e[a]&&function(i){return new Promise(function(l,f){i=e[a](i),o(l,f,i.done,i.value)})}}function o(a,i,l,f){Promise.resolve(f).then(function(g){a({value:g,done:l})},i)}}function LT(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var nD=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},Mg=function(e){return Mg=Object.getOwnPropertyNames||function(t){var r=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[r.length]=n);return r},Mg(e)};function FT(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=Mg(e),n=0;nr=>Math.max(Math.min(r,t),e),kl=e=>e%1?Number(e.toFixed(5)):e,eu=/(-)?([\d]*\.?[\d])+/g,Ig=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,uD=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function bu(e){return typeof e=="string"}const vu={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},jm=Object.assign(Object.assign({},vu),{transform:YT(0,1)}),cD=Object.assign(Object.assign({},vu),{default:1}),yu=e=>({test:t=>bu(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),dD=yu("deg"),ts=yu("%"),fD=yu("px"),pD=yu("vh"),hD=yu("vw"),gD=Object.assign(Object.assign({},ts),{parse:e=>ts.parse(e)/100,transform:e=>ts.transform(e*100)}),Em=(e,t)=>r=>!!(bu(r)&&uD.test(r)&&r.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(r,t)),QT=(e,t,r)=>n=>{if(!bu(n))return n;const[o,a,i,l]=n.match(eu);return{[e]:parseFloat(o),[t]:parseFloat(a),[r]:parseFloat(i),alpha:l!==void 0?parseFloat(l):1}},ml={test:Em("hsl","hue"),parse:QT("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:r,alpha:n=1})=>"hsla("+Math.round(e)+", "+ts.transform(kl(t))+", "+ts.transform(kl(r))+", "+kl(jm.transform(n))+")"},mD=YT(0,255),Vc=Object.assign(Object.assign({},vu),{transform:e=>Math.round(mD(e))}),qi={test:Em("rgb","red"),parse:QT("red","green","blue"),transform:({red:e,green:t,blue:r,alpha:n=1})=>"rgba("+Vc.transform(e)+", "+Vc.transform(t)+", "+Vc.transform(r)+", "+kl(jm.transform(n))+")"};function bD(e){let t="",r="",n="",o="";return e.length>5?(t=e.substr(1,2),r=e.substr(3,2),n=e.substr(5,2),o=e.substr(7,2)):(t=e.substr(1,1),r=e.substr(2,1),n=e.substr(3,1),o=e.substr(4,1),t+=t,r+=r,n+=n,o+=o),{red:parseInt(t,16),green:parseInt(r,16),blue:parseInt(n,16),alpha:o?parseInt(o,16)/255:1}}const Dg={test:Em("#"),parse:bD,transform:qi.transform},Am={test:e=>qi.test(e)||Dg.test(e)||ml.test(e),parse:e=>qi.test(e)?qi.parse(e):ml.test(e)?ml.parse(e):Dg.parse(e),transform:e=>bu(e)?e:e.hasOwnProperty("red")?qi.transform(e):ml.transform(e)},XT="${c}",ZT="${n}";function vD(e){var t,r,n,o;return isNaN(e)&&bu(e)&&((r=(t=e.match(eu))===null||t===void 0?void 0:t.length)!==null&&r!==void 0?r:0)+((o=(n=e.match(Ig))===null||n===void 0?void 0:n.length)!==null&&o!==void 0?o:0)>0}function JT(e){typeof e=="number"&&(e=`${e}`);const t=[];let r=0;const n=e.match(Ig);n&&(r=n.length,e=e.replace(Ig,XT),t.push(...n.map(Am.parse)));const o=e.match(eu);return o&&(e=e.replace(eu,ZT),t.push(...o.map(vu.parse))),{values:t,numColors:r,tokenised:e}}function eP(e){return JT(e).values}function tP(e){const{values:t,numColors:r,tokenised:n}=JT(e),o=t.length;return a=>{let i=n;for(let l=0;ltypeof e=="number"?0:e;function xD(e){const t=eP(e);return tP(e)(t.map(yD))}const rP={test:vD,parse:eP,createTransformer:tP,getAnimatableNone:xD},wD=new Set(["brightness","contrast","saturate","opacity"]);function _D(e){let[t,r]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[n]=r.match(eu)||[];if(!n)return e;const o=r.replace(n,"");let a=wD.has(t)?1:0;return n!==r&&(a*=100),t+"("+a+o+")"}const SD=/([a-z-]*)\(.*?\)/g,CD=Object.assign(Object.assign({},rP),{getAnimatableNone:e=>{const t=e.match(SD);return t?t.map(_D).join(" "):e}});Pr.alpha=jm;Pr.color=Am;Pr.complex=rP;Pr.degrees=dD;Pr.filter=CD;Pr.hex=Dg;Pr.hsla=ml;Pr.number=vu;Pr.percent=ts;Pr.progressPercentage=gD;Pr.px=fD;Pr.rgbUnit=Vc;Pr.rgba=qi;Pr.scale=cD;Pr.vh=pD;Pr.vw=hD;var yt={},yi={};Object.defineProperty(yi,"__esModule",{value:!0});const nP=1/60*1e3,TD=typeof performance<"u"?()=>performance.now():()=>Date.now(),oP=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(TD()),nP);function PD(e){let t=[],r=[],n=0,o=!1,a=!1;const i=new WeakSet,l={schedule:(f,g=!1,m=!1)=>{const S=m&&o,O=S?t:r;return g&&i.add(f),O.indexOf(f)===-1&&(O.push(f),S&&o&&(n=t.length)),f},cancel:f=>{const g=r.indexOf(f);g!==-1&&r.splice(g,1),i.delete(f)},process:f=>{if(o){a=!0;return}if(o=!0,[t,r]=[r,t],r.length=0,n=t.length,n)for(let g=0;g(e[t]=PD(()=>tu=!0),e),{}),kD=xu.reduce((e,t)=>{const r=Of[t];return e[t]=(n,o=!1,a=!1)=>(tu||AD(),r.schedule(n,o,a)),e},{}),ND=xu.reduce((e,t)=>(e[t]=Of[t].cancel,e),{}),jD=xu.reduce((e,t)=>(e[t]=()=>Of[t].process(rs),e),{}),ED=e=>Of[e].process(rs),aP=e=>{tu=!1,rs.delta=Lg?nP:Math.max(Math.min(e-rs.timestamp,OD),1),rs.timestamp=e,Fg=!0,xu.forEach(ED),Fg=!1,tu&&(Lg=!1,oP(aP))},AD=()=>{tu=!0,Lg=!0,Fg||oP(aP)},RD=()=>rs;yi.cancelSync=ND;yi.default=kD;yi.flushSync=jD;yi.getFrameData=RD;Object.defineProperty(yt,"__esModule",{value:!0});var iP=GT,gs=KT,ro=Pr,kf=yi;function MD(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ID=MD(kf);const ru=(e,t,r)=>Math.min(Math.max(r,e),t),oh=.001,DD=.01,Fx=10,LD=.05,FD=1;function zD({duration:e=800,bounce:t=.25,velocity:r=0,mass:n=1}){let o,a;gs.warning(e<=Fx*1e3,"Spring duration must be 10 seconds or less");let i=1-t;i=ru(LD,FD,i),e=ru(DD,Fx,e/1e3),i<1?(o=g=>{const m=g*i,S=m*e,O=m-r,T=zg(g,i),C=Math.exp(-S);return oh-O/T*C},a=g=>{const S=g*i*e,O=S*r+r,T=Math.pow(i,2)*Math.pow(g,2)*e,C=Math.exp(-S),w=zg(Math.pow(g,2),i);return(-o(g)+oh>0?-1:1)*((O-T)*C)/w}):(o=g=>{const m=Math.exp(-g*e),S=(g-r)*e+1;return-oh+m*S},a=g=>{const m=Math.exp(-g*e),S=(r-g)*(e*e);return m*S});const l=5/e,f=VD(o,a,l);if(e=e*1e3,isNaN(f))return{stiffness:100,damping:10,duration:e};{const g=Math.pow(f,2)*n;return{stiffness:g,damping:i*2*Math.sqrt(n*g),duration:e}}}const BD=12;function VD(e,t,r){let n=r;for(let o=1;oe[r]!==void 0)}function $D(e){let t=Object.assign({velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1},e);if(!zx(e,WD)&&zx(e,UD)){const r=zD(e);t=Object.assign(Object.assign(Object.assign({},t),r),{velocity:0,mass:1}),t.isResolvedFromDuration=!0}return t}function Nf(e){var{from:t=0,to:r=1,restSpeed:n=2,restDelta:o}=e,a=iP.__rest(e,["from","to","restSpeed","restDelta"]);const i={done:!1,value:t};let{stiffness:l,damping:f,mass:g,velocity:m,duration:S,isResolvedFromDuration:O}=$D(a),T=Bx,C=Bx;function w(){const b=m?-(m/1e3):0,d=r-t,s=f/(2*Math.sqrt(l*g)),c=Math.sqrt(l/g)/1e3;if(o===void 0&&(o=Math.min(Math.abs(r-t)/100,.4)),s<1){const u=zg(c,s);T=h=>{const y=Math.exp(-s*c*h);return r-y*((b+s*c*d)/u*Math.sin(u*h)+d*Math.cos(u*h))},C=h=>{const y=Math.exp(-s*c*h);return s*c*y*(Math.sin(u*h)*(b+s*c*d)/u+d*Math.cos(u*h))-y*(Math.cos(u*h)*(b+s*c*d)-u*d*Math.sin(u*h))}}else if(s===1)T=u=>r-Math.exp(-c*u)*(d+(b+c*d)*u);else{const u=c*Math.sqrt(s*s-1);T=h=>{const y=Math.exp(-s*c*h),x=Math.min(u*h,300);return r-y*((b+s*c*d)*Math.sinh(x)+u*d*Math.cosh(x))/u}}}return w(),{next:b=>{const d=T(b);if(O)i.done=b>=S;else{const s=C(b)*1e3,c=Math.abs(s)<=n,u=Math.abs(r-d)<=o;i.done=c&&u}return i.value=i.done?r:d,i},flipTarget:()=>{m=-m,[t,r]=[r,t],w()}}}Nf.needsInterpolation=(e,t)=>typeof e=="string"||typeof t=="string";const Bx=e=>0,Rm=(e,t,r)=>{const n=t-e;return n===0?1:(r-e)/n},jf=(e,t,r)=>-r*e+r*t+e;function ah(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function Vx({hue:e,saturation:t,lightness:r,alpha:n}){e/=360,t/=100,r/=100;let o=0,a=0,i=0;if(!t)o=a=i=r;else{const l=r<.5?r*(1+t):r+t-r*t,f=2*r-l;o=ah(f,l,e+1/3),a=ah(f,l,e),i=ah(f,l,e-1/3)}return{red:Math.round(o*255),green:Math.round(a*255),blue:Math.round(i*255),alpha:n}}const HD=(e,t,r)=>{const n=e*e,o=t*t;return Math.sqrt(Math.max(0,r*(o-n)+n))},GD=[ro.hex,ro.rgba,ro.hsla],Ux=e=>GD.find(t=>t.test(e)),Wx=e=>`'${e}' is not an animatable color. Use the equivalent color code instead.`,Mm=(e,t)=>{let r=Ux(e),n=Ux(t);gs.invariant(!!r,Wx(e)),gs.invariant(!!n,Wx(t));let o=r.parse(e),a=n.parse(t);r===ro.hsla&&(o=Vx(o),r=ro.rgba),n===ro.hsla&&(a=Vx(a),n=ro.rgba);const i=Object.assign({},o);return l=>{for(const f in i)f!=="alpha"&&(i[f]=HD(o[f],a[f],l));return i.alpha=jf(o.alpha,a.alpha,l),r.transform(i)}},qD={x:0,y:0,z:0},Bg=e=>typeof e=="number",KD=(e,t)=>r=>t(e(r)),Im=(...e)=>e.reduce(KD);function sP(e,t){return Bg(e)?r=>jf(e,t,r):ro.color.test(e)?Mm(e,t):Dm(e,t)}const lP=(e,t)=>{const r=[...e],n=r.length,o=e.map((a,i)=>sP(a,t[i]));return a=>{for(let i=0;i{const r=Object.assign(Object.assign({},e),t),n={};for(const o in r)e[o]!==void 0&&t[o]!==void 0&&(n[o]=sP(e[o],t[o]));return o=>{for(const a in n)r[a]=n[a](o);return r}};function $x(e){const t=ro.complex.parse(e),r=t.length;let n=0,o=0,a=0;for(let i=0;i{const r=ro.complex.createTransformer(t),n=$x(e),o=$x(t);return n.numHSL===o.numHSL&&n.numRGB===o.numRGB&&n.numNumbers>=o.numNumbers?Im(lP(n.parsed,o.parsed),r):(gs.warning(!0,`Complex values '${e}' and '${t}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),i=>`${i>0?t:e}`)},QD=(e,t)=>r=>jf(e,t,r);function XD(e){if(typeof e=="number")return QD;if(typeof e=="string")return ro.color.test(e)?Mm:Dm;if(Array.isArray(e))return lP;if(typeof e=="object")return YD}function ZD(e,t,r){const n=[],o=r||XD(e[0]),a=e.length-1;for(let i=0;ir(Rm(e,t,n))}function eL(e,t){const r=e.length,n=r-1;return o=>{let a=0,i=!1;if(o<=e[0]?i=!0:o>=e[n]&&(a=n-1,i=!0),!i){let f=1;for(;fo||f===n);f++);a=f-1}const l=Rm(e[a],e[a+1],o);return t[a](l)}}function Lm(e,t,{clamp:r=!0,ease:n,mixer:o}={}){const a=e.length;gs.invariant(a===t.length,"Both input and output ranges must be the same length"),gs.invariant(!n||!Array.isArray(n)||n.length===a-1,"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values."),e[0]>e[a-1]&&(e=[].concat(e),t=[].concat(t),e.reverse(),t.reverse());const i=ZD(t,n,o),l=a===2?JD(e,i):eL(e,i);return r?f=>l(ru(e[0],e[a-1],f)):l}const wu=e=>t=>1-e(1-t),Ef=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,uP=e=>t=>Math.pow(t,e),Fm=e=>t=>t*t*((e+1)*t-e),cP=e=>{const t=Fm(e);return r=>(r*=2)<1?.5*t(r):.5*(2-Math.pow(2,-10*(r-1)))},dP=1.525,tL=4/11,rL=8/11,nL=9/10,fP=e=>e,zm=uP(2),oL=wu(zm),pP=Ef(zm),hP=e=>1-Math.sin(Math.acos(e)),gP=wu(hP),aL=Ef(gP),Bm=Fm(dP),iL=wu(Bm),sL=Ef(Bm),lL=cP(dP),uL=4356/361,cL=35442/1805,dL=16061/1805,Dd=e=>{if(e===1||e===0)return e;const t=e*e;return ee<.5?.5*(1-Dd(1-e*2)):.5*Dd(e*2-1)+.5;function hL(e,t){return e.map(()=>t||pP).splice(0,e.length-1)}function gL(e){const t=e.length;return e.map((r,n)=>n!==0?n/(t-1):0)}function mL(e,t){return e.map(r=>r*t)}function Nl({from:e=0,to:t=1,ease:r,offset:n,duration:o=300}){const a={done:!1,value:e},i=Array.isArray(t)?t:[e,t],l=mL(n&&n.length===i.length?n:gL(i),o);function f(){return Lm(l,i,{ease:Array.isArray(r)?r:hL(i,r)})}let g=f();return{next:m=>(a.value=g(m),a.done=m>=o,a),flipTarget:()=>{i.reverse(),g=f()}}}function mP({velocity:e=0,from:t=0,power:r=.8,timeConstant:n=350,restDelta:o=.5,modifyTarget:a}){const i={done:!1,value:t};let l=r*e;const f=t+l,g=a===void 0?f:a(f);return g!==f&&(l=g-t),{next:m=>{const S=-l*Math.exp(-m/n);return i.done=!(S>o||S<-o),i.value=i.done?g:g+S,i},flipTarget:()=>{}}}const Hx={keyframes:Nl,spring:Nf,decay:mP};function bL(e){if(Array.isArray(e.to))return Nl;if(Hx[e.type])return Hx[e.type];const t=new Set(Object.keys(e));return t.has("ease")||t.has("duration")&&!t.has("dampingRatio")?Nl:t.has("dampingRatio")||t.has("stiffness")||t.has("mass")||t.has("damping")||t.has("restSpeed")||t.has("restDelta")?Nf:Nl}function bP(e,t,r=0){return e-t-r}function vL(e,t,r=0,n=!0){return n?bP(t+-e,t,r):t-(e-t)+r}function yL(e,t,r,n){return n?e>=t+r:e<=-r}const xL=e=>{const t=({delta:r})=>e(r);return{start:()=>ID.default.update(t,!0),stop:()=>kf.cancelSync.update(t)}};function vP(e){var t,r,{from:n,autoplay:o=!0,driver:a=xL,elapsed:i=0,repeat:l=0,repeatType:f="loop",repeatDelay:g=0,onPlay:m,onStop:S,onComplete:O,onRepeat:T,onUpdate:C}=e,w=iP.__rest(e,["from","autoplay","driver","elapsed","repeat","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate"]);let{to:b}=w,d,s=0,c=w.duration,u,h=!1,y=!0,x;const E=bL(w);!((r=(t=E).needsInterpolation)===null||r===void 0)&&r.call(t,n,b)&&(x=Lm([0,100],[n,b],{clamp:!1}),n=0,b=100);const k=E(Object.assign(Object.assign({},w),{from:n,to:b}));function j(){s++,f==="reverse"?(y=s%2===0,i=vL(i,c,g,y)):(i=bP(i,c,g),f==="mirror"&&k.flipTarget()),h=!1,T&&T()}function A(){d.stop(),O&&O()}function M(L){if(y||(L=-L),i+=L,!h){const z=k.next(Math.max(0,i));u=z.value,x&&(u=x(u)),h=y?z.done:i<=0}C==null||C(u),h&&(s===0&&(c??(c=i)),s{S==null||S(),d.stop()}}}function yP(e,t){return t?e*(1e3/t):0}function wL({from:e=0,velocity:t=0,min:r,max:n,power:o=.8,timeConstant:a=750,bounceStiffness:i=500,bounceDamping:l=10,restDelta:f=1,modifyTarget:g,driver:m,onUpdate:S,onComplete:O,onStop:T}){let C;function w(c){return r!==void 0&&cn}function b(c){return r===void 0?n:n===void 0||Math.abs(r-c){var h;S==null||S(u),(h=c.onUpdate)===null||h===void 0||h.call(c,u)},onComplete:O,onStop:T}))}function s(c){d(Object.assign({type:"spring",stiffness:i,damping:l,restDelta:f},c))}if(w(e))s({from:e,velocity:t,to:b(e)});else{let c=o*t+e;typeof g<"u"&&(c=g(c));const u=b(c),h=u===r?-1:1;let y,x;const E=k=>{y=x,x=k,t=yP(k-y,kf.getFrameData().delta),(h===1&&k>u||h===-1&&kC==null?void 0:C.stop()}}const xP=e=>e*180/Math.PI,_L=(e,t=qD)=>xP(Math.atan2(t.y-e.y,t.x-e.x)),SL=(e,t)=>{let r=!0;return t===void 0&&(t=e,r=!1),n=>r?n-e+t:(e=n,r=!0,t)},CL=e=>e,Vm=(e=CL)=>(t,r,n)=>{const o=r-n,a=-(0-t+1)*(0-e(Math.abs(o)));return o<=0?r+a:r-a},TL=Vm(),PL=Vm(Math.sqrt),wP=e=>e*Math.PI/180,Ld=e=>e.hasOwnProperty("x")&&e.hasOwnProperty("y"),Vg=e=>Ld(e)&&e.hasOwnProperty("z"),dc=(e,t)=>Math.abs(e-t);function OL(e,t){if(Bg(e)&&Bg(t))return dc(e,t);if(Ld(e)&&Ld(t)){const r=dc(e.x,t.x),n=dc(e.y,t.y),o=Vg(e)&&Vg(t)?dc(e.z,t.z):0;return Math.sqrt(Math.pow(r,2)+Math.pow(n,2)+Math.pow(o,2))}}const kL=(e,t,r)=>(t=wP(t),{x:r*Math.cos(t)+e.x,y:r*Math.sin(t)+e.y}),_P=(e,t=2)=>(t=Math.pow(10,t),Math.round(e*t)/t),SP=(e,t,r,n=0)=>_P(e+r*(t-e)/Math.max(n,r)),NL=(e=50)=>{let t=0,r=0;return n=>{const o=kf.getFrameData().timestamp,a=o!==r?o-r:0,i=a?SP(t,n,a,e):t;return r=o,t=i,i}},jL=e=>{if(typeof e=="number")return t=>Math.round(t/e)*e;{let t=0;const r=e.length;return n=>{let o=Math.abs(e[0]-n);for(t=1;to)return e[t-1];if(t===r-1)return a;o=i}}}};function EL(e,t){return e/(1e3/t)}const AL=(e,t,r)=>{const n=t-e;return((r-e)%n+n)%n+e},CP=(e,t)=>1-3*t+3*e,TP=(e,t)=>3*t-6*e,PP=e=>3*e,Fd=(e,t,r)=>((CP(t,r)*e+TP(t,r))*e+PP(t))*e,OP=(e,t,r)=>3*CP(t,r)*e*e+2*TP(t,r)*e+PP(t),RL=1e-7,ML=10;function IL(e,t,r,n,o){let a,i,l=0;do i=t+(r-t)/2,a=Fd(i,n,o)-e,a>0?r=i:t=i;while(Math.abs(a)>RL&&++l=LL?FL(i,S,e,r):O===0?S:IL(i,l,l+fc,e,r)}return i=>i===0||i===1?i:Fd(a(i),t,n)}const BL=(e,t="end")=>r=>{r=t==="end"?Math.min(r,.999):Math.max(r,.001);const n=r*e,o=t==="end"?Math.floor(n):Math.ceil(n);return ru(0,1,o/e)};yt.angle=_L;yt.animate=vP;yt.anticipate=lL;yt.applyOffset=SL;yt.attract=TL;yt.attractExpo=PL;yt.backIn=Bm;yt.backInOut=sL;yt.backOut=iL;yt.bounceIn=fL;yt.bounceInOut=pL;yt.bounceOut=Dd;yt.circIn=hP;yt.circInOut=aL;yt.circOut=gP;yt.clamp=ru;yt.createAnticipate=cP;yt.createAttractor=Vm;yt.createBackIn=Fm;yt.createExpoIn=uP;yt.cubicBezier=zL;yt.decay=mP;yt.degreesToRadians=wP;yt.distance=OL;yt.easeIn=zm;yt.easeInOut=pP;yt.easeOut=oL;yt.inertia=wL;yt.interpolate=Lm;yt.isPoint=Ld;yt.isPoint3D=Vg;yt.keyframes=Nl;yt.linear=fP;yt.mirrorEasing=Ef;yt.mix=jf;yt.mixColor=Mm;yt.mixComplex=Dm;yt.pipe=Im;yt.pointFromVector=kL;yt.progress=Rm;yt.radiansToDegrees=xP;yt.reverseEasing=wu;yt.smooth=NL;yt.smoothFrame=SP;yt.snap=jL;yt.spring=Nf;yt.steps=BL;yt.toDecimal=_P;yt.velocityPerFrame=EL;yt.velocityPerSecond=yP;yt.wrap=AL;class VL{setAnimation(t){this.animation=t,t==null||t.finished.then(()=>this.clearAnimation()).catch(()=>{})}clearAnimation(){this.animation=this.generator=void 0}}const ih=new WeakMap;function Um(e){return ih.has(e)||ih.set(e,{transforms:[],values:new Map}),ih.get(e)}function UL(e,t){return e.has(t)||e.set(t,new VL),e.get(t)}function kP(e,t){e.indexOf(t)===-1&&e.push(t)}function NP(e,t){const r=e.indexOf(t);r>-1&&e.splice(r,1)}const jP=(e,t,r)=>Math.min(Math.max(r,e),t),un={duration:.3,delay:0,endDelay:0,repeat:0,easing:"ease"},Ho=e=>typeof e=="number",nu=e=>Array.isArray(e)&&!Ho(e[0]),WL=(e,t,r)=>{const n=t-e;return((r-e)%n+n)%n+e};function EP(e,t){return nu(e)?e[WL(0,e.length,t)]:e}const Wm=(e,t,r)=>-r*e+r*t+e,$m=()=>{},Fo=e=>e,Af=(e,t,r)=>t-e===0?1:(r-e)/(t-e);function Hm(e,t){const r=e[e.length-1];for(let n=1;n<=t;n++){const o=Af(0,t,n);e.push(Wm(r,1,o))}}function Gm(e){const t=[0];return Hm(t,e-1),t}function AP(e,t=Gm(e.length),r=Fo){const n=e.length,o=n-t.length;return o>0&&Hm(t,o),a=>{let i=0;for(;iArray.isArray(e)&&Ho(e[0]),zd=e=>typeof e=="object"&&!!e.createAnimation,$L=e=>typeof e=="function",qm=e=>typeof e=="string",ri={ms:e=>e*1e3,s:e=>e/1e3};function MP(e,t){return t?e*(1e3/t):0}const HL=["","X","Y","Z"],GL=["translate","scale","rotate","skew"],ms={x:"translateX",y:"translateY",z:"translateZ"},Gx={syntax:"",initialValue:"0deg",toDefaultUnit:e=>e+"deg"},qL={translate:{syntax:"",initialValue:"0px",toDefaultUnit:e=>e+"px"},rotate:Gx,scale:{syntax:"",initialValue:1,toDefaultUnit:Fo},skew:Gx},bs=new Map,Rf=e=>`--motion-${e}`,Bd=["x","y","z"];GL.forEach(e=>{HL.forEach(t=>{Bd.push(e+t),bs.set(Rf(e+t),qL[e])})});const KL=(e,t)=>Bd.indexOf(e)-Bd.indexOf(t),YL=new Set(Bd),Mf=e=>YL.has(e),QL=(e,t)=>{ms[t]&&(t=ms[t]);const{transforms:r}=Um(e);kP(r,t),e.style.transform=IP(r)},IP=e=>e.sort(KL).reduce(XL,"").trim(),XL=(e,t)=>`${e} ${t}(var(${Rf(t)}))`,Ug=e=>e.startsWith("--"),qx=new Set;function ZL(e){if(!qx.has(e)){qx.add(e);try{const{syntax:t,initialValue:r}=bs.has(e)?bs.get(e):{};CSS.registerProperty({name:e,inherits:!1,syntax:t,initialValue:r})}catch{}}}const DP=(e,t,r)=>(((1-3*r+3*t)*e+(3*r-6*t))*e+3*t)*e,JL=1e-7,e3=12;function t3(e,t,r,n,o){let a,i,l=0;do i=t+(r-t)/2,a=DP(i,n,o)-e,a>0?r=i:t=i;while(Math.abs(a)>JL&&++lt3(a,0,1,e,r);return a=>a===0||a===1?a:DP(o(a),t,n)}const r3=(e,t="end")=>r=>{r=t==="end"?Math.min(r,.999):Math.max(r,.001);const n=r*e,o=t==="end"?Math.floor(n):Math.ceil(n);return jP(0,1,o/e)},n3={ease:bl(.25,.1,.25,1),"ease-in":bl(.42,0,1,1),"ease-in-out":bl(.42,0,.58,1),"ease-out":bl(0,0,.58,1)},o3=/\((.*?)\)/;function Wg(e){if($L(e))return e;if(RP(e))return bl(...e);const t=n3[e];if(t)return t;if(e.startsWith("steps")){const r=o3.exec(e);if(r){const n=r[1].split(",");return r3(parseFloat(n[0]),n[1].trim())}}return Fo}class a3{constructor(t,r=[0,1],{easing:n,duration:o=un.duration,delay:a=un.delay,endDelay:i=un.endDelay,repeat:l=un.repeat,offset:f,direction:g="normal",autoplay:m=!0}={}){if(this.startTime=null,this.rate=1,this.t=0,this.cancelTimestamp=null,this.easing=Fo,this.duration=0,this.totalDuration=0,this.repeat=0,this.playState="idle",this.finished=new Promise((O,T)=>{this.resolve=O,this.reject=T}),n=n||un.easing,zd(n)){const O=n.createAnimation(r);n=O.easing,r=O.keyframes||r,o=O.duration||o}this.repeat=l,this.easing=nu(n)?Fo:Wg(n),this.updateDuration(o);const S=AP(r,f,nu(n)?n.map(Wg):Fo);this.tick=O=>{var T;a=a;let C=0;this.pauseTime!==void 0?C=this.pauseTime:C=(O-this.startTime)*this.rate,this.t=C,C/=1e3,C=Math.max(C-a,0),this.playState==="finished"&&this.pauseTime===void 0&&(C=this.totalDuration);const w=C/this.duration;let b=Math.floor(w),d=w%1;!d&&w>=1&&(d=1),d===1&&b--;const s=b%2;(g==="reverse"||g==="alternate"&&s||g==="alternate-reverse"&&!s)&&(d=1-d);const c=C>=this.totalDuration?1:Math.min(d,1),u=S(this.easing(c));t(u),this.pauseTime===void 0&&(this.playState==="finished"||C>=this.totalDuration+i)?(this.playState="finished",(T=this.resolve)===null||T===void 0||T.call(this,u)):this.playState!=="idle"&&(this.frameRequestId=requestAnimationFrame(this.tick))},m&&this.play()}play(){const t=performance.now();this.playState="running",this.pauseTime!==void 0?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t),this.cancelTimestamp=this.startTime,this.pauseTime=void 0,this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState="paused",this.pauseTime=this.t}finish(){this.playState="finished",this.tick(0)}stop(){var t;this.playState="idle",this.frameRequestId!==void 0&&cancelAnimationFrame(this.frameRequestId),(t=this.reject)===null||t===void 0||t.call(this,!1)}cancel(){this.stop(),this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t,this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){this.pauseTime!==void 0||this.rate===0?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}const Kx=e=>RP(e)?i3(e):e,i3=([e,t,r,n])=>`cubic-bezier(${e}, ${t}, ${r}, ${n})`,Yx=e=>document.createElement("div").animate(e,{duration:.001}),Qx={cssRegisterProperty:()=>typeof CSS<"u"&&Object.hasOwnProperty.call(CSS,"registerProperty"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate"),partialKeyframes:()=>{try{Yx({opacity:[1]})}catch{return!1}return!0},finished:()=>!!Yx({opacity:[0,1]}).finished},sh={},Wc={};for(const e in Qx)Wc[e]=()=>(sh[e]===void 0&&(sh[e]=Qx[e]()),sh[e]);function s3(e,t){for(let r=0;rArray.isArray(e)?e:[e];function Vd(e){return ms[e]&&(e=ms[e]),Mf(e)?Rf(e):e}const Ki={get:(e,t)=>{t=Vd(t);let r=Ug(t)?e.style.getPropertyValue(t):getComputedStyle(e)[t];if(!r&&r!==0){const n=bs.get(t);n&&(r=n.initialValue)}return r},set:(e,t,r)=>{t=Vd(t),Ug(t)?e.style.setProperty(t,r):e.style[t]=r}};function FP(e,t=!0){if(!(!e||e.playState==="finished"))try{e.stop?e.stop():(t&&e.commitStyles(),e.cancel())}catch{}}function l3(){return window.__MOTION_DEV_TOOLS_RECORD}function If(e,t,r,n={}){const o=l3(),a=n.record!==!1&&o;let i,{duration:l=un.duration,delay:f=un.delay,endDelay:g=un.endDelay,repeat:m=un.repeat,easing:S=un.easing,direction:O,offset:T,allowWebkitAcceleration:C=!1}=n;const w=Um(e);let b=Wc.waapi();const d=Mf(t);d&&QL(e,t);const s=Vd(t),c=UL(w.values,s),u=bs.get(s);return FP(c.animation,!(zd(S)&&c.generator)&&n.record!==!1),()=>{const h=()=>{var x,E;return(E=(x=Ki.get(e,s))!==null&&x!==void 0?x:u==null?void 0:u.initialValue)!==null&&E!==void 0?E:0};let y=s3(LP(r),h);if(zd(S)){const x=S.createAnimation(y,h,d,s,c);S=x.easing,x.keyframes!==void 0&&(y=x.keyframes),x.duration!==void 0&&(l=x.duration)}if(Ug(s)&&(Wc.cssRegisterProperty()?ZL(s):b=!1),b){u&&(y=y.map(k=>Ho(k)?u.toDefaultUnit(k):k)),y.length===1&&(!Wc.partialKeyframes()||a)&&y.unshift(h());const x={delay:ri.ms(f),duration:ri.ms(l),endDelay:ri.ms(g),easing:nu(S)?void 0:Kx(S),direction:O,iterations:m+1,fill:"both"};i=e.animate({[s]:y,offset:T,easing:nu(S)?S.map(Kx):void 0},x),i.finished||(i.finished=new Promise((k,j)=>{i.onfinish=k,i.oncancel=j}));const E=y[y.length-1];i.finished.then(()=>{Ki.set(e,s,E),i.cancel()}).catch($m),C||(i.playbackRate=1.000001)}else if(d){y=y.map(E=>typeof E=="string"?parseFloat(E):E),y.length===1&&y.unshift(parseFloat(h()));const x=E=>{u&&(E=u.toDefaultUnit(E)),Ki.set(e,s,E)};i=new a3(x,y,Object.assign(Object.assign({},n),{duration:l,easing:S}))}else{const x=y[y.length-1];Ki.set(e,s,u&&Ho(x)?u.toDefaultUnit(x):x)}return a&&o(e,t,y,{duration:l,delay:f,easing:S,repeat:m,offset:T},"motion-one"),c.setAnimation(i),i}}const Km=(e,t)=>e[t]?Object.assign(Object.assign({},e),e[t]):Object.assign({},e);function Df(e,t){var r;return typeof e=="string"?t?((r=t[e])!==null&&r!==void 0||(t[e]=document.querySelectorAll(e)),e=t[e]):e=document.querySelectorAll(e):e instanceof Element&&(e=[e]),Array.from(e||[])}const u3=e=>e(),Ym=(e,t,r=un.duration)=>new Proxy({animations:e.map(u3).filter(Boolean),duration:r,options:t},d3),c3=e=>e.animations[0],d3={get:(e,t)=>{const r=c3(e);switch(t){case"duration":return e.duration;case"currentTime":return ri.s((r==null?void 0:r[t])||0);case"playbackRate":case"playState":return r==null?void 0:r[t];case"finished":return e.finished||(e.finished=Promise.all(e.animations.map(f3)).catch($m)),e.finished;case"stop":return()=>{e.animations.forEach(n=>FP(n))};case"forEachNative":return n=>{e.animations.forEach(o=>n(o,e))};default:return typeof(r==null?void 0:r[t])>"u"?void 0:()=>e.animations.forEach(n=>n[t]())}},set:(e,t,r)=>{switch(t){case"currentTime":r=ri.ms(r);case"currentTime":case"playbackRate":for(let n=0;ne.finished;function p3(e=.1,{start:t=0,from:r=0,easing:n}={}){return(o,a)=>{const i=Ho(r)?r:h3(r,a),l=Math.abs(i-o);let f=e*l;if(n){const g=a*e;f=Wg(n)(f/g)*g}return t+f}}function h3(e,t){if(e==="first")return 0;{const r=t-1;return e==="last"?r:r/2}}function zP(e,t,r){return typeof e=="function"?e(t,r):e}function g3(e,t,r={}){e=Df(e);const n=e.length,o=[];for(let a=0;at&&o.atIf(...a)).filter(Boolean);return Ym(o,t,(r=n[0])===null||r===void 0?void 0:r[3].duration)}function x3(e,t={}){var{defaultOptions:r={}}=t,n=Ns(t,["defaultOptions"]);const o=[],a=new Map,i={},l=new Map;let f=0,g=0,m=0;for(let S=0;S"0",Y);A=G.easing,G.keyframes!==void 0&&(E=G.keyframes),G.duration!==void 0&&(j=G.duration)}const M=zP(w.delay,c,s)||0,D=g+M,L=D+j;let{offset:z=Gm(E.length)}=k;z.length===1&&z[0]===0&&(z[1]=1);const H=length-E.length;H>0&&Hm(z,H),E.length===1&&E.unshift(null),b3(x,E,A,z,D,L),b=Math.max(M+j,b),m=Math.max(L,m)}}f=g,g+=b}return a.forEach((S,O)=>{for(const T in S){const C=S[T];C.sort(v3);const w=[],b=[],d=[];for(let s=0;st/(2*Math.sqrt(e*r));function T3(e,t,r){return e=t||e>t&&r<=t}const BP=({stiffness:e=ns.stiffness,damping:t=ns.damping,mass:r=ns.mass,from:n=0,to:o=1,velocity:a=0,restSpeed:i,restDistance:l}={})=>{a=a?ri.s(a):0;const f={done:!1,hasReachedTarget:!1,current:n,target:o},g=o-n,m=Math.sqrt(e/r)/1e3,S=C3(e,t,r),O=Math.abs(g)<5;i||(i=O?.01:2),l||(l=O?.005:.5);let T;if(S<1){const C=m*Math.sqrt(1-S*S);T=w=>o-Math.exp(-S*m*w)*((-a+S*m*g)/C*Math.sin(C*w)+g*Math.cos(C*w))}else T=C=>o-Math.exp(-m*C)*(g+(-a+m*g)*C);return C=>{f.current=T(C);const w=C===0?a:Qm(T,C,f.current),b=Math.abs(w)<=i,d=Math.abs(o-f.current)<=l;return f.done=b&&d,f.hasReachedTarget=T3(n,o,f.current),f}},P3=({from:e=0,velocity:t=0,power:r=.8,decay:n=.325,bounceDamping:o,bounceStiffness:a,changeTarget:i,min:l,max:f,restDistance:g=.5,restSpeed:m})=>{n=ri.ms(n);const S={hasReachedTarget:!1,done:!1,current:e,target:e},O=x=>l!==void 0&&xf,T=x=>l===void 0?f:f===void 0||Math.abs(l-x)-C*Math.exp(-x/n),s=x=>b+d(x),c=x=>{const E=d(x),k=s(x);S.done=Math.abs(E)<=g,S.current=S.done?b:k};let u,h;const y=x=>{O(S.current)&&(u=x,h=BP({from:S.current,to:T(S.current),velocity:Qm(s,x,S.current),damping:o,stiffness:a,restDistance:g,restSpeed:m}))};return y(0),x=>{let E=!1;return!h&&u===void 0&&(E=!0,c(x),y(x)),u!==void 0&&x>u?(S.hasReachedTarget=!0,h(x-u)):(S.hasReachedTarget=!1,!E&&c(x),S)}},lh=10,O3=1e4;function k3(e,t=Fo){let r,n=lh,o=e(0);const a=[t(o.current)];for(;!o.done&&n{const n=new Map,o=(i=0,l=100,f=0,g=!1)=>{const m=`${i}-${l}-${f}-${g}`;return n.has(m)||n.set(m,e(Object.assign({from:i,to:l,velocity:f,restSpeed:g?.05:2,restDistance:g?.01:.5},r))),n.get(m)},a=i=>(t.has(i)||t.set(i,k3(i)),t.get(i));return{createAnimation:(i,l,f,g,m)=>{var S,O;let T;const C=i.length;if(f&&C<=2&&i.every(N3)){const b=i[C-1],d=C===1?null:i[0];let s=0,c=0;const u=m==null?void 0:m.generator;if(u){const{animation:x,generatorStartTime:E}=m,k=(x==null?void 0:x.startTime)||E||0,j=(x==null?void 0:x.currentTime)||performance.now()-k,A=u(j).current;c=(S=d)!==null&&S!==void 0?S:A,(C===1||C===2&&i[0]===null)&&(s=Qm(M=>u(M).current,j,A))}else c=(O=d)!==null&&O!==void 0?O:parseFloat(l());const h=o(c,b,s,g==null?void 0:g.includes("scale")),y=a(h);T=Object.assign(Object.assign({},y),{easing:"linear"}),m&&(m.generator=h,m.generatorStartTime=performance.now())}else T={easing:"ease",duration:a(o(0,100)).overshootDuration};return T}}}}const N3=e=>typeof e!="string",j3=VP(BP),E3=VP(P3),A3={any:0,all:1};function UP(e,t,{root:r,margin:n,amount:o="any"}={}){if(typeof IntersectionObserver>"u")return()=>{};const a=Df(e),i=new WeakMap,l=g=>{g.forEach(m=>{const S=i.get(m.target);if(m.isIntersecting!==!!S)if(m.isIntersecting){const O=t(m);typeof O=="function"?i.set(m.target,O):f.unobserve(m.target)}else S&&(S(m),i.delete(m.target))})},f=new IntersectionObserver(l,{root:r,rootMargin:n,threshold:typeof o=="number"?o:A3[o]});return a.forEach(g=>f.observe(g)),()=>f.disconnect()}const $c=new WeakMap;let la;function R3(e,t){if(t){const{inlineSize:r,blockSize:n}=t[0];return{width:r,height:n}}else return e instanceof SVGElement&&"getBBox"in e?e.getBBox():{width:e.offsetWidth,height:e.offsetHeight}}function M3({target:e,contentRect:t,borderBoxSize:r}){var n;(n=$c.get(e))===null||n===void 0||n.forEach(o=>{o({target:e,contentSize:t,get size(){return R3(e,r)}})})}function I3(e){e.forEach(M3)}function D3(){typeof ResizeObserver>"u"||(la=new ResizeObserver(I3))}function L3(e,t){la||D3();const r=Df(e);return r.forEach(n=>{let o=$c.get(n);o||(o=new Set,$c.set(n,o)),o.add(t),la==null||la.observe(n)}),()=>{r.forEach(n=>{const o=$c.get(n);o==null||o.delete(t),o!=null&&o.size||la==null||la.unobserve(n)})}}const Hc=new Set;let jl;function F3(){jl=()=>{const e={width:window.innerWidth,height:window.innerHeight},t={target:window,size:e,contentSize:e};Hc.forEach(r=>r(t))},window.addEventListener("resize",jl)}function z3(e){return Hc.add(e),jl||F3(),()=>{Hc.delete(e),!Hc.size&&jl&&(jl=void 0)}}function WP(e,t){return typeof e=="function"?z3(e):L3(e,t)}const B3=50,Zx=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),V3=()=>({time:0,x:Zx(),y:Zx()}),U3={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function Jx(e,t,r,n){const o=r[t],{length:a,position:i}=U3[t],l=o.current,f=r.time;o.current=e["scroll"+i],o.scrollLength=e["scroll"+a]-e["client"+a],o.offset.length=0,o.offset[0]=0,o.offset[1]=o.scrollLength,o.progress=Af(0,o.scrollLength,o.current);const g=n-f;o.velocity=g>B3?0:MP(o.current-l,g)}function W3(e,t,r){Jx(e,"x",t,r),Jx(e,"y",t,r),t.time=r}function $3(e,t){let r={x:0,y:0},n=e;for(;n&&n!==t;)if(n instanceof HTMLElement)r.x+=n.offsetLeft,r.y+=n.offsetTop,n=n.offsetParent;else if(n instanceof SVGGraphicsElement&&"getBBox"in n){const{top:o,left:a}=n.getBBox();for(r.x+=a,r.y+=o;n&&n.tagName!=="svg";)n=n.parentNode}return r}const $P={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},$g={start:0,center:.5,end:1};function ew(e,t,r=0){let n=0;if($g[e]!==void 0&&(e=$g[e]),qm(e)){const o=parseFloat(e);e.endsWith("px")?n=o:e.endsWith("%")?e=o/100:e.endsWith("vw")?n=o/100*document.documentElement.clientWidth:e.endsWith("vh")?n=o/100*document.documentElement.clientHeight:e=o}return Ho(e)&&(n=t*e),r+n}const H3=[0,0];function G3(e,t,r,n){let o=Array.isArray(e)?e:H3,a=0,i=0;return Ho(e)?o=[e,e]:qm(e)&&(e=e.trim(),e.includes(" ")?o=e.split(" "):o=[e,$g[e]?e:"0"]),a=ew(o[0],r,n),i=ew(o[1],t),a-i}const q3={x:0,y:0};function K3(e,t,r){let{offset:n=$P.All}=r;const{target:o=e,axis:a="y"}=r,i=a==="y"?"height":"width",l=o!==e?$3(o,e):q3,f=o===e?{width:e.scrollWidth,height:e.scrollHeight}:{width:o.clientWidth,height:o.clientHeight},g={width:e.clientWidth,height:e.clientHeight};t[a].offset.length=0;let m=!t[a].interpolate;const S=n.length;for(let O=0;OY3(e,n.target,r),update:a=>{W3(e,r,a),(n.offset||n.target)&&K3(e,r,n)},notify:typeof t=="function"?()=>t(r):X3(t,r[o])}}function X3(e,t){return e.pause(),e.forEachNative((r,{easing:n})=>{var o,a;if(r.updateDuration)n||(r.easing=Fo),r.updateDuration(1);else{const i={duration:1e3};n||(i.easing="linear"),(a=(o=r.effect)===null||o===void 0?void 0:o.updateTiming)===null||a===void 0||a.call(o,i)}}),()=>{e.currentTime=t.progress}}const sl=new WeakMap,tw=new WeakMap,uh=new WeakMap,rw=e=>e===document.documentElement?window:e;function Z3(e,t={}){var{container:r=document.documentElement}=t,n=Ns(t,["container"]);let o=uh.get(r);o||(o=new Set,uh.set(r,o));const a=V3(),i=Q3(r,e,a,n);if(o.add(i),!sl.has(r)){const g=()=>{const S=performance.now();for(const O of o)O.measure();for(const O of o)O.update(S);for(const O of o)O.notify()};sl.set(r,g);const m=rw(r);window.addEventListener("resize",g,{passive:!0}),r!==document.documentElement&&tw.set(r,WP(r,g)),m.addEventListener("scroll",g,{passive:!0})}const l=sl.get(r),f=requestAnimationFrame(l);return()=>{var g;typeof e!="function"&&e.stop(),cancelAnimationFrame(f);const m=uh.get(r);if(!m||(m.delete(i),m.size))return;const S=sl.get(r);sl.delete(r),S&&(rw(r).removeEventListener("scroll",S),(g=tw.get(r))===null||g===void 0||g(),window.removeEventListener("resize",S))}}function J3(e,t){return typeof e!=typeof t?!0:Array.isArray(e)&&Array.isArray(t)?!eF(e,t):e!==t}function eF(e,t){const r=t.length;if(r!==e.length)return!1;for(let n=0;ne.getDepth()-t.getDepth(),aF=e=>e.animateUpdates(),ow=e=>e.next(),aw=(e,t)=>new CustomEvent(e,{detail:{target:t}});function Hg(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:{originalEvent:r}}))}function iw(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:{originalEntry:r}}))}const iF={isActive:e=>!!e.inView,subscribe:(e,{enable:t,disable:r},{inViewOptions:n={}})=>{const{once:o}=n,a=Ns(n,["once"]);return UP(e,i=>{if(t(),iw(e,"viewenter",i),!o)return l=>{r(),iw(e,"viewleave",l)}},a)}},sw=(e,t,r)=>n=>{n.pointerType&&n.pointerType!=="mouse"||(r(),Hg(e,t,n))},sF={isActive:e=>!!e.hover,subscribe:(e,{enable:t,disable:r})=>{const n=sw(e,"hoverstart",t),o=sw(e,"hoverend",r);return e.addEventListener("pointerenter",n),e.addEventListener("pointerleave",o),()=>{e.removeEventListener("pointerenter",n),e.removeEventListener("pointerleave",o)}}},lF={isActive:e=>!!e.press,subscribe:(e,{enable:t,disable:r})=>{const n=a=>{r(),Hg(e,"pressend",a),window.removeEventListener("pointerup",n)},o=a=>{t(),Hg(e,"pressstart",a),window.addEventListener("pointerup",n)};return e.addEventListener("pointerdown",o),()=>{e.removeEventListener("pointerdown",o),window.removeEventListener("pointerup",n)}}},Gc={inView:iF,hover:sF,press:lF},lw=["initial","animate",...Object.keys(Gc),"exit"],Gg=new WeakMap;function uF(e={},t){let r,n=t?t.getDepth()+1:0;const o={initial:!0,animate:!0},a={},i={};for(const w of lw)i[w]=typeof e[w]=="string"?e[w]:t==null?void 0:t.getContext()[w];const l=e.initial===!1?"animate":"initial";let f=nw(e[l]||i[l],e.variants)||{},g=Ns(f,["transition"]);const m=Object.assign({},g);function*S(){var w,b;const d=g;g={};const s={};for(const x of lw){if(!o[x])continue;const E=nw(e[x]);if(E)for(const k in E)k!=="transition"&&(g[k]=E[k],s[k]=Km((b=(w=E.transition)!==null&&w!==void 0?w:e.transition)!==null&&b!==void 0?b:{},k))}const c=new Set([...Object.keys(g),...Object.keys(d)]),u=[];c.forEach(x=>{var E;g[x]===void 0&&(g[x]=m[x]),J3(d[x],g[x])&&((E=m[x])!==null&&E!==void 0||(m[x]=Ki.get(r,x)),u.push(If(r,x,g[x],s[x])))}),yield;const h=u.map(x=>x()).filter(Boolean);if(!h.length)return;const y=g;r.dispatchEvent(aw("motionstart",y)),Promise.all(h.map(x=>x.finished)).then(()=>{r.dispatchEvent(aw("motioncomplete",y))}).catch($m)}const O=(w,b)=>()=>{o[w]=b,ch(C)},T=()=>{for(const w in Gc){const b=Gc[w].isActive(e),d=a[w];b&&!d?a[w]=Gc[w].subscribe(r,{enable:O(w,!0),disable:O(w,!1)},e):!b&&d&&(d(),delete a[w])}},C={update:w=>{r&&(e=w,T(),ch(C))},setActive:(w,b)=>{r&&(o[w]=b,ch(C))},animateUpdates:S,getDepth:()=>n,getTarget:()=>g,getOptions:()=>e,getContext:()=>i,mount:w=>(r=w,Gg.set(r,C),T(),()=>{Gg.delete(r),nF(C);for(const b in a)a[b]()}),isMounted:()=>!!r};return C}function HP(e){const t={},r=[];for(let n in e){const o=e[n];Mf(n)&&(ms[n]&&(n=ms[n]),r.push(n),n=Rf(n));let a=Array.isArray(o)?o[0]:o;const i=bs.get(n);i&&(a=Ho(o)?i.toDefaultUnit(o):o),t[n]=a}return r.length&&(t.transform=IP(r)),t}const cF=e=>`-${e.toLowerCase()}`,dF=e=>e.replace(/[A-Z]/g,cF);function fF(e={}){const t=HP(e);let r="";for(const n in t)r+=n.startsWith("--")?n:dF(n),r+=`: ${t[n]}; `;return r}const pF=Object.freeze(Object.defineProperty({__proto__:null,ScrollOffset:$P,animate:g3,animateStyle:If,createMotionState:uF,createStyleString:fF,createStyles:HP,getAnimationData:Um,getStyleName:Vd,glide:E3,inView:UP,mountedStates:Gg,resize:WP,scroll:Z3,spring:j3,stagger:p3,style:Ki,timeline:y3,withControls:Ym},Symbol.toStringTag,{value:"Module"})),hF=su(pF);function gF(e){var t={};return function(r){return t[r]===void 0&&(t[r]=e(r)),t[r]}}var mF=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,bF=gF(function(e){return mF.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91});const vF=Object.freeze(Object.defineProperty({__proto__:null,default:bF},Symbol.toStringTag,{value:"Module"})),yF=su(vF);(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=GT,r=P,n=KT,o=Pr,a=yt,i=yi,l=hF;function f(p){return p&&typeof p=="object"&&"default"in p?p:{default:p}}function g(p){if(p&&p.__esModule)return p;var _=Object.create(null);return p&&Object.keys(p).forEach(function(N){if(N!=="default"){var R=Object.getOwnPropertyDescriptor(p,N);Object.defineProperty(_,N,R.get?R:{enumerable:!0,get:function(){return p[N]}})}}),_.default=p,Object.freeze(_)}var m=g(r),S=f(r),O=f(i),T="production",C=typeof process>"u"||process.env===void 0?T:"production",w=function(p){return{isEnabled:function(_){return p.some(function(N){return!!_[N]})}}},b={measureLayout:w(["layout","layoutId","drag"]),animation:w(["animate","exit","variants","whileHover","whileTap","whileFocus","whileDrag","whileInView"]),exit:w(["exit"]),drag:w(["drag","dragControls"]),focus:w(["whileFocus"]),hover:w(["whileHover","onHoverStart","onHoverEnd"]),tap:w(["whileTap","onTap","onTapStart","onTapCancel"]),pan:w(["onPan","onPanStart","onPanSessionStart","onPanEnd"]),inView:w(["whileInView","onViewportEnter","onViewportLeave"])};function d(p){for(var _ in p)p[_]!==null&&(_==="projectionNodeConstructor"?b.projectionNodeConstructor=p[_]:b[_].Component=p[_])}var s=r.createContext({strict:!1}),c=Object.keys(b),u=c.length;function h(p,_,N){var R=[],I=r.useContext(s);if(!_)return null;C!=="production"&&N&&I.strict&&n.invariant(!1,"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.");for(var U=0;U"u")return _;var N=new Map;return new Proxy(_,{get:function(R,I){return N.has(I)||N.set(I,_(I)),N.get(I)}})}var Ke=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","svg","switch","symbol","text","tspan","use","view"];function xt(p){return typeof p!="string"||p.includes("-")?!1:!!(Ke.indexOf(p)>-1||/[A-Z]/.test(p))}var rt={};function dt(p){Object.assign(rt,p)}var Rt=["","X","Y","Z"],Ae=["translate","scale","rotate","skew"],ft=["transformPerspective","x","y","z"];Ae.forEach(function(p){return Rt.forEach(function(_){return ft.push(p+_)})});function At(p,_){return ft.indexOf(p)-ft.indexOf(_)}var Z=new Set(ft);function ue(p){return Z.has(p)}var ne=new Set(["originX","originY","originZ"]);function xe(p){return ne.has(p)}function se(p,_){var N=_.layout,R=_.layoutId;return ue(p)||xe(p)||(N||R!==void 0)&&(!!rt[p]||p==="opacity")}var ce=function(p){return!!(p!==null&&typeof p=="object"&&p.getVelocity)},Ce={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"};function Ie(p,_,N,R){var I=p.transform,U=p.transformKeys,W=_.enableHardwareAcceleration,F=W===void 0?!0:W,K=_.allowTransformNone,Q=K===void 0?!0:K,J="";U.sort(At);for(var ae=!1,ie=U.length,le=0;le"u"?Ye:it;Q(K,F.current,_,W)}var Ze={some:0,all:1};function it(p,_,N,R){var I=R.root,U=R.margin,W=R.amount,F=W===void 0?"some":W,K=R.once;r.useEffect(function(){if(p){var Q={root:I==null?void 0:I.current,rootMargin:U,threshold:typeof F=="number"?F:Ze[F]},J=function(ae){var ie,le=ae.isIntersecting;if(_.isInView!==le&&(_.isInView=le,!(K&&!le&&_.hasEnteredView))){le&&(_.hasEnteredView=!0),(ie=N.animationState)===null||ie===void 0||ie.setActive(e.AnimationType.InView,le);var de=N.getProps(),we=le?de.onViewportEnter:de.onViewportLeave;we==null||we(ae)}};return Xe(N.getInstance(),Q,J)}},[p,I,U,F])}function Ye(p,_,N,R){var I=R.fallback,U=I===void 0?!0:I;r.useEffect(function(){!p||!U||(C!=="production"&&Vs(!1,"IntersectionObserver not available on this device. whileInView animations will trigger on mount."),requestAnimationFrame(function(){var W;_.hasEnteredView=!0;var F=N.getProps().onViewportEnter;F==null||F(null),(W=N.animationState)===null||W===void 0||W.setActive(e.AnimationType.InView,!0)}))},[p])}var Ut=function(p){return function(_){return p(_),null}},qn={inView:Ut(et),tap:Ut(Au),focus:Ut(ze),hover:Ut(Qf)},Ti=0,lN=function(){return Ti++},Tb=function(){return me(lN)};function Xf(){var p=r.useContext(k);if(p===null)return[!0,null];var _=p.isPresent,N=p.onExitComplete,R=p.register,I=Tb();r.useEffect(function(){return R(I)},[]);var U=function(){return N==null?void 0:N(I)};return!_&&N?[!1,U]:[!0]}function uN(){return cN(r.useContext(k))}function cN(p){return p===null?!0:p.isPresent}function Pb(p,_){if(!Array.isArray(_))return!1;var N=_.length;if(N!==p.length)return!1;for(var R=0;R-1&&p.splice(N,1)}function SN(p,_,N){var R=t.__read(p),I=R.slice(0),U=_<0?I.length+_:_;if(U>=0&&Umt&&An,na=Array.isArray(ar)?ar:[ar],Rn=na.reduce(U,{});Zr===!1&&(Rn={});var Qs=$t.prevResolvedValues,ki=Qs===void 0?{}:Qs,Gu=t.__assign(t.__assign({},ki),Rn),Ni=function(_t){ra=!0,De.delete(_t),$t.needsAnimating[_t]=!0};for(var an in Gu){var qt=Rn[an],st=ki[an];Qe.hasOwnProperty(an)||(qt!==st?vr(qt)&&vr(st)?!Pb(qt,st)||ta?Ni(an):$t.protectedKeys[an]=!0:qt!==void 0?Ni(an):De.add(an):qt!==void 0&&De.has(an)?Ni(an):$t.protectedKeys[an]=!0)}$t.prevProp=ar,$t.prevResolvedValues=Rn,$t.isActive&&(Qe=t.__assign(t.__assign({},Qe),Rn)),I&&p.blockInitialAnimation&&(ra=!1),ra&&!bn&&we.push.apply(we,t.__spreadArray([],t.__read(na.map(function(_t){return{animation:_t,options:t.__assign({type:Mt},J)}})),!1))},Nt=0;Nt=3;if(!(!le&&!de)){var we=ie.point,De=i.getFrameData().timestamp;I.history.push(t.__assign(t.__assign({},we),{timestamp:De}));var Qe=I.handlers,mt=Qe.onStart,Pt=Qe.onMove;le||(mt&&mt(I.lastMoveEvent,ie),I.startEvent=I.lastMoveEvent),Pt&&Pt(I.lastMoveEvent,ie)}}},this.handlePointerMove=function(ie,le){if(I.lastMoveEvent=ie,I.lastMoveEventInfo=fp(le,I.transformPagePoint),Ue(ie)&&ie.buttons===0){I.handlePointerUp(ie,le);return}O.default.update(I.updatePoint,!0)},this.handlePointerUp=function(ie,le){I.end();var de=I.handlers,we=de.onEnd,De=de.onSessionEnd,Qe=pp(fp(le,I.transformPagePoint),I.history);I.startEvent&&we&&we(ie,Qe),De&&De(ie,Qe)},!(pt(_)&&_.touches.length>1)){this.handlers=N,this.transformPagePoint=W;var F=jn(_),K=fp(F,this.transformPagePoint),Q=K.point,J=i.getFrameData().timestamp;this.history=[t.__assign(t.__assign({},Q),{timestamp:J})];var ae=N.onSessionStart;ae&&ae(_,pp(K,this.history)),this.removeListeners=a.pipe(Qo(window,"pointermove",this.handlePointerMove),Qo(window,"pointerup",this.handlePointerUp),Qo(window,"pointercancel",this.handlePointerUp))}}return p.prototype.updateHandlers=function(_){this.handlers=_},p.prototype.end=function(){this.removeListeners&&this.removeListeners(),i.cancelSync.update(this.updatePoint)},p}();function fp(p,_){return _?{point:_(p.point)}:p}function Bb(p,_){return{x:p.x-_.x,y:p.y-_.y}}function pp(p,_){var N=p.point;return{point:N,delta:Bb(N,Vb(_)),offset:Bb(N,VN(_)),velocity:UN(_,.1)}}function VN(p){return p[0]}function Vb(p){return p[p.length-1]}function UN(p,_){if(p.length<2)return{x:0,y:0};for(var N=p.length-1,R=null,I=Vb(p);N>=0&&(R=p[N],!(I.timestamp-R.timestamp>Du(_)));)N--;if(!R)return{x:0,y:0};var U=(I.timestamp-R.timestamp)/1e3;if(U===0)return{x:0,y:0};var W={x:(I.x-R.x)/U,y:(I.y-R.y)/U};return W.x===1/0&&(W.x=0),W.y===1/0&&(W.y=0),W}function vo(p){return p.max-p.min}function Ub(p,_,N){return _===void 0&&(_=0),N===void 0&&(N=.01),a.distance(p,_)I&&(p=N?a.mix(I,p,N.max):Math.min(p,I)),p}function Gb(p,_,N){return{min:_!==void 0?p.min+_:void 0,max:N!==void 0?p.max+N-(p.max-p.min):void 0}}function HN(p,_){var N=_.top,R=_.left,I=_.bottom,U=_.right;return{x:Gb(p.x,R,U),y:Gb(p.y,N,I)}}function qb(p,_){var N,R=_.min-p.min,I=_.max-p.max;return _.max-_.minR?N=a.progress(_.min,_.max-R,p.min):R>I&&(N=a.progress(p.min,p.max-I,_.min)),a.clamp(0,1,N)}function KN(p,_){var N={};return _.min!==void 0&&(N.min=_.min-p.min),_.max!==void 0&&(N.max=_.max-p.min),N}var hp=.35;function YN(p){return p===void 0&&(p=hp),p===!1?p=0:p===!0&&(p=hp),{x:Kb(p,"left","right"),y:Kb(p,"top","bottom")}}function Kb(p,_,N){return{min:Yb(p,_),max:Yb(p,N)}}function Yb(p,_){var N;return typeof p=="number"?p:(N=p[_])!==null&&N!==void 0?N:0}var Qb=function(){return{translate:0,scale:1,origin:0,originPoint:0}},Ks=function(){return{x:Qb(),y:Qb()}},Xb=function(){return{min:0,max:0}},Nr=function(){return{x:Xb(),y:Xb()}};function yo(p){return[p("x"),p("y")]}function Zb(p){var _=p.top,N=p.left,R=p.right,I=p.bottom;return{x:{min:N,max:R},y:{min:_,max:I}}}function QN(p){var _=p.x,N=p.y;return{top:N.min,right:_.max,bottom:N.max,left:_.min}}function XN(p,_){if(!_)return p;var N=_({x:p.left,y:p.top}),R=_({x:p.right,y:p.bottom});return{top:N.y,left:N.x,bottom:R.y,right:R.x}}function gp(p){return p===void 0||p===1}function Jb(p){var _=p.scale,N=p.scaleX,R=p.scaleY;return!gp(_)||!gp(N)||!gp(R)}function Zo(p){return Jb(p)||ev(p.x)||ev(p.y)||p.z||p.rotate||p.rotateX||p.rotateY}function ev(p){return p&&p!=="0%"}function zu(p,_,N){var R=p-N,I=_*R;return N+I}function tv(p,_,N,R,I){return I!==void 0&&(p=zu(p,I,R)),zu(p,N,R)+_}function mp(p,_,N,R,I){_===void 0&&(_=0),N===void 0&&(N=1),p.min=tv(p.min,_,N,R,I),p.max=tv(p.max,_,N,R,I)}function rv(p,_){var N=_.x,R=_.y;mp(p.x,N.translate,N.scale,N.originPoint),mp(p.y,R.translate,R.scale,R.originPoint)}function ZN(p,_,N,R){var I,U;R===void 0&&(R=!1);var W=N.length;if(W){_.x=_.y=1;for(var F,K,Q=0;Q_?N="y":Math.abs(p.x)>_&&(N="x"),N}function aj(p){var _=p.dragControls,N=p.visualElement,R=me(function(){return new nj(N)});r.useEffect(function(){return _&&_.subscribe(R)},[R,_]),r.useEffect(function(){return R.addListeners()},[R])}function ij(p){var _=p.onPan,N=p.onPanStart,R=p.onPanEnd,I=p.onPanSessionStart,U=p.visualElement,W=_||N||R||I,F=r.useRef(null),K=r.useContext(y).transformPagePoint,Q={onSessionStart:I,onStart:N,onMove:_,onEnd:function(ae,ie){F.current=null,R&&R(ae,ie)}};r.useEffect(function(){F.current!==null&&F.current.updateHandlers(Q)});function J(ae){F.current=new zb(ae,Q,{transformPagePoint:K})}Si(U,"pointerdown",W&&J),Ci(function(){return F.current&&F.current.end()})}var av={pan:Ut(ij),drag:Ut(aj)},Vu=["LayoutMeasure","BeforeLayoutMeasure","LayoutUpdate","ViewportBoxUpdate","Update","Render","AnimationComplete","LayoutAnimationComplete","AnimationStart","LayoutAnimationStart","SetAxisTarget","Unmount"];function sj(){var p=Vu.map(function(){return new $s}),_={},N={clearAllListeners:function(){return p.forEach(function(R){return R.clear()})},updatePropListeners:function(R){Vu.forEach(function(I){var U,W="on"+I,F=R[W];(U=_[I])===null||U===void 0||U.call(_),F&&(_[I]=N[W](F))})}};return p.forEach(function(R,I){N["on"+Vu[I]]=function(U){return R.add(U)},N["notify"+Vu[I]]=function(){for(var U=[],W=0;W=0?window.pageYOffset:null,Q=vj(_,p,F);return U.length&&U.forEach(function(J){var ae=t.__read(J,2),ie=ae[0],le=ae[1];p.getValue(ie).set(le)}),p.syncRender(),K!==null&&window.scrollTo({top:K}),{target:Q,transitionEnd:R}}else return{target:_,transitionEnd:R}};function xj(p,_,N,R){return hj(_)?yj(p,_,N,R):{target:_,transitionEnd:R}}var wj=function(p,_,N,R){var I=fj(p,_,R);return _=I.target,R=I.transitionEnd,xj(p,_,N,R)};function _j(p){return window.getComputedStyle(p)}var hv={treeType:"dom",readValueFromInstance:function(p,_){if(ue(_)){var N=Jf(_);return N&&N.default||0}else{var R=_j(p);return(ct(_)?R.getPropertyValue(_):R[_])||0}},sortNodePosition:function(p,_){return p.compareDocumentPosition(_)&2?1:-1},getBaseTarget:function(p,_){var N;return(N=p.style)===null||N===void 0?void 0:N[_]},measureViewportBox:function(p,_){var N=_.transformPagePoint;return ov(p,N)},resetTransform:function(p,_,N){var R=N.transformTemplate;_.style.transform=R?R({},""):"none",p.scheduleRender()},restoreTransform:function(p,_){p.style.transform=_.style.transform},removeValueFromRenderState:function(p,_){var N=_.vars,R=_.style;delete N[p],delete R[p]},makeTargetAnimatable:function(p,_,N,R){var I=N.transformValues;R===void 0&&(R=!0);var U=_.transition,W=_.transitionEnd,F=t.__rest(_,["transition","transitionEnd"]),K=Lb(F,U||{},p);if(I&&(W&&(W=I(W)),F&&(F=I(F)),K&&(K=I(K))),R){lp(p,F,K);var Q=wj(p,F,K,W);W=Q.transitionEnd,F=Q.target}return t.__assign({transition:U,transitionEnd:W},F)},scrapeMotionValuesFromProps:br,build:function(p,_,N,R,I){p.isVisible!==void 0&&(_.style.visibility=p.isVisible?"visible":"hidden"),Vt(_,N,R,I.transformTemplate)},render:Ft},Sj=Uu(hv),Cj=Uu(t.__assign(t.__assign({},hv),{getBaseTarget:function(p,_){return p[_]},readValueFromInstance:function(p,_){var N;return ue(_)?((N=Jf(_))===null||N===void 0?void 0:N.default)||0:(_=Mr.has(_)?_:Zt(_),p.getAttribute(_))},scrapeMotionValuesFromProps:Vr,build:function(p,_,N,R,I){_e(_,N,R,I.transformTemplate)},render:Ir})),yp=function(p,_){return xt(p)?Cj(_,{enableHardwareAcceleration:!1}):Sj(_,{enableHardwareAcceleration:!0})};function gv(p,_){return _.max===_.min?0:p/(_.max-_.min)*100}var Ys={correct:function(p,_){if(!_.target)return p;if(typeof p=="string")if(o.px.test(p))p=parseFloat(p);else return p;var N=gv(p,_.target.x),R=gv(p,_.target.y);return"".concat(N,"% ").concat(R,"%")}},mv="_$css",Tj={correct:function(p,_){var N=_.treeScale,R=_.projectionDelta,I=p,U=p.includes("var("),W=[];U&&(p=p.replace(sv,function(we){return W.push(we),mv}));var F=o.complex.parse(p);if(F.length>5)return I;var K=o.complex.createTransformer(p),Q=typeof F[0]!="number"?1:0,J=R.x.scale*N.x,ae=R.y.scale*N.y;F[0+Q]/=J,F[1+Q]/=ae;var ie=a.mix(J,ae,.5);typeof F[2+Q]=="number"&&(F[2+Q]/=ie),typeof F[3+Q]=="number"&&(F[3+Q]/=ie);var le=K(F);if(U){var de=0;le=le.replace(mv,function(){var we=W[de];return de++,we})}return le}},Pj=function(p){t.__extends(_,p);function _(){return p!==null&&p.apply(this,arguments)||this}return _.prototype.componentDidMount=function(){var N=this,R=this.props,I=R.visualElement,U=R.layoutGroup,W=R.switchLayoutGroup,F=R.layoutId,K=I.projection;dt(kj),K&&(U!=null&&U.group&&U.group.add(K),W!=null&&W.register&&F&&W.register(K),K.root.didUpdate(),K.addEventListener("animationComplete",function(){N.safeToRemove()}),K.setOptions(t.__assign(t.__assign({},K.options),{onExitComplete:function(){return N.safeToRemove()}}))),ke.hasEverUpdated=!0},_.prototype.getSnapshotBeforeUpdate=function(N){var R=this,I=this.props,U=I.layoutDependency,W=I.visualElement,F=I.drag,K=I.isPresent,Q=W.projection;return Q&&(Q.isPresent=K,F||N.layoutDependency!==U||U===void 0?Q.willUpdate():this.safeToRemove(),N.isPresent!==K&&(K?Q.promote():Q.relegate()||O.default.postRender(function(){var J;!((J=Q.getStack())===null||J===void 0)&&J.members.length||R.safeToRemove()}))),null},_.prototype.componentDidUpdate=function(){var N=this.props.visualElement.projection;N&&(N.root.didUpdate(),!N.currentAnimation&&N.isLead()&&this.safeToRemove())},_.prototype.componentWillUnmount=function(){var N=this.props,R=N.visualElement,I=N.layoutGroup,U=N.switchLayoutGroup,W=R.projection;W&&(W.scheduleCheckAfterUnmount(),I!=null&&I.group&&I.group.remove(W),U!=null&&U.deregister&&U.deregister(W))},_.prototype.safeToRemove=function(){var N=this.props.safeToRemove;N==null||N()},_.prototype.render=function(){return null},_}(S.default.Component);function Oj(p){var _=t.__read(Xf(),2),N=_[0],R=_[1],I=r.useContext(te);return S.default.createElement(Pj,t.__assign({},p,{layoutGroup:I,switchLayoutGroup:r.useContext(Oe),isPresent:N,safeToRemove:R}))}var kj={borderRadius:t.__assign(t.__assign({},Ys),{applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]}),borderTopLeftRadius:Ys,borderTopRightRadius:Ys,borderBottomLeftRadius:Ys,borderBottomRightRadius:Ys,boxShadow:Tj},bv={measureLayout:Oj};function vv(p,_,N){N===void 0&&(N={});var R=ce(p)?p:En(p);return np("",R,_,N),{stop:function(){return R.stop()},isAnimating:function(){return R.isAnimating()}}}var yv=["TopLeft","TopRight","BottomLeft","BottomRight"],Nj=yv.length,xv=function(p){return typeof p=="string"?parseFloat(p):p},wv=function(p){return typeof p=="number"||o.px.test(p)};function jj(p,_,N,R,I,U){var W,F,K,Q;I?(p.opacity=a.mix(0,(W=N.opacity)!==null&&W!==void 0?W:1,Ej(R)),p.opacityExit=a.mix((F=_.opacity)!==null&&F!==void 0?F:1,0,Aj(R))):U&&(p.opacity=a.mix((K=_.opacity)!==null&&K!==void 0?K:1,(Q=N.opacity)!==null&&Q!==void 0?Q:1,R));for(var J=0;J_?1:N(a.progress(p,_,R))}}function Cv(p,_){p.min=_.min,p.max=_.max}function Kn(p,_){Cv(p.x,_.x),Cv(p.y,_.y)}function Tv(p,_,N,R,I){return p-=_,p=zu(p,1/N,R),I!==void 0&&(p=zu(p,1/I,R)),p}function Rj(p,_,N,R,I,U,W){if(_===void 0&&(_=0),N===void 0&&(N=1),R===void 0&&(R=.5),U===void 0&&(U=p),W===void 0&&(W=p),o.percent.test(_)){_=parseFloat(_);var F=a.mix(W.min,W.max,_/100);_=F-W.min}if(typeof _=="number"){var K=a.mix(U.min,U.max,R);p===U&&(K-=_),p.min=Tv(p.min,_,N,K,I),p.max=Tv(p.max,_,N,K,I)}}function Pv(p,_,N,R,I){var U=t.__read(N,3),W=U[0],F=U[1],K=U[2];Rj(p,_[W],_[F],_[K],_.scale,R,I)}var Mj=["x","scaleX","originX"],Ij=["y","scaleY","originY"];function Ov(p,_,N,R){Pv(p.x,_,Mj,N==null?void 0:N.x,R==null?void 0:R.x),Pv(p.y,_,Ij,N==null?void 0:N.y,R==null?void 0:R.y)}function kv(p){return p.translate===0&&p.scale===1}function Nv(p){return kv(p.x)&&kv(p.y)}function jv(p,_){return p.x.min===_.x.min&&p.x.max===_.x.max&&p.y.min===_.y.min&&p.y.max===_.y.max}var Dj=function(){function p(){this.members=[]}return p.prototype.add=function(_){op(this.members,_),_.scheduleRender()},p.prototype.remove=function(_){if(ap(this.members,_),_===this.prevLead&&(this.prevLead=void 0),_===this.lead){var N=this.members[this.members.length-1];N&&this.promote(N)}},p.prototype.relegate=function(_){var N=this.members.findIndex(function(W){return _===W});if(N===0)return!1;for(var R,I=N;I>=0;I--){var U=this.members[I];if(U.isPresent!==!1){R=U;break}}return R?(this.promote(R),!0):!1},p.prototype.promote=function(_,N){var R,I=this.lead;if(_!==I&&(this.prevLead=I,this.lead=_,_.show(),I)){I.instance&&I.scheduleRender(),_.scheduleRender(),_.resumeFrom=I,N&&(_.resumeFrom.preserveOpacity=!0),I.snapshot&&(_.snapshot=I.snapshot,_.snapshot.latestValues=I.animationValues||I.latestValues,_.snapshot.isShared=!0),!((R=_.root)===null||R===void 0)&&R.isUpdating&&(_.isLayoutDirty=!0);var U=_.options.crossfade;U===!1&&I.hide()}},p.prototype.exitAnimationComplete=function(){this.members.forEach(function(_){var N,R,I,U,W;(R=(N=_.options).onExitComplete)===null||R===void 0||R.call(N),(W=(I=_.resumingFrom)===null||I===void 0?void 0:(U=I.options).onExitComplete)===null||W===void 0||W.call(U)})},p.prototype.scheduleRender=function(){this.members.forEach(function(_){_.instance&&_.scheduleRender(!1)})},p.prototype.removeLeadSnapshot=function(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)},p}(),Lj="translate3d(0px, 0px, 0) scale(1, 1) scale(1, 1)";function Ev(p,_,N){var R=p.x.translate/_.x,I=p.y.translate/_.y,U="translate3d(".concat(R,"px, ").concat(I,"px, 0) ");if(U+="scale(".concat(1/_.x,", ").concat(1/_.y,") "),N){var W=N.rotate,F=N.rotateX,K=N.rotateY;W&&(U+="rotate(".concat(W,"deg) ")),F&&(U+="rotateX(".concat(F,"deg) ")),K&&(U+="rotateY(".concat(K,"deg) "))}var Q=p.x.scale*_.x,J=p.y.scale*_.y;return U+="scale(".concat(Q,", ").concat(J,")"),U===Lj?"none":U}var Fj=function(p,_){return p.depth-_.depth},Av=function(){function p(){this.children=[],this.isDirty=!1}return p.prototype.add=function(_){op(this.children,_),this.isDirty=!0},p.prototype.remove=function(_){ap(this.children,_),this.isDirty=!0},p.prototype.forEach=function(_){this.isDirty&&this.children.sort(Fj),this.isDirty=!1,this.children.forEach(_)},p}(),Rv=1e3;function Mv(p){var _=p.attachResizeListener,N=p.defaultParent,R=p.measureScroll,I=p.checkIsScrollRoot,U=p.resetTransform;return function(){function W(F,K,Q){var J=this;K===void 0&&(K={}),Q===void 0&&(Q=N==null?void 0:N()),this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.potentialNodes=new Map,this.checkUpdateFailed=function(){J.isUpdating&&(J.isUpdating=!1,J.clearAllSnapshots())},this.updateProjection=function(){J.nodes.forEach($j),J.nodes.forEach(Hj)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.id=F,this.latestValues=K,this.root=Q?Q.root||Q:this,this.path=Q?t.__spreadArray(t.__spreadArray([],t.__read(Q.path),!1),[Q],!1):[],this.parent=Q,this.depth=Q?Q.depth+1:0,F&&this.root.registerPotentialNode(F,this);for(var ae=0;ae=0;R--)if(p.path[R].instance){N=p.path[R];break}var I=N&&N!==p.root?N.instance:document,U=I.querySelector('[data-projection-id="'.concat(_,'"]'));U&&p.mount(U,!0)}function Fv(p){p.min=Math.round(p.min),p.max=Math.round(p.max)}function zv(p){Fv(p.x),Fv(p.y)}var Zj=Mv({attachResizeListener:function(p,_){return je(p,"resize",_)},measureScroll:function(){return{x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}},checkIsScrollRoot:function(){return!0}}),Ha={current:void 0},xp=Mv({measureScroll:function(p){return{x:p.scrollLeft,y:p.scrollTop}},defaultParent:function(){if(!Ha.current){var p=new Zj(0,{});p.mount(window),p.setOptions({layoutScroll:!0}),Ha.current=p}return Ha.current},resetTransform:function(p,_){p.style.transform=_??"none"},checkIsScrollRoot:function(p){return window.getComputedStyle(p).position==="fixed"}}),Bv=t.__assign(t.__assign(t.__assign(t.__assign({},dp),qn),av),bv),wp=qe(function(p,_){return gn(p,_,Bv,yp,xp)});function Jj(p){return We(gn(p,{forwardMotionProps:!1},Bv,yp,xp))}var eE=qe(gn);function Vv(){var p=r.useRef(!1);return A(function(){return p.current=!0,function(){p.current=!1}},[]),p}function $u(){var p=Vv(),_=t.__read(r.useState(0),2),N=_[0],R=_[1],I=r.useCallback(function(){p.current&&R(N+1)},[N]),U=r.useCallback(function(){return O.default.postRender(I)},[I]);return[U,N]}var _p=function(p){var _=p.children,N=p.initial,R=p.isPresent,I=p.onExitComplete,U=p.custom,W=p.presenceAffectsLayout,F=me(tE),K=Tb(),Q=r.useMemo(function(){return{id:K,initial:N,isPresent:R,custom:U,onExitComplete:function(J){var ae,ie;F.set(J,!0);try{for(var le=t.__values(F.values()),de=le.next();!de.done;de=le.next()){var we=de.value;if(!we)return}}catch(De){ae={error:De}}finally{try{de&&!de.done&&(ie=le.return)&&ie.call(le)}finally{if(ae)throw ae.error}}I==null||I()},register:function(J){return F.set(J,!1),function(){return F.delete(J)}}}},W?void 0:[R]);return r.useMemo(function(){F.forEach(function(J,ae){return F.set(ae,!1)})},[R]),m.useEffect(function(){!R&&!F.size&&(I==null||I())},[R]),m.createElement(k.Provider,{value:Q},_)};function tE(){return new Map}var Oi=function(p){return p.key||""};function rE(p,_){p.forEach(function(N){var R=Oi(N);_.set(R,N)})}function nE(p){var _=[];return r.Children.forEach(p,function(N){r.isValidElement(N)&&_.push(N)}),_}var oE=function(p){var _=p.children,N=p.custom,R=p.initial,I=R===void 0?!0:R,U=p.onExitComplete,W=p.exitBeforeEnter,F=p.presenceAffectsLayout,K=F===void 0?!0:F,Q=t.__read($u(),1),J=Q[0],ae=r.useContext(te).forceRender;ae&&(J=ae);var ie=Vv(),le=nE(_),de=le,we=new Set,De=r.useRef(de),Qe=r.useRef(new Map).current,mt=r.useRef(!0);if(A(function(){mt.current=!1,rE(le,Qe),De.current=de}),Ci(function(){mt.current=!0,Qe.clear(),we.clear()}),mt.current)return m.createElement(m.Fragment,null,de.map(function(Mt){return m.createElement(_p,{key:Oi(Mt),isPresent:!0,initial:I?void 0:!1,presenceAffectsLayout:K},Mt)}));de=t.__spreadArray([],t.__read(de),!1);for(var Pt=De.current.map(Oi),Nt=le.map(Oi),Et=Pt.length,Qt=0;Qt1&&console.warn("You're attempting to animate multiple children within AnimatePresence, but its exitBeforeEnter prop is set to true. This will lead to odd visual behaviour."),m.createElement(m.Fragment,null,we.size?de:de.map(function(Mt){return r.cloneElement(Mt)}))},Uv=r.createContext(null),aE=function(p){return!p.isLayoutDirty&&p.willUpdate(!1)};function Wv(){var p=new Set,_=new WeakMap,N=function(){return p.forEach(aE)};return{add:function(R){p.add(R),_.set(R,R.addEventListener("willUpdate",N))},remove:function(R){var I;p.delete(R),(I=_.get(R))===null||I===void 0||I(),_.delete(R),N()},dirty:N}}var $v=function(p){return p===!0},iE=function(p){return $v(p===!0)||p==="id"},Hv=function(p){var _,N,R=p.children,I=p.id,U=p.inheritId,W=p.inherit,F=W===void 0?!0:W;U!==void 0&&(F=U);var K=r.useContext(te),Q=r.useContext(Uv),J=t.__read($u(),2),ae=J[0],ie=J[1],le=r.useRef(null),de=(_=K.id)!==null&&_!==void 0?_:Q;le.current===null&&(iE(F)&&de&&(I=I?de+"-"+I:de),le.current={id:I,group:$v(F)&&(N=K==null?void 0:K.group)!==null&&N!==void 0?N:Wv()});var we=r.useMemo(function(){return t.__assign(t.__assign({},le.current),{forceRender:ae})},[ie]);return m.createElement(te.Provider,{value:we},R)},sE=0,lE=function(p){var _=p.children;return m.useEffect(function(){n.warning(!1,"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations")},[]),m.createElement(Hv,{id:me(function(){return"asl-".concat(sE++)})},_)};function uE(p){var _=p.children,N=p.isValidProp,R=t.__rest(p,["children","isValidProp"]);N&&_r(N),R=t.__assign(t.__assign({},r.useContext(y)),R),R.isStatic=me(function(){return R.isStatic});var I=r.useMemo(function(){return R},[JSON.stringify(R.transition),R.transformPagePoint,R.reducedMotion]);return m.createElement(y.Provider,{value:I},_)}function cE(p){var _=p.children,N=p.features,R=p.strict,I=R===void 0?!1:R,U=t.__read(r.useState(!Sp(N)),2),W=U[1],F=r.useRef(void 0);if(!Sp(N)){var K=N.renderer,Q=t.__rest(N,["renderer"]);F.current=K,d(Q)}return r.useEffect(function(){Sp(N)&&N().then(function(J){var ae=J.renderer,ie=t.__rest(J,["renderer"]);d(ie),F.current=ae,W(!0)})},[]),m.createElement(s.Provider,{value:{renderer:F.current,strict:I}},_)}function Sp(p){return typeof p=="function"}var Gv=r.createContext(null);function dE(p,_,N,R){if(!R)return p;var I=p.findIndex(function(J){return J.value===_});if(I===-1)return p;var U=R>0?1:-1,W=p[I+U];if(!W)return p;var F=p[I],K=W.layout,Q=a.mix(K.min,K.max,.5);return U===1&&F.layout.max+N>Q||U===-1&&F.layout.min+N.001?1/p:WE},oy=!1;function $E(p){var _=ea(1),N=ea(1),R=E();n.invariant(!!(p||R),"If no scale values are provided, useInvertedScale must be used within a child of another motion component."),n.warning(oy,"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead."),oy=!0,p?(_=p.scaleX||_,N=p.scaleY||N):R&&(_=R.getValue("scaleX",1),N=R.getValue("scaleY",1));var I=Hu(_,ny),U=Hu(N,ny);return{scaleX:I,scaleY:U}}e.AnimatePresence=oE,e.AnimateSharedLayout=lE,e.DeprecatedLayoutGroupContext=Uv,e.DragControls=ty,e.FlatTree=Av,e.LayoutGroup=Hv,e.LayoutGroupContext=te,e.LazyMotion=cE,e.MotionConfig=uE,e.MotionConfigContext=y,e.MotionContext=x,e.MotionValue=Mb,e.PresenceContext=k,e.Reorder=_E,e.SwitchLayoutGroupContext=Oe,e.addPointerEvent=Qo,e.addScaleCorrector=dt,e.animate=vv,e.animateVisualElement=Fu,e.animationControls=Jv,e.animations=dp,e.calcLength=vo,e.checkTargetForNewValues=lp,e.createBox=Nr,e.createDomMotionComponent=Jj,e.createMotionComponent=We,e.domAnimation=Xv,e.domMax=SE,e.filterProps=kr,e.isBrowser=j,e.isDragActive=Ua,e.isMotionValue=ce,e.isValidMotionProp=Ot,e.m=eE,e.makeUseVisualState=Sr,e.motion=wp,e.motionValue=En,e.resolveMotionValue=on,e.transform=qv,e.useAnimation=AE,e.useAnimationControls=ey,e.useAnimationFrame=Zv,e.useCycle=RE,e.useDeprecatedAnimatedState=UE,e.useDeprecatedInvertedScale=$E,e.useDomEvent=Le,e.useDragControls=DE,e.useElementScroll=kE,e.useForceUpdate=$u,e.useInView=ME,e.useInstantLayoutTransition=ry,e.useInstantTransition=FE,e.useIsPresent=uN,e.useIsomorphicLayoutEffect=A,e.useMotionTemplate=CE,e.useMotionValue=ea,e.usePresence=Xf,e.useReducedMotion=z,e.useReducedMotionConfig=H,e.useResetProjection=zE,e.useScroll=Cp,e.useSpring=TE,e.useTime=EE,e.useTransform=Hu,e.useUnmountEffect=Ci,e.useVelocity=PE,e.useViewportScroll=NE,e.useVisualElementContext=E,e.visualElement=Uu,e.wrapHandler=Ba})(Rr);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{AccordionBody:function(){return w},default:function(){return b}});var r=O(P),n=Rr,o=O(St),a=O(Br),i=O(ht),l=bt,f=Tf,g=ut,m=mu;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.className,u=d.children,h=T(d,["className","children"]),y=(0,f.useAccordion)(),x=y.open,E=y.animate,k=(0,g.useTheme)().accordion,j=k.styles.base;c=c??"";var A=(0,l.twMerge)((0,o.default)((0,i.default)(j.body)),c),M={unmount:{height:"0px",transition:{duration:.2,times:[.4,0,.2,1]}},mount:{height:"auto",transition:{duration:.2,times:[.4,0,.2,1]}}},D={unmount:{transition:{duration:.3,ease:"linear"}},mount:{transition:{duration:.3,ease:"linear"}}},L=(0,a.default)(D,E);return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(n.m.div,{className:"overflow-hidden",initial:"unmount",exit:"unmount",animate:x?"mount":"unmount",variants:M},r.default.createElement(n.m.div,S({},h,{ref:s,className:A,initial:"unmount",exit:"unmount",animate:x?"mount":"unmount",variants:L}),u)))});w.propTypes={className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.AccordionBody";var b=w})(yT);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Accordion:function(){return b},AccordionHeader:function(){return g.AccordionHeader},AccordionBody:function(){return m.AccordionBody},useAccordion:function(){return l.useAccordion},default:function(){return d}});var r=T(P),n=T(St),o=bt,a=T(ht),i=ut,l=Tf,f=mu,g=vT,m=yT;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.open,h=s.icon,y=s.animate,x=s.className,E=s.disabled,k=s.children,j=C(s,["open","icon","animate","className","disabled","children"]),A=(0,i.useTheme)().accordion,M=A.defaultProps,D=A.styles.base;h=h??M.icon,y=y??M.animate,x=x??M.className,E=E??M.disabled;var L=(0,o.twMerge)((0,n.default)((0,a.default)(D.container),S({},(0,a.default)(D.disabled),E)),x),z=r.default.useMemo(function(){return{open:u,icon:h,animate:y,disabled:E}},[u,h,y,E]);return r.default.createElement(l.AccordionContextProvider,{value:z},r.default.createElement("div",O({},j,{ref:c,className:L}),k))});b.propTypes={open:f.propTypesOpen,icon:f.propTypesIcon,animate:f.propTypesAnimate,disabled:f.propTypesDisabled,className:f.propTypesClassName,children:f.propTypesChildren},b.displayName="MaterialTailwind.Accordion";var d=Object.assign(b,{Header:g.AccordionHeader,Body:m.AccordionBody})})(qC);var GP={},sr={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return r}});function t(n,o,a){var i=n.findIndex(function(l){return l===o});return i>=0?o:a}var r=t})(sr);var Lf={},js=class{constructor(){this.x=0,this.y=0,this.z=0}findFurthestPoint(t,r,n,o,a,i){return this.x=t-n>r/2?0:r,this.y=o-i>a/2?0:a,this.z=Math.hypot(this.x-(t-n),this.y-(o-i)),this.z}appyStyles(t,r,n,o,a){t.classList.add("ripple"),t.style.backgroundColor=r==="dark"?"rgba(0,0,0, 0.2)":"rgba(255,255,255, 0.3)",t.style.borderRadius="50%",t.style.pointerEvents="none",t.style.position="absolute",t.style.left=a.clientX-n.left-o+"px",t.style.top=a.clientY-n.top-o+"px",t.style.width=t.style.height=o*2+"px"}applyAnimation(t){t.animate([{transform:"scale(0)",opacity:1},{transform:"scale(1.5)",opacity:0}],{duration:500,easing:"linear"})}create(t,r){const n=t.currentTarget;n.style.position="relative",n.style.overflow="hidden";const o=n.getBoundingClientRect(),a=this.findFurthestPoint(t.clientX,n.offsetWidth,o.left,t.clientY,n.offsetHeight,o.top),i=document.createElement("span");this.appyStyles(i,r,o,a,t),this.applyAnimation(i),n.appendChild(i),setTimeout(()=>i.remove(),500)}};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{IconButton:function(){return w},default:function(){return b}});var r=O(P),n=O(vt),o=O(js),a=O(St),i=bt,l=O(sr),f=O(ht),g=ut,m=mi;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,u=d.size,h=d.color,y=d.ripple,x=d.className,E=d.children;d.fullWidth;var k=T(d,["variant","size","color","ripple","className","children","fullWidth"]),j=(0,g.useTheme)().iconButton,A=j.valid,M=j.defaultProps,D=j.styles,L=D.base,z=D.variants,H=D.sizes;c=c??M.variant,u=u??M.size,h=h??M.color,y=y??M.ripple,x=x??M.className;var Y=y!==void 0&&new o.default,G=(0,f.default)(L),B=(0,f.default)(z[(0,l.default)(A.variants,c,"filled")][(0,l.default)(A.colors,h,"gray")]),$=(0,f.default)(H[(0,l.default)(A.sizes,u,"md")]),q=(0,i.twMerge)((0,a.default)(G,$,B),x);return r.default.createElement("button",S({},k,{ref:s,className:q,type:k.type||"button",onMouseDown:function(ee){var oe=k==null?void 0:k.onMouseDown;return y&&Y.create(ee,(c==="filled"||c==="gradient")&&h!=="white"?"light":"dark"),typeof oe=="function"&&oe(ee)}}),r.default.createElement("span",{className:"absolute top-1/2 left-1/2 transform -translate-y-1/2 -translate-x-1/2"},E))});w.propTypes={variant:n.default.oneOf(m.propTypesVariant),size:n.default.oneOf(m.propTypesSize),color:n.default.oneOf(m.propTypesColor),ripple:m.propTypesRipple,className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.IconButton";var b=w})(Lf);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(c,u){for(var h in u)Object.defineProperty(c,h,{enumerable:!0,get:u[h]})}t(e,{Alert:function(){return d},default:function(){return s}});var r=C(P),n=C(vt),o=Rr,a=C(St),i=C(Br),l=bt,f=C(sr),g=C(ht),m=ut,S=hm,O=C(Lf);function T(){return T=Object.assign||function(c){for(var u=1;u=0)&&Object.prototype.propertyIsEnumerable.call(c,y)&&(h[y]=c[y])}return h}function b(c,u){if(c==null)return{};var h={},y=Object.keys(c),x,E;for(E=0;E=0)&&(h[x]=c[x]);return h}var d=r.default.forwardRef(function(c,u){var h=c.variant,y=c.color,x=c.icon,E=c.open,k=c.action,j=c.onClose,A=c.animate,M=c.className,D=c.children,L=w(c,["variant","color","icon","open","action","onClose","animate","className","children"]),z=(0,m.useTheme)().alert,H=z.defaultProps,Y=z.valid,G=z.styles,B=G.base,$=G.variants;h=h??H.variant,y=y??H.color,M=M??H.className,A=A??H.animate,E=E??H.open,k=k??H.action,j=j??H.onClose;var q=(0,g.default)(B.alert),ee=(0,g.default)(B.action),oe=(0,g.default)($[(0,f.default)(Y.variants,h,"filled")][(0,f.default)(Y.colors,y,"gray")]),ge=(0,l.twMerge)((0,a.default)(q,oe),M),fe=(0,a.default)(ee),re={unmount:{opacity:0},mount:{opacity:1}},be=(0,i.default)(re,A),he=r.default.createElement("div",{className:"shrink-0"},x),pe=o.AnimatePresence;return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(pe,null,E&&r.default.createElement(o.m.div,T({},L,{ref:u,role:"alert",className:"".concat(ge," flex"),initial:"unmount",exit:"unmount",animate:E?"mount":"unmount",variants:be}),x&&he,r.default.createElement("div",{className:"".concat(x?"ml-3":""," mr-12")},D),j&&!k&&r.default.createElement(O.default,{onClick:j,size:"sm",variant:"text",color:h==="outlined"||h==="ghost"?y:"white",className:fe},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:"h-6 w-6",strokeWidth:2},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))),k||null)))});d.propTypes={variant:n.default.oneOf(S.propTypesVariant),color:n.default.oneOf(S.propTypesColor),icon:S.propTypesIcon,open:S.propTypesOpen,action:S.propTypesAction,onClose:S.propTypesOnClose,animate:S.propTypesAnimate,className:S.propTypesClassName,children:S.propTypesChildren},d.displayName="MaterialTailwind.Alert";var s=d})(GP);var qP={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{Avatar:function(){return w},default:function(){return b}});var r=O(P),n=O(vt),o=O(St),a=bt,i=O(sr),l=O(ht),f=ut,g=gm;function m(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,u=d.size,h=d.className,y=d.color,x=d.withBorder,E=T(d,["variant","size","className","color","withBorder"]),k=(0,f.useTheme)().avatar,j=k.valid,A=k.defaultProps,M=k.styles,D=M.base,L=M.variants,z=M.sizes,H=M.borderColor;c=c??A.variant,u=u??A.size,h=h??A.className,x=x??A.withBorder,y=y??A.color;var Y=(0,l.default)(L[(0,i.default)(j.variants,c,"rounded")]),G=(0,l.default)(z[(0,i.default)(j.sizes,u,"md")]),B=(0,l.default)(H[(0,i.default)(j.colors,y,"gray")]),$,q=(0,a.twMerge)((0,o.default)((0,l.default)(D.initial),Y,G,($={},m($,(0,l.default)(D.withBorder),x),m($,B,x),$)),h);return r.default.createElement("img",S({},E,{ref:s,className:q}))});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),size:n.default.oneOf(g.propTypesSize),className:g.propTypesClassName,withBorder:g.propTypesWithBorder,color:n.default.oneOf(g.propTypesColor)},w.displayName="MaterialTailwind.Avatar";var b=w})(qP);var KP={},YP={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(f,g){for(var m in g)Object.defineProperty(f,m,{enumerable:!0,get:g[m]})}t(e,{propTypesSeparator:function(){return o},propTypesFullWidth:function(){return a},propTypesClassName:function(){return i},propTypesChildren:function(){return l}});var r=n(vt);function n(f){return f&&f.__esModule?f:{default:f}}var o=r.default.node,a=r.default.bool,i=r.default.string,l=r.default.node.isRequired})(YP);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{Breadcrumbs:function(){return w},default:function(){return b}});var r=O(P),n=m(St),o=bt,a=m(ht),i=ut,l=YP;function f(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function g(){return g=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=(0,r.forwardRef)(function(d,s){var c=d.separator,u=d.fullWidth,h=d.className,y=d.children,x=T(d,["separator","fullWidth","className","children"]),E=(0,i.useTheme)().breadcrumbs,k=E.defaultProps,j=E.styles.base;c=c??k.separator,u=u??k.fullWidth,h=h??k.className;var A=(0,n.default)((0,a.default)(j.root.initial),f({},(0,a.default)(j.root.fullWidth),u)),M=(0,o.twMerge)((0,n.default)((0,a.default)(j.list)),h),D=(0,n.default)((0,a.default)(j.item.initial)),L=(0,n.default)((0,a.default)(j.separator));return r.default.createElement("nav",{"aria-label":"breadcrumb",className:A},r.default.createElement("ol",g({},x,{ref:s,className:M}),r.Children.map(y,function(z,H){if((0,r.isValidElement)(z)){var Y;return r.default.createElement("li",{className:(0,n.default)(D,f({},(0,a.default)(j.item.disabled),z==null||(Y=z.props)===null||Y===void 0?void 0:Y.disabled))},z,H!==r.Children.count(y)-1&&r.default.createElement("span",{className:L},c))}return null})))});w.propTypes={separator:l.propTypesSeparator,fullWidth:l.propTypesFullWidth,className:l.propTypesClassName,children:l.propTypesChildren},w.displayName="MaterialTailwind.Breadcrumbs";var b=w})(KP);var QP={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Button:function(){return b},default:function(){return d}});var r=T(P),n=T(vt),o=T(js),a=T(St),i=bt,l=T(sr),f=T(ht),g=ut,m=mi;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.variant,h=s.size,y=s.color,x=s.fullWidth,E=s.ripple,k=s.className,j=s.children,A=C(s,["variant","size","color","fullWidth","ripple","className","children"]),M=(0,g.useTheme)().button,D=M.valid,L=M.defaultProps,z=M.styles,H=z.base,Y=z.variants,G=z.sizes;u=u??L.variant,h=h??L.size,y=y??L.color,x=x??L.fullWidth,E=E??L.ripple,k=k??L.className;var B=E!==void 0&&new o.default,$=(0,f.default)(H.initial),q=(0,f.default)(Y[(0,l.default)(D.variants,u,"filled")][(0,l.default)(D.colors,y,"gray")]),ee=(0,f.default)(G[(0,l.default)(D.sizes,h,"md")]),oe=(0,i.twMerge)((0,a.default)($,ee,q,S({},(0,f.default)(H.fullWidth),x)),k);return r.default.createElement("button",O({},A,{ref:c,className:oe,type:A.type||"button",onMouseDown:function(ge){var fe=A==null?void 0:A.onMouseDown;return E&&B.create(ge,(u==="filled"||u==="gradient")&&y!=="white"?"light":"dark"),typeof fe=="function"&&fe(ge)}}),j)});b.propTypes={variant:n.default.oneOf(m.propTypesVariant),size:n.default.oneOf(m.propTypesSize),color:n.default.oneOf(m.propTypesColor),fullWidth:m.propTypesFullWidth,ripple:m.propTypesRipple,className:m.propTypesClassName,children:m.propTypesChildren},b.displayName="MaterialTailwind.Button";var d=b})(QP);var XP={},ZP={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{CardHeader:function(){return w},default:function(){return b}});var r=O(P),n=O(vt),o=O(St),a=bt,i=O(sr),l=O(ht),f=ut,g=bi;function m(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,u=d.color,h=d.shadow,y=d.floated,x=d.className,E=d.children,k=T(d,["variant","color","shadow","floated","className","children"]),j=(0,f.useTheme)().cardHeader,A=j.defaultProps,M=j.styles,D=j.valid,L=M.base,z=M.variants;c=c??A.variant,u=u??A.color,h=h??A.shadow,y=y??A.floated,x=x??A.className;var H=(0,l.default)(L.initial),Y=(0,l.default)(z[(0,i.default)(D.variants,c,"filled")][(0,i.default)(D.colors,u,"white")]),G=(0,a.twMerge)((0,o.default)(H,Y,m({},(0,l.default)(L.shadow),h),m({},(0,l.default)(L.floated),y)),x);return r.default.createElement("div",S({},k,{ref:s,className:G}),E)});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),color:n.default.oneOf(g.propTypesColor),shadow:g.propTypesShadow,floated:g.propTypesFloated,className:g.propTypesClassName,children:g.propTypesChildren},w.displayName="MaterialTailwind.CardHeader";var b=w})(ZP);var JP={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{CardBody:function(){return O},default:function(){return T}});var r=g(P),n=g(St),o=bt,a=g(ht),i=ut,l=bi;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,i.useTheme)().cardBody,u=c.defaultProps,h=c.styles.base;b=b??u.className;var y=(0,o.twMerge)((0,n.default)((0,a.default)(h)),b);return r.default.createElement("div",f({},s,{ref:w,className:y}),d)});O.propTypes={className:l.propTypesClassName,children:l.propTypesChildren},O.displayName="MaterialTailwind.CardBody";var T=O})(JP);var eO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{CardFooter:function(){return T},default:function(){return C}});var r=m(P),n=m(St),o=bt,a=m(ht),i=ut,l=bi;function f(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function g(){return g=Object.assign||function(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,u;for(u=0;u=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.divider,s=w.className,c=w.children,u=S(w,["divider","className","children"]),h=(0,i.useTheme)().cardFooter,y=h.defaultProps,x=h.styles.base;s=s??y.className,d=d??y.divider;var E=(0,o.twMerge)((0,n.default)((0,a.default)(x.initial),f({},(0,a.default)(x.divider),d)),s);return r.default.createElement("div",g({},u,{ref:b,className:E}),c)});T.propTypes={divider:l.propTypesDivider,className:l.propTypesClassName,children:l.propTypesChildren},T.displayName="MaterialTailwind.CardFooter";var C=T})(eO);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(u,h){for(var y in h)Object.defineProperty(u,y,{enumerable:!0,get:h[y]})}t(e,{Card:function(){return s},CardHeader:function(){return g.CardHeader},CardBody:function(){return m.CardBody},CardFooter:function(){return S.CardFooter},default:function(){return c}});var r=w(P),n=w(vt),o=w(St),a=bt,i=w(sr),l=w(ht),f=ut,g=ZP,m=JP,S=eO,O=bi;function T(u,h,y){return h in u?Object.defineProperty(u,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):u[h]=y,u}function C(){return C=Object.assign||function(u){for(var h=1;h=0)&&Object.prototype.propertyIsEnumerable.call(u,x)&&(y[x]=u[x])}return y}function d(u,h){if(u==null)return{};var y={},x=Object.keys(u),E,k;for(k=0;k=0)&&(y[E]=u[E]);return y}var s=r.default.forwardRef(function(u,h){var y=u.variant,x=u.color,E=u.shadow,k=u.className,j=u.children,A=b(u,["variant","color","shadow","className","children"]),M=(0,f.useTheme)().card,D=M.defaultProps,L=M.styles,z=M.valid,H=L.base,Y=L.variants;y=y??D.variant,x=x??D.color,E=E??D.shadow,k=k??D.className;var G=(0,l.default)(H.initial),B=(0,l.default)(Y[(0,i.default)(z.variants,y,"filled")][(0,i.default)(z.colors,x,"white")]),$=(0,a.twMerge)((0,o.default)(G,B,T({},(0,l.default)(H.shadow),E)),k);return r.default.createElement("div",C({},A,{ref:h,className:$}),j)});s.propTypes={variant:n.default.oneOf(O.propTypesVariant),color:n.default.oneOf(O.propTypesColor),shadow:O.propTypesShadow,className:O.propTypesClassName,children:O.propTypesChildren},s.displayName="MaterialTailwind.Card";var c=Object.assign(s,{Header:g.CardHeader,Body:m.CardBody,Footer:S.CardFooter})})(XP);var tO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Checkbox:function(){return b},default:function(){return d}});var r=T(P),n=T(vt),o=T(js),a=T(St),i=bt,l=T(sr),f=T(ht),g=ut,m=vi;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.color,h=s.label,y=s.icon,x=s.ripple,E=s.className,k=s.disabled,j=s.containerProps,A=s.labelProps,M=s.iconProps,D=s.inputRef,L=C(s,["color","label","icon","ripple","className","disabled","containerProps","labelProps","iconProps","inputRef"]),z=(0,g.useTheme)().checkbox,H=z.defaultProps,Y=z.valid,G=z.styles,B=G.base,$=G.colors,q=r.default.useId();u=u??H.color,h=h??H.label,y=y??H.icon,x=x??H.ripple,E=E??H.className,k=k??H.disabled,j=j??H.containerProps,A=A??H.labelProps,M=M??H.iconProps;var ee=x!==void 0&&new o.default,oe=(0,a.default)((0,f.default)(B.root),S({},(0,f.default)(B.disabled),k)),ge=(0,i.twMerge)((0,a.default)((0,f.default)(B.container)),j==null?void 0:j.className),fe=(0,i.twMerge)((0,a.default)((0,f.default)(B.input),(0,f.default)($[(0,l.default)(Y.colors,u,"gray")])),E),re=(0,i.twMerge)((0,a.default)((0,f.default)(B.label)),A==null?void 0:A.className),be=(0,i.twMerge)((0,a.default)((0,f.default)(B.icon)),M==null?void 0:M.className);return r.default.createElement("div",{ref:c,className:oe},r.default.createElement("label",O({},j,{className:ge,htmlFor:L.id||q,onMouseDown:function(he){var pe=j==null?void 0:j.onMouseDown;return x&&ee.create(he,"dark"),typeof pe=="function"&&pe(he)}}),r.default.createElement("input",O({},L,{ref:D,type:"checkbox",disabled:k,className:fe,id:L.id||q})),r.default.createElement("span",{className:be},y||r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 20 20",fill:"currentColor",stroke:"currentColor",strokeWidth:1},r.default.createElement("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})))),h&&r.default.createElement("label",O({},A,{className:re,htmlFor:L.id||q}),h))});b.propTypes={color:n.default.oneOf(m.propTypesColor),label:m.propTypesLabel,icon:m.propTypesIcon,ripple:m.propTypesRipple,className:m.propTypesClassName,disabled:m.propTypesDisabled,containerProps:m.propTypesObject,labelProps:m.propTypesObject},b.displayName="MaterialTailwind.Checkbox";var d=b})(tO);var rO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(c,u){for(var h in u)Object.defineProperty(c,h,{enumerable:!0,get:u[h]})}t(e,{Chip:function(){return d},default:function(){return s}});var r=C(P),n=C(vt),o=Rr,a=C(St),i=C(Br),l=bt,f=C(sr),g=C(ht),m=ut,S=_m,O=C(Lf);function T(){return T=Object.assign||function(c){for(var u=1;u=0)&&Object.prototype.propertyIsEnumerable.call(c,y)&&(h[y]=c[y])}return h}function b(c,u){if(c==null)return{};var h={},y=Object.keys(c),x,E;for(E=0;E=0)&&(h[x]=c[x]);return h}var d=r.default.forwardRef(function(c,u){var h=c.variant,y=c.size,x=c.color,E=c.icon,k=c.open,j=c.onClose,A=c.action,M=c.animate,D=c.className,L=c.value,z=w(c,["variant","size","color","icon","open","onClose","action","animate","className","value"]),H=(0,m.useTheme)().chip,Y=H.defaultProps,G=H.valid,B=H.styles,$=B.base,q=B.variants,ee=B.sizes;h=h??Y.variant,y=y??Y.size,x=x??Y.color,D=D??Y.className,M=M??Y.animate,k=k??Y.open,A=A??Y.action,j=j??Y.onClose;var oe=(0,g.default)($.chip),ge=(0,g.default)($.action),fe=(0,g.default)($.icon),re=(0,g.default)(q[(0,f.default)(G.variants,h,"filled")][(0,f.default)(G.colors,x,"gray")]),be=(0,g.default)(ee[(0,f.default)(G.sizes,y,"md")].chip),he=(0,g.default)(ee[(0,f.default)(G.sizes,y,"md")].action),pe=(0,g.default)(ee[(0,f.default)(G.sizes,y,"md")].icon),ve=(0,l.twMerge)((0,a.default)(oe,re,be),D),me=(0,a.default)(ge,he),ke=(0,a.default)(fe,pe),Fe=(0,a.default)({"ml-4":E&&y==="sm","ml-[18px]":E&&y==="md","ml-5":E&&y==="lg","mr-5":j}),Pe={unmount:{opacity:0},mount:{opacity:1}},te=(0,i.default)(Pe,M),Oe=r.default.createElement("div",{className:ke},E),$e=o.AnimatePresence;return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement($e,null,k&&r.default.createElement(o.m.div,T({},z,{ref:u,className:ve,initial:"unmount",exit:"unmount",animate:k?"mount":"unmount",variants:te}),E&&Oe,r.default.createElement("span",{className:Fe},L),j&&!A&&r.default.createElement(O.default,{onClick:j,size:"sm",variant:"text",color:h==="outlined"||h==="ghost"?x:"white",className:me},r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",className:(0,a.default)({"h-3.5 w-3.5":y==="sm","h-4 w-4":y==="md","h-5 w-5":y==="lg"}),strokeWidth:2},r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))),A||null)))});d.propTypes={variant:n.default.oneOf(S.propTypesVariant),size:n.default.oneOf(S.propTypesSize),color:n.default.oneOf(S.propTypesColor),icon:S.propTypesIcon,open:S.propTypesOpen,onClose:S.propTypesOnClose,action:S.propTypesAction,animate:S.propTypesAnimate,className:S.propTypesClassName,value:S.propTypesValue},d.displayName="MaterialTailwind.Chip";var s=d})(rO);var nO={},xF=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Ei=new WeakMap,pc=new WeakMap,hc={},dh=0,oO=function(e){return e&&(e.host||oO(e.parentNode))},wF=function(e,t){return t.map(function(r){if(e.contains(r))return r;var n=oO(r);return n&&e.contains(n)?n:(console.error("aria-hidden",r,"in not contained inside",e,". Doing nothing"),null)}).filter(function(r){return!!r})},_F=function(e,t,r,n){var o=wF(t,Array.isArray(e)?e:[e]);hc[r]||(hc[r]=new WeakMap);var a=hc[r],i=[],l=new Set,f=new Set(o),g=function(S){!S||l.has(S)||(l.add(S),g(S.parentNode))};o.forEach(g);var m=function(S){!S||f.has(S)||Array.prototype.forEach.call(S.children,function(O){if(l.has(O))m(O);else try{var T=O.getAttribute(n),C=T!==null&&T!=="false",w=(Ei.get(O)||0)+1,b=(a.get(O)||0)+1;Ei.set(O,w),a.set(O,b),i.push(O),w===1&&C&&pc.set(O,!0),b===1&&O.setAttribute(r,"true"),C||O.setAttribute(n,"true")}catch(d){console.error("aria-hidden: cannot operate on ",O,d)}})};return m(t),l.clear(),dh++,function(){i.forEach(function(S){var O=Ei.get(S)-1,T=a.get(S)-1;Ei.set(S,O),a.set(S,T),O||(pc.has(S)||S.removeAttribute(n),pc.delete(S)),T||S.removeAttribute(r)}),dh--,dh||(Ei=new WeakMap,Ei=new WeakMap,pc=new WeakMap,hc={})}},SF=function(e,t,r){r===void 0&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),o=t||xF(e);return o?(n.push.apply(n,Array.from(o.querySelectorAll("[aria-live], script"))),_F(n,o,r,"aria-hidden")):function(){return null}};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var CF=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],qg=CF.join(","),aO=typeof Element>"u",ou=aO?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ud=!aO&&Element.prototype.getRootNode?function(e){var t;return e==null||(t=e.getRootNode)===null||t===void 0?void 0:t.call(e)}:function(e){return e==null?void 0:e.ownerDocument},Wd=function e(t,r){var n;r===void 0&&(r=!0);var o=t==null||(n=t.getAttribute)===null||n===void 0?void 0:n.call(t,"inert"),a=o===""||o==="true",i=a||r&&t&&e(t.parentNode);return i},TF=function(t){var r,n=t==null||(r=t.getAttribute)===null||r===void 0?void 0:r.call(t,"contenteditable");return n===""||n==="true"},PF=function(t,r,n){if(Wd(t))return[];var o=Array.prototype.slice.apply(t.querySelectorAll(qg));return r&&ou.call(t,qg)&&o.unshift(t),o=o.filter(n),o},OF=function e(t,r,n){for(var o=[],a=Array.from(t);a.length;){var i=a.shift();if(!Wd(i,!1))if(i.tagName==="SLOT"){var l=i.assignedElements(),f=l.length?l:i.children,g=e(f,!0,n);n.flatten?o.push.apply(o,g):o.push({scopeParent:i,candidates:g})}else{var m=ou.call(i,qg);m&&n.filter(i)&&(r||!t.includes(i))&&o.push(i);var S=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),O=!Wd(S,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(S&&O){var T=e(S===!0?i.children:S.children,!0,n);n.flatten?o.push.apply(o,T):o.push({scopeParent:i,candidates:T})}else a.unshift.apply(a,i.children)}}return o},iO=function(t){return!isNaN(parseInt(t.getAttribute("tabindex"),10))},sO=function(t){if(!t)throw new Error("No node provided");return t.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(t.tagName)||TF(t))&&!iO(t)?0:t.tabIndex},kF=function(t,r){var n=sO(t);return n<0&&r&&!iO(t)?0:n},NF=function(t,r){return t.tabIndex===r.tabIndex?t.documentOrder-r.documentOrder:t.tabIndex-r.tabIndex},lO=function(t){return t.tagName==="INPUT"},jF=function(t){return lO(t)&&t.type==="hidden"},EF=function(t){var r=t.tagName==="DETAILS"&&Array.prototype.slice.apply(t.children).some(function(n){return n.tagName==="SUMMARY"});return r},AF=function(t,r){for(var n=0;nsummary:first-of-type"),i=a?t.parentElement:t;if(ou.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof o=="function"){for(var l=t;t;){var f=t.parentElement,g=Ud(t);if(f&&!f.shadowRoot&&o(f)===!0)return uw(t);t.assignedSlot?t=t.assignedSlot:!f&&g!==t.ownerDocument?t=g.host:t=f}t=l}if(DF(t))return!t.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return uw(t);return!1},FF=function(t){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(t.tagName))for(var r=t.parentElement;r;){if(r.tagName==="FIELDSET"&&r.disabled){for(var n=0;n=0)},VF=function e(t){var r=[],n=[];return t.forEach(function(o,a){var i=!!o.scopeParent,l=i?o.scopeParent:o,f=kF(l,i),g=i?e(o.candidates):l;f===0?i?r.push.apply(r,g):r.push(l):n.push({documentOrder:a,tabIndex:f,item:o,isScope:i,content:g})}),n.sort(NF).reduce(function(o,a){return a.isScope?o.push.apply(o,a.content):o.push(a.content),o},[]).concat(r)},$d=function(t,r){r=r||{};var n;return r.getShadowRoot?n=OF([t],r.includeContainer,{filter:cw.bind(null,r),flatten:!1,getShadowRoot:r.getShadowRoot,shadowRootFilter:BF}):n=PF(t,r.includeContainer,cw.bind(null,r)),VF(n)};const uO=["top","right","bottom","left"],dw=["start","end"],fw=uO.reduce((e,t)=>e.concat(t,t+"-"+dw[0],t+"-"+dw[1]),[]),uo=Math.min,qr=Math.max,Hd=Math.round,gc=Math.floor,Po=e=>({x:e,y:e}),UF={left:"right",right:"left",bottom:"top",top:"bottom"},WF={start:"end",end:"start"};function Kg(e,t,r){return qr(e,uo(t,r))}function co(e,t){return typeof e=="function"?e(t):e}function Pn(e){return e.split("-")[0]}function so(e){return e.split("-")[1]}function Xm(e){return e==="x"?"y":"x"}function Zm(e){return e==="y"?"height":"width"}const $F=new Set(["top","bottom"]);function no(e){return $F.has(Pn(e))?"y":"x"}function Jm(e){return Xm(no(e))}function cO(e,t,r){r===void 0&&(r=!1);const n=so(e),o=Jm(e),a=Zm(o);let i=o==="x"?n===(r?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=qd(i)),[i,qd(i)]}function HF(e){const t=qd(e);return[Gd(e),t,Gd(t)]}function Gd(e){return e.replace(/start|end/g,t=>WF[t])}const pw=["left","right"],hw=["right","left"],GF=["top","bottom"],qF=["bottom","top"];function KF(e,t,r){switch(e){case"top":case"bottom":return r?t?hw:pw:t?pw:hw;case"left":case"right":return t?GF:qF;default:return[]}}function YF(e,t,r,n){const o=so(e);let a=KF(Pn(e),r==="start",n);return o&&(a=a.map(i=>i+"-"+o),t&&(a=a.concat(a.map(Gd)))),a}function qd(e){return e.replace(/left|right|bottom|top/g,t=>UF[t])}function QF(e){return{top:0,right:0,bottom:0,left:0,...e}}function eb(e){return typeof e!="number"?QF(e):{top:e,right:e,bottom:e,left:e}}function vs(e){const{x:t,y:r,width:n,height:o}=e;return{width:n,height:o,top:r,left:t,right:t+n,bottom:r+o,x:t,y:r}}function gw(e,t,r){let{reference:n,floating:o}=e;const a=no(t),i=Jm(t),l=Zm(i),f=Pn(t),g=a==="y",m=n.x+n.width/2-o.width/2,S=n.y+n.height/2-o.height/2,O=n[l]/2-o[l]/2;let T;switch(f){case"top":T={x:m,y:n.y-o.height};break;case"bottom":T={x:m,y:n.y+n.height};break;case"right":T={x:n.x+n.width,y:S};break;case"left":T={x:n.x-o.width,y:S};break;default:T={x:n.x,y:n.y}}switch(so(t)){case"start":T[i]-=O*(r&&g?-1:1);break;case"end":T[i]+=O*(r&&g?-1:1);break}return T}const XF=async(e,t,r)=>{const{placement:n="bottom",strategy:o="absolute",middleware:a=[],platform:i}=r,l=a.filter(Boolean),f=await(i.isRTL==null?void 0:i.isRTL(t));let g=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:m,y:S}=gw(g,n,f),O=n,T={},C=0;for(let w=0;w({name:"arrow",options:e,async fn(t){const{x:r,y:n,placement:o,rects:a,platform:i,elements:l,middlewareData:f}=t,{element:g,padding:m=0}=co(e,t)||{};if(g==null)return{};const S=eb(m),O={x:r,y:n},T=Jm(o),C=Zm(T),w=await i.getDimensions(g),b=T==="y",d=b?"top":"left",s=b?"bottom":"right",c=b?"clientHeight":"clientWidth",u=a.reference[C]+a.reference[T]-O[T]-a.floating[C],h=O[T]-a.reference[T],y=await(i.getOffsetParent==null?void 0:i.getOffsetParent(g));let x=y?y[c]:0;(!x||!await(i.isElement==null?void 0:i.isElement(y)))&&(x=l.floating[c]||a.floating[C]);const E=u/2-h/2,k=x/2-w[C]/2-1,j=uo(S[d],k),A=uo(S[s],k),M=j,D=x-w[C]-A,L=x/2-w[C]/2+E,z=Kg(M,L,D),H=!f.arrow&&so(o)!=null&&L!==z&&a.reference[C]/2-(Lso(o)===e),...r.filter(o=>so(o)!==e)]:r.filter(o=>Pn(o)===o)).filter(o=>e?so(o)===e||(t?Gd(o)!==o:!1):!0)}const e6=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var r,n,o;const{rects:a,middlewareData:i,placement:l,platform:f,elements:g}=t,{crossAxis:m=!1,alignment:S,allowedPlacements:O=fw,autoAlignment:T=!0,...C}=co(e,t),w=S!==void 0||O===fw?JF(S||null,T,O):O,b=await ui(t,C),d=((r=i.autoPlacement)==null?void 0:r.index)||0,s=w[d];if(s==null)return{};const c=cO(s,a,await(f.isRTL==null?void 0:f.isRTL(g.floating)));if(l!==s)return{reset:{placement:w[0]}};const u=[b[Pn(s)],b[c[0]],b[c[1]]],h=[...((n=i.autoPlacement)==null?void 0:n.overflows)||[],{placement:s,overflows:u}],y=w[d+1];if(y)return{data:{index:d+1,overflows:h},reset:{placement:y}};const x=h.map(j=>{const A=so(j.placement);return[j.placement,A&&m?j.overflows.slice(0,2).reduce((M,D)=>M+D,0):j.overflows[0],j.overflows]}).sort((j,A)=>j[1]-A[1]),k=((o=x.filter(j=>j[2].slice(0,so(j[0])?2:3).every(A=>A<=0))[0])==null?void 0:o[0])||x[0][0];return k!==l?{data:{index:d+1,overflows:h},reset:{placement:k}}:{}}}},t6=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r,n;const{placement:o,middlewareData:a,rects:i,initialPlacement:l,platform:f,elements:g}=t,{mainAxis:m=!0,crossAxis:S=!0,fallbackPlacements:O,fallbackStrategy:T="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:w=!0,...b}=co(e,t);if((r=a.arrow)!=null&&r.alignmentOffset)return{};const d=Pn(o),s=no(l),c=Pn(l)===l,u=await(f.isRTL==null?void 0:f.isRTL(g.floating)),h=O||(c||!w?[qd(l)]:HF(l)),y=C!=="none";!O&&y&&h.push(...YF(l,w,C,u));const x=[l,...h],E=await ui(t,b),k=[];let j=((n=a.flip)==null?void 0:n.overflows)||[];if(m&&k.push(E[d]),S){const L=cO(o,i,u);k.push(E[L[0]],E[L[1]])}if(j=[...j,{placement:o,overflows:k}],!k.every(L=>L<=0)){var A,M;const L=(((A=a.flip)==null?void 0:A.index)||0)+1,z=x[L];if(z&&(!(S==="alignment"?s!==no(z):!1)||j.every(G=>no(G.placement)===s?G.overflows[0]>0:!0)))return{data:{index:L,overflows:j},reset:{placement:z}};let H=(M=j.filter(Y=>Y.overflows[0]<=0).sort((Y,G)=>Y.overflows[1]-G.overflows[1])[0])==null?void 0:M.placement;if(!H)switch(T){case"bestFit":{var D;const Y=(D=j.filter(G=>{if(y){const B=no(G.placement);return B===s||B==="y"}return!0}).map(G=>[G.placement,G.overflows.filter(B=>B>0).reduce((B,$)=>B+$,0)]).sort((G,B)=>G[1]-B[1])[0])==null?void 0:D[0];Y&&(H=Y);break}case"initialPlacement":H=l;break}if(o!==H)return{reset:{placement:H}}}return{}}}};function mw(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function bw(e){return uO.some(t=>e[t]>=0)}const r6=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:r}=t,{strategy:n="referenceHidden",...o}=co(e,t);switch(n){case"referenceHidden":{const a=await ui(t,{...o,elementContext:"reference"}),i=mw(a,r.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:bw(i)}}}case"escaped":{const a=await ui(t,{...o,altBoundary:!0}),i=mw(a,r.floating);return{data:{escapedOffsets:i,escaped:bw(i)}}}default:return{}}}}};function dO(e){const t=uo(...e.map(a=>a.left)),r=uo(...e.map(a=>a.top)),n=qr(...e.map(a=>a.right)),o=qr(...e.map(a=>a.bottom));return{x:t,y:r,width:n-t,height:o-r}}function n6(e){const t=e.slice().sort((o,a)=>o.y-a.y),r=[];let n=null;for(let o=0;on.height/2?r.push([a]):r[r.length-1].push(a),n=a}return r.map(o=>vs(dO(o)))}const o6=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){const{placement:r,elements:n,rects:o,platform:a,strategy:i}=t,{padding:l=2,x:f,y:g}=co(e,t),m=Array.from(await(a.getClientRects==null?void 0:a.getClientRects(n.reference))||[]),S=n6(m),O=vs(dO(m)),T=eb(l);function C(){if(S.length===2&&S[0].left>S[1].right&&f!=null&&g!=null)return S.find(b=>f>b.left-T.left&&fb.top-T.top&&g=2){if(no(r)==="y"){const j=S[0],A=S[S.length-1],M=Pn(r)==="top",D=j.top,L=A.bottom,z=M?j.left:A.left,H=M?j.right:A.right,Y=H-z,G=L-D;return{top:D,bottom:L,left:z,right:H,width:Y,height:G,x:z,y:D}}const b=Pn(r)==="left",d=qr(...S.map(j=>j.right)),s=uo(...S.map(j=>j.left)),c=S.filter(j=>b?j.left===s:j.right===d),u=c[0].top,h=c[c.length-1].bottom,y=s,x=d,E=x-y,k=h-u;return{top:u,bottom:h,left:y,right:x,width:E,height:k,x:y,y:u}}return O}const w=await a.getElementRects({reference:{getBoundingClientRect:C},floating:n.floating,strategy:i});return o.reference.x!==w.reference.x||o.reference.y!==w.reference.y||o.reference.width!==w.reference.width||o.reference.height!==w.reference.height?{reset:{rects:w}}:{}}}},fO=new Set(["left","top"]);async function a6(e,t){const{placement:r,platform:n,elements:o}=e,a=await(n.isRTL==null?void 0:n.isRTL(o.floating)),i=Pn(r),l=so(r),f=no(r)==="y",g=fO.has(i)?-1:1,m=a&&f?-1:1,S=co(t,e);let{mainAxis:O,crossAxis:T,alignmentAxis:C}=typeof S=="number"?{mainAxis:S,crossAxis:0,alignmentAxis:null}:{mainAxis:S.mainAxis||0,crossAxis:S.crossAxis||0,alignmentAxis:S.alignmentAxis};return l&&typeof C=="number"&&(T=l==="end"?C*-1:C),f?{x:T*m,y:O*g}:{x:O*g,y:T*m}}const i6=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var r,n;const{x:o,y:a,placement:i,middlewareData:l}=t,f=await a6(t,e);return i===((r=l.offset)==null?void 0:r.placement)&&(n=l.arrow)!=null&&n.alignmentOffset?{}:{x:o+f.x,y:a+f.y,data:{...f,placement:i}}}}},s6=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:n,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:b=>{let{x:d,y:s}=b;return{x:d,y:s}}},...f}=co(e,t),g={x:r,y:n},m=await ui(t,f),S=no(Pn(o)),O=Xm(S);let T=g[O],C=g[S];if(a){const b=O==="y"?"top":"left",d=O==="y"?"bottom":"right",s=T+m[b],c=T-m[d];T=Kg(s,T,c)}if(i){const b=S==="y"?"top":"left",d=S==="y"?"bottom":"right",s=C+m[b],c=C-m[d];C=Kg(s,C,c)}const w=l.fn({...t,[O]:T,[S]:C});return{...w,data:{x:w.x-r,y:w.y-n,enabled:{[O]:a,[S]:i}}}}}},l6=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:r,y:n,placement:o,rects:a,middlewareData:i}=t,{offset:l=0,mainAxis:f=!0,crossAxis:g=!0}=co(e,t),m={x:r,y:n},S=no(o),O=Xm(S);let T=m[O],C=m[S];const w=co(l,t),b=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(f){const c=O==="y"?"height":"width",u=a.reference[O]-a.floating[c]+b.mainAxis,h=a.reference[O]+a.reference[c]-b.mainAxis;Th&&(T=h)}if(g){var d,s;const c=O==="y"?"width":"height",u=fO.has(Pn(o)),h=a.reference[S]-a.floating[c]+(u&&((d=i.offset)==null?void 0:d[S])||0)+(u?0:b.crossAxis),y=a.reference[S]+a.reference[c]+(u?0:((s=i.offset)==null?void 0:s[S])||0)-(u?b.crossAxis:0);Cy&&(C=y)}return{[O]:T,[S]:C}}}},u6=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var r,n;const{placement:o,rects:a,platform:i,elements:l}=t,{apply:f=()=>{},...g}=co(e,t),m=await ui(t,g),S=Pn(o),O=so(o),T=no(o)==="y",{width:C,height:w}=a.floating;let b,d;S==="top"||S==="bottom"?(b=S,d=O===(await(i.isRTL==null?void 0:i.isRTL(l.floating))?"start":"end")?"left":"right"):(d=S,b=O==="end"?"top":"bottom");const s=w-m.top-m.bottom,c=C-m.left-m.right,u=uo(w-m[b],s),h=uo(C-m[d],c),y=!t.middlewareData.shift;let x=u,E=h;if((r=t.middlewareData.shift)!=null&&r.enabled.x&&(E=c),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(x=s),y&&!O){const j=qr(m.left,0),A=qr(m.right,0),M=qr(m.top,0),D=qr(m.bottom,0);T?E=C-2*(j!==0||A!==0?j+A:qr(m.left,m.right)):x=w-2*(M!==0||D!==0?M+D:qr(m.top,m.bottom))}await f({...t,availableWidth:E,availableHeight:x});const k=await i.getDimensions(l.floating);return C!==k.width||w!==k.height?{reset:{rects:!0}}:{}}}};function Ff(){return typeof window<"u"}function Es(e){return pO(e)?(e.nodeName||"").toLowerCase():"#document"}function Cn(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function jo(e){var t;return(t=(pO(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function pO(e){return Ff()?e instanceof Node||e instanceof Cn(e).Node:!1}function fo(e){return Ff()?e instanceof Element||e instanceof Cn(e).Element:!1}function ko(e){return Ff()?e instanceof HTMLElement||e instanceof Cn(e).HTMLElement:!1}function vw(e){return!Ff()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Cn(e).ShadowRoot}const c6=new Set(["inline","contents"]);function _u(e){const{overflow:t,overflowX:r,overflowY:n,display:o}=po(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!c6.has(o)}const d6=new Set(["table","td","th"]);function f6(e){return d6.has(Es(e))}const p6=[":popover-open",":modal"];function zf(e){return p6.some(t=>{try{return e.matches(t)}catch{return!1}})}const h6=["transform","translate","scale","rotate","perspective"],g6=["transform","translate","scale","rotate","perspective","filter"],m6=["paint","layout","strict","content"];function tb(e){const t=rb(),r=fo(e)?po(e):e;return h6.some(n=>r[n]?r[n]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!t&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!t&&(r.filter?r.filter!=="none":!1)||g6.some(n=>(r.willChange||"").includes(n))||m6.some(n=>(r.contain||"").includes(n))}function b6(e){let t=Aa(e);for(;ko(t)&&!ys(t);){if(tb(t))return t;if(zf(t))return null;t=Aa(t)}return null}function rb(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const v6=new Set(["html","body","#document"]);function ys(e){return v6.has(Es(e))}function po(e){return Cn(e).getComputedStyle(e)}function Bf(e){return fo(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Aa(e){if(Es(e)==="html")return e;const t=e.assignedSlot||e.parentNode||vw(e)&&e.host||jo(e);return vw(t)?t.host:t}function hO(e){const t=Aa(e);return ys(t)?e.ownerDocument?e.ownerDocument.body:e.body:ko(t)&&_u(t)?t:hO(t)}function zo(e,t,r){var n;t===void 0&&(t=[]),r===void 0&&(r=!0);const o=hO(e),a=o===((n=e.ownerDocument)==null?void 0:n.body),i=Cn(o);if(a){const l=Yg(i);return t.concat(i,i.visualViewport||[],_u(o)?o:[],l&&r?zo(l):[])}return t.concat(o,zo(o,[],r))}function Yg(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function gO(e){const t=po(e);let r=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const o=ko(e),a=o?e.offsetWidth:r,i=o?e.offsetHeight:n,l=Hd(r)!==a||Hd(n)!==i;return l&&(r=a,n=i),{width:r,height:n,$:l}}function nb(e){return fo(e)?e:e.contextElement}function os(e){const t=nb(e);if(!ko(t))return Po(1);const r=t.getBoundingClientRect(),{width:n,height:o,$:a}=gO(t);let i=(a?Hd(r.width):r.width)/n,l=(a?Hd(r.height):r.height)/o;return(!i||!Number.isFinite(i))&&(i=1),(!l||!Number.isFinite(l))&&(l=1),{x:i,y:l}}const y6=Po(0);function mO(e){const t=Cn(e);return!rb()||!t.visualViewport?y6:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function x6(e,t,r){return t===void 0&&(t=!1),!r||t&&r!==Cn(e)?!1:t}function ci(e,t,r,n){t===void 0&&(t=!1),r===void 0&&(r=!1);const o=e.getBoundingClientRect(),a=nb(e);let i=Po(1);t&&(n?fo(n)&&(i=os(n)):i=os(e));const l=x6(a,r,n)?mO(a):Po(0);let f=(o.left+l.x)/i.x,g=(o.top+l.y)/i.y,m=o.width/i.x,S=o.height/i.y;if(a){const O=Cn(a),T=n&&fo(n)?Cn(n):n;let C=O,w=Yg(C);for(;w&&n&&T!==C;){const b=os(w),d=w.getBoundingClientRect(),s=po(w),c=d.left+(w.clientLeft+parseFloat(s.paddingLeft))*b.x,u=d.top+(w.clientTop+parseFloat(s.paddingTop))*b.y;f*=b.x,g*=b.y,m*=b.x,S*=b.y,f+=c,g+=u,C=Cn(w),w=Yg(C)}}return vs({width:m,height:S,x:f,y:g})}function Vf(e,t){const r=Bf(e).scrollLeft;return t?t.left+r:ci(jo(e)).left+r}function bO(e,t){const r=e.getBoundingClientRect(),n=r.left+t.scrollLeft-Vf(e,r),o=r.top+t.scrollTop;return{x:n,y:o}}function w6(e){let{elements:t,rect:r,offsetParent:n,strategy:o}=e;const a=o==="fixed",i=jo(n),l=t?zf(t.floating):!1;if(n===i||l&&a)return r;let f={scrollLeft:0,scrollTop:0},g=Po(1);const m=Po(0),S=ko(n);if((S||!S&&!a)&&((Es(n)!=="body"||_u(i))&&(f=Bf(n)),ko(n))){const T=ci(n);g=os(n),m.x=T.x+n.clientLeft,m.y=T.y+n.clientTop}const O=i&&!S&&!a?bO(i,f):Po(0);return{width:r.width*g.x,height:r.height*g.y,x:r.x*g.x-f.scrollLeft*g.x+m.x+O.x,y:r.y*g.y-f.scrollTop*g.y+m.y+O.y}}function _6(e){return Array.from(e.getClientRects())}function S6(e){const t=jo(e),r=Bf(e),n=e.ownerDocument.body,o=qr(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),a=qr(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let i=-r.scrollLeft+Vf(e);const l=-r.scrollTop;return po(n).direction==="rtl"&&(i+=qr(t.clientWidth,n.clientWidth)-o),{width:o,height:a,x:i,y:l}}const yw=25;function C6(e,t){const r=Cn(e),n=jo(e),o=r.visualViewport;let a=n.clientWidth,i=n.clientHeight,l=0,f=0;if(o){a=o.width,i=o.height;const m=rb();(!m||m&&t==="fixed")&&(l=o.offsetLeft,f=o.offsetTop)}const g=Vf(n);if(g<=0){const m=n.ownerDocument,S=m.body,O=getComputedStyle(S),T=m.compatMode==="CSS1Compat"&&parseFloat(O.marginLeft)+parseFloat(O.marginRight)||0,C=Math.abs(n.clientWidth-S.clientWidth-T);C<=yw&&(a-=C)}else g<=yw&&(a+=g);return{width:a,height:i,x:l,y:f}}const T6=new Set(["absolute","fixed"]);function P6(e,t){const r=ci(e,!0,t==="fixed"),n=r.top+e.clientTop,o=r.left+e.clientLeft,a=ko(e)?os(e):Po(1),i=e.clientWidth*a.x,l=e.clientHeight*a.y,f=o*a.x,g=n*a.y;return{width:i,height:l,x:f,y:g}}function xw(e,t,r){let n;if(t==="viewport")n=C6(e,r);else if(t==="document")n=S6(jo(e));else if(fo(t))n=P6(t,r);else{const o=mO(e);n={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return vs(n)}function vO(e,t){const r=Aa(e);return r===t||!fo(r)||ys(r)?!1:po(r).position==="fixed"||vO(r,t)}function O6(e,t){const r=t.get(e);if(r)return r;let n=zo(e,[],!1).filter(l=>fo(l)&&Es(l)!=="body"),o=null;const a=po(e).position==="fixed";let i=a?Aa(e):e;for(;fo(i)&&!ys(i);){const l=po(i),f=tb(i);!f&&l.position==="fixed"&&(o=null),(a?!f&&!o:!f&&l.position==="static"&&!!o&&T6.has(o.position)||_u(i)&&!f&&vO(e,i))?n=n.filter(m=>m!==i):o=l,i=Aa(i)}return t.set(e,n),n}function k6(e){let{element:t,boundary:r,rootBoundary:n,strategy:o}=e;const i=[...r==="clippingAncestors"?zf(t)?[]:O6(t,this._c):[].concat(r),n],l=i[0],f=i.reduce((g,m)=>{const S=xw(t,m,o);return g.top=qr(S.top,g.top),g.right=uo(S.right,g.right),g.bottom=uo(S.bottom,g.bottom),g.left=qr(S.left,g.left),g},xw(t,l,o));return{width:f.right-f.left,height:f.bottom-f.top,x:f.left,y:f.top}}function N6(e){const{width:t,height:r}=gO(e);return{width:t,height:r}}function j6(e,t,r){const n=ko(t),o=jo(t),a=r==="fixed",i=ci(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const f=Po(0);function g(){f.x=Vf(o)}if(n||!n&&!a)if((Es(t)!=="body"||_u(o))&&(l=Bf(t)),n){const T=ci(t,!0,a,t);f.x=T.x+t.clientLeft,f.y=T.y+t.clientTop}else o&&g();a&&!n&&o&&g();const m=o&&!n&&!a?bO(o,l):Po(0),S=i.left+l.scrollLeft-f.x-m.x,O=i.top+l.scrollTop-f.y-m.y;return{x:S,y:O,width:i.width,height:i.height}}function fh(e){return po(e).position==="static"}function ww(e,t){if(!ko(e)||po(e).position==="fixed")return null;if(t)return t(e);let r=e.offsetParent;return jo(e)===r&&(r=r.ownerDocument.body),r}function yO(e,t){const r=Cn(e);if(zf(e))return r;if(!ko(e)){let o=Aa(e);for(;o&&!ys(o);){if(fo(o)&&!fh(o))return o;o=Aa(o)}return r}let n=ww(e,t);for(;n&&f6(n)&&fh(n);)n=ww(n,t);return n&&ys(n)&&fh(n)&&!tb(n)?r:n||b6(e)||r}const E6=async function(e){const t=this.getOffsetParent||yO,r=this.getDimensions,n=await r(e.floating);return{reference:j6(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function A6(e){return po(e).direction==="rtl"}const xO={convertOffsetParentRelativeRectToViewportRelativeRect:w6,getDocumentElement:jo,getClippingRect:k6,getOffsetParent:yO,getElementRects:E6,getClientRects:_6,getDimensions:N6,getScale:os,isElement:fo,isRTL:A6};function wO(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function R6(e,t){let r=null,n;const o=jo(e);function a(){var l;clearTimeout(n),(l=r)==null||l.disconnect(),r=null}function i(l,f){l===void 0&&(l=!1),f===void 0&&(f=1),a();const g=e.getBoundingClientRect(),{left:m,top:S,width:O,height:T}=g;if(l||t(),!O||!T)return;const C=gc(S),w=gc(o.clientWidth-(m+O)),b=gc(o.clientHeight-(S+T)),d=gc(m),c={rootMargin:-C+"px "+-w+"px "+-b+"px "+-d+"px",threshold:qr(0,uo(1,f))||1};let u=!0;function h(y){const x=y[0].intersectionRatio;if(x!==f){if(!u)return i();x?i(!1,x):n=setTimeout(()=>{i(!1,1e-7)},1e3)}x===1&&!wO(g,e.getBoundingClientRect())&&i(),u=!1}try{r=new IntersectionObserver(h,{...c,root:o.ownerDocument})}catch{r=new IntersectionObserver(h,c)}r.observe(e)}return i(!0),a}function M6(e,t,r,n){n===void 0&&(n={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:f=!1}=n,g=nb(e),m=o||a?[...g?zo(g):[],...zo(t)]:[];m.forEach(d=>{o&&d.addEventListener("scroll",r,{passive:!0}),a&&d.addEventListener("resize",r)});const S=g&&l?R6(g,r):null;let O=-1,T=null;i&&(T=new ResizeObserver(d=>{let[s]=d;s&&s.target===g&&T&&(T.unobserve(t),cancelAnimationFrame(O),O=requestAnimationFrame(()=>{var c;(c=T)==null||c.observe(t)})),r()}),g&&!f&&T.observe(g),T.observe(t));let C,w=f?ci(e):null;f&&b();function b(){const d=ci(e);w&&!wO(w,d)&&r(),w=d,C=requestAnimationFrame(b)}return r(),()=>{var d;m.forEach(s=>{o&&s.removeEventListener("scroll",r),a&&s.removeEventListener("resize",r)}),S==null||S(),(d=T)==null||d.disconnect(),T=null,f&&cancelAnimationFrame(C)}}const qc=ui,_O=i6,I6=e6,D6=s6,L6=t6,F6=u6,z6=r6,_w=ZF,B6=o6,V6=l6,SO=(e,t,r)=>{const n=new Map,o={platform:xO,...r},a={...o.platform,_c:n};return XF(e,t,{...o,platform:a})},U6=e=>{const{element:t,padding:r}=e;function n(o){return Object.prototype.hasOwnProperty.call(o,"current")}return{name:"arrow",options:e,fn(o){return n(t)?t.current!=null?_w({element:t.current,padding:r}).fn(o):{}:t?_w({element:t,padding:r}).fn(o):{}}}};var Kc=typeof document<"u"?P.useLayoutEffect:P.useEffect;function Kd(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let r,n,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(r=e.length,r!=t.length)return!1;for(n=r;n--!==0;)if(!Kd(e[n],t[n]))return!1;return!0}if(o=Object.keys(e),r=o.length,r!==Object.keys(t).length)return!1;for(n=r;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[n]))return!1;for(n=r;n--!==0;){const a=o[n];if(!(a==="_owner"&&e.$$typeof)&&!Kd(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function Sw(e){const t=P.useRef(e);return Kc(()=>{t.current=e}),t}function W6(e){e===void 0&&(e={});const{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:o,whileElementsMounted:a,open:i}=e,[l,f]=P.useState({x:null,y:null,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[g,m]=P.useState(n);Kd(g,n)||m(n);const S=P.useRef(null),O=P.useRef(null),T=P.useRef(l),C=Sw(a),w=Sw(o),[b,d]=P.useState(null),[s,c]=P.useState(null),u=P.useCallback(j=>{S.current!==j&&(S.current=j,d(j))},[]),h=P.useCallback(j=>{O.current!==j&&(O.current=j,c(j))},[]),y=P.useCallback(()=>{if(!S.current||!O.current)return;const j={placement:t,strategy:r,middleware:g};w.current&&(j.platform=w.current),SO(S.current,O.current,j).then(A=>{const M={...A,isPositioned:!0};x.current&&!Kd(T.current,M)&&(T.current=M,$o.flushSync(()=>{f(M)}))})},[g,t,r,w]);Kc(()=>{i===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(j=>({...j,isPositioned:!1})))},[i]);const x=P.useRef(!1);Kc(()=>(x.current=!0,()=>{x.current=!1}),[]),Kc(()=>{if(b&&s){if(C.current)return C.current(b,s,y);y()}},[b,s,y,C]);const E=P.useMemo(()=>({reference:S,floating:O,setReference:u,setFloating:h}),[u,h]),k=P.useMemo(()=>({reference:b,floating:s}),[b,s]);return P.useMemo(()=>({...l,update:y,refs:E,elements:k,reference:u,floating:h}),[l,y,E,k,u,h])}var ur=typeof document<"u"?P.useLayoutEffect:P.useEffect;let ph=!1,$6=0;const Cw=()=>"floating-ui-"+$6++;function H6(){const[e,t]=P.useState(()=>ph?Cw():void 0);return ur(()=>{e==null&&t(Cw())},[]),P.useEffect(()=>{ph||(ph=!0)},[]),e}const G6=u0["useId".toString()],au=G6||H6;function CO(){const e=new Map;return{emit(t,r){var n;(n=e.get(t))==null||n.forEach(o=>o(r))},on(t,r){e.set(t,[...e.get(t)||[],r])},off(t,r){e.set(t,(e.get(t)||[]).filter(n=>n!==r))}}}const TO=P.createContext(null),PO=P.createContext(null),As=()=>{var e;return((e=P.useContext(TO))==null?void 0:e.id)||null},xi=()=>P.useContext(PO),q6=e=>{const t=au(),r=xi(),n=As(),o=e||n;return ur(()=>{const a={id:t,parentId:o};return r==null||r.addNode(a),()=>{r==null||r.removeNode(a)}},[r,t,o]),t},K6=e=>{let{children:t,id:r}=e;const n=As();return P.createElement(TO.Provider,{value:P.useMemo(()=>({id:r,parentId:n}),[r,n])},t)},Y6=e=>{let{children:t}=e;const r=P.useRef([]),n=P.useCallback(i=>{r.current=[...r.current,i]},[]),o=P.useCallback(i=>{r.current=r.current.filter(l=>l!==i)},[]),a=P.useState(()=>CO())[0];return P.createElement(PO.Provider,{value:P.useMemo(()=>({nodesRef:r,addNode:n,removeNode:o,events:a}),[r,n,o,a])},t)};function dn(e){return(e==null?void 0:e.ownerDocument)||document}function ob(){const e=navigator.userAgentData;return e!=null&&e.platform?e.platform:navigator.platform}function OO(){const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(t=>{let{brand:r,version:n}=t;return r+"/"+n}).join(" "):navigator.userAgent}function ab(e){return dn(e).defaultView||window}function Bn(e){return e?e instanceof ab(e).Element:!1}function di(e){return e?e instanceof ab(e).HTMLElement:!1}function Q6(e){if(typeof ShadowRoot>"u")return!1;const t=ab(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function kO(e){if(e.mozInputSource===0&&e.isTrusted)return!0;const t=/Android/i;return(t.test(ob())||t.test(OO()))&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function NO(e){return e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType!=="mouse"||e.width<1&&e.height<1&&e.pressure===0&&e.detail===0}function Qg(){return/apple/i.test(navigator.vendor)}function jO(){return ob().toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints}function Yd(e,t){const r=["mouse","pen"];return t||r.push("",void 0),r.includes(e)}function Vn(e){const t=P.useRef(e);return ur(()=>{t.current=e}),t}const Tw="data-floating-ui-safe-polygon";function Yc(e,t,r){return r&&!Yd(r)?0:typeof e=="number"?e:e==null?void 0:e[t]}const X6=function(e,t){let{enabled:r=!0,delay:n=0,handleClose:o=null,mouseOnly:a=!1,restMs:i=0,move:l=!0}=t===void 0?{}:t;const{open:f,onOpenChange:g,dataRef:m,events:S,elements:{domReference:O,floating:T},refs:C}=e,w=xi(),b=As(),d=Vn(o),s=Vn(n),c=P.useRef(),u=P.useRef(),h=P.useRef(),y=P.useRef(),x=P.useRef(!0),E=P.useRef(!1),k=P.useRef(()=>{}),j=P.useCallback(()=>{var L;const z=(L=m.current.openEvent)==null?void 0:L.type;return(z==null?void 0:z.includes("mouse"))&&z!=="mousedown"},[m]);P.useEffect(()=>{if(!r)return;function L(){clearTimeout(u.current),clearTimeout(y.current),x.current=!0}return S.on("dismiss",L),()=>{S.off("dismiss",L)}},[r,S]),P.useEffect(()=>{if(!r||!d.current||!f)return;function L(){j()&&g(!1)}const z=dn(T).documentElement;return z.addEventListener("mouseleave",L),()=>{z.removeEventListener("mouseleave",L)}},[T,f,g,r,d,m,j]);const A=P.useCallback(function(L){L===void 0&&(L=!0);const z=Yc(s.current,"close",c.current);z&&!h.current?(clearTimeout(u.current),u.current=setTimeout(()=>g(!1),z)):L&&(clearTimeout(u.current),g(!1))},[s,g]),M=P.useCallback(()=>{k.current(),h.current=void 0},[]),D=P.useCallback(()=>{if(E.current){const L=dn(C.floating.current).body;L.style.pointerEvents="",L.removeAttribute(Tw),E.current=!1}},[C]);return P.useEffect(()=>{if(!r)return;function L(){return m.current.openEvent?["click","mousedown"].includes(m.current.openEvent.type):!1}function z(G){if(clearTimeout(u.current),x.current=!1,a&&!Yd(c.current)||i>0&&Yc(s.current,"open")===0)return;m.current.openEvent=G;const B=Yc(s.current,"open",c.current);B?u.current=setTimeout(()=>{g(!0)},B):g(!0)}function H(G){if(L())return;k.current();const B=dn(T);if(clearTimeout(y.current),d.current){clearTimeout(u.current),h.current=d.current({...e,tree:w,x:G.clientX,y:G.clientY,onClose(){D(),M(),A()}});const $=h.current;B.addEventListener("mousemove",$),k.current=()=>{B.removeEventListener("mousemove",$)};return}A()}function Y(G){L()||d.current==null||d.current({...e,tree:w,x:G.clientX,y:G.clientY,onClose(){M(),A()}})(G)}if(Bn(O)){const G=O;return f&&G.addEventListener("mouseleave",Y),T==null||T.addEventListener("mouseleave",Y),l&&G.addEventListener("mousemove",z,{once:!0}),G.addEventListener("mouseenter",z),G.addEventListener("mouseleave",H),()=>{f&&G.removeEventListener("mouseleave",Y),T==null||T.removeEventListener("mouseleave",Y),l&&G.removeEventListener("mousemove",z),G.removeEventListener("mouseenter",z),G.removeEventListener("mouseleave",H)}}},[O,T,r,e,a,i,l,A,M,D,g,f,w,s,d,m]),ur(()=>{var L;if(r&&f&&(L=d.current)!=null&&L.__options.blockPointerEvents&&j()){const Y=dn(T).body;if(Y.setAttribute(Tw,""),Y.style.pointerEvents="none",E.current=!0,Bn(O)&&T){var z,H;const G=O,B=w==null||(z=w.nodesRef.current.find($=>$.id===b))==null||(H=z.context)==null?void 0:H.elements.floating;return B&&(B.style.pointerEvents=""),G.style.pointerEvents="auto",T.style.pointerEvents="auto",()=>{G.style.pointerEvents="",T.style.pointerEvents=""}}}},[r,f,b,T,O,w,d,m,j]),ur(()=>{f||(c.current=void 0,M(),D())},[f,M,D]),P.useEffect(()=>()=>{M(),clearTimeout(u.current),clearTimeout(y.current),D()},[r,M,D]),P.useMemo(()=>{if(!r)return{};function L(z){c.current=z.pointerType}return{reference:{onPointerDown:L,onPointerEnter:L,onMouseMove(){f||i===0||(clearTimeout(y.current),y.current=setTimeout(()=>{x.current||g(!0)},i))}},floating:{onMouseEnter(){clearTimeout(u.current)},onMouseLeave(){S.emit("dismiss",{type:"mouseLeave",data:{returnFocus:!1}}),A(!1)}}}},[S,r,i,f,g,A])},EO=P.createContext({delay:0,initialDelay:0,timeoutMs:0,currentId:null,setCurrentId:()=>{},setState:()=>{},isInstantPhase:!1}),AO=()=>P.useContext(EO),Z6=e=>{let{children:t,delay:r,timeoutMs:n=0}=e;const[o,a]=P.useReducer((f,g)=>({...f,...g}),{delay:r,timeoutMs:n,initialDelay:r,currentId:null,isInstantPhase:!1}),i=P.useRef(null),l=P.useCallback(f=>{a({currentId:f})},[]);return ur(()=>{o.currentId?i.current===null?i.current=o.currentId:a({isInstantPhase:!0}):(a({isInstantPhase:!1}),i.current=null)},[o.currentId]),P.createElement(EO.Provider,{value:P.useMemo(()=>({...o,setState:a,setCurrentId:l}),[o,a,l])},t)},J6=(e,t)=>{let{open:r,onOpenChange:n}=e,{id:o}=t;const{currentId:a,setCurrentId:i,initialDelay:l,setState:f,timeoutMs:g}=AO();P.useEffect(()=>{a&&(f({delay:{open:1,close:Yc(l,"close")}}),a!==o&&n(!1))},[o,n,f,a,l]),P.useEffect(()=>{function m(){n(!1),f({delay:l,currentId:null})}if(!r&&a===o)if(g){const S=window.setTimeout(m,g);return()=>{clearTimeout(S)}}else m()},[r,f,a,o,n,l,g]),P.useEffect(()=>{r&&i(o)},[r,i,o])};function iu(){return iu=Object.assign||function(e){for(var t=1;te==null?void 0:e.focus({preventScroll:r});o?a():Pw=requestAnimationFrame(a)}function ez(e,t){var r;let n=[],o=(r=e.find(a=>a.id===t))==null?void 0:r.parentId;for(;o;){const a=e.find(i=>i.id===o);o=a==null?void 0:a.parentId,a&&(n=n.concat(a))}return n}function El(e,t){let r=e.filter(o=>{var a;return o.parentId===t&&((a=o.context)==null?void 0:a.open)})||[],n=r;for(;n.length;)n=e.filter(o=>{var a;return(a=n)==null?void 0:a.some(i=>{var l;return o.parentId===i.id&&((l=o.context)==null?void 0:l.open)})})||[],r=r.concat(n);return r}function Uf(e){return"composedPath"in e?e.composedPath()[0]:e.target}const tz="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function RO(e){return di(e)&&e.matches(tz)}function In(e){e.preventDefault(),e.stopPropagation()}const Qd=()=>({getShadowRoot:!0,displayCheck:typeof ResizeObserver=="function"&&ResizeObserver.toString().includes("[native code]")?"full":"none"});function MO(e,t){const r=$d(e,Qd());t==="prev"&&r.reverse();const n=r.indexOf(fi(dn(e)));return r.slice(n+1)[0]}function IO(){return MO(document.body,"next")}function DO(){return MO(document.body,"prev")}function Al(e,t){const r=t||e.currentTarget,n=e.relatedTarget;return!n||!sn(r,n)}function rz(e){$d(e,Qd()).forEach(r=>{r.dataset.tabindex=r.getAttribute("tabindex")||"",r.setAttribute("tabindex","-1")})}function nz(e){e.querySelectorAll("[data-tabindex]").forEach(r=>{const n=r.dataset.tabindex;delete r.dataset.tabindex,n?r.setAttribute("tabindex",n):r.removeAttribute("tabindex")})}const oz=u0["useInsertionEffect".toString()],az=oz||(e=>e());function Rs(e){const t=P.useRef(()=>{});return az(()=>{t.current=e}),P.useCallback(function(){for(var r=arguments.length,n=new Array(r),o=0;o(Qg()&&a("button"),document.addEventListener("keydown",Ow),()=>{document.removeEventListener("keydown",Ow)}),[]),P.createElement("span",iu({},t,{ref:r,tabIndex:0,role:o,"aria-hidden":o?void 0:!0,"data-floating-ui-focus-guard":"",style:ib,onFocus:i=>{Qg()&&jO()&&!iz(i)?(i.persist(),sb=window.setTimeout(()=>{n(i)},50)):n(i)}}))}),LO=P.createContext(null),FO=function(e){let{id:t,enabled:r=!0}=e===void 0?{}:e;const[n,o]=P.useState(null),a=au(),i=zO();return ur(()=>{if(!r)return;const l=t?document.getElementById(t):null;if(l)l.setAttribute("data-floating-ui-portal",""),o(l);else{const f=document.createElement("div");t!==""&&(f.id=t||a),f.setAttribute("data-floating-ui-portal",""),o(f);const g=(i==null?void 0:i.portalNode)||document.body;return g.appendChild(f),()=>{g.removeChild(f)}}},[t,i,a,r]),n},sz=e=>{let{children:t,id:r,root:n=null,preserveTabOrder:o=!0}=e;const a=FO({id:r,enabled:!n}),[i,l]=P.useState(null),f=P.useRef(null),g=P.useRef(null),m=P.useRef(null),S=P.useRef(null),O=!!i&&!i.modal&&!!(n||a)&&o;return P.useEffect(()=>{if(!a||!o||i!=null&&i.modal)return;function T(C){a&&Al(C)&&(C.type==="focusin"?nz:rz)(a)}return a.addEventListener("focusin",T,!0),a.addEventListener("focusout",T,!0),()=>{a.removeEventListener("focusin",T,!0),a.removeEventListener("focusout",T,!0)}},[a,o,i==null?void 0:i.modal]),P.createElement(LO.Provider,{value:P.useMemo(()=>({preserveTabOrder:o,beforeOutsideRef:f,afterOutsideRef:g,beforeInsideRef:m,afterInsideRef:S,portalNode:a,setFocusManagerState:l}),[o,a])},O&&a&&P.createElement(Xd,{"data-type":"outside",ref:f,onFocus:T=>{if(Al(T,a)){var C;(C=m.current)==null||C.focus()}else{const w=DO()||(i==null?void 0:i.refs.domReference.current);w==null||w.focus()}}}),O&&a&&P.createElement("span",{"aria-owns":a.id,style:ib}),n?$o.createPortal(t,n):a?$o.createPortal(t,a):null,O&&a&&P.createElement(Xd,{"data-type":"outside",ref:g,onFocus:T=>{if(Al(T,a)){var C;(C=S.current)==null||C.focus()}else{const w=IO()||(i==null?void 0:i.refs.domReference.current);w==null||w.focus(),i!=null&&i.closeOnFocusOut&&(i==null||i.onOpenChange(!1))}}}))},zO=()=>P.useContext(LO),lz=P.forwardRef(function(t,r){return P.createElement("button",iu({},t,{type:"button",ref:r,tabIndex:-1,style:ib}))});function uz(e){let{context:t,children:r,order:n=["content"],guards:o=!0,initialFocus:a=0,returnFocus:i=!0,modal:l=!0,visuallyHiddenDismiss:f=!1,closeOnFocusOut:g=!0}=e;const{refs:m,nodeId:S,onOpenChange:O,events:T,dataRef:C,elements:{domReference:w,floating:b}}=t,d=Vn(n),s=xi(),c=zO(),[u,h]=P.useState(null),y=typeof a=="number"&&a<0,x=P.useRef(null),E=P.useRef(null),k=P.useRef(!1),j=P.useRef(null),A=P.useRef(!1),M=c!=null,D=w&&w.getAttribute("role")==="combobox"&&RO(w),L=P.useCallback(function(G){return G===void 0&&(G=b),G?$d(G,Qd()):[]},[b]),z=P.useCallback(G=>{const B=L(G);return d.current.map($=>w&&$==="reference"?w:b&&$==="floating"?b:B).filter(Boolean).flat()},[w,b,d,L]);P.useEffect(()=>{if(!l)return;function G($){if($.key==="Tab"){L().length===0&&!D&&In($);const q=z(),ee=Uf($);d.current[0]==="reference"&&ee===w&&(In($),$.shiftKey?ua(q[q.length-1]):ua(q[1])),d.current[1]==="floating"&&ee===b&&$.shiftKey&&(In($),ua(q[0]))}}const B=dn(b);return B.addEventListener("keydown",G),()=>{B.removeEventListener("keydown",G)}},[w,b,l,d,m,D,L,z]),P.useEffect(()=>{if(!g)return;function G(){A.current=!0,setTimeout(()=>{A.current=!1})}function B($){const q=$.relatedTarget,ee=!(sn(w,q)||sn(b,q)||sn(q,b)||sn(c==null?void 0:c.portalNode,q)||q!=null&&q.hasAttribute("data-floating-ui-focus-guard")||s&&(El(s.nodesRef.current,S).find(oe=>{var ge,fe;return sn((ge=oe.context)==null?void 0:ge.elements.floating,q)||sn((fe=oe.context)==null?void 0:fe.elements.domReference,q)})||ez(s.nodesRef.current,S).find(oe=>{var ge,fe;return((ge=oe.context)==null?void 0:ge.elements.floating)===q||((fe=oe.context)==null?void 0:fe.elements.domReference)===q})));q&&ee&&!A.current&&q!==j.current&&(k.current=!0,setTimeout(()=>O(!1)))}if(b&&di(w))return w.addEventListener("focusout",B),w.addEventListener("pointerdown",G),!l&&b.addEventListener("focusout",B),()=>{w.removeEventListener("focusout",B),w.removeEventListener("pointerdown",G),!l&&b.removeEventListener("focusout",B)}},[w,b,l,S,s,c,O,g]),P.useEffect(()=>{var G;const B=Array.from((c==null||(G=c.portalNode)==null?void 0:G.querySelectorAll("[data-floating-ui-portal]"))||[]);function $(){return[x.current,E.current].filter(Boolean)}if(b&&l){const q=[b,...B,...$()],ee=SF(d.current.includes("reference")||D?q.concat(w||[]):q);return()=>{ee()}}},[w,b,l,d,c,D]),P.useEffect(()=>{if(l&&!o&&b){const G=[],B=Qd(),$=$d(dn(b).body,B),q=z(),ee=$.filter(oe=>!q.includes(oe));return ee.forEach((oe,ge)=>{G[ge]=oe.getAttribute("tabindex"),oe.setAttribute("tabindex","-1")}),()=>{ee.forEach((oe,ge)=>{const fe=G[ge];fe==null?oe.removeAttribute("tabindex"):oe.setAttribute("tabindex",fe)})}}},[b,l,o,z]),ur(()=>{if(!b)return;const G=dn(b);let B=i,$=!1;const q=fi(G),ee=C.current;j.current=q;const oe=z(b),ge=(typeof a=="number"?oe[a]:a.current)||b;!y&&ua(ge,{preventScroll:ge===b});function fe(re){if(re.type==="escapeKey"&&m.domReference.current&&(j.current=m.domReference.current),["referencePress","escapeKey"].includes(re.type))return;const be=re.data.returnFocus;typeof be=="object"?(B=!0,$=be.preventScroll):B=be}return T.on("dismiss",fe),()=>{if(T.off("dismiss",fe),sn(b,fi(G))&&m.domReference.current&&(j.current=m.domReference.current),B&&di(j.current)&&!k.current)if(!m.domReference.current||A.current)ua(j.current,{cancelPrevious:!1,preventScroll:$});else{var re;ee.__syncReturnFocus=!0,(re=j.current)==null||re.focus({preventScroll:$}),setTimeout(()=>{delete ee.__syncReturnFocus})}}},[b,z,a,i,C,m,T,y]),ur(()=>{if(c)return c.setFocusManagerState({...t,modal:l,closeOnFocusOut:g}),()=>{c.setFocusManagerState(null)}},[c,l,g,t]),ur(()=>{if(y||!b)return;function G(){h(L().length)}if(G(),typeof MutationObserver=="function"){const B=new MutationObserver(G);return B.observe(b,{childList:!0,subtree:!0}),()=>{B.disconnect()}}},[b,L,y,m]);const H=o&&(M||l)&&!D;function Y(G){return f&&l?P.createElement(lz,{ref:G==="start"?x:E,onClick:()=>O(!1)},typeof f=="string"?f:"Dismiss"):null}return P.createElement(P.Fragment,null,H&&P.createElement(Xd,{"data-type":"inside",ref:c==null?void 0:c.beforeInsideRef,onFocus:G=>{if(l){const $=z();ua(n[0]==="reference"?$[0]:$[$.length-1])}else if(c!=null&&c.preserveTabOrder&&c.portalNode)if(k.current=!1,Al(G,c.portalNode)){const $=IO()||w;$==null||$.focus()}else{var B;(B=c.beforeOutsideRef.current)==null||B.focus()}}}),D?null:Y("start"),P.cloneElement(r,u===0||n.includes("floating")?{tabIndex:0}:{}),Y("end"),H&&P.createElement(Xd,{"data-type":"inside",ref:c==null?void 0:c.afterInsideRef,onFocus:G=>{if(l)ua(z()[0]);else if(c!=null&&c.preserveTabOrder&&c.portalNode)if(k.current=!0,Al(G,c.portalNode)){const $=DO()||w;$==null||$.focus()}else{var B;(B=c.afterOutsideRef.current)==null||B.focus()}}}))}const mc="data-floating-ui-scroll-lock",cz=P.forwardRef(function(t,r){let{lockScroll:n=!1,...o}=t;return ur(()=>{var a,i;if(!n||document.body.hasAttribute(mc))return;document.body.setAttribute(mc,"");const g=Math.round(document.documentElement.getBoundingClientRect().left)+document.documentElement.scrollLeft?"paddingLeft":"paddingRight",m=window.innerWidth-document.documentElement.clientWidth;if(!/iP(hone|ad|od)|iOS/.test(ob()))return Object.assign(document.body.style,{overflow:"hidden",[g]:m+"px"}),()=>{document.body.removeAttribute(mc),Object.assign(document.body.style,{overflow:"",[g]:""})};const S=((a=window.visualViewport)==null?void 0:a.offsetLeft)||0,O=((i=window.visualViewport)==null?void 0:i.offsetTop)||0,T=window.pageXOffset,C=window.pageYOffset;return Object.assign(document.body.style,{position:"fixed",overflow:"hidden",top:-(C-Math.floor(O))+"px",left:-(T-Math.floor(S))+"px",right:"0",[g]:m+"px"}),()=>{Object.assign(document.body.style,{position:"",overflow:"",top:"",left:"",right:"",[g]:""}),document.body.removeAttribute(mc),window.scrollTo(T,C)}},[n]),P.createElement("div",iu({ref:r},o,{style:{position:"fixed",overflow:"auto",top:0,right:0,bottom:0,left:0,...o.style}}))});function kw(e){return di(e.target)&&e.target.tagName==="BUTTON"}function Nw(e){return RO(e)}const dz=function(e,t){let{open:r,onOpenChange:n,dataRef:o,elements:{domReference:a}}=e,{enabled:i=!0,event:l="click",toggle:f=!0,ignoreMouse:g=!1,keyboardHandlers:m=!0}=t===void 0?{}:t;const S=P.useRef();return P.useMemo(()=>i?{reference:{onPointerDown(O){S.current=O.pointerType},onMouseDown(O){O.button===0&&(Yd(S.current,!0)&&g||l!=="click"&&(r?f&&(!o.current.openEvent||o.current.openEvent.type==="mousedown")&&n(!1):(O.preventDefault(),n(!0)),o.current.openEvent=O.nativeEvent))},onClick(O){if(!o.current.__syncReturnFocus){if(l==="mousedown"&&S.current){S.current=void 0;return}Yd(S.current,!0)&&g||(r?f&&(!o.current.openEvent||o.current.openEvent.type==="click")&&n(!1):n(!0),o.current.openEvent=O.nativeEvent)}},onKeyDown(O){S.current=void 0,m&&(kw(O)||(O.key===" "&&!Nw(a)&&O.preventDefault(),O.key==="Enter"&&(r?f&&n(!1):n(!0))))},onKeyUp(O){m&&(kw(O)||Nw(a)||O.key===" "&&(r?f&&n(!1):n(!0)))}}}:{},[i,o,l,g,m,a,f,r,n])};function Qc(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);const r=e;return r.target!=null&&t.contains(r.target)}const fz={pointerdown:"onPointerDown",mousedown:"onMouseDown",click:"onClick"},pz={pointerdown:"onPointerDownCapture",mousedown:"onMouseDownCapture",click:"onClickCapture"},hz=function(e){var t,r;return e===void 0&&(e=!0),{escapeKeyBubbles:typeof e=="boolean"?e:(t=e.escapeKey)!=null?t:!0,outsidePressBubbles:typeof e=="boolean"?e:(r=e.outsidePress)!=null?r:!0}},gz=function(e,t){let{open:r,onOpenChange:n,events:o,nodeId:a,elements:{reference:i,domReference:l,floating:f},dataRef:g}=e,{enabled:m=!0,escapeKey:S=!0,outsidePress:O=!0,outsidePressEvent:T="pointerdown",referencePress:C=!1,referencePressEvent:w="pointerdown",ancestorScroll:b=!1,bubbles:d=!0}=t===void 0?{}:t;const s=xi(),c=As()!=null,u=Rs(typeof O=="function"?O:()=>!1),h=typeof O=="function"?u:O,y=P.useRef(!1),{escapeKeyBubbles:x,outsidePressBubbles:E}=hz(d);return P.useEffect(()=>{if(!r||!m)return;g.current.__escapeKeyBubbles=x,g.current.__outsidePressBubbles=E;function k(L){if(L.key==="Escape"){const z=s?El(s.nodesRef.current,a):[];if(z.length>0){let H=!0;if(z.forEach(Y=>{var G;if((G=Y.context)!=null&&G.open&&!Y.context.dataRef.current.__escapeKeyBubbles){H=!1;return}}),!H)return}o.emit("dismiss",{type:"escapeKey",data:{returnFocus:{preventScroll:!1}}}),n(!1)}}function j(L){const z=y.current;if(y.current=!1,z||typeof h=="function"&&!h(L))return;const H=Uf(L);if(di(H)&&f){const B=f.ownerDocument.defaultView||window,$=H.scrollWidth>H.clientWidth,q=H.scrollHeight>H.clientHeight;let ee=q&&L.offsetX>H.clientWidth;if(q&&B.getComputedStyle(H).direction==="rtl"&&(ee=L.offsetX<=H.offsetWidth-H.clientWidth),ee||$&&L.offsetY>H.clientHeight)return}const Y=s&&El(s.nodesRef.current,a).some(B=>{var $;return Qc(L,($=B.context)==null?void 0:$.elements.floating)});if(Qc(L,f)||Qc(L,l)||Y)return;const G=s?El(s.nodesRef.current,a):[];if(G.length>0){let B=!0;if(G.forEach($=>{var q;if((q=$.context)!=null&&q.open&&!$.context.dataRef.current.__outsidePressBubbles){B=!1;return}}),!B)return}o.emit("dismiss",{type:"outsidePress",data:{returnFocus:c?{preventScroll:!0}:kO(L)||NO(L)}}),n(!1)}function A(){n(!1)}const M=dn(f);S&&M.addEventListener("keydown",k),h&&M.addEventListener(T,j);let D=[];return b&&(Bn(l)&&(D=zo(l)),Bn(f)&&(D=D.concat(zo(f))),!Bn(i)&&i&&i.contextElement&&(D=D.concat(zo(i.contextElement)))),D=D.filter(L=>{var z;return L!==((z=M.defaultView)==null?void 0:z.visualViewport)}),D.forEach(L=>{L.addEventListener("scroll",A,{passive:!0})}),()=>{S&&M.removeEventListener("keydown",k),h&&M.removeEventListener(T,j),D.forEach(L=>{L.removeEventListener("scroll",A)})}},[g,f,l,i,S,h,T,o,s,a,r,n,b,m,x,E,c]),P.useEffect(()=>{y.current=!1},[h,T]),P.useMemo(()=>m?{reference:{[fz[w]]:()=>{C&&(o.emit("dismiss",{type:"referencePress",data:{returnFocus:!1}}),n(!1))}},floating:{[pz[T]]:()=>{y.current=!0}}}:{},[m,o,C,T,w,n])},mz=function(e,t){let{open:r,onOpenChange:n,dataRef:o,events:a,refs:i,elements:{floating:l,domReference:f}}=e,{enabled:g=!0,keyboardOnly:m=!0}=t===void 0?{}:t;const S=P.useRef(""),O=P.useRef(!1),T=P.useRef();return P.useEffect(()=>{if(!g)return;const w=dn(l).defaultView||window;function b(){!r&&di(f)&&f===fi(dn(f))&&(O.current=!0)}return w.addEventListener("blur",b),()=>{w.removeEventListener("blur",b)}},[l,f,r,g]),P.useEffect(()=>{if(!g)return;function C(w){(w.type==="referencePress"||w.type==="escapeKey")&&(O.current=!0)}return a.on("dismiss",C),()=>{a.off("dismiss",C)}},[a,g]),P.useEffect(()=>()=>{clearTimeout(T.current)},[]),P.useMemo(()=>g?{reference:{onPointerDown(C){let{pointerType:w}=C;S.current=w,O.current=!!(w&&m)},onMouseLeave(){O.current=!1},onFocus(C){var w;O.current||C.type==="focus"&&((w=o.current.openEvent)==null?void 0:w.type)==="mousedown"&&o.current.openEvent&&Qc(o.current.openEvent,f)||(o.current.openEvent=C.nativeEvent,n(!0))},onBlur(C){O.current=!1;const w=C.relatedTarget,b=Bn(w)&&w.hasAttribute("data-floating-ui-focus-guard")&&w.getAttribute("data-type")==="outside";T.current=setTimeout(()=>{sn(i.floating.current,w)||sn(f,w)||b||n(!1)})}}}:{},[g,m,f,i,o,n])};let jw=!1;const lb="ArrowUp",Wf="ArrowDown",xs="ArrowLeft",Su="ArrowRight";function bc(e,t,r){return Math.floor(e/t)!==r}function ll(e,t){return t<0||t>=e.current.length}function Hr(e,t){let{startingIndex:r=-1,decrement:n=!1,disabledIndices:o,amount:a=1}=t===void 0?{}:t;const i=e.current;let l=r;do{var f,g;l=l+(n?-a:a)}while(l>=0&&l<=i.length-1&&(o?o.includes(l):i[l]==null||(f=i[l])!=null&&f.hasAttribute("disabled")||((g=i[l])==null?void 0:g.getAttribute("aria-disabled"))==="true"));return l}function $f(e,t,r){switch(e){case"vertical":return t;case"horizontal":return r;default:return t||r}}function Ew(e,t){return $f(t,e===lb||e===Wf,e===xs||e===Su)}function hh(e,t,r){return $f(t,e===Wf,r?e===xs:e===Su)||e==="Enter"||e==" "||e===""}function bz(e,t,r){return $f(t,r?e===xs:e===Su,e===Wf)}function vz(e,t,r){return $f(t,r?e===Su:e===xs,e===lb)}function gh(e,t){return Hr(e,{disabledIndices:t})}function Aw(e,t){return Hr(e,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}const yz=function(e,t){let{open:r,onOpenChange:n,refs:o,elements:{domReference:a}}=e,{listRef:i,activeIndex:l,onNavigate:f=()=>{},enabled:g=!0,selectedIndex:m=null,allowEscape:S=!1,loop:O=!1,nested:T=!1,rtl:C=!1,virtual:w=!1,focusItemOnOpen:b="auto",focusItemOnHover:d=!0,openOnArrowKeyDown:s=!0,disabledIndices:c=void 0,orientation:u="vertical",cols:h=1,scrollItemIntoView:y=!0}=t===void 0?{listRef:{current:[]},activeIndex:null,onNavigate:()=>{}}:t;const x=As(),E=xi(),k=Rs(f),j=P.useRef(b),A=P.useRef(m??-1),M=P.useRef(null),D=P.useRef(!0),L=P.useRef(k),z=P.useRef(r),H=P.useRef(!1),Y=P.useRef(!1),G=Vn(c),B=Vn(r),$=Vn(y),[q,ee]=P.useState(),oe=P.useCallback(function(re,be,he){he===void 0&&(he=!1);const pe=re.current[be.current];w?ee(pe==null?void 0:pe.id):ua(pe,{preventScroll:!0,sync:jO()&&Qg()?jw||H.current:!1}),requestAnimationFrame(()=>{const ve=$.current;ve&&pe&&(he||!D.current)&&(pe.scrollIntoView==null||pe.scrollIntoView(typeof ve=="boolean"?{block:"nearest",inline:"nearest"}:ve))})},[w,$]);ur(()=>{document.createElement("div").focus({get preventScroll(){return jw=!0,!1}})},[]),ur(()=>{g&&(r?j.current&&m!=null&&(Y.current=!0,k(m)):z.current&&(A.current=-1,L.current(null)))},[g,r,m,k]),ur(()=>{if(g&&r)if(l==null){if(H.current=!1,m!=null)return;z.current&&(A.current=-1,oe(i,A)),!z.current&&j.current&&(M.current!=null||j.current===!0&&M.current==null)&&(A.current=M.current==null||hh(M.current,u,C)||T?gh(i,G.current):Aw(i,G.current),k(A.current))}else ll(i,l)||(A.current=l,oe(i,A,Y.current),Y.current=!1)},[g,r,l,m,T,i,u,C,k,oe,G]),ur(()=>{if(g&&z.current&&!r){var re,be;const he=E==null||(re=E.nodesRef.current.find(pe=>pe.id===x))==null||(be=re.context)==null?void 0:be.elements.floating;he&&!sn(he,fi(dn(he)))&&he.focus({preventScroll:!0})}},[g,r,E,x]),ur(()=>{M.current=null,L.current=k,z.current=r});const ge=l!=null,fe=P.useMemo(()=>{function re(he){if(!r)return;const pe=i.current.indexOf(he);pe!==-1&&k(pe)}return{onFocus(he){let{currentTarget:pe}=he;re(pe)},onClick:he=>{let{currentTarget:pe}=he;return pe.focus({preventScroll:!0})},...d&&{onMouseMove(he){let{currentTarget:pe}=he;re(pe)},onPointerLeave(){if(D.current&&(A.current=-1,oe(i,A),$o.flushSync(()=>k(null)),!w)){var he;(he=o.floating.current)==null||he.focus({preventScroll:!0})}}}}},[r,o,oe,d,i,k,w]);return P.useMemo(()=>{if(!g)return{};const re=G.current;function be(me){if(D.current=!1,H.current=!0,!B.current&&me.currentTarget===o.floating.current)return;if(T&&vz(me.key,u,C)){In(me),n(!1),di(a)&&a.focus();return}const ke=A.current,Fe=gh(i,re),Pe=Aw(i,re);if(me.key==="Home"&&(A.current=Fe,k(A.current)),me.key==="End"&&(A.current=Pe,k(A.current)),h>1){const te=A.current;if(me.key===lb){if(In(me),te===-1)A.current=Pe;else if(A.current=Hr(i,{startingIndex:te,amount:h,decrement:!0,disabledIndices:re}),O&&(te-hOe?Be:Be-h}ll(i,A.current)&&(A.current=te),k(A.current)}if(me.key===Wf&&(In(me),te===-1?A.current=Fe:(A.current=Hr(i,{startingIndex:te,amount:h,disabledIndices:re}),O&&te+h>Pe&&(A.current=Hr(i,{startingIndex:te%h-h,amount:h,disabledIndices:re}))),ll(i,A.current)&&(A.current=te),k(A.current)),u==="both"){const Oe=Math.floor(te/h);me.key===Su&&(In(me),te%h!==h-1?(A.current=Hr(i,{startingIndex:te,disabledIndices:re}),O&&bc(A.current,h,Oe)&&(A.current=Hr(i,{startingIndex:te-te%h-1,disabledIndices:re}))):O&&(A.current=Hr(i,{startingIndex:te-te%h-1,disabledIndices:re})),bc(A.current,h,Oe)&&(A.current=te)),me.key===xs&&(In(me),te%h!==0?(A.current=Hr(i,{startingIndex:te,disabledIndices:re,decrement:!0}),O&&bc(A.current,h,Oe)&&(A.current=Hr(i,{startingIndex:te+(h-te%h),decrement:!0,disabledIndices:re}))):O&&(A.current=Hr(i,{startingIndex:te+(h-te%h),decrement:!0,disabledIndices:re})),bc(A.current,h,Oe)&&(A.current=te));const $e=Math.floor(Pe/h)===Oe;ll(i,A.current)&&(O&&$e?A.current=me.key===xs?Pe:Hr(i,{startingIndex:te-te%h-1,disabledIndices:re}):A.current=te),k(A.current);return}}if(Ew(me.key,u)){if(In(me),r&&!w&&fi(me.currentTarget.ownerDocument)===me.currentTarget){A.current=hh(me.key,u,C)?Fe:Pe,k(A.current);return}hh(me.key,u,C)?O?A.current=ke>=Pe?S&&ke!==i.current.length?-1:Fe:Hr(i,{startingIndex:ke,disabledIndices:re}):A.current=Math.min(Pe,Hr(i,{startingIndex:ke,disabledIndices:re})):O?A.current=ke<=Fe?S&&ke!==-1?i.current.length:Pe:Hr(i,{startingIndex:ke,decrement:!0,disabledIndices:re}):A.current=Math.max(Fe,Hr(i,{startingIndex:ke,decrement:!0,disabledIndices:re})),ll(i,A.current)?k(null):k(A.current)}}function he(me){b==="auto"&&kO(me.nativeEvent)&&(j.current=!0)}function pe(me){j.current=b,b==="auto"&&NO(me.nativeEvent)&&(j.current=!0)}const ve=w&&r&&ge&&{"aria-activedescendant":q};return{reference:{...ve,onKeyDown(me){D.current=!1;const ke=me.key.indexOf("Arrow")===0;if(w&&r)return be(me);if(!r&&!s&&ke)return;if((ke||me.key==="Enter"||me.key===" "||me.key==="")&&(M.current=me.key),T){bz(me.key,u,C)&&(In(me),r?(A.current=gh(i,re),k(A.current)):n(!0));return}Ew(me.key,u)&&(m!=null&&(A.current=m),In(me),!r&&s?n(!0):be(me),r&&k(A.current))},onFocus(){r&&k(null)},onPointerDown:pe,onMouseDown:he,onClick:he},floating:{"aria-orientation":u==="both"?void 0:u,...ve,onKeyDown:be,onPointerMove(){D.current=!0}},item:fe}},[a,o,q,G,B,i,g,u,C,w,r,ge,T,m,s,S,h,O,b,k,n,fe])};function xz(e){return P.useMemo(()=>e.every(t=>t==null)?null:t=>{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})},e)}const wz=function(e,t){let{open:r}=e,{enabled:n=!0,role:o="dialog"}=t===void 0?{}:t;const a=au(),i=au();return P.useMemo(()=>{const l={id:a,role:o};return n?o==="tooltip"?{reference:{"aria-describedby":r?a:void 0},floating:l}:{reference:{"aria-expanded":r?"true":"false","aria-haspopup":o==="alertdialog"?"dialog":o,"aria-controls":r?a:void 0,...o==="listbox"&&{role:"combobox"},...o==="menu"&&{id:i}},floating:{...l,...o==="menu"&&{"aria-labelledby":i}}}:{}},[n,o,r,a,i])},Rw=e=>e.replace(/[A-Z]+(?![a-z])|[A-Z]/g,(t,r)=>(r?"-":"")+t.toLowerCase());function _z(e,t){const[r,n]=P.useState(e);return e&&!r&&n(!0),P.useEffect(()=>{if(!e){const o=setTimeout(()=>n(!1),t);return()=>clearTimeout(o)}},[e,t]),r}function BO(e,t){let{open:r,elements:{floating:n}}=e,{duration:o=250}=t===void 0?{}:t;const i=(typeof o=="number"?o:o.close)||0,[l,f]=P.useState(!1),[g,m]=P.useState("unmounted"),S=_z(r,i);return ur(()=>{l&&!S&&m("unmounted")},[l,S]),ur(()=>{if(n)if(r){m("initial");const O=requestAnimationFrame(()=>{m("open")});return()=>{cancelAnimationFrame(O)}}else f(!0),m("close")},[r,n]),{isMounted:S,status:g}}function Sz(e,t){let{initial:r={opacity:0},open:n,close:o,common:a,duration:i=250}=t===void 0?{}:t;const l=e.placement,f=l.split("-")[0],[g,m]=P.useState({}),{isMounted:S,status:O}=BO(e,{duration:i}),T=Vn(r),C=Vn(n),w=Vn(o),b=Vn(a),d=typeof i=="number",s=(d?i:i.open)||0,c=(d?i:i.close)||0;return ur(()=>{const u={side:f,placement:l},h=T.current,y=w.current,x=C.current,E=b.current,k=typeof h=="function"?h(u):h,j=typeof y=="function"?y(u):y,A=typeof E=="function"?E(u):E,M=(typeof x=="function"?x(u):x)||Object.keys(k).reduce((D,L)=>(D[L]="",D),{});if(O==="initial"&&m(D=>({transitionProperty:D.transitionProperty,...A,...k})),O==="open"&&m({transitionProperty:Object.keys(M).map(Rw).join(","),transitionDuration:s+"ms",...A,...M}),O==="close"){const D=j||k;m({transitionProperty:Object.keys(D).map(Rw).join(","),transitionDuration:c+"ms",...A,...D})}},[f,l,c,w,T,C,b,s,O]),{isMounted:S,styles:g}}const Cz=function(e,t){var r;let{open:n,dataRef:o}=e,{listRef:a,activeIndex:i,onMatch:l=()=>{},enabled:f=!0,findMatch:g=null,resetMs:m=1e3,ignoreKeys:S=[],selectedIndex:O=null}=t===void 0?{listRef:{current:[]},activeIndex:null}:t;const T=P.useRef(),C=P.useRef(""),w=P.useRef((r=O??i)!=null?r:-1),b=P.useRef(null),d=Rs(l),s=Vn(g),c=Vn(S);return ur(()=>{n&&(clearTimeout(T.current),b.current=null,C.current="")},[n]),ur(()=>{if(n&&C.current===""){var u;w.current=(u=O??i)!=null?u:-1}},[n,O,i]),P.useMemo(()=>{if(!f)return{};function u(h){const y=Uf(h.nativeEvent);if(Bn(y)&&(fi(dn(y))!==h.currentTarget&&y.closest('[role="dialog"],[role="menu"],[role="listbox"],[role="tree"],[role="grid"]')!==h.currentTarget))return;C.current.length>0&&C.current[0]!==" "&&(o.current.typing=!0,h.key===" "&&In(h));const x=a.current;if(x==null||c.current.includes(h.key)||h.key.length!==1||h.ctrlKey||h.metaKey||h.altKey)return;x.every(D=>{var L,z;return D?((L=D[0])==null?void 0:L.toLocaleLowerCase())!==((z=D[1])==null?void 0:z.toLocaleLowerCase()):!0})&&C.current===h.key&&(C.current="",w.current=b.current),C.current+=h.key,clearTimeout(T.current),T.current=setTimeout(()=>{C.current="",w.current=b.current,o.current.typing=!1},m);const k=w.current,j=[...x.slice((k||0)+1),...x.slice(0,(k||0)+1)],A=s.current?s.current(j,C.current):j.find(D=>(D==null?void 0:D.toLocaleLowerCase().indexOf(C.current.toLocaleLowerCase()))===0),M=A?x.indexOf(A):-1;M!==-1&&(d(M),b.current=M)}return{reference:{onKeyDown:u},floating:{onKeyDown:u}}},[f,o,a,m,c,s,d])};function Mw(e,t){return{...e,rects:{...e.rects,floating:{...e.rects.floating,height:t}}}}const Tz=e=>({name:"inner",options:e,async fn(t){const{listRef:r,overflowRef:n,onFallbackChange:o,offset:a=0,index:i=0,minItemsVisible:l=4,referenceOverflowThreshold:f=0,scrollRef:g,...m}=e,{rects:S,elements:{floating:O}}=t,T=r.current[i];if(!T)return{};const C={...t,...await _O(-T.offsetTop-S.reference.height/2-T.offsetHeight/2-a).fn(t)},w=(g==null?void 0:g.current)||O,b=await qc(Mw(C,w.scrollHeight),m),d=await qc(C,{...m,elementContext:"reference"}),s=Math.max(0,b.top),c=C.y+s,u=Math.max(0,w.scrollHeight-s-Math.max(0,b.bottom));return w.style.maxHeight=u+"px",w.scrollTop=s,o&&(w.offsetHeight=-f||d.bottom>=-f?$o.flushSync(()=>o(!0)):$o.flushSync(()=>o(!1))),n&&(n.current=await qc(Mw({...C,y:c},w.offsetHeight),m)),{y:c}}}),Pz=(e,t)=>{let{open:r,elements:n}=e,{enabled:o=!0,overflowRef:a,scrollRef:i,onChange:l}=t;const f=Rs(l),g=P.useRef(!1),m=P.useRef(null),S=P.useRef(null);return P.useEffect(()=>{if(!o)return;function O(C){if(C.ctrlKey||!T||a.current==null)return;const w=C.deltaY,b=a.current.top>=-.5,d=a.current.bottom>=-.5,s=T.scrollHeight-T.clientHeight,c=w<0?-1:1,u=w<0?"max":"min";T.scrollHeight<=T.clientHeight||(!b&&w>0||!d&&w<0?(C.preventDefault(),$o.flushSync(()=>{f(h=>h+Math[u](w,s*c))})):/firefox/i.test(OO())&&(T.scrollTop+=w))}const T=(i==null?void 0:i.current)||n.floating;if(r&&T)return T.addEventListener("wheel",O),requestAnimationFrame(()=>{m.current=T.scrollTop,a.current!=null&&(S.current={...a.current})}),()=>{m.current=null,S.current=null,T.removeEventListener("wheel",O)}},[o,r,n.floating,a,i,f]),P.useMemo(()=>o?{floating:{onKeyDown(){g.current=!0},onWheel(){g.current=!1},onPointerMove(){g.current=!1},onScroll(){const O=(i==null?void 0:i.current)||n.floating;if(!(!a.current||!O||!g.current)){if(m.current!==null){const T=O.scrollTop-m.current;(a.current.bottom<-.5&&T<-1||a.current.top<-.5&&T>1)&&$o.flushSync(()=>f(C=>C+T))}requestAnimationFrame(()=>{m.current=O.scrollTop})}}}}:{},[o,a,n.floating,i,f])};function Oz(e,t){const[r,n]=e;let o=!1;const a=t.length;for(let i=0,l=a-1;i=n!=S>=n&&r<=(m-f)*(n-g)/(S-g)+f&&(o=!o)}return o}function kz(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function Nz(e){let{restMs:t=0,buffer:r=.5,blockPointerEvents:n=!1}=e===void 0?{}:e,o,a=!1,i=!1;const l=f=>{let{x:g,y:m,placement:S,elements:O,onClose:T,nodeId:C,tree:w}=f;return function(d){function s(){clearTimeout(o),T()}if(clearTimeout(o),!O.domReference||!O.floating||S==null||g==null||m==null)return;const{clientX:c,clientY:u}=d,h=[c,u],y=Uf(d),x=d.type==="mouseleave",E=sn(O.floating,y),k=sn(O.domReference,y),j=O.domReference.getBoundingClientRect(),A=O.floating.getBoundingClientRect(),M=S.split("-")[0],D=g>A.right-A.width/2,L=m>A.bottom-A.height/2,z=kz(h,j);if(E&&(i=!0),k&&(i=!1),k&&!x){i=!0;return}if(x&&Bn(d.relatedTarget)&&sn(O.floating,d.relatedTarget)||w&&El(w.nodesRef.current,C).some(B=>{let{context:$}=B;return $==null?void 0:$.open}))return;if(M==="top"&&m>=j.bottom-1||M==="bottom"&&m<=j.top+1||M==="left"&&g>=j.right-1||M==="right"&&g<=j.left+1)return s();let H=[];switch(M){case"top":H=[[A.left,j.top+1],[A.left,A.bottom-1],[A.right,A.bottom-1],[A.right,j.top+1]],a=c>=A.left&&c<=A.right&&u>=A.top&&u<=j.top+1;break;case"bottom":H=[[A.left,A.top+1],[A.left,j.bottom-1],[A.right,j.bottom-1],[A.right,A.top+1]],a=c>=A.left&&c<=A.right&&u>=j.bottom-1&&u<=A.bottom;break;case"left":H=[[A.right-1,A.bottom],[A.right-1,A.top],[j.left+1,A.top],[j.left+1,A.bottom]],a=c>=A.left&&c<=j.left+1&&u>=A.top&&u<=A.bottom;break;case"right":H=[[j.right-1,A.bottom],[j.right-1,A.top],[A.left+1,A.top],[A.left+1,A.bottom]],a=c>=j.right-1&&c<=A.right&&u>=A.top&&u<=A.bottom;break}function Y(B){let[$,q]=B;const ee=A.width>j.width,oe=A.height>j.height;switch(M){case"top":{const ge=[ee?$+r/2:D?$+r*4:$-r*4,q+r+1],fe=[ee?$-r/2:D?$+r*4:$-r*4,q+r+1],re=[[A.left,D||ee?A.bottom-r:A.top],[A.right,D?ee?A.bottom-r:A.top:A.bottom-r]];return[ge,fe,...re]}case"bottom":{const ge=[ee?$+r/2:D?$+r*4:$-r*4,q-r],fe=[ee?$-r/2:D?$+r*4:$-r*4,q-r],re=[[A.left,D||ee?A.top+r:A.bottom],[A.right,D?ee?A.top+r:A.bottom:A.top+r]];return[ge,fe,...re]}case"left":{const ge=[$+r+1,oe?q+r/2:L?q+r*4:q-r*4],fe=[$+r+1,oe?q-r/2:L?q+r*4:q-r*4];return[...[[L||oe?A.right-r:A.left,A.top],[L?oe?A.right-r:A.left:A.right-r,A.bottom]],ge,fe]}case"right":{const ge=[$-r,oe?q+r/2:L?q+r*4:q-r*4],fe=[$-r,oe?q-r/2:L?q+r*4:q-r*4],re=[[L||oe?A.left+r:A.right,A.top],[L?oe?A.left+r:A.right:A.left+r,A.bottom]];return[ge,fe,...re]}}}const G=a?H:Y([g,m]);if(!a){if(i&&!z)return s();Oz([c,u],G)?t&&!i&&(o=setTimeout(s,t)):s()}}};return l.__options={blockPointerEvents:n},l}function jz(e){e===void 0&&(e={});const{open:t=!1,onOpenChange:r,nodeId:n}=e,o=W6(e),a=xi(),i=P.useRef(null),l=P.useRef({}),f=P.useState(()=>CO())[0],[g,m]=P.useState(null),S=P.useCallback(d=>{const s=Bn(d)?{getBoundingClientRect:()=>d.getBoundingClientRect(),contextElement:d}:d;o.refs.setReference(s)},[o.refs]),O=P.useCallback(d=>{(Bn(d)||d===null)&&(i.current=d,m(d)),(Bn(o.refs.reference.current)||o.refs.reference.current===null||d!==null&&!Bn(d))&&o.refs.setReference(d)},[o.refs]),T=P.useMemo(()=>({...o.refs,setReference:O,setPositionReference:S,domReference:i}),[o.refs,O,S]),C=P.useMemo(()=>({...o.elements,domReference:g}),[o.elements,g]),w=Rs(r),b=P.useMemo(()=>({...o,refs:T,elements:C,dataRef:l,nodeId:n,events:f,open:t,onOpenChange:w}),[o,n,f,t,w,T,C]);return ur(()=>{const d=a==null?void 0:a.nodesRef.current.find(s=>s.id===n);d&&(d.context=b)}),P.useMemo(()=>({...o,context:b,refs:T,reference:O,positionReference:S}),[o,T,b,O,S])}function mh(e,t,r){const n=new Map;return{...r==="floating"&&{tabIndex:-1},...e,...t.map(o=>o?o[r]:null).concat(e).reduce((o,a)=>(a&&Object.entries(a).forEach(i=>{let[l,f]=i;if(l.indexOf("on")===0){if(n.has(l)||n.set(l,[]),typeof f=="function"){var g;(g=n.get(l))==null||g.push(f),o[l]=function(){for(var m,S=arguments.length,O=new Array(S),T=0;TC(...O))}}}else o[l]=f}),o),{})}}const Ez=function(e){e===void 0&&(e=[]);const t=e,r=P.useCallback(a=>mh(a,e,"reference"),t),n=P.useCallback(a=>mh(a,e,"floating"),t),o=P.useCallback(a=>mh(a,e,"item"),e.map(a=>a==null?void 0:a.item));return P.useMemo(()=>({getReferenceProps:r,getFloatingProps:n,getItemProps:o}),[r,n,o])},Az=Object.freeze(Object.defineProperty({__proto__:null,FloatingDelayGroup:Z6,FloatingFocusManager:uz,FloatingNode:K6,FloatingOverlay:cz,FloatingPortal:sz,FloatingTree:Y6,arrow:U6,autoPlacement:I6,autoUpdate:M6,computePosition:SO,detectOverflow:qc,flip:L6,getOverflowAncestors:zo,hide:z6,inline:B6,inner:Tz,limitShift:V6,offset:_O,platform:xO,safePolygon:Nz,shift:D6,size:F6,useClick:dz,useDelayGroup:J6,useDelayGroupContext:AO,useDismiss:gz,useFloating:jz,useFloatingNodeId:q6,useFloatingParentNodeId:As,useFloatingPortalNode:FO,useFloatingTree:xi,useFocus:mz,useHover:X6,useId:au,useInnerOffset:Pz,useInteractions:Ez,useListNavigation:yz,useMergeRefs:xz,useRole:wz,useTransitionStatus:BO,useTransitionStyles:Sz,useTypeahead:Cz},Symbol.toStringTag,{value:"Module"})),Or=su(Az);var VO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{DialogHeader:function(){return O},default:function(){return T}});var r=g(P),n=g(St),o=bt,a=g(ht),i=ut,l=ks;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,i.useTheme)().dialogHeader,u=c.defaultProps,h=c.styles.base;b=b??u.className;var y=(0,o.twMerge)((0,n.default)((0,a.default)(h)),b);return r.default.createElement("div",f({},s,{ref:w,className:y}),d)});O.propTypes={className:l.propTypesClassName,children:l.propTypesChildren},O.displayName="MaterialTailwind.DialogHeader";var T=O})(VO);var UO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{DialogBody:function(){return T},default:function(){return C}});var r=m(P),n=m(St),o=bt,a=m(ht),i=ut,l=ks;function f(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function g(){return g=Object.assign||function(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,u;for(u=0;u=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.divider,s=w.className,c=w.children,u=S(w,["divider","className","children"]),h=(0,i.useTheme)().dialogBody,y=h.defaultProps,x=h.styles.base;s=s??y.className;var E=(0,o.twMerge)((0,n.default)((0,a.default)(x.initial),f({},(0,a.default)(x.divider),d)),s);return r.default.createElement("div",g({},u,{ref:b,className:E}),c)});T.propTypes={divider:l.propTypesDivider,className:l.propTypesClassName,children:l.propTypesChildren},T.displayName="MaterialTailwind.DialogBody";var C=T})(UO);var WO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{DialogFooter:function(){return O},default:function(){return T}});var r=g(P),n=g(St),o=bt,a=g(ht),i=ut,l=ks;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,i.useTheme)().dialogFooter,u=c.defaultProps,h=c.styles.base;b=b??u.className;var y=(0,o.twMerge)((0,n.default)((0,a.default)(h)),b);return r.default.createElement("div",f({},s,{ref:w,className:y}),d)});O.propTypes={className:l.propTypesClassName,children:l.propTypesChildren},O.displayName="MaterialTailwind.DialogFooter";var T=O})(WO);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(j,A){for(var M in A)Object.defineProperty(j,M,{enumerable:!0,get:A[M]})}t(e,{Dialog:function(){return E},DialogHeader:function(){return T.DialogHeader},DialogBody:function(){return C.DialogBody},DialogFooter:function(){return w.DialogFooter},default:function(){return k}});var r=s(P),n=s(vt),o=Or,a=Rr,i=s(St),l=s(Br),f=bt,g=s(sr),m=s(ht),S=ut,O=ks,T=VO,C=UO,w=WO;function b(j,A,M){return A in j?Object.defineProperty(j,A,{value:M,enumerable:!0,configurable:!0,writable:!0}):j[A]=M,j}function d(){return d=Object.assign||function(j){for(var A=1;A=0)&&Object.prototype.propertyIsEnumerable.call(j,D)&&(M[D]=j[D])}return M}function x(j,A){if(j==null)return{};var M={},D=Object.keys(j),L,z;for(z=0;z=0)&&(M[L]=j[L]);return M}var E=r.default.forwardRef(function(j,A){var M=j.open,D=j.handler,L=j.size,z=j.dismiss,H=j.animate,Y=j.className,G=j.children,B=y(j,["open","handler","size","dismiss","animate","className","children"]),$=(0,S.useTheme)().dialog,q=$.defaultProps,ee=$.valid,oe=$.styles,ge=oe.base,fe=oe.sizes;D=D??void 0,L=L??q.size,z=z??q.dismiss,H=H??q.animate,Y=Y??q.className;var re=(0,i.default)((0,m.default)(ge.backdrop)),be=(0,f.twMerge)((0,i.default)((0,m.default)(ge.container),(0,m.default)(fe[(0,g.default)(ee.sizes,L,"md")])),Y),he={unmount:{opacity:0,y:-50,transition:{duration:.3}},mount:{opacity:1,y:0,transition:{duration:.3}}},pe={unmount:{opacity:0,transition:{delay:.2}},mount:{opacity:1}},ve=(0,l.default)(he,H),me=(0,o.useFloating)({open:M,onOpenChange:D}),ke=me.floating,Fe=me.context,Pe=(0,o.useId)(),te="".concat(Pe,"-label"),Oe="".concat(Pe,"-description"),$e=(0,o.useInteractions)([(0,o.useClick)(Fe),(0,o.useRole)(Fe),(0,o.useDismiss)(Fe,z)]).getFloatingProps,Be=(0,o.useMergeRefs)([A,ke]),We=a.AnimatePresence;return r.default.createElement(a.LazyMotion,{features:a.domAnimation},r.default.createElement(o.FloatingPortal,null,r.default.createElement(We,null,M&&r.default.createElement(o.FloatingOverlay,{style:{zIndex:9999},lockScroll:!0},r.default.createElement(o.FloatingFocusManager,{context:Fe},r.default.createElement(a.m.div,{className:L==="xxl"?"":re,initial:"unmount",exit:"unmount",animate:M?"mount":"unmount",variants:pe,transition:{duration:.2}},r.default.createElement(a.m.div,d({},$e(h(c({},B),{ref:Be,className:be,"aria-labelledby":te,"aria-describedby":Oe})),{initial:"unmount",exit:"unmount",animate:M?"mount":"unmount",variants:ve}),G)))))))});E.propTypes={open:O.propTypesOpen,handler:O.propTypesHandler,size:n.default.oneOf(O.propTypesSize),dismiss:O.propTypesDismiss,animate:O.propTypesAnimate,className:O.propTypesClassName,children:O.propTypesChildren},E.displayName="MaterialTailwind.Dialog";var k=Object.assign(E,{Header:T.DialogHeader,Body:C.DialogBody,Footer:w.DialogFooter})})(nO);var $O={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{Input:function(){return C},default:function(){return w}});var r=S(P),n=S(vt),o=S(St),a=S(sr),i=S(ht),l=ut,f=hu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=r.default.forwardRef(function(b,d){var s=b.variant,c=b.color,u=b.size,h=b.label,y=b.error,x=b.success,E=b.icon,k=b.containerProps,j=b.labelProps,A=b.className,M=b.shrink,D=b.inputRef,L=O(b,["variant","color","size","label","error","success","icon","containerProps","labelProps","className","shrink","inputRef"]),z=(0,l.useTheme)().input,H=z.defaultProps,Y=z.valid,G=z.styles,B=G.base,$=G.variants;s=s??H.variant,u=u??H.size,c=c??H.color,h=h??H.label,j=j??H.labelProps,k=k??H.containerProps,A=A??H.className,M=M??H.shrink,E=E??H.icon;var q=$[(0,a.default)(Y.variants,s,"outlined")],ee=q.sizes[(0,a.default)(Y.sizes,u,"md")],oe=(0,i.default)(q.error.input),ge=(0,i.default)(q.success.input),fe=(0,i.default)(q.shrink.input),re=(0,i.default)(q.colors.input[(0,a.default)(Y.colors,c,"gray")]),be=(0,i.default)(q.error.label),he=(0,i.default)(q.success.label),pe=(0,i.default)(q.shrink.label),ve=(0,i.default)(q.colors.label[(0,a.default)(Y.colors,c,"gray")]),me=(0,o.default)((0,i.default)(B.container),(0,i.default)(ee.container),k==null?void 0:k.className),ke=(0,o.default)((0,i.default)(B.input),(0,i.default)(q.base.input),(0,i.default)(ee.input),g({},(0,i.default)(q.base.inputWithIcon),E),g({},re,!y&&!x),g({},oe,y),g({},ge,x),g({},fe,M),A),Fe=(0,o.default)((0,i.default)(B.label),(0,i.default)(q.base.label),(0,i.default)(ee.label),g({},ve,!y&&!x),g({},be,y),g({},he,x),g({},pe,M),j==null?void 0:j.className),Pe=(0,o.default)((0,i.default)(B.icon),(0,i.default)(q.base.icon),(0,i.default)(ee.icon)),te=(0,o.default)((0,i.default)(B.asterisk));return r.default.createElement("div",m({},k,{ref:d,className:me}),E&&r.default.createElement("div",{className:Pe},E),r.default.createElement("input",m({},L,{ref:D,className:ke,placeholder:(L==null?void 0:L.placeholder)||" "})),r.default.createElement("label",m({},j,{className:Fe}),h," ",L.required?r.default.createElement("span",{className:te},"*"):""))});C.propTypes={variant:n.default.oneOf(f.propTypesVariant),size:n.default.oneOf(f.propTypesSize),color:n.default.oneOf(f.propTypesColor),label:f.propTypesLabel,error:f.propTypesError,success:f.propTypesSuccess,icon:f.propTypesIcon,labelProps:f.propTypesLabelProps,containerProps:f.propTypesContainerProps,shrink:f.propTypesShrink,className:f.propTypesClassName},C.displayName="MaterialTailwind.Input";var w=C})($O);var HO={},Cu={},Ms={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(u,h){for(var y in h)Object.defineProperty(u,y,{enumerable:!0,get:h[y]})}t(e,{propTypesOpen:function(){return g},propTypesHandler:function(){return m},propTypesPlacement:function(){return S},propTypesOffset:function(){return O},propTypesDismiss:function(){return T},propTypesAnimate:function(){return C},propTypesLockScroll:function(){return w},propTypesDisabled:function(){return b},propTypesClassName:function(){return d},propTypesChildren:function(){return s},propTypesContextValue:function(){return c}});var r=a(vt),n=nr;function o(u,h,y){return h in u?Object.defineProperty(u,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):u[h]=y,u}function a(u){return u&&u.__esModule?u:{default:u}}function i(u){for(var h=1;hs.length)&&(c=s.length);for(var u=0,h=new Array(c);u=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,u;for(u=0;u=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.children,s=S(w,["children"]),c=(0,o.useMenu)(),u=c.getReferenceProps,h=c.reference,y=c.nested,x=(0,n.useMergeRefs)([b,h]);return r.default.cloneElement(d,f({},u(f(m(f({},s),{ref:x,onClick:function(k){k.stopPropagation()}}),y&&{role:"menuitem"}))))});T.propTypes={children:a.propTypesChildren},T.displayName="MaterialTailwind.MenuHandler";var C=T})(qO);var KO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{MenuList:function(){return w},default:function(){return b}});var r=O(P),n=Or,o=Rr,a=O(St),i=bt,l=O(ht),f=ut,g=Cu,m=Ms;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.children,u=d.className,h=T(d,["children","className"]),y=(0,f.useTheme)().menu,x=y.styles.base,E=(0,g.useMenu)(),k=E.open,j=E.handler,A=E.strategy,M=E.x,D=E.y,L=E.floating,z=E.listItemsRef,H=E.getFloatingProps,Y=E.getItemProps,G=E.appliedAnimation,B=E.lockScroll,$=E.context,q=E.activeIndex,ee=E.tree,oe=E.allowHover,ge=E.internalAllowHover,fe=E.setActiveIndex,re=E.nested;u=u??"";var be=(0,i.twMerge)((0,a.default)((0,l.default)(x.menu)),u),he=(0,n.useMergeRefs)([s,L]),pe=o.AnimatePresence,ve=r.default.createElement(o.m.div,S({},h,{ref:he,style:{position:A,top:D??0,left:M??0},className:be},H({onKeyDown:function(ke){ke.key==="Tab"&&(j(!1),ke.shiftKey&&ke.preventDefault())}}),{initial:"unmount",exit:"unmount",animate:k?"mount":"unmount",variants:G}),r.default.Children.map(c,function(me,ke){return r.default.isValidElement(me)&&r.default.cloneElement(me,Y({tabIndex:q===ke?0:-1,role:"menuitem",className:me.props.className,ref:function(Pe){z.current[ke]=Pe},onClick:function(Pe){if(me.props.onClick){var te,Oe;(Oe=(te=me.props).onClick)===null||Oe===void 0||Oe.call(te,Pe)}ee==null||ee.events.emit("click")},onMouseEnter:function(){(oe&&k||ge&&k)&&fe(ke)}}))}));return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(n.FloatingPortal,null,r.default.createElement(pe,null,k&&r.default.createElement(r.default.Fragment,null,B?r.default.createElement(n.FloatingOverlay,{lockScroll:!0},r.default.createElement(n.FloatingFocusManager,{context:$,modal:!re,initialFocus:re?-1:0,returnFocus:!re,visuallyHiddenDismiss:!0},ve)):r.default.createElement(n.FloatingFocusManager,{context:$,modal:!re,initialFocus:re?-1:0,returnFocus:!re,visuallyHiddenDismiss:!0},ve)))))});w.propTypes={className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.MenuList";var b=w})(KO);var YO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{MenuItem:function(){return T},default:function(){return C}});var r=m(P),n=m(St),o=bt,a=m(ht),i=ut,l=Ms;function f(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function g(){return g=Object.assign||function(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,u;for(u=0;u=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.className,s=d===void 0?"":d,c=w.disabled,u=c===void 0?!1:c,h=w.children,y=S(w,["className","disabled","children"]),x=(0,i.useTheme)().menu,E=x.styles.base,k=(0,o.twMerge)((0,n.default)((0,a.default)(E.item.initial),f({},(0,a.default)(E.item.disabled),u)),s);return r.default.createElement("button",g({},y,{ref:b,role:"menuitem",className:k}),h)});T.propTypes={className:l.propTypesClassName,disabled:l.propTypesDisabled,children:l.propTypesChildren},T.displayName="MaterialTailwind.MenuItem";var C=T})(YO);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{Menu:function(){return S},MenuHandler:function(){return i.MenuHandler},MenuList:function(){return l.MenuList},MenuItem:function(){return f.MenuItem},useMenu:function(){return o.useMenu},default:function(){return O}});var r=m(P),n=Or,o=Cu,a=GO,i=qO,l=KO,f=YO;function g(){return g=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.open,u=d.animate,h=d.className,y=d.children,x=T(d,["open","animate","className","children"]),E;console.error(` will be deprecated in the future versions of @material-tailwind/react use instead. + +More details: https://www.material-tailwind.com/docs/react/collapse + `);var k=r.default.useRef(null),j=(0,g.useTheme)().navbar,A=j.styles,M=A.base.mobileNav;u=u??{},h=h??"";var D=(0,l.twMerge)((0,i.default)((0,f.default)(M)),h),L={unmount:{height:0,opacity:0,transition:{duration:.3,times:"[0.4, 0, 0.2, 1]"}},mount:{opacity:1,height:"".concat((E=k.current)===null||E===void 0?void 0:E.scrollHeight,"px"),transition:{duration:.3,times:"[0.4, 0, 0.2, 1]"}}},z=(0,a.default)(L,u),H=n.AnimatePresence,Y=(0,o.useMergeRefs)([s,k]);return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(H,null,r.default.createElement(n.m.div,S({},x,{ref:Y,className:D,initial:"unmount",exit:"unmount",animate:c?"mount":"unmount",variants:z}),y)))});w.displayName="MaterialTailwind.MobileNav",w.propTypes={open:m.propTypesOpen,animate:m.propTypesAnimate,className:m.propTypesClassName,children:m.propTypesChildren};var b=w})(XO);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Navbar:function(){return b},MobileNav:function(){return g.MobileNav},default:function(){return d}});var r=T(P),n=T(vt),o=T(St),a=bt,i=T(sr),l=T(ht),f=ut,g=XO,m=Cf;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.variant,h=s.color,y=s.shadow,x=s.blurred,E=s.fullWidth,k=s.className,j=s.children,A=C(s,["variant","color","shadow","blurred","fullWidth","className","children"]),M=(0,f.useTheme)().navbar,D=M.defaultProps,L=M.valid,z=M.styles,H=z.base,Y=z.variants;u=u??D.variant,h=h??D.color,y=y??D.shadow,x=x??D.blurred,E=E??D.fullWidth,k=k??D.className;var G,B=(0,o.default)((0,l.default)(H.navbar.initial),(G={},S(G,(0,l.default)(H.navbar.shadow),y),S(G,(0,l.default)(H.navbar.blurred),x&&h==="white"),S(G,(0,l.default)(H.navbar.fullWidth),E),G)),$=(0,o.default)((0,l.default)(Y[(0,i.default)(L.variants,u,"filled")][(0,i.default)(L.colors,h,"white")])),q=(0,a.twMerge)((0,o.default)(B,$),k);return r.default.createElement("nav",O({},A,{ref:c,className:q}),j)});b.propTypes={variant:n.default.oneOf(m.propTypesVariant),color:n.default.oneOf(m.propTypesColor),shadow:m.propTypesShadow,blurred:m.propTypesBlurred,fullWidth:m.propTypesFullWidth,className:m.propTypesClassName,children:m.propTypesChildren},b.displayName="MaterialTailwind.Navbar";var d=Object.assign(b,{MobileNav:g.MobileNav})})(QO);var ZO={},Hf={},Is={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{propTypesOpen:function(){return a},propTypesHandler:function(){return i},propTypesPlacement:function(){return l},propTypesOffset:function(){return f},propTypesDismiss:function(){return g},propTypesAnimate:function(){return m},propTypesContent:function(){return S},propTypesInteractive:function(){return O},propTypesClassName:function(){return T},propTypesChildren:function(){return C},propTypesContextValue:function(){return w}});var r=o(vt),n=nr;function o(b){return b&&b.__esModule?b:{default:b}}var a=r.default.bool,i=r.default.func,l=n.propTypesPlacements,f=n.propTypesOffsetType,g=n.propTypesDismissType,m=n.propTypesAnimation,S=r.default.node,O=r.default.bool,T=r.default.string,C=r.default.node.isRequired,w=r.default.shape({open:r.default.bool.isRequired,strategy:r.default.oneOf(["fixed","absolute"]).isRequired,x:r.default.number,y:r.default.number,context:r.default.instanceOf(Object).isRequired,reference:r.default.func.isRequired,floating:r.default.func.isRequired,getReferenceProps:r.default.func.isRequired,getFloatingProps:r.default.func.isRequired,appliedAnimation:m.isRequired,labelId:r.default.string.isRequired,descriptionId:r.default.string.isRequired}).isRequired})(Is);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(f,g){for(var m in g)Object.defineProperty(f,m,{enumerable:!0,get:g[m]})}t(e,{PopoverContext:function(){return a},usePopover:function(){return i},PopoverContextProvider:function(){return l}});var r=o(P),n=Is;function o(f){return f&&f.__esModule?f:{default:f}}var a=r.default.createContext(null);a.displayName="MaterialTailwind.PopoverContext";function i(){var f=r.default.useContext(a);if(!f)throw new Error("usePopover() must be used within a Popover. It happens when you use PopoverHandler or PopoverContent components outside the Popover component.");return f}var l=function(f){var g=f.value,m=f.children;return r.default.createElement(a.Provider,{value:g},m)};l.propTypes={value:n.propTypesContextValue,children:n.propTypesChildren},l.displayName="MaterialTailwind.PopoverContextProvider"})(Hf);var JO={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(w,b){for(var d in b)Object.defineProperty(w,d,{enumerable:!0,get:b[d]})}t(e,{PopoverHandler:function(){return T},default:function(){return C}});var r=l(P),n=Or,o=Hf,a=Is;function i(w,b,d){return b in w?Object.defineProperty(w,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):w[b]=d,w}function l(w){return w&&w.__esModule?w:{default:w}}function f(w){for(var b=1;b=0)&&Object.prototype.propertyIsEnumerable.call(w,s)&&(d[s]=w[s])}return d}function O(w,b){if(w==null)return{};var d={},s=Object.keys(w),c,u;for(u=0;u=0)&&(d[c]=w[c]);return d}var T=r.default.forwardRef(function(w,b){var d=w.children,s=S(w,["children"]),c=(0,o.usePopover)(),u=c.getReferenceProps,h=c.reference,y=(0,n.useMergeRefs)([b,h]);return r.default.cloneElement(d,f({},u(m(f({},s),{ref:y}))))});T.propTypes={children:a.propTypesChildren},T.displayName="MaterialTailwind.PopoverHandler";var C=T})(JO);var ek={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(h,y){for(var x in y)Object.defineProperty(h,x,{enumerable:!0,get:y[x]})}t(e,{PopoverContent:function(){return c},default:function(){return u}});var r=T(P),n=Or,o=Rr,a=T(St),i=bt,l=T(ht),f=ut,g=Hf,m=Is;function S(h,y,x){return y in h?Object.defineProperty(h,y,{value:x,enumerable:!0,configurable:!0,writable:!0}):h[y]=x,h}function O(){return O=Object.assign||function(h){for(var y=1;y=0)&&Object.prototype.propertyIsEnumerable.call(h,E)&&(x[E]=h[E])}return x}function s(h,y){if(h==null)return{};var x={},E=Object.keys(h),k,j;for(j=0;j=0)&&(x[k]=h[k]);return x}var c=r.default.forwardRef(function(h,y){var x=h.children,E=h.className,k=d(h,["children","className"]),j=(0,f.useTheme)().popover,A=j.defaultProps,M=j.styles.base,D=(0,g.usePopover)(),L=D.open,z=D.strategy,H=D.x,Y=D.y,G=D.context,B=D.floating,$=D.getFloatingProps,q=D.appliedAnimation,ee=D.labelId,oe=D.descriptionId;E=E??A.className;var ge=(0,i.twMerge)((0,a.default)((0,l.default)(M)),E),fe=(0,n.useMergeRefs)([y,B]),re=o.AnimatePresence;return r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(n.FloatingPortal,null,r.default.createElement(re,null,L&&r.default.createElement(n.FloatingFocusManager,{context:G},r.default.createElement(o.m.div,O({},$(b(C({},k),{ref:fe,className:ge,style:{position:z,top:Y??"",left:H??""},"aria-labelledby":ee,"aria-describedby":oe})),{initial:"unmount",exit:"unmount",animate:L?"mount":"unmount",variants:q}),x)))))});c.propTypes={className:m.propTypesClassName,children:m.propTypesChildren},c.displayName="MaterialTailwind.PopoverContent";var u=c})(ek);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(u,h){for(var y in h)Object.defineProperty(u,y,{enumerable:!0,get:h[y]})}t(e,{Popover:function(){return s},PopoverHandler:function(){return g.PopoverHandler},PopoverContent:function(){return m.PopoverContent},usePopover:function(){return l.usePopover},default:function(){return c}});var r=T(P),n=T(vt),o=Or,a=T(Br),i=ut,l=Hf,f=Is,g=JO,m=ek;function S(u,h){(h==null||h>u.length)&&(h=u.length);for(var y=0,x=new Array(h);y=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,u=d.color,h=d.size,y=d.value,x=d.label,E=d.className,k=d.barProps,j=T(d,["variant","color","size","value","label","className","barProps"]),A=(0,f.useTheme)().progress,M=A.defaultProps,D=A.valid,L=A.styles,z=L.base,H=L.variants,Y=L.sizes;c=c??M.variant,u=u??M.color,h=h??M.size,x=x??M.label,E=E??M.className,k=k??M.barProps;var G=(0,l.default)(H[(0,i.default)(D.variants,c,"filled")][(0,i.default)(D.colors,u,"gray")]),B=(0,l.default)(Y[(0,i.default)(D.sizes,h,"md")].container.initial),$=(0,o.default)((0,l.default)(z.container.initial),B),q=(0,l.default)(Y[(0,i.default)(D.sizes,h,"md")].container.withLabel),ee=(0,o.default)((0,l.default)(z.container.withLabel),q),oe=(0,l.default)(Y[(0,i.default)(D.sizes,h,"md")].bar),ge=(0,o.default)((0,l.default)(z.bar),oe),fe=(0,a.twMerge)((0,o.default)($,m({},ee,x)),E),re=(0,a.twMerge)((0,o.default)(ge,G),k==null?void 0:k.className);return r.default.createElement("div",S({},j,{ref:s,className:fe}),r.default.createElement("div",S({},k,{className:re,style:{width:"".concat(y,"%")}}),x&&"".concat(y,"% ").concat(typeof x=="string"?x:"")))});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),color:n.default.oneOf(g.propTypesColor),size:n.default.oneOf(g.propTypesSize),value:g.propTypesValue,label:g.propTypesLabel,barProps:g.propTypesBarProps,className:g.propTypesClassName},w.displayName="MaterialTailwind.Progress";var b=w})(tk);var rk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Radio:function(){return b},default:function(){return d}});var r=T(P),n=T(vt),o=T(js),a=T(St),i=bt,l=T(sr),f=T(ht),g=ut,m=vi;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.color,h=s.label,y=s.icon,x=s.ripple,E=s.className,k=s.disabled,j=s.containerProps,A=s.labelProps,M=s.iconProps,D=s.inputRef,L=C(s,["color","label","icon","ripple","className","disabled","containerProps","labelProps","iconProps","inputRef"]),z=(0,g.useTheme)().radio,H=z.defaultProps,Y=z.valid,G=z.styles,B=G.base,$=G.colors,q=r.default.useId();u=u??H.color,h=h??H.label,y=y??H.icon,x=x??H.ripple,E=E??H.className,k=k??H.disabled,j=j??H.containerProps,A=A??H.labelProps,M=M??H.iconProps;var ee=x!==void 0&&new o.default,oe=(0,a.default)((0,f.default)(B.root),S({},(0,f.default)(B.disabled),k)),ge=(0,i.twMerge)((0,a.default)((0,f.default)(B.container)),j==null?void 0:j.className),fe=(0,i.twMerge)((0,a.default)((0,f.default)(B.input),(0,f.default)($[(0,l.default)(Y.colors,u,"gray")])),E),re=(0,i.twMerge)((0,a.default)((0,f.default)(B.label)),A==null?void 0:A.className),be=(0,a.default)((0,a.default)((0,f.default)(B.icon)),$[(0,l.default)(Y.colors,u,"gray")].color,M==null?void 0:M.className);return r.default.createElement("div",{ref:c,className:oe},r.default.createElement("label",O({},j,{className:ge,htmlFor:L.id||q,onMouseDown:function(he){var pe=j==null?void 0:j.onMouseDown;return x&&ee.create(he,"dark"),typeof pe=="function"&&pe(he)}}),r.default.createElement("input",O({},L,{ref:D,type:"radio",disabled:k,className:fe,id:L.id||q})),r.default.createElement("span",{className:be},y||r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 16 16",fill:"currentColor"},r.default.createElement("circle",{"data-name":"ellipse",cx:"8",cy:"8",r:"8"})))),h&&r.default.createElement("label",O({},A,{className:re,htmlFor:L.id||q}),h))});b.propTypes={color:n.default.oneOf(m.propTypesColor),label:m.propTypesLabel,icon:m.propTypesIcon,ripple:m.propTypesRipple,className:m.propTypesClassName,disabled:m.propTypesDisabled,containerProps:m.propTypesObject,labelProps:m.propTypesObject},b.displayName="MaterialTailwind.Radio";var d=b})(rk);var nk={},ub={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(m,S){for(var O in S)Object.defineProperty(m,O,{enumerable:!0,get:S[O]})}t(e,{SelectContext:function(){return i},useSelect:function(){return l},usePrevious:function(){return f},SelectContextProvider:function(){return g}});var r=a(P),n=Rr,o=gu;function a(m){return m&&m.__esModule?m:{default:m}}var i=r.default.createContext(null);i.displayName="MaterialTailwind.SelectContext";function l(){var m=r.default.useContext(i);if(m===null)throw new Error("useSelect() must be used within a Select. It happens when you use SelectOption component outside the Select component.");return m}function f(m){var S=r.default.useRef();return(0,n.useIsomorphicLayoutEffect)(function(){S.current=m},[m]),S.current}var g=function(m){var S=m.value,O=m.children;return r.default.createElement(i.Provider,{value:S},O)};g.propTypes={value:o.propTypesContextValue,children:o.propTypesChildren},g.displayName="MaterialTailwind.SelectContextProvider"})(ub);var ok={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{SelectOption:function(){return C},default:function(){return w}});var r=S(P),n=S(St),o=bt,a=S(ht),i=ut,l=ub,f=gu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=function(b){var d=function(){G(y),q(u),$(!1),oe(null)},s=function(ke){(ke.key==="Enter"||ke.key===" "&&!fe.current.typing)&&(ke.preventDefault(),d())},c=b.value,u=c===void 0?"":c,h=b.index,y=h===void 0?0:h,x=b.disabled,E=x===void 0?!1:x,k=b.className,j=k===void 0?"":k,A=b.children,M=O(b,["value","index","disabled","className","children"]),D=(0,i.useTheme)().select,L=D.styles,z=L.base,H=(0,l.useSelect)(),Y=H.selectedIndex,G=H.setSelectedIndex,B=H.listRef,$=H.setOpen,q=H.onChange,ee=H.activeIndex,oe=H.setActiveIndex,ge=H.getItemProps,fe=H.dataRef,re=(0,a.default)(z.option.initial),be=(0,a.default)(z.option.active),he=(0,a.default)(z.option.disabled),pe,ve=(0,o.twMerge)((0,n.default)(re,(pe={},g(pe,be,Y===y),g(pe,he,E),pe)),j??"");return r.default.createElement("li",m({},M,{role:"option",ref:function(me){return B.current[y]=me},className:ve,disabled:E,tabIndex:ee===y?0:1,"aria-selected":ee===y&&Y===y,"data-selected":Y===y},ge({onClick:function(me){var ke=M==null?void 0:M.onClick;typeof ke=="function"&&(ke(me),d()),d()},onKeyDown:function(me){var ke=M==null?void 0:M.onKeyDown;typeof ke=="function"&&(ke(me),s(me)),s(me)}})),A)};C.propTypes={value:f.propTypesValue,index:f.propTypesIndex,disabled:f.propTypesDisabled,className:f.propTypesClassName,children:f.propTypesChildren},C.displayName="MaterialTailwind.SelectOption";var w=C})(ok);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(B,$){for(var q in $)Object.defineProperty(B,q,{enumerable:!0,get:$[q]})}t(e,{Select:function(){return Y},Option:function(){return C.SelectOption},useSelect:function(){return O.useSelect},usePrevious:function(){return O.usePrevious},default:function(){return G}});var r=u(P),n=u(vt),o=Or,a=Rr,i=u(St),l=bt,f=u(Br),g=u(sr),m=u(ht),S=ut,O=ub,T=gu,C=ok;function w(B,$){($==null||$>B.length)&&($=B.length);for(var q=0,ee=new Array($);q<$;q++)ee[q]=B[q];return ee}function b(B){if(Array.isArray(B))return B}function d(B){if(Array.isArray(B))return w(B)}function s(B,$,q){return $ in B?Object.defineProperty(B,$,{value:q,enumerable:!0,configurable:!0,writable:!0}):B[$]=q,B}function c(){return c=Object.assign||function(B){for(var $=1;$=0)&&Object.prototype.propertyIsEnumerable.call(B,ee)&&(q[ee]=B[ee])}return q}function D(B,$){if(B==null)return{};var q={},ee=Object.keys(B),oe,ge;for(ge=0;ge=0)&&(q[oe]=B[oe]);return q}function L(B,$){return b(B)||y(B,$)||H(B,$)||x()}function z(B){return d(B)||h(B)||H(B)||E()}function H(B,$){if(B){if(typeof B=="string")return w(B,$);var q=Object.prototype.toString.call(B).slice(8,-1);if(q==="Object"&&B.constructor&&(q=B.constructor.name),q==="Map"||q==="Set")return Array.from(q);if(q==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(q))return w(B,$)}}var Y=r.default.forwardRef(function(B,$){var q=B.variant,ee=B.color,oe=B.size,ge=B.label,fe=B.error,re=B.success,be=B.arrow,he=B.value,pe=B.onChange,ve=B.selected,me=B.offset,ke=B.dismiss,Fe=B.animate,Pe=B.lockScroll,te=B.labelProps,Oe=B.menuProps,$e=B.className,Be=B.disabled,We=B.name,lt=B.children,qe=B.containerProps,Ke=M(B,["variant","color","size","label","error","success","arrow","value","onChange","selected","offset","dismiss","animate","lockScroll","labelProps","menuProps","className","disabled","name","children","containerProps"]),xt,rt=(0,S.useTheme)().select,dt=rt.defaultProps,Rt=rt.valid,Ae=rt.styles,ft=Ae.base,At=Ae.variants,Z=L(r.default.useState("close"),2),ue=Z[0],ne=Z[1];q=q??dt.variant,ee=ee??dt.color,oe=oe??dt.size,ge=ge??dt.label,fe=fe??dt.error,re=re??dt.success,be=be??dt.arrow,he=he??dt.value,pe=pe??dt.onChange,ve=ve??dt.selected,me=me??dt.offset,ke=ke??dt.dismiss,Fe=Fe??dt.animate,te=te??dt.labelProps,Oe=Oe??dt.menuProps;var xe;qe=(xe=(0,f.default)(qe,(dt==null?void 0:dt.containerProps)||{}))!==null&&xe!==void 0?xe:dt.containerProps,$e=$e??dt.className;var se=r.default.useRef([]),ce,Ce=r.default.useRef(z((ce=r.default.Children.map(lt,function(Le){var ze=Le.props;return ze==null?void 0:ze.value}))!==null&&ce!==void 0?ce:[])),Ie=L(r.default.useState(!1),2),Ne=Ie[0],ct=Ie[1],Ve=L(r.default.useState(null),2),tt=Ve[0],wt=Ve[1],Vt=L(r.default.useState(0),2),He=Vt[0],Yt=Vt[1],It=L(r.default.useState(!1),2),Dt=It[0],kt=It[1],Gt=(0,O.usePrevious)(tt),Ot=(0,o.useFloating)({placement:"bottom-start",open:Ne,onOpenChange:ct,whileElementsMounted:o.autoUpdate,middleware:[(0,o.offset)(5),(0,o.flip)({padding:10}),(0,o.size)({apply:function(ze){var Ue=ze.rects,pt=ze.elements,Lt,or;Object.assign(pt==null||(Lt=pt.floating)===null||Lt===void 0?void 0:Lt.style,{width:"".concat(Ue==null||(or=Ue.reference)===null||or===void 0?void 0:or.width,"px"),zIndex:99})},padding:20})]}),hr=Ot.x,_r=Ot.y,kr=Ot.strategy,Te=Ot.refs,Me=Ot.context;r.default.useEffect(function(){Yt(Math.max(0,Ce.current.indexOf(he)+1))},[he]);var Ge=Te.floating,gt=(0,o.useInteractions)([(0,o.useClick)(Me),(0,o.useRole)(Me,{role:"listbox"}),(0,o.useDismiss)(Me,k({},ke)),(0,o.useListNavigation)(Me,{listRef:se,activeIndex:tt,selectedIndex:He,onNavigate:wt,loop:!0}),(0,o.useTypeahead)(Me,{listRef:Ce,activeIndex:tt,selectedIndex:He,onMatch:Ne?wt:Yt})]),X=gt.getReferenceProps,_e=gt.getFloatingProps,ye=gt.getItemProps;(0,a.useIsomorphicLayoutEffect)(function(){var Le=Ge.current;if(Ne&&Dt&&Le){var ze=tt!=null?se.current[tt]:He!=null?se.current[He]:null;if(ze&&Gt!=null){var Ue,pt,Lt=(pt=(Ue=se.current[Gt])===null||Ue===void 0?void 0:Ue.offsetHeight)!==null&&pt!==void 0?pt:0,or=Le.offsetHeight,gr=ze.offsetTop,mn=gr+Lt;gror+Le.scrollTop&&(Le.scrollTop+=mn-or-Le.scrollTop+5)}}},[Ne,Dt,Gt,tt]);var ot=r.default.useMemo(function(){return{selectedIndex:He,setSelectedIndex:Yt,listRef:se,setOpen:ct,onChange:pe||function(){},activeIndex:tt,setActiveIndex:wt,getItemProps:ye,dataRef:Me.dataRef}},[He,pe,tt,ye,Me.dataRef]);r.default.useEffect(function(){ne(Ne?"open":!Ne&&He||!Ne&&he?"withValue":"close")},[Ne,he,He,ve]);var at=At[(0,g.default)(Rt.variants,q,"outlined")],Ct=at.sizes[(0,g.default)(Rt.sizes,oe,"md")],Tt=at.error.select,Zt=at.success.select,Ft=at.colors.select[(0,g.default)(Rt.colors,ee,"gray")],Mr=at.error.label,Ir=at.success.label,br=at.colors.label[(0,g.default)(Rt.colors,ee,"gray")],Vr=at.states[ue],go=(0,i.default)((0,m.default)(ft.container),(0,m.default)(Ct.container),qe==null?void 0:qe.className),vr=(0,l.twMerge)((0,i.default)((0,m.default)(ft.select),(0,m.default)(at.base.select),(0,m.default)(Vr.select),(0,m.default)(Ct.select),s({},(0,m.default)(Ft[ue]),!fe&&!re),s({},(0,m.default)(Tt.initial),fe),s({},(0,m.default)(Tt.states[ue]),fe),s({},(0,m.default)(Zt.initial),re),s({},(0,m.default)(Zt.states[ue]),re)),$e),Gn,za=(0,l.twMerge)((0,i.default)((0,m.default)(ft.label),(0,m.default)(at.base.label),(0,m.default)(Vr.label),(0,m.default)(Ct.label.initial),(0,m.default)(Ct.label.states[ue]),s({},(0,m.default)(br[ue]),!fe&&!re),s({},(0,m.default)(Mr.initial),fe),s({},(0,m.default)(Mr.states[ue]),fe),s({},(0,m.default)(Ir.initial),re),s({},(0,m.default)(Ir.states[ue]),re)),(Gn=te.className)!==null&&Gn!==void 0?Gn:""),on=(0,i.default)((0,m.default)(ft.arrow.initial),s({},(0,m.default)(ft.arrow.active),Ne)),Dr,Sr=(0,l.twMerge)((0,i.default)((0,m.default)(ft.menu)),(Dr=Oe.className)!==null&&Dr!==void 0?Dr:""),Qr=(0,i.default)("absolute top-2/4 -translate-y-2/4",q==="outlined"?"left-3 pt-0.5":"left-0 pt-3"),mo={unmount:{opacity:0,transformOrigin:"top",transform:"scale(0.95)",transition:{duration:.2,times:[.4,0,.2,1]}},mount:{opacity:1,transformOrigin:"top",transform:"scale(1)",transition:{duration:.2,times:[.4,0,.2,1]}}},Nn=(0,f.default)(mo,Fe),gn=a.AnimatePresence;r.default.useEffect(function(){he&&!pe&&console.error("Warning: You provided a `value` prop to a select component without an `onChange` handler. This will render a read-only select. If the field should be mutable use `onChange` handler with `value` together.")},[he,pe]);var je=r.default.createElement(o.FloatingFocusManager,{context:Me,modal:!1},r.default.createElement(a.m.ul,c({},_e(A(k({},Oe),{ref:Te.setFloating,role:"listbox",className:Sr,style:{position:kr,top:_r??0,left:hr??0,overflow:"auto"},onPointerEnter:function(ze){var Ue=Oe==null?void 0:Oe.onPointerEnter;typeof Ue=="function"&&(Ue(ze),kt(!1)),kt(!1)},onPointerMove:function(ze){var Ue=Oe==null?void 0:Oe.onPointerMove;typeof Ue=="function"&&(Ue(ze),kt(!1)),kt(!1)},onKeyDown:function(ze){var Ue=Oe==null?void 0:Oe.onKeyDown;typeof Ue=="function"&&(Ue(ze),kt(!0)),kt(!0)}})),{initial:"unmount",exit:"unmount",animate:Ne?"mount":"unmount",variants:Nn}),r.default.Children.map(lt,function(Le,ze){var Ue;return r.default.isValidElement(Le)&&r.default.cloneElement(Le,A(k({},Le.props),{index:((Ue=Le.props)===null||Ue===void 0?void 0:Ue.index)||ze+1,id:"material-tailwind-select-".concat(ze)}))})));return r.default.createElement(O.SelectContextProvider,{value:ot},r.default.createElement("div",c({},qe,{ref:$,className:go}),r.default.createElement("button",c({type:"button"},X(A(k({},Ke),{ref:Te.setReference,className:vr,disabled:Be,name:We}))),typeof ve=="function"?r.default.createElement("span",{className:Qr},ve(lt[He-1],He-1)):he&&!pe?r.default.createElement("span",{className:Qr},he):r.default.createElement("span",c({},(xt=lt[He-1])===null||xt===void 0?void 0:xt.props,{className:Qr})),r.default.createElement("div",{className:on},be??r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor"},r.default.createElement("path",{fillRule:"evenodd",d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",clipRule:"evenodd"})))),r.default.createElement("label",c({},te,{className:za}),ge),r.default.createElement(a.LazyMotion,{features:a.domAnimation},r.default.createElement(gn,null,Ne&&r.default.createElement(r.default.Fragment,null,Pe?r.default.createElement(o.FloatingOverlay,{lockScroll:!0},je):je)))))});Y.propTypes={variant:n.default.oneOf(T.propTypesVariant),color:n.default.oneOf(T.propTypesColor),size:n.default.oneOf(T.propTypesSize),label:T.propTypesLabel,error:T.propTypesError,success:T.propTypesSuccess,arrow:T.propTypesArrow,value:T.propTypesValue,onChange:T.propTypesOnChange,selected:T.propTypesSelected,offset:T.propTypesOffset,dismiss:T.propTypesDismiss,animate:T.propTypesAnimate,lockScroll:T.propTypesLockScroll,labelProps:T.propTypesLabelProps,menuProps:T.propTypesMenuProps,className:T.propTypesClassName,disabled:T.propTypesDisabled,name:T.propTypesName,children:T.propTypesChildren,containerProps:T.propTypesContainerProps},Y.displayName="MaterialTailwind.Select";var G=Object.assign(Y,{Option:C.SelectOption})})(nk);var ak={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Switch:function(){return b},default:function(){return d}});var r=T(P),n=T(vt),o=T(js),a=T(St),i=bt,l=T(sr),f=T(ht),g=ut,m=vi;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.color,h=s.label,y=s.ripple,x=s.className,E=s.disabled,k=s.containerProps,j=s.circleProps,A=s.labelProps,M=s.inputRef,D=C(s,["color","label","ripple","className","disabled","containerProps","circleProps","labelProps","inputRef"]),L=(0,g.useTheme)(),z=L.switch,H=z.defaultProps,Y=z.valid,G=z.styles,B=G.base,$=G.colors,q=r.default.useId();u=u??H.color,y=y??H.ripple,x=x??H.className,E=E??H.disabled,k=k??H.containerProps,A=A??H.labelProps,j=j??H.circleProps;var ee=y!==void 0&&new o.default,oe=(0,a.default)((0,f.default)(B.root),S({},(0,f.default)(B.disabled),E)),ge=(0,i.twMerge)((0,a.default)((0,f.default)(B.container)),k==null?void 0:k.className),fe=(0,i.twMerge)((0,a.default)((0,f.default)(B.input),(0,f.default)($[(0,l.default)(Y.colors,u,"gray")])),x),re=(0,i.twMerge)((0,a.default)((0,f.default)(B.circle),$[(0,l.default)(Y.colors,u,"gray")].circle,$[(0,l.default)(Y.colors,u,"gray")].before),j==null?void 0:j.className),be=(0,a.default)((0,f.default)(B.ripple)),he=(0,i.twMerge)((0,a.default)((0,f.default)(B.label)),A==null?void 0:A.className);return r.default.createElement("div",{ref:c,className:oe},r.default.createElement("div",O({},k,{className:ge}),r.default.createElement("input",O({},D,{ref:M,type:"checkbox",disabled:E,id:D.id||q,className:fe})),r.default.createElement("label",O({},j,{htmlFor:D.id||q,className:re}),y&&r.default.createElement("div",{className:be,onMouseDown:function(pe){var ve=k==null?void 0:k.onMouseDown;return y&&ee.create(pe,"dark"),typeof ve=="function"&&ve(pe)}}))),h&&r.default.createElement("label",O({},A,{htmlFor:D.id||q,className:he}),h))});b.propTypes={color:n.default.oneOf(m.propTypesColor),label:m.propTypesLabel,ripple:m.propTypesRipple,className:m.propTypesClassName,disabled:m.propTypesDisabled,containerProps:m.propTypesObject,labelProps:m.propTypesObject,circleProps:m.propTypesObject},b.displayName="MaterialTailwind.Switch";var d=b})(ak);var ik={},Ds={},wi={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{propTypesId:function(){return a},propTypesValue:function(){return i},propTypesAnimate:function(){return l},propTypesDisabled:function(){return f},propTypesClassName:function(){return g},propTypesOrientation:function(){return m},propTypesIndicator:function(){return S},propTypesChildren:function(){return O}});var r=o(vt),n=nr;function o(T){return T&&T.__esModule?T:{default:T}}var a=r.default.string,i=r.default.oneOfType([r.default.string,r.default.number]).isRequired,l=n.propTypesAnimation,f=r.default.bool,g=r.default.string,m=r.default.oneOf(["horizontal","vertical"]),S=r.default.instanceOf(Object),O=r.default.node.isRequired})(wi);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(k,j){for(var A in j)Object.defineProperty(k,A,{enumerable:!0,get:j[A]})}t(e,{TabsContext:function(){return b},useTabs:function(){return d},TabsContextProvider:function(){return s},setId:function(){return c},setActive:function(){return u},setAnimation:function(){return h},setIndicator:function(){return y},setIsInitial:function(){return x},setOrientation:function(){return E}});var r=l(P),n=wi;function o(k,j){(j==null||j>k.length)&&(j=k.length);for(var A=0,M=new Array(j);A=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.value,u=d.className,h=d.activeClassName,y=d.disabled,x=d.children,E=T(d,["value","className","activeClassName","disabled","children"]),k=(0,l.useTheme)(),j=k.tab,A=j.defaultProps,M=j.styles.base,D=(0,f.useTabs)(),L=D.state,z=D.dispatch,H=L.id,Y=L.active,G=L.indicatorProps;u=u??A.className,h=h??A.activeClassName,y=y??A.disabled;var B,$=(0,a.twMerge)((0,o.default)((0,i.default)(M.tab.initial),(B={},m(B,(0,i.default)(M.tab.disabled),y),m(B,h,Y===c),B)),u),q,ee=(0,a.twMerge)((0,o.default)((0,i.default)(M.indicator)),(q=G==null?void 0:G.className)!==null&&q!==void 0?q:"");return r.default.createElement("li",S({},E,{ref:s,role:"tab",className:$,onClick:function(oe){var ge=E==null?void 0:E.onClick;typeof ge=="function"&&((0,f.setActive)(z,c),(0,f.setIsInitial)(z,!1),ge(oe)),(0,f.setIsInitial)(z,!1),(0,f.setActive)(z,c)},"data-value":c}),r.default.createElement("div",{className:"z-20 text-inherit"},x),Y===c&&r.default.createElement(n.motion.div,S({},G,{transition:{duration:.5},className:ee,layoutId:H})))});w.propTypes={value:g.propTypesValue,className:g.propTypesClassName,disabled:g.propTypesDisabled,children:g.propTypesChildren},w.displayName="MaterialTailwind.Tab";var b=w})(sk);var lk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{TabsBody:function(){return w},default:function(){return b}});var r=O(P),n=Rr,o=O(Br),a=O(St),i=bt,l=O(ht),f=ut,g=Ds,m=wi;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.animate,u=d.className,h=d.children,y=T(d,["animate","className","children"]),x=(0,f.useTheme)().tabsBody,E=x.defaultProps,k=x.styles.base,j=(0,g.useTabs)().dispatch;u=u??E.className,c=c??E.animate;var A=(0,i.twMerge)((0,a.default)((0,l.default)(k)),u),M=r.default.useMemo(function(){return{initial:{opacity:0,position:"absolute",top:"0",left:"0",zIndex:1,transition:{duration:0}},unmount:{opacity:0,position:"absolute",top:"0",left:"0",zIndex:1,transition:{duration:.5,times:[.4,0,.2,1]}},mount:{opacity:1,position:"relative",zIndex:2,transition:{duration:.5,times:[.4,0,.2,1]}}}},[]),D=r.default.useMemo(function(){return(0,o.default)(M,c)},[c,M]);return(0,n.useIsomorphicLayoutEffect)(function(){(0,g.setAnimation)(j,D)},[D,j]),r.default.createElement("div",S({},y,{ref:s,className:A}),h)});w.propTypes={animate:m.propTypesAnimate,className:m.propTypesClassName,children:m.propTypesChildren},w.displayName="MaterialTailwind.TabsBody";var b=w})(lk);var uk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{TabsHeader:function(){return C},default:function(){return w}});var r=S(P),n=S(St),o=bt,a=S(ht),i=ut,l=Ds,f=wi;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=r.default.forwardRef(function(b,d){var s=b.indicatorProps,c=b.className,u=b.children,h=O(b,["indicatorProps","className","children"]),y=(0,i.useTheme)().tabsHeader,x=y.defaultProps,E=y.styles,k=(0,l.useTabs)(),j=k.state,A=k.dispatch,M=j.orientation;r.default.useEffect(function(){(0,l.setIndicator)(A,s)},[A,s]),c=c??x.className;var D=(0,o.twMerge)((0,n.default)((0,a.default)(E.base),g({},E[M]&&(0,a.default)(E[M]),M)),c);return r.default.createElement("nav",null,r.default.createElement("ul",m({},h,{ref:d,role:"tablist",className:D}),u))});C.propTypes={indicatorProps:f.propTypesIndicator,className:f.propTypesClassName,children:f.propTypesChildren},C.displayName="MaterialTailwind.TabsHeader";var w=C})(uk);var ck={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{TabPanel:function(){return C},default:function(){return w}});var r=S(P),n=Rr,o=S(St),a=bt,i=S(ht),l=ut,f=Ds,g=wi;function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=r.default.forwardRef(function(b,d){var s=b.value,c=b.className,u=b.children,h=O(b,["value","className","children"]),y=(0,l.useTheme)().tabPanel,x=y.defaultProps,E=y.styles.base,k=(0,f.useTabs)().state,j=k.active,A=k.appliedAnimation,M=k.isInitial;c=c??x.className;var D=(0,a.twMerge)((0,o.default)((0,i.default)(E)),c),L=n.AnimatePresence;return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(L,{exitBeforeEnter:!0},r.default.createElement(n.m.div,m({},h,{ref:d,role:"tabpanel",className:D,initial:"unmount",exit:"unmount",animate:j===s?"mount":M?"initial":"unmount",variants:A,"data-value":s}),u)))});C.propTypes={value:g.propTypesValue,className:g.propTypesClassName,children:g.propTypesChildren},C.displayName="MaterialTailwind.TabPanel";var w=C})(ck);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(u,h){for(var y in h)Object.defineProperty(u,y,{enumerable:!0,get:h[y]})}t(e,{Tabs:function(){return s},Tab:function(){return f.Tab},TabsBody:function(){return g.TabsBody},TabsHeader:function(){return m.TabsHeader},TabPanel:function(){return S.TabPanel},useTabs:function(){return l.useTabs},default:function(){return c}});var r=w(P),n=w(St),o=bt,a=w(ht),i=ut,l=Ds,f=sk,g=lk,m=uk,S=ck,O=wi;function T(u,h,y){return h in u?Object.defineProperty(u,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):u[h]=y,u}function C(){return C=Object.assign||function(u){for(var h=1;h=0)&&Object.prototype.propertyIsEnumerable.call(u,x)&&(y[x]=u[x])}return y}function d(u,h){if(u==null)return{};var y={},x=Object.keys(u),E,k;for(k=0;k=0)&&(y[E]=u[E]);return y}var s=r.default.forwardRef(function(u,h){var y=u.value,x=u.className,E=u.orientation,k=u.children,j=b(u,["value","className","orientation","children"]),A=(0,i.useTheme)().tabs,M=A.defaultProps,D=A.styles,L=r.default.useId();x=x??M.className,E=E??M.orientation;var z=(0,o.twMerge)((0,n.default)((0,a.default)(D.base),T({},D[E]&&(0,a.default)(D[E]),E)),x);return r.default.createElement(l.TabsContextProvider,{id:L,value:y,orientation:E},r.default.createElement("div",C({},j,{ref:h,className:z}),k))});s.propTypes={id:O.propTypesId,value:O.propTypesValue,className:O.propTypesClassName,orientation:O.propTypesOrientation,children:O.propTypesChildren},s.displayName="MaterialTailwind.Tabs";var c=Object.assign(s,{Tab:f.Tab,Body:g.TabsBody,Header:m.TabsHeader,Panel:S.TabPanel})})(ik);var dk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{Textarea:function(){return C},default:function(){return w}});var r=S(P),n=S(vt),o=S(St),a=S(sr),i=S(ht),l=ut,f=hu;function g(b,d,s){return d in b?Object.defineProperty(b,d,{value:s,enumerable:!0,configurable:!0,writable:!0}):b[d]=s,b}function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=r.default.forwardRef(function(b,d){var s=b.variant,c=b.color,u=b.size,h=b.label,y=b.error,x=b.success,E=b.resize,k=b.labelProps,j=b.containerProps,A=b.shrink,M=b.className,D=O(b,["variant","color","size","label","error","success","resize","labelProps","containerProps","shrink","className"]),L=(0,l.useTheme)().textarea,z=L.defaultProps,H=L.valid,Y=L.styles,G=Y.base,B=Y.variants;s=s??z.variant,u=u??z.size,c=c??z.color,h=h??z.label,k=k??z.labelProps,j=j??z.containerProps,A=A??z.shrink,M=M??z.className;var $=B[(0,a.default)(H.variants,s,"outlined")],q=(0,i.default)($.error.textarea),ee=(0,i.default)($.success.textarea),oe=(0,i.default)($.shrink.textarea),ge=(0,i.default)($.colors.textarea[(0,a.default)(H.colors,c,"gray")]),fe=(0,i.default)($.error.label),re=(0,i.default)($.success.label),be=(0,i.default)($.shrink.label),he=(0,i.default)($.colors.label[(0,a.default)(H.colors,c,"gray")]),pe=(0,o.default)((0,i.default)(G.container),j==null?void 0:j.className),ve=(0,o.default)((0,i.default)(G.textarea),(0,i.default)($.base.textarea),(0,i.default)($.sizes[(0,a.default)(H.sizes,u,"md")].textarea),g({},ge,!y&&!x),g({},q,y),g({},ee,x),g({},oe,A),E?"":"!resize-none",M),me=(0,o.default)((0,i.default)(G.label),(0,i.default)($.base.label),(0,i.default)($.sizes[(0,a.default)(H.sizes,u,"md")].label),g({},he,!y&&!x),g({},fe,y),g({},re,x),g({},be,A),k==null?void 0:k.className);return r.default.createElement("div",{ref:d,className:pe},r.default.createElement("textarea",m({},D,{className:ve,placeholder:(D==null?void 0:D.placeholder)||" "})),r.default.createElement("label",{className:me},h))});C.propTypes={variant:n.default.oneOf(f.propTypesVariant),size:n.default.oneOf(f.propTypesSize),color:n.default.oneOf(f.propTypesColor),label:f.propTypesLabel,error:f.propTypesError,success:f.propTypesSuccess,resize:f.propTypesResize,labelProps:f.propTypesLabelProps,containerProps:f.propTypesContainerProps,shrink:f.propTypesShrink,className:f.propTypesClassName},C.displayName="MaterialTailwind.Textarea";var w=C})(dk);var fk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(M,D){for(var L in D)Object.defineProperty(M,L,{enumerable:!0,get:D[L]})}t(e,{Tooltip:function(){return j},default:function(){return A}});var r=b(P),n=b(vt),o=Or,a=Rr,i=b(St),l=bt,f=b(Br),g=b(ht),m=ut,S=Is;function O(M,D){(D==null||D>M.length)&&(D=M.length);for(var L=0,z=new Array(D);L=0)&&Object.prototype.propertyIsEnumerable.call(M,z)&&(L[z]=M[z])}return L}function x(M,D){if(M==null)return{};var L={},z=Object.keys(M),H,Y;for(Y=0;Y=0)&&(L[H]=M[H]);return L}function E(M,D){return T(M)||d(M,D)||k(M,D)||s()}function k(M,D){if(M){if(typeof M=="string")return O(M,D);var L=Object.prototype.toString.call(M).slice(8,-1);if(L==="Object"&&M.constructor&&(L=M.constructor.name),L==="Map"||L==="Set")return Array.from(L);if(L==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(L))return O(M,D)}}var j=r.default.forwardRef(function(M,D){var L=M.open,z=M.handler,H=M.content,Y=M.interactive,G=M.placement,B=M.offset,$=M.dismiss,q=M.animate,ee=M.className,oe=M.children,ge=y(M,["open","handler","content","interactive","placement","offset","dismiss","animate","className","children"]),fe=(0,m.useTheme)().tooltip,re=fe.defaultProps,be=fe.styles.base,he=E(r.default.useState(!1),2),pe=he[0],ve=he[1];L=L??pe,z=z??ve,Y=Y??re.interactive,G=G??re.placement,B=B??re.offset,$=$??re.dismiss,q=q??re.animate,ee=ee??re.className;var me=(0,l.twMerge)((0,i.default)((0,g.default)(be)),ee),ke={unmount:{opacity:0},mount:{opacity:1}},Fe=(0,f.default)(ke,q),Pe=(0,o.useFloating)({open:L,onOpenChange:z,middleware:[(0,o.offset)(B),(0,o.flip)(),(0,o.shift)()],placement:G}),te=Pe.x,Oe=Pe.y,$e=Pe.reference,Be=Pe.floating,We=Pe.strategy,lt=Pe.refs,qe=Pe.update,Ke=Pe.context,xt=(0,o.useInteractions)([(0,o.useClick)(Ke,{enabled:Y}),(0,o.useFocus)(Ke),(0,o.useHover)(Ke),(0,o.useRole)(Ke,{role:"tooltip"}),(0,o.useDismiss)(Ke,$)]),rt=xt.getReferenceProps,dt=xt.getFloatingProps;r.default.useEffect(function(){if(lt.reference.current&<.floating.current&&L)return(0,o.autoUpdate)(lt.reference.current,lt.floating.current,qe)},[L,qe,lt.reference,lt.floating]);var Rt=(0,o.useMergeRefs)([D,Be]),Ae=(0,o.useMergeRefs)([D,$e]),ft=a.AnimatePresence;return r.default.createElement(r.default.Fragment,null,typeof oe=="string"?r.default.createElement("span",w({},rt({ref:Ae})),oe):r.default.cloneElement(oe,c({},rt(h(c({},oe==null?void 0:oe.props),{ref:Ae})))),r.default.createElement(a.LazyMotion,{features:a.domAnimation},r.default.createElement(o.FloatingPortal,null,r.default.createElement(ft,null,L&&r.default.createElement(a.m.div,w({},dt(h(c({},ge),{ref:Rt,className:me,style:{position:We,top:Oe??"",left:te??""}})),{initial:"unmount",exit:"unmount",animate:L?"mount":"unmount",variants:Fe}),H)))))});j.propTypes={open:S.propTypesOpen,handler:S.propTypesHandler,content:S.propTypesContent,interactive:S.propTypesInteractive,placement:n.default.oneOf(S.propTypesPlacement),offset:S.propTypesOffset,dismiss:S.propTypesDismiss,animate:S.propTypesAnimate,className:S.propTypesClassName,children:S.propTypesChildren},j.displayName="MaterialTailwind.Tooltip";var A=j})(fk);var pk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(c,u){for(var h in u)Object.defineProperty(c,h,{enumerable:!0,get:u[h]})}t(e,{Typography:function(){return d},default:function(){return s}});var r=S(P),n=S(vt),o=S(St),a=bt,i=S(sr),l=S(ht),f=ut,g=Cm;function m(c,u,h){return u in c?Object.defineProperty(c,u,{value:h,enumerable:!0,configurable:!0,writable:!0}):c[u]=h,c}function S(c){return c&&c.__esModule?c:{default:c}}function O(c){for(var u=1;u=0)&&Object.prototype.propertyIsEnumerable.call(c,y)&&(h[y]=c[y])}return h}function b(c,u){if(c==null)return{};var h={},y=Object.keys(c),x,E;for(E=0;E=0)&&(h[x]=c[x]);return h}var d=r.default.forwardRef(function(c,u){var h=c.variant,y=c.color,x=c.textGradient,E=c.as,k=c.className,j=c.children,A=w(c,["variant","color","textGradient","as","className","children"]),M=(0,f.useTheme)().typography,D=M.defaultProps,L=M.valid,z=M.styles,H=z.variants,Y=z.colors,G=z.textGradient;h=h??D.variant,y=y??D.color,x=x||D.textGradient,E=E??void 0,k=k??D.className;var B=(0,l.default)(H[(0,i.default)(L.variants,h,"paragraph")]),$=Y[(0,i.default)(L.colors,y,"inherit")],q=(0,l.default)(G),ee=(0,a.twMerge)((0,o.default)(B,m({},$.color,!x),m({},q,x),m({},$.gradient,x)),k),oe;switch(h){case"h1":oe=r.default.createElement(E||"h1",C(O({},A),{ref:u,className:ee}),j);break;case"h2":oe=r.default.createElement(E||"h2",C(O({},A),{ref:u,className:ee}),j);break;case"h3":oe=r.default.createElement(E||"h3",C(O({},A),{ref:u,className:ee}),j);break;case"h4":oe=r.default.createElement(E||"h4",C(O({},A),{ref:u,className:ee}),j);break;case"h5":oe=r.default.createElement(E||"h5",C(O({},A),{ref:u,className:ee}),j);break;case"h6":oe=r.default.createElement(E||"h6",C(O({},A),{ref:u,className:ee}),j);break;case"lead":oe=r.default.createElement(E||"p",C(O({},A),{ref:u,className:ee}),j);break;case"paragraph":oe=r.default.createElement(E||"p",C(O({},A),{ref:u,className:ee}),j);break;case"small":oe=r.default.createElement(E||"p",C(O({},A),{ref:u,className:ee}),j);break;default:oe=r.default.createElement(E||"p",C(O({},A),{ref:u,className:ee}),j);break}return oe});d.propTypes={variant:n.default.oneOf(g.propTypesVariant),color:n.default.oneOf(g.propTypesColor),as:g.propTypesAs,textGradient:g.propTypesTextGradient,className:g.propTypesClassName,children:g.propTypesChildren},d.displayName="MaterialTailwind.Typography";var s=d})(pk);var hk={},gk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(g,m){for(var S in m)Object.defineProperty(g,S,{enumerable:!0,get:m[S]})}t(e,{propTypesClassName:function(){return a},propTypesChildren:function(){return i},propTypesOpen:function(){return l},propTypesAnimate:function(){return f}});var r=o(vt),n=nr;function o(g){return g&&g.__esModule?g:{default:g}}var a=r.default.string,i=r.default.node.isRequired,l=r.default.bool.isRequired,f=n.propTypesAnimation})(gk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{Collapse:function(){return w},default:function(){return b}});var r=O(P),n=Rr,o=Or,a=O(Br),i=O(St),l=bt,f=O(ht),g=ut,m=gk;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.open,u=d.animate,h=d.className,y=d.children,x=T(d,["open","animate","className","children"]),E=r.default.useRef(null),k=(0,g.useTheme)().collapse,j=k.styles,A=j.base;u=u??{},h=h??"";var M=(0,l.twMerge)((0,i.default)((0,f.default)(A)),h),D={unmount:{height:"0px",transition:{duration:.3,times:[.4,0,.2,1]}},mount:{height:"auto",transition:{duration:.3,times:[.4,0,.2,1]}}},L=(0,a.default)(D,u),z=n.AnimatePresence,H=(0,o.useMergeRefs)([s,E]);return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(z,null,r.default.createElement(n.m.div,S({},x,{ref:H,className:M,initial:"unmount",exit:"unmount",animate:c?"mount":"unmount",variants:L}),y)))});w.displayName="MaterialTailwind.Collapse",w.propTypes={open:m.propTypesOpen,animate:m.propTypesAnimate,className:m.propTypesClassName,children:m.propTypesChildren};var b=w})(hk);var mk={},Tu={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(g,m){for(var S in m)Object.defineProperty(g,S,{enumerable:!0,get:m[S]})}t(e,{propTypesClassName:function(){return o},propTypesDisabled:function(){return a},propTypesSelected:function(){return i},propTypesRipple:function(){return l},propTypesChildren:function(){return f}});var r=n(vt);function n(g){return g&&g.__esModule?g:{default:g}}var o=r.default.string,a=r.default.bool,i=r.default.bool,l=r.default.bool,f=r.default.node.isRequired})(Tu);var bk={},cb={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{ListItemPrefix:function(){return O},default:function(){return T}});var r=g(P),n=ut,o=g(St),a=bt,i=g(ht),l=Tu;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,n.useTheme)().list,u=c.styles.base,h=(0,a.twMerge)((0,o.default)((0,i.default)(u.itemPrefix)),b);return r.default.createElement("div",f({},s,{ref:w,className:h}),d)});O.propTypes={className:l.propTypesClassName,children:l.propTypesChildren},O.displayName="MaterialTailwind.ListItemPrefix";var T=O})(cb);var db={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{ListItemSuffix:function(){return O},default:function(){return T}});var r=g(P),n=ut,o=g(St),a=bt,i=g(ht),l=Tu;function f(){return f=Object.assign||function(C){for(var w=1;w=0)&&Object.prototype.propertyIsEnumerable.call(C,d)&&(b[d]=C[d])}return b}function S(C,w){if(C==null)return{};var b={},d=Object.keys(C),s,c;for(c=0;c=0)&&(b[s]=C[s]);return b}var O=r.default.forwardRef(function(C,w){var b=C.className,d=C.children,s=m(C,["className","children"]),c=(0,n.useTheme)().list,u=c.styles.base,h=(0,a.twMerge)((0,o.default)((0,i.default)(u.itemSuffix)),b);return r.default.createElement("div",f({},s,{ref:w,className:h}),d)});O.propTypes={className:l.propTypesClassName,children:l.propTypesChildren},O.displayName="MaterialTailwind.ListItemSuffix";var T=O})(db);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{ListItem:function(){return b},ListItemPrefix:function(){return g.ListItemPrefix},ListItemSuffix:function(){return m.ListItemSuffix},default:function(){return d}});var r=T(P),n=ut,o=T(js),a=T(St),i=bt,l=T(ht),f=Tu,g=cb,m=db;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.className,h=s.disabled,y=s.selected,x=s.ripple,E=s.children,k=C(s,["className","disabled","selected","ripple","children"]),j=(0,n.useTheme)().list,A=j.defaultProps,M=j.styles.base;x=x??A.ripple;var D=x!==void 0&&new o.default,L,z=(0,i.twMerge)((0,a.default)((0,l.default)(M.item.initial),(L={},S(L,(0,l.default)(M.item.disabled),h),S(L,(0,l.default)(M.item.selected),y&&!h),L)),u);return r.default.createElement("div",O({},k,{ref:c,role:"button",tabIndex:0,className:z,onMouseDown:function(H){var Y=k==null?void 0:k.onMouseDown;return x&&D.create(H,"dark"),typeof Y=="function"&&Y(H)}}),E)});b.propTypes={className:f.propTypesClassName,selected:f.propTypesSelected,disabled:f.propTypesDisabled,ripple:f.propTypesRipple,children:f.propTypesChildren},b.displayName="MaterialTailwind.ListItem";var d=Object.assign(b,{Prefix:g.ListItemPrefix,Suffix:m.ListItemSuffix})})(bk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{List:function(){return w},ListItem:function(){return f.ListItem},ListItemPrefix:function(){return g.ListItemPrefix},ListItemSuffix:function(){return m.ListItemSuffix},default:function(){return b}});var r=O(P),n=ut,o=O(St),a=bt,i=O(ht),l=Tu,f=bk,g=cb,m=db;function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.className,u=d.children,h=T(d,["className","children"]),y=(0,n.useTheme)().list,x=y.defaultProps,E=y.styles.base;c=c??x.className;var k=(0,a.twMerge)((0,o.default)((0,i.default)(E.list)),c);return r.default.createElement("nav",S({},h,{ref:s,className:k}),u)});w.propTypes={className:l.propTypesClassName,children:l.propTypesChildren},w.displayName="MaterialTailwind.List";var b=Object.assign(w,{Item:f.ListItem,ItemPrefix:g.ListItemPrefix,ItemSuffix:m.ListItemSuffix})})(mk);var vk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(d,s){for(var c in s)Object.defineProperty(d,c,{enumerable:!0,get:s[c]})}t(e,{ButtonGroup:function(){return w},default:function(){return b}});var r=O(P),n=O(vt),o=O(St),a=bt,i=O(sr),l=O(ht),f=ut,g=mi;function m(d,s,c){return s in d?Object.defineProperty(d,s,{value:c,enumerable:!0,configurable:!0,writable:!0}):d[s]=c,d}function S(){return S=Object.assign||function(d){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(d,u)&&(c[u]=d[u])}return c}function C(d,s){if(d==null)return{};var c={},u=Object.keys(d),h,y;for(y=0;y=0)&&(c[h]=d[h]);return c}var w=r.default.forwardRef(function(d,s){var c=d.variant,u=d.size,h=d.color,y=d.fullWidth,x=d.ripple,E=d.className,k=d.children,j=T(d,["variant","size","color","fullWidth","ripple","className","children"]),A=(0,f.useTheme)().buttonGroup,M=A.defaultProps,D=A.styles,L=A.valid,z=D.base,H=D.dividerColor;c=c??M.variant,u=u??M.size,h=h??M.color,x=x??M.ripple,y=y??M.fullWidth,E=E??M.className;var Y,G=(0,a.twMerge)((0,o.default)((0,l.default)(z.initial),(Y={},m(Y,(0,l.default)(z.fullWidth),y),m(Y,"divide-x",c!=="outlined"),m(Y,(0,l.default)(H[(0,i.default)(L.colors,h,"gray")]),c!=="outlined"),Y)),E);return r.default.createElement("div",S({},j,{ref:s,className:G}),r.default.Children.map(k,function(B,$){var q;return r.default.isValidElement(B)&&r.default.cloneElement(B,{variant:c,size:u,color:h,ripple:x,fullWidth:y,className:(0,a.twMerge)((0,o.default)({"rounded-r-none":$!==r.default.Children.count(k)-1,"border-r-0":$!==r.default.Children.count(k)-1,"rounded-l-none":$!==0}),(q=B.props)===null||q===void 0?void 0:q.className)})}))});w.propTypes={variant:n.default.oneOf(g.propTypesVariant),size:n.default.oneOf(g.propTypesSize),color:n.default.oneOf(g.propTypesColor),fullWidth:g.propTypesFullWidth,ripple:g.propTypesRipple,className:g.propTypesClassName,children:g.propTypesChildren},w.displayName="MaterialTailwind.ButtonGroup";var b=w})(vk);var yk={},xk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(C,w){for(var b in w)Object.defineProperty(C,b,{enumerable:!0,get:w[b]})}t(e,{propTypesClassName:function(){return o},propTypesPrevArrow:function(){return a},propTypesNextArrow:function(){return i},propTypesNavigation:function(){return l},propTypesAutoplay:function(){return f},propTypesAutoplayDelay:function(){return g},propTypesTransition:function(){return m},propTypesLoop:function(){return S},propTypesChildren:function(){return O},propTypesSlideRef:function(){return T}});var r=n(vt);function n(C){return C&&C.__esModule?C:{default:C}}var o=r.default.string,a=r.default.func,i=r.default.func,l=r.default.func,f=r.default.bool,g=r.default.number,m=r.default.object,S=r.default.bool,O=r.default.node.isRequired,T=r.default.oneOfType([r.default.func,r.default.shape({current:r.default.any})])})(xk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(y,x){for(var E in x)Object.defineProperty(y,E,{enumerable:!0,get:x[E]})}t(e,{Carousel:function(){return u},default:function(){return h}});var r=T(P),n=Rr,o=Or,a=T(St),i=bt,l=T(ht),f=ut,g=xk;function m(y,x){(x==null||x>y.length)&&(x=y.length);for(var E=0,k=new Array(x);E=0)&&Object.prototype.propertyIsEnumerable.call(y,k)&&(E[k]=y[k])}return E}function d(y,x){if(y==null)return{};var E={},k=Object.keys(y),j,A;for(A=0;A=0)&&(E[j]=y[j]);return E}function s(y,x){return S(y)||C(y,x)||c(y,x)||w()}function c(y,x){if(y){if(typeof y=="string")return m(y,x);var E=Object.prototype.toString.call(y).slice(8,-1);if(E==="Object"&&y.constructor&&(E=y.constructor.name),E==="Map"||E==="Set")return Array.from(E);if(E==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(E))return m(y,x)}}var u=r.default.forwardRef(function(y,x){var E=y.children,k=y.prevArrow,j=y.nextArrow,A=y.navigation,M=y.autoplay,D=y.autoplayDelay,L=y.transition,z=y.loop,H=y.className,Y=y.slideRef,G=b(y,["children","prevArrow","nextArrow","navigation","autoplay","autoplayDelay","transition","loop","className","slideRef"]),B=(0,f.useTheme)().carousel,$=B.defaultProps,q=B.styles.base,ee=(0,n.useMotionValue)(0),oe=r.default.useRef(null),ge=s(r.default.useState(0),2),fe=ge[0],re=ge[1],be=r.default.Children.toArray(E);H=H??$.className,k=k??$.prevArrow,j=j??$.nextArrow,A=A??$.navigation,M=M??$.autoplay,D=D??$.autoplayDelay,L=L??$.transition,z=z??$.loop;var he=(0,i.twMerge)((0,a.default)((0,l.default)(q.carousel)),H),pe=(0,i.twMerge)((0,a.default)((0,l.default)(q.slide))),ve=r.default.useCallback(function(){var Pe;return-fe*(((Pe=oe.current)===null||Pe===void 0?void 0:Pe.clientWidth)||0)},[fe]),me=r.default.useCallback(function(){var Pe=z?0:fe;re(fe+1===be.length?Pe:fe+1)},[fe,z,be.length]),ke=function(){var Pe=z?be.length-1:0;re(fe-1<0?Pe:fe-1)};r.default.useEffect(function(){var Pe=(0,n.animate)(ee,ve(),L);return Pe.stop},[ve,fe,ee,L]),r.default.useEffect(function(){window.addEventListener("resize",function(){(0,n.animate)(ee,ve(),L)})},[ve,L,ee]),r.default.useEffect(function(){if(M){var Pe=setInterval(function(){return me()},D);return function(){return clearInterval(Pe)}}},[M,me,D]);var Fe=(0,o.useMergeRefs)([oe,x]);return r.default.createElement("div",O({},G,{ref:Fe,className:he}),be.map(function(Pe,te){return r.default.createElement(n.LazyMotion,{key:te,features:n.domAnimation},r.default.createElement(n.m.div,{ref:Y,className:pe,style:{x:ee,left:"".concat(te*100,"%"),right:"".concat(te*100,"%")}},Pe))}),k&&k({loop:z,handlePrev:ke,activeIndex:fe,firstIndex:fe===0}),j&&j({loop:z,handleNext:me,activeIndex:fe,lastIndex:fe===be.length-1}),A&&A({setActiveIndex:re,activeIndex:fe,length:be.length}))});u.propTypes={className:g.propTypesClassName,children:g.propTypesChildren,nextArrow:g.propTypesNextArrow,prevArrow:g.propTypesPrevArrow,navigation:g.propTypesNavigation,autoplay:g.propTypesAutoplay,autoplayDelay:g.propTypesAutoplayDelay,transition:g.propTypesTransition,loop:g.propTypesLoop,slideRef:g.propTypesSlideRef},u.displayName="MaterialTailwind.Carousel";var h=u})(yk);var wk={},_k={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{propTypesOpen:function(){return a},propTypesSize:function(){return i},propTypesOverlay:function(){return l},propTypesChildren:function(){return f},propTypesPlacement:function(){return g},propTypesOverlayProps:function(){return m},propTypesClassName:function(){return S},propTypesOnClose:function(){return O},propTypesDismiss:function(){return T},propTypesTransition:function(){return C},propTypesOverlayRef:function(){return w}});var r=o(vt),n=nr;function o(b){return b&&b.__esModule?b:{default:b}}var a=r.default.bool.isRequired,i=r.default.number,l=r.default.bool,f=r.default.node.isRequired,g=["top","right","bottom","left"],m=r.default.object,S=r.default.string,O=r.default.func,T=n.propTypesDismissType,C=r.default.object,w=r.default.oneOfType([r.default.func,r.default.shape({current:r.default.any})])})(_k);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(u,h){for(var y in h)Object.defineProperty(u,y,{enumerable:!0,get:h[y]})}t(e,{Drawer:function(){return s},default:function(){return c}});var r=C(P),n=C(vt),o=Rr,a=Or,i=C(Br),l=C(St),f=bt,g=C(ht),m=ut,S=_k;function O(u,h,y){return h in u?Object.defineProperty(u,h,{value:y,enumerable:!0,configurable:!0,writable:!0}):u[h]=y,u}function T(){return T=Object.assign||function(u){for(var h=1;h=0)&&Object.prototype.propertyIsEnumerable.call(u,x)&&(y[x]=u[x])}return y}function d(u,h){if(u==null)return{};var y={},x=Object.keys(u),E,k;for(k=0;k=0)&&(y[E]=u[E]);return y}var s=r.default.forwardRef(function(u,h){var y=u.open,x=u.size,E=u.overlay,k=u.children,j=u.placement,A=u.overlayProps,M=u.className,D=u.onClose,L=u.dismiss,z=u.transition,H=u.overlayRef,Y=b(u,["open","size","overlay","children","placement","overlayProps","className","onClose","dismiss","transition","overlayRef"]),G=(0,m.useTheme)().drawer,B=G.defaultProps,$=G.styles.base,q=(0,o.useAnimation)();x=x??B.size,E=E??B.overlay,j=j??B.placement,M=M??B.className,A=A??B.overlayProps,D=D??B.onClose;var ee;L=(ee=(0,i.default)(B.dismiss,L||{}))!==null&&ee!==void 0?ee:B.dismiss,z=z??B.transition;var oe=(0,f.twMerge)((0,l.default)((0,g.default)($.drawer),{"top-0 right-0":j==="right","bottom-0 left-0":j==="bottom","top-0 left-0":j==="top"||j==="left"}),M),ge=(0,f.twMerge)((0,l.default)((0,g.default)($.overlay)),A==null?void 0:A.className),fe=(0,a.useFloating)({open:y,onOpenChange:D}).context,re=(0,a.useInteractions)([(0,a.useDismiss)(fe,L)]).getFloatingProps;r.default.useEffect(function(){q.start(y?"open":"close")},[y,q,j]);var be={open:{x:0,y:0},close:{x:j==="left"?-x:j==="right"?x:0,y:j==="top"?-x:j==="bottom"?x:0}},he={unmount:{opacity:0,transition:{delay:.3}},mount:{opacity:1}};return r.default.createElement(r.default.Fragment,null,r.default.createElement(o.LazyMotion,{features:o.domAnimation},r.default.createElement(o.AnimatePresence,null,E&&y&&r.default.createElement(o.m.div,{ref:H,className:ge,initial:"unmount",exit:"unmount",animate:y?"mount":"unmount",variants:he,transition:{duration:.3}})),r.default.createElement(o.m.div,T({},re(w({ref:h},Y)),{className:oe,style:{maxWidth:j==="left"||j==="right"?x:"100%",maxHeight:j==="top"||j==="bottom"?x:"100%",height:j==="left"||j==="right"?"100vh":"100%"},initial:"close",animate:q,variants:be,transition:z}),k)))});s.propTypes={open:S.propTypesOpen,size:S.propTypesSize,overlay:S.propTypesOverlay,children:S.propTypesChildren,placement:n.default.oneOf(S.propTypesPlacement),overlayProps:S.propTypesOverlayProps,className:S.propTypesClassName,onClose:S.propTypesOnClose,dismiss:S.propTypesDismiss,transition:S.propTypesTransition,overlayRef:S.propTypesOverlayRef},s.displayName="MaterialTailwind.Drawer";var c=s})(wk);var Sk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Badge:function(){return b},default:function(){return d}});var r=T(P),n=T(vt),o=T(Br),a=T(St),i=bt,l=T(sr),f=T(ht),g=ut,m=Tm;function S(s,c,u){return c in s?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u,s}function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.color,h=s.invisible,y=s.withBorder,x=s.overlap,E=s.placement,k=s.className,j=s.content,A=s.children,M=s.containerProps,D=s.containerRef,L=C(s,["color","invisible","withBorder","overlap","placement","className","content","children","containerProps","containerRef"]),z=(0,g.useTheme)().badge,H=z.valid,Y=z.defaultProps,G=z.styles,B=G.base,$=G.placements,q=G.colors;u=u??Y.color,h=h??Y.invisible,y=y??Y.withBorder,x=x??Y.overlap,E=E??Y.placement;var ee;k=(ee=(0,a.default)(k,Y.className))!==null&&ee!==void 0?ee:Y.className;var oe;M=(oe=(0,o.default)(M,Y.containerProps||{}))!==null&&oe!==void 0?oe:Y.containerProps;var ge=(0,f.default)(B.badge.initial),fe=(0,f.default)(B.badge.withBorder),re=(0,f.default)(B.badge.withContent),be=(0,f.default)(q[(0,l.default)(H.colors,u,"red")]),he=(0,f.default)($[(0,l.default)(H.placements,E,"top-end")][(0,l.default)(H.overlaps,x,"square")]),pe,ve=(0,i.twMerge)((0,a.default)(ge,he,be,(pe={},S(pe,fe,y),S(pe,re,j),pe)),k),me=(0,i.twMerge)((0,a.default)((0,f.default)(B.container),M==null?void 0:M.className));return r.default.createElement("div",O({ref:D},M,{className:me}),A,!h&&r.default.createElement("span",O({},L,{ref:c,className:ve}),j))});b.propTypes={color:n.default.oneOf(m.propTypesColor),invisible:m.propTypesInvisible,withBorder:m.propTypesWithBorder,overlap:n.default.oneOf(m.propTypesOverlap),className:m.propTypesClassName,content:m.propTypesContent,children:m.propTypesChildren,placement:n.default.oneOf(m.propTypesPlacement),containerProps:m.propTypesContainerProps,containerRef:m.propTypesContainerRef},b.displayName="MaterialTailwind.Badge";var d=b})(Sk);var Ck={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(j,A){for(var M in A)Object.defineProperty(j,M,{enumerable:!0,get:A[M]})}t(e,{Rating:function(){return E},default:function(){return k}});var r=C(P),n=C(vt),o=C(St),a=bt,i=C(sr),l=C(ht),f=ut,g=Pm;function m(j,A){(A==null||A>j.length)&&(A=j.length);for(var M=0,D=new Array(A);M=0)&&Object.prototype.propertyIsEnumerable.call(j,D)&&(M[D]=j[D])}return M}function u(j,A){if(j==null)return{};var M={},D=Object.keys(j),L,z;for(z=0;z=0)&&(M[L]=j[L]);return M}function h(j,A){return S(j)||b(j,A)||x(j,A)||d()}function y(j){return O(j)||w(j)||x(j)||s()}function x(j,A){if(j){if(typeof j=="string")return m(j,A);var M=Object.prototype.toString.call(j).slice(8,-1);if(M==="Object"&&j.constructor&&(M=j.constructor.name),M==="Map"||M==="Set")return Array.from(M);if(M==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(M))return m(j,A)}}var E=r.default.forwardRef(function(j,A){var M=j.count,D=j.value,L=j.ratedIcon,z=j.unratedIcon,H=j.ratedColor,Y=j.unratedColor,G=j.className,B=j.onChange,$=j.readonly,q=c(j,["count","value","ratedIcon","unratedIcon","ratedColor","unratedColor","className","onChange","readonly"]),ee,oe,ge=(0,f.useTheme)().rating,fe=ge.valid,re=ge.defaultProps,be=ge.styles,he=be.base,pe=be.colors;M=M??re.count,D=D??re.value,L=L??re.ratedIcon,L=L??re.ratedIcon,z=z??re.unratedIcon,H=H??re.ratedColor,Y=Y??re.unratedColor,G=G??re.className,B=B??re.onChange,$=$??re.readonly;var ve=h(r.default.useState(function(){return y(Array(D).fill("rated")).concat(y(Array(M-D).fill("un_rated")))}),2),me=ve[0],ke=ve[1],Fe=h(r.default.useState(function(){return y(Array(M).fill("un_rated"))}),2),Pe=Fe[0],te=Fe[1],Oe=h(r.default.useState(!1),2),$e=Oe[0],Be=Oe[1],We=(0,l.default)(pe[(0,i.default)(fe.colors,H,"yellow")]),lt=(0,l.default)(pe[(0,i.default)(fe.colors,Y,"blue-gray")]),qe=(0,a.twMerge)((0,o.default)((0,l.default)(he.rating),G)),Ke=(0,l.default)(he.icon),xt=L,rt=z,dt=r.default.isValidElement(L)&&r.default.cloneElement(xt,{className:(0,a.twMerge)((0,o.default)(Ke,We,xt==null||(ee=xt.props)===null||ee===void 0?void 0:ee.className))}),Rt=r.default.isValidElement(L)&&r.default.cloneElement(rt,{className:(0,a.twMerge)((0,o.default)(Ke,lt,rt==null||(oe=rt.props)===null||oe===void 0?void 0:oe.className))}),Ae=!r.default.isValidElement(L)&&r.default.createElement(L,{className:(0,a.twMerge)((0,o.default)(Ke,We))}),ft=!r.default.isValidElement(L)&&r.default.createElement(z,{className:(0,a.twMerge)((0,o.default)(Ke,lt))}),At=function(Z){return Z.map(function(ue,ne){return r.default.createElement("span",{key:ne,onClick:function(){if(!$){var xe=me.map(function(se,ce){return ce<=ne?"rated":"un_rated"});ke(xe),B&&typeof B=="function"&&B(xe.filter(function(se){return se==="rated"}).length)}},onMouseEnter:function(){if(!$){var xe=Pe.map(function(se,ce){return ce<=ne?"rated":"un_rated"});Be(!0),te(xe)}},onMouseLeave:function(){return!$&&Be(!1)}},r.default.isValidElement(ue==="rated"?L:z)?ue==="rated"?dt:Rt:ue==="rated"?Ae:ft)})};return r.default.createElement("div",T({},q,{ref:A,className:qe}),At($e?Pe:me))});E.propTypes={count:g.propTypesCount,value:g.propTypesValue,ratedIcon:g.propTypesRatedIcon,unratedIcon:g.propTypesUnratedIcon,ratedColor:n.default.oneOf(g.propTypesColor),unratedColor:n.default.oneOf(g.propTypesColor),className:g.propTypesClassName,onChange:g.propTypesOnChange,readonly:g.propTypesReadonly},E.displayName="MaterialTailwind.Rating";var k=E})(Ck);var Tk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(x,E){for(var k in E)Object.defineProperty(x,k,{enumerable:!0,get:E[k]})}t(e,{Slider:function(){return h},default:function(){return y}});var r=C(P),n=C(vt),o=C(Br),a=C(St),i=bt,l=C(sr),f=C(ht),g=ut,m=Om;function S(x,E){(E==null||E>x.length)&&(E=x.length);for(var k=0,j=new Array(E);k=0)&&Object.prototype.propertyIsEnumerable.call(x,j)&&(k[j]=x[j])}return k}function s(x,E){if(x==null)return{};var k={},j=Object.keys(x),A,M;for(M=0;M=0)&&(k[A]=x[A]);return k}function c(x,E){return O(x)||w(x,E)||u(x,E)||b()}function u(x,E){if(x){if(typeof x=="string")return S(x,E);var k=Object.prototype.toString.call(x).slice(8,-1);if(k==="Object"&&x.constructor&&(k=x.constructor.name),k==="Map"||k==="Set")return Array.from(k);if(k==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(k))return S(x,E)}}var h=r.default.forwardRef(function(x,E){var k=x.color,j=x.size,A=x.className,M=x.trackClassName,D=x.thumbClassName,L=x.barClassName,z=x.value,H=x.defaultValue,Y=x.onChange,G=x.min,B=x.max,$=x.step,q=x.inputRef,ee=x.inputProps,oe=d(x,["color","size","className","trackClassName","thumbClassName","barClassName","value","defaultValue","onChange","min","max","step","inputRef","inputProps"]),ge=(0,g.useTheme)().slider,fe=ge.valid,re=ge.defaultProps,be=ge.styles,he=be.base,pe=be.sizes,ve=be.colors,me=c(r.default.useState(H||0),2),ke=me[0],Fe=me[1];r.default.useMemo(function(){H&&Fe(H)},[H]),k=k??re.color,j=j??re.size,G=G??re.min,B=B??re.max,$=$??re.step;var Pe;A=(Pe=(0,a.default)(re.className,A))!==null&&Pe!==void 0?Pe:re.className;var te;D=(te=(0,a.default)(re.thumbClassName,D))!==null&&te!==void 0?te:re.thumbClassName;var Oe;M=(Oe=(0,a.default)(re.trackClassName,M))!==null&&Oe!==void 0?Oe:re.trackClassName;var $e;L=($e=(0,a.default)(re.barClassName,L))!==null&&$e!==void 0?$e:re.barClassName;var Be;ee=(Be=(0,o.default)(ee,(re==null?void 0:re.inputProps)||{}))!==null&&Be!==void 0?Be:re.inputProps;var We=(0,i.twMerge)((0,a.default)((0,f.default)(he.container),(0,f.default)(ve[(0,l.default)(fe.colors,k,"gray")]),(0,f.default)(pe[(0,l.default)(fe.sizes,j,"md")].container),A)),lt=(0,i.twMerge)((0,a.default)((0,f.default)(he.bar),L)),qe=(0,a.default)((0,f.default)(he.track),(0,f.default)(pe[(0,l.default)(fe.sizes,j,"md")].track)),Ke=(0,a.default)((0,f.default)(he.thumb),(0,f.default)(pe[(0,l.default)(fe.sizes,j,"md")].thumb)),xt=(0,a.default)((0,f.default)(he.slider),(0,i.twMerge)(qe,M),(0,i.twMerge)(Ke,D));return r.default.createElement("div",T({},oe,{ref:E,className:We}),r.default.createElement("label",{className:lt,style:{width:"".concat(z||ke,"%")}}),r.default.createElement("input",T({ref:q,type:"range",max:B,min:G,step:$,className:xt},z?{value:z}:null,{defaultValue:H,onChange:function(rt){return Y?Y(rt):Fe(Number(rt.target.value))}})))});h.propTypes={color:n.default.oneOf(m.propTypesColor),size:n.default.oneOf(m.propTypesSize),className:m.propTypesClassName,trackClassName:m.propTypesTrackClassName,thumbClassName:m.propTypesThumbClassName,barClassName:m.propTypesBarClassName,defaultValue:m.propTypesDefaultValue,value:m.propTypesValue,onChange:m.propTypesOnChange,min:m.propTypesMin,max:m.propTypesMax,step:m.propTypesStep,inputRef:m.propTypesInputRef,inputProps:m.propTypesInputProps},h.displayName="MaterialTailwind.Slider";var y=h})(Tk);var Pk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Spinner:function(){return b},default:function(){return d}});var r=S(vt),n=T(P),o=S(St),a=bt,i=S(sr),l=S(ht),f=ut,g=km;function m(){return m=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=(0,n.forwardRef)(function(s,c){var u=s.color,h=s.className,y=C(s,["color","className"]),x=(0,f.useTheme)().spinner,E=x.defaultProps,k=x.valid,j=x.styles,A=j.base,M=j.colors;u=u??E.color;var D;h=(D=(0,o.default)(E.className,h))!==null&&D!==void 0?D:E.className;var L=(0,l.default)(M[(0,i.default)(k.colors,u,"gray")]),z=(0,a.twMerge)((0,o.default)((0,l.default)(A)),h),H,Y;return n.default.createElement("svg",m({},y,{ref:c,className:z,viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:(H=y==null?void 0:y.width)!==null&&H!==void 0?H:24,height:(Y=y==null?void 0:y.height)!==null&&Y!==void 0?Y:24}),n.default.createElement("path",{d:"M32 3C35.8083 3 39.5794 3.75011 43.0978 5.20749C46.6163 6.66488 49.8132 8.80101 52.5061 11.4939C55.199 14.1868 57.3351 17.3837 58.7925 20.9022C60.2499 24.4206 61 28.1917 61 32C61 35.8083 60.2499 39.5794 58.7925 43.0978C57.3351 46.6163 55.199 49.8132 52.5061 52.5061C49.8132 55.199 46.6163 57.3351 43.0978 58.7925C39.5794 60.2499 35.8083 61 32 61C28.1917 61 24.4206 60.2499 20.9022 58.7925C17.3837 57.3351 14.1868 55.199 11.4939 52.5061C8.801 49.8132 6.66487 46.6163 5.20749 43.0978C3.7501 39.5794 3 35.8083 3 32C3 28.1917 3.75011 24.4206 5.2075 20.9022C6.66489 17.3837 8.80101 14.1868 11.4939 11.4939C14.1868 8.80099 17.3838 6.66487 20.9022 5.20749C24.4206 3.7501 28.1917 3 32 3L32 3Z",stroke:"currentColor",strokeWidth:"5",strokeLinecap:"round",strokeLinejoin:"round"}),n.default.createElement("path",{d:"M32 3C36.5778 3 41.0906 4.08374 45.1692 6.16256C49.2477 8.24138 52.7762 11.2562 55.466 14.9605C58.1558 18.6647 59.9304 22.9531 60.6448 27.4748C61.3591 31.9965 60.9928 36.6232 59.5759 40.9762",stroke:"currentColor",strokeWidth:"5",strokeLinecap:"round",strokeLinejoin:"round",className:L}))});b.propTypes={color:r.default.oneOf(g.propTypesColor),className:g.propTypesClassName},b.displayName="MaterialTailwind.Spinner";var d=b})(Pk);var Ok={},Pu={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(h,y){for(var x in y)Object.defineProperty(h,x,{enumerable:!0,get:y[x]})}t(e,{useTimelineItem:function(){return s},TimelineItem:function(){return c},default:function(){return u}});var r=m(P),n=bt,o=m(ht),a=ut,i=Ko;function l(h,y){(y==null||y>h.length)&&(y=h.length);for(var x=0,E=new Array(y);x=0)&&Object.prototype.propertyIsEnumerable.call(h,E)&&(x[E]=h[E])}return x}function C(h,y){if(h==null)return{};var x={},E=Object.keys(h),k,j;for(j=0;j=0)&&(x[k]=h[k]);return x}function w(h,y){return f(h)||S(h,y)||b(h,y)||O()}function b(h,y){if(h){if(typeof h=="string")return l(h,y);var x=Object.prototype.toString.call(h).slice(8,-1);if(x==="Object"&&h.constructor&&(x=h.constructor.name),x==="Map"||x==="Set")return Array.from(x);if(x==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(x))return l(h,y)}}var d=r.default.createContext(0);d.displayName="MaterialTailwind.TimelineItemContext";function s(){var h=r.default.useContext(d);if(!h)throw new Error("useTimelineItemContext() must be used within a TimelineItem. It happens when you use TimelineIcon, TimelineConnector or TimelineBody components outside the TimelineItem component.");return h}var c=r.default.forwardRef(function(h,y){var x=h.className,E=h.children,k=T(h,["className","children"]),j=(0,a.useTheme)().timelineItem,A=j.styles,M=A.base,D=w(r.default.useState(0),2),L=D[0],z=D[1],H=r.default.useMemo(function(){return[L,z]},[L,z]),Y=(0,n.twMerge)((0,o.default)(M),x);return r.default.createElement(d.Provider,{value:H},r.default.createElement("li",g({ref:y},k,{className:Y}),E))});c.propTypes={className:i.propTypeClassName,children:i.propTypeChildren.isRequired},c.displayName="MaterialTailwind.TimelineItem";var u=c})(Pu);var kk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(x,E){for(var k in E)Object.defineProperty(x,k,{enumerable:!0,get:E[k]})}t(e,{TimelineIcon:function(){return h},default:function(){return y}});var r=C(P),n=C(vt),o=Or,a=bt,i=C(sr),l=C(ht),f=ut,g=Pu,m=Ko;function S(x,E){(E==null||E>x.length)&&(E=x.length);for(var k=0,j=new Array(E);k=0)&&Object.prototype.propertyIsEnumerable.call(x,j)&&(k[j]=x[j])}return k}function s(x,E){if(x==null)return{};var k={},j=Object.keys(x),A,M;for(M=0;M=0)&&(k[A]=x[A]);return k}function c(x,E){return O(x)||w(x,E)||u(x,E)||b()}function u(x,E){if(x){if(typeof x=="string")return S(x,E);var k=Object.prototype.toString.call(x).slice(8,-1);if(k==="Object"&&x.constructor&&(k=x.constructor.name),k==="Map"||k==="Set")return Array.from(k);if(k==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(k))return S(x,E)}}var h=r.default.forwardRef(function(x,E){var k=x.color,j=x.variant,A=x.className,M=x.children,D=d(x,["color","variant","className","children"]),L=(0,f.useTheme)().timelineIcon,z=L.styles,H=L.valid,Y=z.base,G=z.variants,B=c((0,g.useTimelineItem)(),2),$=B[1],q=r.default.useRef(null),ee=(0,o.useMergeRefs)([E,q]);r.default.useEffect(function(){var fe=q.current;if(fe){var re=fe.getBoundingClientRect().width;return $(re),function(){$(0)}}},[$,A,M]);var oe=(0,l.default)(G[(0,i.default)(H.variants,j,"filled")][(0,i.default)(H.colors,k,"gray")]),ge=(0,a.twMerge)((0,l.default)(Y),oe,A);return r.default.createElement("span",T({ref:ee},D,{className:ge}),M)});h.propTypes={children:m.propTypeChildren,className:m.propTypeClassName,color:n.default.oneOf(m.propTypeColor),variant:n.default.oneOf(m.propTypeVariant)},h.displayName="MaterialTailwind.TimelineIcon";var y=h})(kk);var Nk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(u,h){for(var y in h)Object.defineProperty(u,y,{enumerable:!0,get:h[y]})}t(e,{TimelineHeader:function(){return s},default:function(){return c}});var r=S(P),n=bt,o=S(ht),a=ut,i=Pu,l=Ko;function f(u,h){(h==null||h>u.length)&&(h=u.length);for(var y=0,x=new Array(h);y=0)&&Object.prototype.propertyIsEnumerable.call(u,x)&&(y[x]=u[x])}return y}function w(u,h){if(u==null)return{};var y={},x=Object.keys(u),E,k;for(k=0;k=0)&&(y[E]=u[E]);return y}function b(u,h){return g(u)||O(u,h)||d(u,h)||T()}function d(u,h){if(u){if(typeof u=="string")return f(u,h);var y=Object.prototype.toString.call(u).slice(8,-1);if(y==="Object"&&u.constructor&&(y=u.constructor.name),y==="Map"||y==="Set")return Array.from(y);if(y==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(y))return f(u,h)}}var s=r.default.forwardRef(function(u,h){var y=u.className,x=u.children,E=C(u,["className","children"]),k=(0,a.useTheme)().timelineBody,j=k.styles,A=j.base,M=b((0,i.useTimelineItem)(),1),D=M[0],L=(0,n.twMerge)((0,o.default)(A),y);return r.default.createElement("div",m({},E,{ref:h,className:L}),r.default.createElement("span",{className:"pointer-events-none invisible h-full flex-shrink-0",style:{width:"".concat(D,"px")}}),r.default.createElement("div",null,x))});s.propTypes={children:l.propTypeChildren,className:l.propTypeClassName},s.displayName="MaterialTailwind.TimelineHeader";var c=s})(Nk);var jk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{TimelineHeader:function(){return S},default:function(){return O}});var r=f(P),n=bt,o=f(ht),a=ut,i=Ko;function l(){return l=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(T,b)&&(w[b]=T[b])}return w}function m(T,C){if(T==null)return{};var w={},b=Object.keys(T),d,s;for(s=0;s=0)&&(w[d]=T[d]);return w}var S=r.default.forwardRef(function(T,C){var w=T.className,b=T.children,d=g(T,["className","children"]),s=(0,a.useTheme)().timelineHeader,c=s.styles,u=c.base,h=(0,n.twMerge)((0,o.default)(u),w);return r.default.createElement("div",l({},d,{ref:C,className:h}),b)});S.propTypes={children:i.propTypeChildren,className:i.propTypeClassName},S.displayName="MaterialTailwind.TimelineHeader";var O=S})(jk);var Ek={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(u,h){for(var y in h)Object.defineProperty(u,y,{enumerable:!0,get:h[y]})}t(e,{TimelineConnector:function(){return s},default:function(){return c}});var r=S(P),n=bt,o=S(ht),a=ut,i=Pu,l=Ko;function f(u,h){(h==null||h>u.length)&&(h=u.length);for(var y=0,x=new Array(h);y=0)&&Object.prototype.propertyIsEnumerable.call(u,x)&&(y[x]=u[x])}return y}function w(u,h){if(u==null)return{};var y={},x=Object.keys(u),E,k;for(k=0;k=0)&&(y[E]=u[E]);return y}function b(u,h){return g(u)||O(u,h)||d(u,h)||T()}function d(u,h){if(u){if(typeof u=="string")return f(u,h);var y=Object.prototype.toString.call(u).slice(8,-1);if(y==="Object"&&u.constructor&&(y=u.constructor.name),y==="Map"||y==="Set")return Array.from(y);if(y==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(y))return f(u,h)}}var s=r.default.forwardRef(function(u,h){var y=u.className,x=u.children,E=C(u,["className","children"]),k,j=(0,a.useTheme)().timelineConnector,A=j.styles,M=A.base,D=b((0,i.useTimelineItem)(),1),L=D[0],z=(0,o.default)(M.line),H=(0,n.twMerge)((0,o.default)(M.container),y);return r.default.createElement("span",m({},E,{ref:h,className:H,style:{top:"".concat(L,"px"),width:"".concat(L,"px"),opacity:L?1:0,height:"calc(100% - ".concat(L,"px)")}}),x&&r.default.isValidElement(x)?r.default.cloneElement(x,{className:(0,n.twMerge)(z,(k=x.props)===null||k===void 0?void 0:k.className)}):r.default.createElement("span",{className:z}))});s.propTypes={children:l.propTypeChildren,className:l.propTypeClassName},s.displayName="MaterialTailwind.TimelineConnector";var c=s})(Ek);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(s,c){for(var u in c)Object.defineProperty(s,u,{enumerable:!0,get:c[u]})}t(e,{Timeline:function(){return b},TimelineItem:function(){return l.default},TimelineIcon:function(){return f.default},TimelineBody:function(){return g.default},TimelineHeader:function(){return m.default},TimelineConnector:function(){return S.default},default:function(){return d}});var r=T(P),n=bt,o=T(ht),a=ut,i=Ko,l=T(Pu),f=T(kk),g=T(Nk),m=T(jk),S=T(Ek);function O(){return O=Object.assign||function(s){for(var c=1;c=0)&&Object.prototype.propertyIsEnumerable.call(s,h)&&(u[h]=s[h])}return u}function w(s,c){if(s==null)return{};var u={},h=Object.keys(s),y,x;for(x=0;x=0)&&(u[y]=s[y]);return u}var b=r.default.forwardRef(function(s,c){var u=s.className,h=s.children,y=C(s,["className","children"]),x=(0,a.useTheme)().timeline,E=x.styles,k=E.base,j=(0,n.twMerge)((0,o.default)(k),u);return r.default.createElement("ul",O({ref:c},y,{className:j}),h)});b.propTypes={className:i.propTypeClassName,children:i.propTypeChildren},b.displayName="MaterialTailwind.Timeline";var d=Object.assign(b,{Item:l.default,Icon:f.default,Header:m.default,Body:g.default,Connector:S.default})})(Ok);var Ak={},Rk={},fb={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(g,m){for(var S in m)Object.defineProperty(g,S,{enumerable:!0,get:m[S]})}t(e,{propTypesActiveStep:function(){return o},propTypesIsLastStep:function(){return a},propTypesIsFirstStep:function(){return i},propTypesChildren:function(){return l},propTypesClassName:function(){return f}});var r=n(vt);function n(g){return g&&g.__esModule?g:{default:g}}var o=r.default.number,a=r.default.func,i=r.default.func,l=r.default.node,f=r.default.string})(fb);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{Step:function(){return S},default:function(){return O}});var r=f(P),n=bt,o=f(ht),a=ut,i=fb;function l(){return l=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(T,b)&&(w[b]=T[b])}return w}function m(T,C){if(T==null)return{};var w={},b=Object.keys(T),d,s;for(s=0;s=0)&&(w[d]=T[d]);return w}var S=r.default.forwardRef(function(T,C){var w=T.className;T.activeClassName,T.completedClassName;var b=T.children,d=g(T,["className","activeClassName","completedClassName","children"]),s=(0,a.useTheme)().step,c=s.styles.base,u=(0,n.twMerge)((0,o.default)(c.initial),w);return r.default.createElement("div",l({},d,{ref:C,className:u}),b)});S.propTypes={className:i.propTypesClassName,activeClassName:i.propTypesClassName,completedClassName:i.propTypesClassName,children:i.propTypesChildren},S.displayName="MaterialTailwind.Step";var O=S})(Rk);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(k,j){for(var A in j)Object.defineProperty(k,A,{enumerable:!0,get:j[A]})}t(e,{Stepper:function(){return x},Step:function(){return l.default},default:function(){return E}});var r=T(P),n=Or,o=bt,a=T(ht),i=ut,l=T(Rk),f=fb;function g(k,j){(j==null||j>k.length)&&(j=k.length);for(var A=0,M=new Array(j);A=0)&&Object.prototype.propertyIsEnumerable.call(k,M)&&(A[M]=k[M])}return A}function u(k,j){if(k==null)return{};var A={},M=Object.keys(k),D,L;for(L=0;L=0)&&(A[D]=k[D]);return A}function h(k,j){return m(k)||C(k,j)||y(k,j)||w()}function y(k,j){if(k){if(typeof k=="string")return g(k,j);var A=Object.prototype.toString.call(k).slice(8,-1);if(A==="Object"&&k.constructor&&(A=k.constructor.name),A==="Map"||A==="Set")return Array.from(A);if(A==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(A))return g(k,j)}}var x=r.default.forwardRef(function(k,j){var A=k.activeStep,M=k.isFirstStep,D=k.isLastStep,L=k.className,z=k.lineClassName,H=k.activeLineClassName,Y=k.children,G=c(k,["activeStep","isFirstStep","isLastStep","className","lineClassName","activeLineClassName","children"]),B=(0,i.useTheme)(),$=B.stepper,q=B.step,ee=$.styles.base,oe=q.styles,ge=oe.base,fe=r.default.useRef(null),re=h(r.default.useState(0),2),be=re[0],he=re[1],pe=A===0,ve=Array.isArray(Y)&&A===Y.length-1,me=Array.isArray(Y)&&A>Y.length-1;r.default.useEffect(function(){if(fe.current){var Be=Y,We=fe.current.getBoundingClientRect().width,lt=We/(Be.length-1);he(lt)}},[Y]);var ke=r.default.useMemo(function(){if(!me)return be*A},[A,me,be]);(0,n.useMergeRefs)([j,fe]);var Fe=(0,o.twMerge)((0,a.default)(ee.stepper),L),Pe=(0,o.twMerge)((0,a.default)(ee.line.initial),z),te=(0,o.twMerge)(Pe,(0,a.default)(ee.line.active),H),Oe=(0,a.default)(ge.active),$e=(0,a.default)(ge.completed);return r.default.useEffect(function(){D&&typeof D=="function"&&D(ve),M&&typeof M=="function"&&M(pe)},[M,pe,D,ve]),r.default.createElement("div",O({},G,{ref:fe,className:Fe}),r.default.createElement("div",{className:Pe}),r.default.createElement("div",{className:te,style:{width:"".concat(ke,"px")}}),Array.isArray(Y)?Y.map(function(Be,We){var lt,qe;return r.default.cloneElement(Be,s(b({key:We},Be.props),{className:(0,o.twMerge)(Be.props.className,We===A?(0,o.twMerge)(Oe,(lt=Be.props)===null||lt===void 0?void 0:lt.activeClassName):We=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=r.default.forwardRef(function(b,d){var s=b.children,c=O(b,["children"]),u,h=(0,o.useSpeedDial)(),y=h.getReferenceProps,x=h.refs,E=(0,n.useMergeRefs)([d,x.setReference]);return r.default.cloneElement(s,g({},y(S(g({},c),{ref:E,className:(0,a.twMerge)(s==null||(u=s.props)===null||u===void 0?void 0:u.className,c==null?void 0:c.className)}))))});C.propTypes={children:i.propTypesChildren},C.displayName="MaterialTailwind.SpeedDialHandler";var w=C}(vh)),vh}var yh={},Dw;function Mz(){return Dw||(Dw=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(b,d){for(var s in d)Object.defineProperty(b,s,{enumerable:!0,get:d[s]})}t(e,{SpeedDialContent:function(){return C},default:function(){return w}});var r=S(P),n=Rr,o=Or,a=pb(),i=ut,l=bt,f=S(ht),g=Ou;function m(){return m=Object.assign||function(b){for(var d=1;d=0)&&Object.prototype.propertyIsEnumerable.call(b,c)&&(s[c]=b[c])}return s}function T(b,d){if(b==null)return{};var s={},c=Object.keys(b),u,h;for(h=0;h=0)&&(s[u]=b[u]);return s}var C=r.default.forwardRef(function(b,d){var s=b.children,c=b.className,u=O(b,["children","className"]),h=(0,i.useTheme)(),y=h.speedDialContent.styles,x=(0,a.useSpeedDial)(),E=x.x,k=x.y,j=x.refs,A=x.open,M=x.strategy,D=x.getFloatingProps,L=x.animation,z=(0,o.useMergeRefs)([d,j.setFloating]),H=(0,l.twMerge)((0,f.default)(y),c),Y=n.AnimatePresence;return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(Y,null,A&&r.default.createElement("div",m({},u,{ref:z,className:H,style:{position:M,top:k??0,left:E??0}},D()),r.default.Children.map(s,function(G){return r.default.createElement(n.m.div,{initial:"unmount",exit:"unmount",animate:A?"mount":"unmount",variants:L},G)}))))});C.propTypes={children:g.propTypesChildren,className:g.propTypesClassName},C.displayName="MaterialTailwind.SpeedDialContent";var w=C}(yh)),yh}var Mk={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(T,C){for(var w in C)Object.defineProperty(T,w,{enumerable:!0,get:C[w]})}t(e,{SpeedDialAction:function(){return S},default:function(){return O}});var r=f(P),n=ut,o=bt,a=f(ht),i=Ou;function l(){return l=Object.assign||function(T){for(var C=1;C=0)&&Object.prototype.propertyIsEnumerable.call(T,b)&&(w[b]=T[b])}return w}function m(T,C){if(T==null)return{};var w={},b=Object.keys(T),d,s;for(s=0;s=0)&&(w[d]=T[d]);return w}var S=r.default.forwardRef(function(T,C){var w=T.className,b=T.children,d=g(T,["className","children"]),s=(0,n.useTheme)(),c=s.speedDialAction.styles,u=(0,o.twMerge)((0,a.default)(c),w);return r.default.createElement("button",l({},d,{ref:C,className:u}),b)});S.propTypes={children:i.propTypesChildren,className:i.propTypesClassName},S.displayName="SpeedDialAction";var O=S})(Mk);var Lw;function pb(){return Lw||(Lw=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(h,y){for(var x in y)Object.defineProperty(h,x,{enumerable:!0,get:y[x]})}t(e,{SpeedDialContext:function(){return d},useSpeedDial:function(){return s},SpeedDial:function(){return c},SpeedDialHandler:function(){return l.default},SpeedDialContent:function(){return f.default},SpeedDialAction:function(){return g.default},default:function(){return u}});var r=O(P),n=Or,o=ut,a=O(Br),i=Ou,l=O(Rz()),f=O(Mz()),g=O(Mk);function m(h,y){(y==null||y>h.length)&&(y=h.length);for(var x=0,E=new Array(y);x.");return h}function c(h){var y=h.open,x=h.handler,E=h.placement,k=h.offset,j=h.dismiss,A=h.animate,M=h.children,D=(0,o.useTheme)(),L=D.speedDial.defaultProps,z=w(r.default.useState(!1),2),H=z[0],Y=z[1];y=y??H,x=x??Y,E=E??L.placement,k=k??L.offset,j=j??L.dismiss,A=A??L.animate;var G={unmount:{opacity:0,transform:"scale(0.5)",transition:{duration:.2,times:[.4,0,.2,1]}},mount:{opacity:1,transform:"scale(1)",transition:{duration:.2,times:[.4,0,.2,1]}}},B=(0,a.default)(G,A),$=(0,n.useFloatingNodeId)(),q=(0,n.useFloating)({open:y,nodeId:$,placement:E,onOpenChange:x,whileElementsMounted:n.autoUpdate,middleware:[(0,n.offset)(k),(0,n.flip)(),(0,n.shift)()]}),ee=q.x,oe=q.y,ge=q.strategy,fe=q.refs,re=q.context,be=(0,n.useInteractions)([(0,n.useHover)(re,{handleClose:(0,n.safePolygon)()}),(0,n.useDismiss)(re,j)]),he=be.getReferenceProps,pe=be.getFloatingProps,ve=r.default.useMemo(function(){return{x:ee,y:oe,strategy:ge,refs:fe,open:y,context:re,getReferenceProps:he,getFloatingProps:pe,animation:B}},[re,pe,he,fe,ge,ee,oe,y,B]);return r.default.createElement(d.Provider,{value:ve},r.default.createElement("div",{className:"group"},r.default.createElement(n.FloatingNode,{id:$},M)))}c.propTypes={open:i.propTypesOpen,handler:i.propTypesHanlder,placement:i.propTypesPlacement,offset:i.propTypesOffset,dismiss:i.propTypesDismiss,className:i.propTypesClassName,children:i.propTypesChildren,animate:i.propTypesAnimate},c.displayName="MaterialTailwind.SpeedDial";var u=Object.assign(c,{Handler:l.default,Content:f.default,Action:g.default})}(bh)),bh}(function(e){Object.defineProperty(e,"__esModule",{value:!0}),t(qC,e),t(GP,e),t(qP,e),t(KP,e),t(QP,e),t(XP,e),t(tO,e),t(rO,e),t(nO,e),t(Lf,e),t($O,e),t(HO,e),t(QO,e),t(ZO,e),t(tk,e),t(rk,e),t(nk,e),t(ak,e),t(ik,e),t(dk,e),t(fk,e),t(pk,e),t(hk,e),t(mk,e),t(vk,e),t(yk,e),t(wk,e),t(Sk,e),t(Ck,e),t(Tk,e),t(Pk,e),t(Ok,e),t(Ak,e),t(pb(),e),t(ut,e),t(pm,e);function t(r,n){return Object.keys(r).forEach(function(o){o!=="default"&&!Object.prototype.hasOwnProperty.call(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:function(){return r[o]}})}),r}})(V);function Iz({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"}))}const Dz=P.forwardRef(Iz),Lz=Dz;function Fz({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"}))}const zz=P.forwardRef(Fz),Bz=zz;function Vz({title:e,titleId:t,...r},n){return P.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true",ref:n,"aria-labelledby":t},r),e?P.createElement("title",{id:t},e):null,P.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))}const Uz=P.forwardRef(Vz),Ik=Uz,hb=Oo.createContext(null);hb.displayName="MaterialTailwindContext";function Wz(e,t){switch(t.type){case"OPEN_SIDENAV":return{...e,openSidenav:t.value};case"SIDENAV_TYPE":return{...e,sidenavType:t.value};case"SIDENAV_COLOR":return{...e,sidenavColor:t.value};case"TRANSPARENT_NAVBAR":return{...e,transparentNavbar:t.value};case"FIXED_NAVBAR":return{...e,fixedNavbar:t.value};case"OPEN_CONFIGURATOR":return{...e,openConfigurator:t.value};default:throw new Error(`Unhandled action type: ${t.type}`)}}function gb({children:e}){const t={openSidenav:!1,sidenavColor:"gray",sidenavType:"white",transparentNavbar:!1,fixedNavbar:!0,openConfigurator:!1},[r,n]=Oo.useReducer(Wz,t),o=Oo.useMemo(()=>[r,n],[r,n]);return v.jsx(hb.Provider,{value:o,children:e})}function Gf(){const e=Oo.useContext(hb);if(!e)throw new Error("useMaterialTailwindController should be used inside the MaterialTailwindControllerProvider.");return e}gb.displayName="/src/context/index.jsx";gb.propTypes={children:xn.node.isRequired};const Dk=(e,t)=>e({type:"OPEN_SIDENAV",value:t}),$z=(e,t)=>e({type:"SIDENAV_COLOR",value:t}),Hz=(e,t)=>e({type:"FIXED_NAVBAR",value:t}),mb=(e,t)=>e({type:"OPEN_CONFIGURATOR",value:t}),Ai={none:0,read:1,full:2},bb=P.createContext(null);bb.displayName="AuthContext";const Lk=e=>!e||typeof e!="object"||Array.isArray(e)?{}:Object.entries(e).reduce((t,[r,n])=>{if(typeof r!="string"||!r)return t;const o=typeof n=="string"?n:String(n??"").trim();return t[r]=o||"none",t},{}),Gz=e=>!e||typeof e!="object"||Array.isArray(e)?{}:Object.entries(e).reduce((t,[r,n])=>{const o=Number(r);if(!Number.isFinite(o))return t;const a=n!=null&&n.permissions&&typeof n.permissions=="object"?n.permissions:n;return t[o]={permissions:Lk(a),groupId:Number.isFinite(Number(n==null?void 0:n.groupId))?Number(n.groupId):null,useGlobalGroup:!!(n!=null&&n.useGlobalGroup)},t},{}),qz=e=>Array.isArray(e)?e.map(t=>{const r=Number((t==null?void 0:t.serverId)??(t==null?void 0:t.server_id)??(t==null?void 0:t.id));return Number.isFinite(r)?{serverId:r,groupId:Number.isFinite(Number((t==null?void 0:t.groupId)??(t==null?void 0:t.group_id)))?Number((t==null?void 0:t.groupId)??(t==null?void 0:t.group_id)):null,useGlobalGroup:!!((t==null?void 0:t.useGlobalGroup)??(t==null?void 0:t.use_global_group)),serverName:(t==null?void 0:t.serverName)||(t==null?void 0:t.server_name)||null,serverUrl:(t==null?void 0:t.serverUrl)||(t==null?void 0:t.server_url)||null}:null}).filter(Boolean):[];function Kz({children:e}){const[t,r]=P.useState({user:null,permissions:{},serverPermissions:{},serverAssignments:[],loading:!1,error:null,lastErrorCode:null,initialized:!1}),n=P.useCallback(m=>{const S=(m==null?void 0:m.user)??null,O=Lk(m==null?void 0:m.permissions),T=Gz(m==null?void 0:m.serverPermissions),C=qz((m==null?void 0:m.serverAssignments)??(S==null?void 0:S.serverAssignments));r({user:S,permissions:O,serverPermissions:T,serverAssignments:C,loading:!1,error:null,lastErrorCode:null,initialized:!0})},[]),o=P.useCallback(()=>{r(m=>({user:null,permissions:{},serverPermissions:{},serverAssignments:[],loading:!1,error:null,lastErrorCode:null,initialized:m.initialized||!0}))},[]),a=P.useCallback(async()=>{r(m=>({...m,loading:!0,error:null,lastErrorCode:null}));try{const m=await fetch("/api/auth/session",{credentials:"include"}),S=await m.json().catch(()=>({}));return m.ok?(n(S),{ok:!0,data:S}):(r({user:null,permissions:{},loading:!1,error:(S==null?void 0:S.error)??null,lastErrorCode:(S==null?void 0:S.error)??null,initialized:!0,serverPermissions:{},serverAssignments:[]}),{ok:!1,status:m.status,error:(S==null?void 0:S.error)??null})}catch(m){const S=(m==null?void 0:m.message)||"NETWORK_ERROR";return r({user:null,permissions:{},serverPermissions:{},serverAssignments:[],loading:!1,error:S,lastErrorCode:"NETWORK_ERROR",initialized:!0}),{ok:!1,error:S}}},[n]),i=P.useCallback(async()=>{let m=null;try{const S=await fetch("/api/auth/logout",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}});if(!S.ok){const O=await S.json().catch(()=>({})),T=new Error((O==null?void 0:O.error)||"LOGOUT_FAILED");throw T.code=(O==null?void 0:O.error)||`STATUS_${S.status}`,T}}catch(S){m=S}finally{o()}if(m)throw m},[o]),l=P.useCallback((m,S="full")=>{var w,b;if(!m||(w=t.user)!=null&&w.isSuperuser)return!0;const O=((b=t.permissions)==null?void 0:b[m])??"none",T=Ai[O]??0,C=Ai[S]??Ai.full;return T>=C},[t.permissions,t.user]),f=P.useCallback((m,S,O="full")=>{var c,u,h;if(!S||(c=t.user)!=null&&c.isSuperuser)return!0;const T=Number(m);let C=null;if(Number.isFinite(T)){const y=((u=t.serverPermissions)==null?void 0:u[T])||((h=t.serverPermissions)==null?void 0:h[String(T)]);y!=null&&y.permissions&&typeof y.permissions=="object"&&(C=y.permissions)}const b=(C||t.permissions||{})[S]??"none",d=Ai[b]??0,s=Ai[O]??Ai.full;return d>=s},[t.serverPermissions,t.permissions,t.user]),g=P.useMemo(()=>({user:t.user,permissions:t.permissions,serverPermissions:t.serverPermissions,loading:t.loading,error:t.error,lastErrorCode:t.lastErrorCode,initialized:t.initialized,isAuthenticated:!!t.user,refreshSession:a,setSession:n,clearSession:o,logout:i,hasPermission:l,hasServerPermission:f,serverAssignments:t.serverAssignments}),[t,a,n,o,i,l,f]);return v.jsx(bb.Provider,{value:g,children:e})}function Yr(){const e=P.useContext(bb);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e}const Yz="/assets/stackpulse-846837e9.png";function qf({brandImg:e,brandName:t,routes:r}){const[n,o]=Gf(),{sidenavColor:a,sidenavType:i,openSidenav:l}=n,{initialized:f,hasPermission:g}=Yr(),m={dark:"bg-gradient-to-br from-gray-800 to-gray-900",white:"bg-white shadow-sm",transparent:"bg-transparent"};return v.jsxs("aside",{className:`${m[i]} ${l?"translate-x-0":"-translate-x-80"} fixed inset-0 z-50 my-4 ml-4 h-[calc(100vh-32px)] w-72 rounded-xl transition-transform duration-300 xl:translate-x-0 border border-blue-gray-100`,children:[v.jsxs("div",{className:"relative py-6 px-8 text-right",children:[v.jsx("img",{src:Yz,alt:"StackPulse",className:"w-auto"}),v.jsx("span",{className:"mt-1 text-xs text-stormGrey-500 block antialiased font-sans",children:"v0.5"}),v.jsx(V.IconButton,{variant:"text",size:"sm",ripple:!1,className:"absolute right-0 top-0 grid rounded-br-none rounded-tl-none",onClick:()=>Dk(o,!1),children:v.jsx(Ik,{strokeWidth:2.5,className:"h-5 w-5 text-black"})})]}),v.jsx("div",{className:"m-4",children:r.map(({layout:S,title:O,pages:T},C)=>{const w=T.filter(({permission:b,hidden:d})=>{if(d)return!1;if(!b||!b.key)return!0;if(!f)return!1;const s=b.requiredLevel||b.level||"full";return g(b.key,s)});return S!=="dashboard"&&S!=="auth"||w.length===0&&!O?null:v.jsxs("ul",{className:"mb-4 flex flex-col gap-1",children:[O&&v.jsx("li",{className:"mx-3.5 mt-4 mb-2",children:v.jsx(V.Typography,{variant:"small",color:i==="dark"?"white":"blue-gray",className:"font-black uppercase opacity-75",children:O})}),w.map(({icon:b,name:d,path:s})=>v.jsx("li",{children:v.jsx(UI,{to:`/${S}${s}`,children:({isActive:c})=>v.jsxs(V.Button,{variant:c?"gradient":"text",color:c?a:i==="dark"?"white":"blue-gray",className:"flex items-center gap-4 px-4 capitalize",fullWidth:!0,children:[b,v.jsx(V.Typography,{color:"inherit",className:"font-medium capitalize",children:d})]})})},d))]},C)})})]})}qf.defaultProps={brandImg:"/img/logo-ct.png",brandName:"Material Tailwind React"};qf.propTypes={brandImg:xn.string,brandName:xn.string,routes:xn.arrayOf(xn.object).isRequired};qf.displayName="/src/widgets/layout/sidnave.jsx";function Fk(){const[e,t]=Gf(),{fixedNavbar:r,openSidenav:n}=e,{pathname:o}=Da();return o.split("/").filter(a=>a!==""),v.jsx(V.Navbar,{color:r?"white":"transparent",className:`rounded-xl transition-all ${r?"sticky top-4 z-40 py-3 shadow-md shadow-blue-gray-500/5":"px-0 py-1"}`,fullWidth:!0,blurred:r,children:v.jsxs("div",{className:"flex justify-between gap-6 flex-row items-center",children:[v.jsx("div",{className:"capitalize"}),v.jsxs("div",{className:"flex items-center",children:[v.jsx(V.IconButton,{variant:"text",color:"blue-gray",className:"grid xl:hidden",onClick:()=>Dk(t,!n),children:v.jsx(XI,{strokeWidth:3,className:"h-6 w-6 text-blue-gray-500"})}),v.jsx(V.IconButton,{variant:"text",color:"blue-gray",onClick:()=>mb(t,!0),children:v.jsx(GC,{className:"h-5 w-5 text-blue-gray-500 "})})]})]})})}Fk.displayName="/src/widgets/layout/dashboard-navbar.jsx";function Qz(e,t){t=Math.pow(10,t);const r=["K","M","B","T"];for(let o=r.length-1;o>=0;o--){var n=Math.pow(10,(o+1)*3);if(n<=e){e=Math.round(e*t/n)/t,e==1e3&&o{fetch("https://api.github.com/repos/creativetimofficial/material-tailwind-dashboard-react").then(g=>g.json()).then(g=>l(Qz(g.stargazers_count,1)))},[]),v.jsxs("aside",{className:`fixed top-0 right-0 z-50 h-screen w-96 bg-white px-2.5 shadow-lg transition-transform duration-300 ${r?"translate-x-0":"translate-x-96"}`,children:[v.jsxs("div",{className:"flex items-start justify-between px-6 pt-8 pb-6",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:"Dashboard Configurator"}),v.jsx(V.Typography,{className:"font-normal text-blue-gray-600",children:"See our dashboard options."})]}),v.jsx(V.IconButton,{variant:"text",color:"blue-gray",onClick:()=>mb(t,!1),children:v.jsx(Ik,{strokeWidth:2.5,className:"h-5 w-5"})})]}),v.jsxs("div",{className:"py-4 px-6",children:[v.jsxs("div",{className:"mb-12",children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",children:"Sidenav Colors"}),v.jsx("div",{className:"mt-3 flex items-center gap-2",children:Object.keys(f).map(g=>v.jsx("span",{className:`h-6 w-6 cursor-pointer rounded-full border bg-gradient-to-br transition-transform hover:scale-105 ${f[g]} ${n===g?"border-black":"border-transparent"}`,onClick:()=>$z(t,g)},g))})]}),v.jsxs("div",{className:"mb-12",children:[v.jsx("hr",{}),v.jsxs("div",{className:"flex items-center justify-between py-5",children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",children:"Navbar Fixed"}),v.jsx(V.Switch,{defaultChecked:!0,id:"navbar-fixed",value:a,onChange:()=>Hz(t,!a)})]})]})]})]})}zk.displayName="/src/widgets/layout/configurator.jsx";function Bk(){const e=new Date().getFullYear();return v.jsx("footer",{children:v.jsx("div",{className:"flex w-full flex-wrap items-center justify-center md:justify-end",children:v.jsxs(V.Typography,{variant:"small",className:"mt-1 text-xs text-stormGrey-500 block antialiased font-sans",children:["StackPulse: © ",e," by Michael Böhmländer"]})})})}Bk.displayName="/src/widgets/layout/footer.jsx";xn.string,xn.arrayOf(xn.object).isRequired,xn.node;const No=Object.create(null);No.open="0";No.close="1";No.ping="2";No.pong="3";No.message="4";No.upgrade="5";No.noop="6";const Xc=Object.create(null);Object.keys(No).forEach(e=>{Xc[No[e]]=e});const Zg={type:"error",data:"parser error"},Vk=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Uk=typeof ArrayBuffer=="function",Wk=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,vb=({type:e,data:t},r,n)=>Vk&&t instanceof Blob?r?n(t):Fw(t,n):Uk&&(t instanceof ArrayBuffer||Wk(t))?r?n(t):Fw(new Blob([t]),n):n(No[e]+(t||"")),Fw=(e,t)=>{const r=new FileReader;return r.onload=function(){const n=r.result.split(",")[1];t("b"+(n||""))},r.readAsDataURL(e)};function zw(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let xh;function Xz(e,t){if(Vk&&e.data instanceof Blob)return e.data.arrayBuffer().then(zw).then(t);if(Uk&&(e.data instanceof ArrayBuffer||Wk(e.data)))return t(zw(e.data));vb(e,!1,r=>{xh||(xh=new TextEncoder),t(xh.encode(r))})}const Bw="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",vl=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,r=e.length,n,o=0,a,i,l,f;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const g=new ArrayBuffer(t),m=new Uint8Array(g);for(n=0;n>4,m[o++]=(i&15)<<4|l>>2,m[o++]=(l&3)<<6|f&63;return g},Jz=typeof ArrayBuffer=="function",yb=(e,t)=>{if(typeof e!="string")return{type:"message",data:$k(e,t)};const r=e.charAt(0);return r==="b"?{type:"message",data:eB(e.substring(1),t)}:Xc[r]?e.length>1?{type:Xc[r],data:e.substring(1)}:{type:Xc[r]}:Zg},eB=(e,t)=>{if(Jz){const r=Zz(e);return $k(r,t)}else return{base64:!0,data:e}},$k=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},Hk=String.fromCharCode(30),tB=(e,t)=>{const r=e.length,n=new Array(r);let o=0;e.forEach((a,i)=>{vb(a,!1,l=>{n[i]=l,++o===r&&t(n.join(Hk))})})},rB=(e,t)=>{const r=e.split(Hk),n=[];for(let o=0;o{const n=r.length;let o;if(n<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,n);else if(n<65536){o=new Uint8Array(3);const a=new DataView(o.buffer);a.setUint8(0,126),a.setUint16(1,n)}else{o=new Uint8Array(9);const a=new DataView(o.buffer);a.setUint8(0,127),a.setBigUint64(1,BigInt(n))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(r)})}})}let wh;function vc(e){return e.reduce((t,r)=>t+r.length,0)}function yc(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let n=0;for(let o=0;oMath.pow(2,53-32)-1){l.enqueue(Zg);break}o=m*Math.pow(2,32)+g.getUint32(4),n=3}else{if(vc(r)e){l.enqueue(Zg);break}}}})}const Gk=4;function xr(e){if(e)return aB(e)}function aB(e){for(var t in xr.prototype)e[t]=xr.prototype[t];return e}xr.prototype.on=xr.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};xr.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this};xr.prototype.off=xr.prototype.removeListener=xr.prototype.removeAllListeners=xr.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var r=this._callbacks["$"+e];if(!r)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var n,o=0;otypeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,r)=>r(t,0))(),Fn=(()=>typeof self<"u"?self:typeof window<"u"?window:Function("return this")())(),iB="arraybuffer";function qk(e,...t){return t.reduce((r,n)=>(e.hasOwnProperty(n)&&(r[n]=e[n]),r),{})}const sB=Fn.setTimeout,lB=Fn.clearTimeout;function Yf(e,t){t.useNativeTimers?(e.setTimeoutFn=sB.bind(Fn),e.clearTimeoutFn=lB.bind(Fn)):(e.setTimeoutFn=Fn.setTimeout.bind(Fn),e.clearTimeoutFn=Fn.clearTimeout.bind(Fn))}const uB=1.33;function cB(e){return typeof e=="string"?dB(e):Math.ceil((e.byteLength||e.size)*uB)}function dB(e){let t=0,r=0;for(let n=0,o=e.length;n=57344?r+=3:(n++,r+=4);return r}function Kk(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function fB(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}function pB(e){let t={},r=e.split("&");for(let n=0,o=r.length;n{this.readyState="paused",t()};if(this._polling||!this.writable){let n=0;this._polling&&(n++,this.once("pollComplete",function(){--n||r()})),this.writable||(n++,this.once("drain",function(){--n||r()}))}else r()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const r=n=>{if(this.readyState==="opening"&&n.type==="open"&&this.onOpen(),n.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(n)};rB(t,this.socket.binaryType).forEach(r),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,tB(t,r=>{this.doWrite(r,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",r=this.query||{};return this.opts.timestampRequests!==!1&&(r[this.opts.timestampParam]=Kk()),!this.supportsBinary&&!r.sid&&(r.b64=1),this.createUri(t,r)}}let Yk=!1;try{Yk=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const mB=Yk;function bB(){}class vB extends gB{constructor(t){if(super(t),typeof location<"u"){const r=location.protocol==="https:";let n=location.port;n||(n=r?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||n!==t.port}}doWrite(t,r){const n=this.request({method:"POST",data:t});n.on("success",r),n.on("error",(o,a)=>{this.onError("xhr post error",o,a)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(r,n)=>{this.onError("xhr poll error",r,n)}),this.pollXhr=t}}let as=class Zc extends xr{constructor(t,r,n){super(),this.createRequest=t,Yf(this,n),this._opts=n,this._method=n.method||"GET",this._uri=r,this._data=n.data!==void 0?n.data:null,this._create()}_create(){var t;const r=qk(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");r.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(r);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&n.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{n.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var o;n.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(n.getResponseHeader("set-cookie"))),n.readyState===4&&(n.status===200||n.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof n.status=="number"?n.status:0)},0))},n.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=Zc.requestsCount++,Zc.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=bB,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Zc.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};as.requestsCount=0;as.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Vw);else if(typeof addEventListener=="function"){const e="onpagehide"in Fn?"pagehide":"unload";addEventListener(e,Vw,!1)}}function Vw(){for(let e in as.requests)as.requests.hasOwnProperty(e)&&as.requests[e].abort()}const yB=function(){const e=Qk({xdomain:!1});return e&&e.responseType!==null}();class xB extends vB{constructor(t){super(t);const r=t&&t.forceBase64;this.supportsBinary=yB&&!r}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new as(Qk,this.uri(),t)}}function Qk(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||mB))return new XMLHttpRequest}catch{}if(!t)try{return new Fn[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const Xk=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class wB extends xb{get name(){return"websocket"}doOpen(){const t=this.uri(),r=this.opts.protocols,n=Xk?{}:qk(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,r,n)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let r=0;r{try{this.doWrite(n,a)}catch{}o&&Kf(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",r=this.query||{};return this.opts.timestampRequests&&(r[this.opts.timestampParam]=Kk()),this.supportsBinary||(r.b64=1),this.createUri(t,r)}}const _h=Fn.WebSocket||Fn.MozWebSocket;class _B extends wB{createSocket(t,r,n){return Xk?new _h(t,r,n):r?new _h(t,r):new _h(t)}doWrite(t,r){this.ws.send(r)}}class SB extends xb{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const r=oB(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=t.readable.pipeThrough(r).getReader(),o=nB();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();const a=()=>{n.read().then(({done:l,value:f})=>{l||(this.onPacket(f),a())}).catch(l=>{})};a();const i={type:"open"};this.query.sid&&(i.data=`{"sid":"${this.query.sid}"}`),this._writer.write(i).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let r=0;r{o&&Kf(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const CB={websocket:_B,webtransport:SB,polling:xB},TB=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,PB=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Jg(e){if(e.length>8e3)throw"URI too long";const t=e,r=e.indexOf("["),n=e.indexOf("]");r!=-1&&n!=-1&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));let o=TB.exec(e||""),a={},i=14;for(;i--;)a[PB[i]]=o[i]||"";return r!=-1&&n!=-1&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=OB(a,a.path),a.queryKey=kB(a,a.query),a}function OB(e,t){const r=/\/{2,9}/g,n=t.replace(r,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&n.splice(0,1),t.slice(-1)=="/"&&n.splice(n.length-1,1),n}function kB(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(n,o,a){o&&(r[o]=a)}),r}const e0=typeof addEventListener=="function"&&typeof removeEventListener=="function",Jc=[];e0&&addEventListener("offline",()=>{Jc.forEach(e=>e())},!1);class Na extends xr{constructor(t,r){if(super(),this.binaryType=iB,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(r=t,t=null),t){const n=Jg(t);r.hostname=n.host,r.secure=n.protocol==="https"||n.protocol==="wss",r.port=n.port,n.query&&(r.query=n.query)}else r.host&&(r.hostname=Jg(r.host).host);Yf(this,r),this.secure=r.secure!=null?r.secure:typeof location<"u"&&location.protocol==="https:",r.hostname&&!r.port&&(r.port=this.secure?"443":"80"),this.hostname=r.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=r.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},r.transports.forEach(n=>{const o=n.prototype.name;this.transports.push(o),this._transportsByName[o]=n}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},r),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=pB(this.opts.query)),e0&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Jc.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const r=Object.assign({},this.opts.query);r.EIO=Gk,r.transport=t,this.id&&(r.sid=this.id);const n=Object.assign({},this.opts,{query:r,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](n)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&Na.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const r=this.createTransport(t);r.open(),this.setTransport(r)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",r=>this._onClose("transport close",r))}onOpen(){this.readyState="open",Na.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const r=new Error("server error");r.code=t.data,this._onError(r);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let r=1;for(let n=0;n0&&r>this._maxPayload)return this.writeBuffer.slice(0,n);r+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,Kf(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,r,n){return this._sendPacket("message",t,r,n),this}send(t,r,n){return this._sendPacket("message",t,r,n),this}_sendPacket(t,r,n,o){if(typeof r=="function"&&(o=r,r=void 0),typeof n=="function"&&(o=n,n=null),this.readyState==="closing"||this.readyState==="closed")return;n=n||{},n.compress=n.compress!==!1;const a={type:t,data:r,options:n};this.emitReserved("packetCreate",a),this.writeBuffer.push(a),o&&this.once("flush",o),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},r=()=>{this.off("upgrade",r),this.off("upgradeError",r),t()},n=()=>{this.once("upgrade",r),this.once("upgradeError",r)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?n():t()}):this.upgrading?n():t()),this}_onError(t){if(Na.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,r){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),e0&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const n=Jc.indexOf(this._offlineEventListener);n!==-1&&Jc.splice(n,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,r),this.writeBuffer=[],this._prevBufferLen=0}}}Na.protocol=Gk;class NB extends Na{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t{n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",S=>{if(!n)if(S.type==="pong"&&S.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;Na.priorWebsocketSuccess=r.name==="websocket",this.transport.pause(()=>{n||this.readyState!=="closed"&&(m(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())})}else{const O=new Error("probe error");O.transport=r.name,this.emitReserved("upgradeError",O)}}))};function a(){n||(n=!0,m(),r.close(),r=null)}const i=S=>{const O=new Error("probe error: "+S);O.transport=r.name,a(),this.emitReserved("upgradeError",O)};function l(){i("transport closed")}function f(){i("socket closed")}function g(S){r&&S.name!==r.name&&a()}const m=()=>{r.removeListener("open",o),r.removeListener("error",i),r.removeListener("close",l),this.off("close",f),this.off("upgrading",g)};r.once("open",o),r.once("error",i),r.once("close",l),this.once("close",f),this.once("upgrading",g),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{n||r.open()},200):r.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const r=[];for(let n=0;nCB[o]).filter(o=>!!o)),super(t,n)}};function EB(e,t="",r){let n=e;r=r||typeof location<"u"&&location,e==null&&(e=r.protocol+"//"+r.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=r.protocol+e:e=r.host+e),/^(https?|wss?):\/\//.test(e)||(typeof r<"u"?e=r.protocol+"//"+e:e="https://"+e),n=Jg(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const a=n.host.indexOf(":")!==-1?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+a+":"+n.port+t,n.href=n.protocol+"://"+a+(r&&r.port===n.port?"":":"+n.port),n}const AB=typeof ArrayBuffer=="function",RB=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Zk=Object.prototype.toString,MB=typeof Blob=="function"||typeof Blob<"u"&&Zk.call(Blob)==="[object BlobConstructor]",IB=typeof File=="function"||typeof File<"u"&&Zk.call(File)==="[object FileConstructor]";function wb(e){return AB&&(e instanceof ArrayBuffer||RB(e))||MB&&e instanceof Blob||IB&&e instanceof File}function ed(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let r=0,n=e.length;r=0&&e.num{delete this.acks[t];for(let l=0;l{this.io.clearTimeoutFn(a),r.apply(this,l)};i.withError=!0,this.acks[t]=i}emitWithAck(t,...r){return new Promise((n,o)=>{const a=(i,l)=>i?o(i):n(l);a.withError=!0,r.push(a),this.emit(t,...r)})}_addToQueue(t){let r;typeof t[t.length-1]=="function"&&(r=t.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...a)=>n!==this._queue[0]?void 0:(o!==null?n.tryCount>this._opts.retries&&(this._queue.shift(),r&&r(o)):(this._queue.shift(),r&&r(null,...a)),n.pending=!1,this._drainQueue())),this._queue.push(n),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const r=this._queue[0];r.pending&&!t||(r.pending=!0,r.tryCount++,this.flags=r.flags,this.emit.apply(this,r.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Bt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,r){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,r),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(n=>String(n.id)===t)){const n=this.acks[t];delete this.acks[t],n.withError&&n.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case Bt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Bt.EVENT:case Bt.BINARY_EVENT:this.onevent(t);break;case Bt.ACK:case Bt.BINARY_ACK:this.onack(t);break;case Bt.DISCONNECT:this.ondisconnect();break;case Bt.CONNECT_ERROR:this.destroy();const n=new Error(t.data.message);n.data=t.data.data,this.emitReserved("connect_error",n);break}}onevent(t){const r=t.data||[];t.id!=null&&r.push(this.ack(t.id)),this.connected?this.emitEvent(r):this.receiveBuffer.push(Object.freeze(r))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const r=this._anyListeners.slice();for(const n of r)n.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const r=this;let n=!1;return function(...o){n||(n=!0,r.packet({type:Bt.ACK,id:t,data:o}))}}onack(t){const r=this.acks[t.id];typeof r=="function"&&(delete this.acks[t.id],r.withError&&t.data.unshift(null),r.apply(this,t.data))}onconnect(t,r){this.id=t,this.recovered=r&&this._pid===r,this._pid=r,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Bt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const r=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}Ls.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+r:e-r}return Math.min(e,this.max)|0};Ls.prototype.reset=function(){this.attempts=0};Ls.prototype.setMin=function(e){this.ms=e};Ls.prototype.setMax=function(e){this.max=e};Ls.prototype.setJitter=function(e){this.jitter=e};class n0 extends xr{constructor(t,r){var n;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(r=t,t=void 0),r=r||{},r.path=r.path||"/socket.io",this.opts=r,Yf(this,r),this.reconnection(r.reconnection!==!1),this.reconnectionAttempts(r.reconnectionAttempts||1/0),this.reconnectionDelay(r.reconnectionDelay||1e3),this.reconnectionDelayMax(r.reconnectionDelayMax||5e3),this.randomizationFactor((n=r.randomizationFactor)!==null&&n!==void 0?n:.5),this.backoff=new Ls({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(r.timeout==null?2e4:r.timeout),this._readyState="closed",this.uri=t;const o=r.parser||UB;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=r.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var r;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(r=this.backoff)===null||r===void 0||r.setMin(t),this)}randomizationFactor(t){var r;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(r=this.backoff)===null||r===void 0||r.setJitter(t),this)}reconnectionDelayMax(t){var r;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(r=this.backoff)===null||r===void 0||r.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new jB(this.uri,this.opts);const r=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const o=Jn(r,"open",function(){n.onopen(),t&&t()}),a=l=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",l),t?t(l):this.maybeReconnectOnOpen()},i=Jn(r,"error",a);if(this._timeout!==!1){const l=this._timeout,f=this.setTimeoutFn(()=>{o(),a(new Error("timeout")),r.close()},l);this.opts.autoUnref&&f.unref(),this.subs.push(()=>{this.clearTimeoutFn(f)})}return this.subs.push(o),this.subs.push(i),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Jn(t,"ping",this.onping.bind(this)),Jn(t,"data",this.ondata.bind(this)),Jn(t,"error",this.onerror.bind(this)),Jn(t,"close",this.onclose.bind(this)),Jn(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(r){this.onclose("parse error",r)}}ondecoded(t){Kf(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,r){let n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new Jk(this,t,r),this.nsps[t]=n),n}_destroy(t){const r=Object.keys(this.nsps);for(const n of r)if(this.nsps[n].active)return;this._close()}_packet(t){const r=this.encoder.encode(t);for(let n=0;nt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,r){var n;this.cleanup(),(n=this.engine)===null||n===void 0||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,r),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const r=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},r);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const ul={};function td(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const r=EB(e,t.path||"/socket.io"),n=r.source,o=r.id,a=r.path,i=ul[o]&&a in ul[o].nsps,l=t.forceNew||t["force new connection"]||t.multiplex===!1||i;let f;return l?f=new n0(n,t):(ul[o]||(ul[o]=new n0(n,t)),f=ul[o]),r.query&&!t.query&&(t.query=r.queryKey),f.socket(r.path,t)}Object.assign(td,{Manager:n0,Socket:Jk,io:td,connect:td});const eN=P.createContext(null),Sh={success:{container:"border-mossGreen-500/80 bg-mossGreen-900/90 text-white",accent:"bg-mossGreen-400"},warning:{container:"border-warmAmberGlow-500/80 bg-warmAmberGlow-900/90 text-white",accent:"bg-warmAmberGlow-400"},error:{container:"border-sunsetCoral-500/80 bg-sunsetCoral-900/90 text-white",accent:"bg-sunsetCoral-400"},info:{container:"border-arcticBlue-500 bg-arcticBlue-900/90 text-white",accent:"bg-arcticBlue-400"}},$B=6e3;function HB({children:e}){const[t,r]=P.useState([]),n=P.useRef(new Map),o=P.useCallback(l=>{r(g=>g.filter(m=>m.id!==l));const f=n.current.get(l);f&&typeof window<"u"&&window.clearTimeout(f),n.current.delete(l)},[]),a=P.useCallback(({id:l,title:f,description:g,variant:m="info",duration:S=$B}={})=>{const O=l??`${Date.now()}-${Math.random().toString(16).slice(2)}`,T=Sh[m]?m:"info";if(r(C=>[...C.filter(b=>b.id!==O),{id:O,title:f,description:g,variant:T}]),S!==null&&S!==1/0&&typeof window<"u"){const C=window.setTimeout(()=>{o(O)},S),w=n.current.get(O);w&&window.clearTimeout(w),n.current.set(O,C)}return O},[o]);P.useEffect(()=>()=>{typeof window>"u"||(n.current.forEach(l=>window.clearTimeout(l)),n.current.clear())},[]);const i=P.useMemo(()=>({showToast:a,dismissToast:o}),[a,o]);return v.jsxs(eN.Provider,{value:i,children:[e,v.jsx("div",{className:"pointer-events-none fixed right-4 top-4 z-50 flex w-80 max-w-full flex-col gap-3",children:t.map(l=>{const f=Sh[l.variant]??Sh.info;return v.jsx("div",{className:`pointer-events-auto overflow-hidden rounded-lg border px-4 py-3 shadow-xl backdrop-blur ${f.container}`,children:v.jsxs("div",{className:"flex items-start gap-3",children:[v.jsx("span",{className:`mt-1 h-2 flex-shrink-0 w-2 rounded-full ${f.accent}`}),v.jsxs("div",{className:"flex-1",children:[l.title&&v.jsx("p",{className:"text-sm font-semibold",children:l.title}),l.description&&v.jsx("p",{className:"mt-1 text-sm leading-snug text-white/80",children:l.description})]}),v.jsx("button",{type:"button",onClick:()=>o(l.id),className:"ml-2 rounded-md p-1 text-xs uppercase tracking-wide text-white/60 transition hover:text-white/90",children:"Schließen"})]})},l.id)})})]})}function Fa(){const e=P.useContext(eN);if(!e)throw new Error("useToast must be used within a ToastProvider");return e}const tN=P.createContext(null),GB={maintenance:null,update:null,script:null,ssh:null,loading:!0,error:"",lastUpdated:null};function qB({children:e}){var j,A;const{isAuthenticated:t,hasPermission:r,user:n}=Yr(),o=!!(t&&(n!=null&&n.isSuperuser||r("maintenance-access","read"))),[a,i]=P.useState(GB),l=P.useRef(null),f=P.useRef(!1),g=P.useCallback(M=>{i(D=>({...D,...M}))},[]),m=P.useCallback(async()=>{var M,D;if(!o)return g({loading:!1,error:""}),null;g({loading:!0,error:""});try{const z=(await Je.get("/api/maintenance/config")).data??{};g({maintenance:z.maintenance??null,update:z.update??null,script:z.script??null,ssh:z.ssh??null,loading:!1,error:"",lastUpdated:new Date})}catch(L){const z=((D=(M=L.response)==null?void 0:M.data)==null?void 0:D.error)||L.message||"Fehler beim Laden der Wartungsdaten";g({loading:!1,error:z})}},[g,o]),S=P.useCallback(async()=>{var M,D;if(o)try{const z=(await Je.get("/api/maintenance/update-status")).data??{};i(H=>({...H,maintenance:z.maintenance??H.maintenance,update:z.update??H.update,error:""}))}catch(L){const z=((D=(M=L.response)==null?void 0:M.data)==null?void 0:D.error)||L.message||"Fehler beim Aktualisieren des Wartungsstatus";i(H=>({...H,error:z}))}},[o]);P.useEffect(()=>{if(!o){g({loading:!1,error:""});return}m()},[g,m,o]),P.useEffect(()=>{var M;if(o){if((M=a.update)!=null&&M.running){S();const D=setInterval(()=>{S()},5e3);return l.current=D,()=>clearInterval(D)}l.current&&(clearInterval(l.current),l.current=null)}},[o,(j=a.update)==null?void 0:j.running,S]),P.useEffect(()=>{var D;const M=!!((D=a.update)!=null&&D.running);o&&!M&&f.current&&m(),f.current=M},[o,(A=a.update)==null?void 0:A.running,m]);const O=P.useCallback(async(M={})=>{await Je.post("/api/maintenance/portainer-update",M),await S()},[S]),T=P.useCallback(async M=>{await Je.put("/api/maintenance/update-script",{script:M}),await m()},[m]),C=P.useCallback(async()=>{await Je.delete("/api/maintenance/update-script"),await m()},[m]),w=P.useCallback(async M=>{await Je.put("/api/maintenance/ssh-config",M),await m()},[m]),b=P.useCallback(async()=>{await Je.delete("/api/maintenance/ssh-config"),await m()},[m]),d=P.useCallback(async({active:M,message:D}={})=>{var Y;const L={active:!!M};D!==void 0&&(L.message=D);const H=((Y=(await Je.post("/api/maintenance/mode",L)).data)==null?void 0:Y.maintenance)??null;return g({maintenance:H,error:""}),H},[g]),s=P.useCallback(async M=>(await Je.post("/api/maintenance/test-ssh",M??{})).data,[]),c=P.useCallback(async()=>{const D=(await Je.get("/api/auth/superuser/status")).data??{};return{exists:!!D.exists,user:D.user??null}},[]),u=P.useCallback(async()=>(await Je.get("/api/setup/status")).data??{},[]),h=P.useCallback(async M=>(await Je.delete(`/api/setup/servers/${M}`)).data??{success:!1},[]),y=P.useCallback(async(M,D)=>(await Je.put(`/api/setup/servers/${M}/api-key`,{apiKey:D})).data??{success:!1},[]),x=P.useCallback(async M=>(await Je.put("/api/setup/self-stack",{selfStackId:M})).data??{success:!1},[]),E=P.useCallback(async()=>(await Je.delete("/api/auth/superuser")).data??{success:!1},[]),k=P.useMemo(()=>({maintenance:a.maintenance,update:a.update,script:a.script,ssh:a.ssh,loading:a.loading,error:a.error,lastUpdated:a.lastUpdated,refreshConfig:m,refreshUpdateStatus:S,setMaintenanceMode:d,triggerUpdate:O,saveScript:T,resetScript:C,saveSshConfig:w,deleteSshConfig:b,testSshConnection:s,fetchSuperuserStatus:c,fetchSetupStatus:u,deleteSetupServer:h,updateSetupApiKey:y,updateSelfStackId:x,removeSuperuserAccount:E}),[a,m,S,d,O,T,C,w,b,s,c,u,h,y,x,E]);return v.jsx(tN.Provider,{value:k,children:e})}function Yo(){const e=P.useContext(tN);if(!e)throw new Error("useMaintenance must be used within a MaintenanceProvider");return e}const KB=[{value:"10",label:"10"},{value:"25",label:"25"},{value:"50",label:"50"},{value:"100",label:"100"},{value:"all",label:"Alle"}],Ww="50",rN=P.createContext(null),YB=(e,t)=>{const r=Number(e);if(Number.isFinite(r)&&r>0)return r;const n=Number(t);return Number.isFinite(n)&&n>0?n:1};function QB({children:e,initialPage:t=1,initialPerPage:r=Ww,perPageOptions:n=KB}){const[o,a]=P.useState(t),[i,l]=P.useState(r),[f,g]=P.useState(0),[m,S]=P.useState(0),O=P.useRef(t),T=P.useRef(r),C=P.useMemo(()=>new Set(n.map(A=>String(A.value))),[n]),w=i==="all",b=P.useCallback(()=>w?null:YB(i,r),[i,w,r]),d=P.useCallback((A,M)=>{g(Math.max(0,Number(A)||0)),S(Math.max(0,Number(M)||0))},[]),s=P.useCallback(()=>{a(O.current??1),l(T.current??Ww),g(0),S(0)},[]),c=P.useCallback((A,{resetPage:M=!0}={})=>{if(A==null)return;const D=String(A);C.has(D)&&(l(D),M&&a(1))},[C]),u=P.useCallback(A=>{var D;const M=typeof A=="string"?A:(D=A==null?void 0:A.target)==null?void 0:D.value;c(M,{resetPage:!0})},[c]),h=P.useCallback(A=>{if(w)return;const M=Number(A);if(!Number.isFinite(M)||M<1)return;const D=b();if(!D)return;const L=Math.max(1,Math.ceil((f||0)/D));M>L||a(M)},[w,b,f]),y=P.useMemo(()=>{if(w)return 1;const A=b();return A?Math.max(1,Math.ceil((f||0)/A)):1},[w,b,f]),x=P.useMemo(()=>{if(!f)return 0;if(w)return 1;const A=b();return(o-1)*A+1},[f,w,b,o]),E=P.useMemo(()=>{if(!f)return 0;if(w)return f;const A=b(),M=(o-1)*A+(m||A);return Math.min(f,M)},[f,w,b,o,m]),k=P.useMemo(()=>f?w?`Zeige alle ${f.toLocaleString()} Einträge`:`Zeige ${x.toLocaleString()} – ${E.toLocaleString()} von ${f.toLocaleString()} Einträgen`:"Keine Einträge",[f,w,x,E]),j=P.useMemo(()=>({page:o,perPage:i,perPageOptions:n,perPageIsAll:w,totalItems:f,visibleItems:m,totalPages:y,rangeStart:x,rangeEnd:E,summaryLabel:k,setPage:a,setPerPage:c,setTotals:d,setTotalItems:g,setVisibleItems:S,handlePageChange:h,handlePerPageChange:u,validPerPageValues:C,resetPagination:s}),[o,i,n,w,f,m,y,x,E,k,d,c,h,u,C,s]);return v.jsx(rN.Provider,{value:j,children:e})}function Fs(){const e=P.useContext(rN);if(!e)throw new Error("usePage must be used within a PageProvider");return e}function ku({disabled:e=!1}){const{summaryLabel:t,perPageIsAll:r,page:n,totalPages:o,handlePageChange:a}=Fs();return v.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[v.jsx("span",{children:t}),!r&&v.jsxs("div",{className:"flex items-center gap-2",children:[v.jsx("button",{onClick:()=>a(n-1),disabled:e||n<=1,className:"rounded-md border border-slate-300 p-2.5 text-center text-sm transition-all shadow-sm hover:shadow-lg text-slate-600 hover:text-white hover:bg-slate-800 hover:border-slate-800 focus:text-white focus:bg-slate-800 focus:border-slate-800 active:border-slate-800 active:text-white active:bg-slate-800 disabled:pointer-events-none disabled:opacity-50 disabled:shadow-none",type:"button",children:v.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",className:"h-4 w-4",children:v.jsx("path",{d:"M11.03 3.97a.75.75 0 0 1 0 1.06l-6.22 6.22H21a.75.75 0 0 1 0 1.5H4.81l6.22 6.22a.75.75 0 1 1-1.06 1.06l-7.5-7.5a.75.75 0 0 1 0-1.06l7.5-7.5a.75.75 0 0 1 1.06 0Z"})})}),v.jsxs("p",{className:"text-slate-600",children:["Seite ",v.jsx("strong",{className:"text-slate-800",children:n})," / ",v.jsx("strong",{className:"text-slate-800",children:o})]}),v.jsx("button",{onClick:()=>a(n+1),disabled:e||n>=o,className:"rounded-md border border-slate-300 p-2.5 text-center text-sm transition-all shadow-sm hover:shadow-lg text-slate-600 hover:text-white hover:bg-slate-800 hover:border-slate-800 focus:text-white focus:bg-slate-800 focus:border-slate-800 active:border-slate-800 active:text-white active:bg-slate-800 disabled:pointer-events-none disabled:opacity-50 disabled:shadow-none",type:"button",children:v.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",className:"h-4 w-4",children:v.jsx("path",{d:"M12.97 3.97a.75.75 0 0 1 1.06 0l7.5 7.5a.75.75 0 0 1 0 1.06l-7.5 7.5a.75.75 0 1 1-1.06-1.06l6.22-6.22H3a.75.75 0 0 1 0-1.5h16.19l-6.22-6.22a.75.75 0 0 1 0-1.06Z"})})})]})]})}const xc="stackSelectionPreference",XB=30*1e3,ZB=30*1e3;let Ja={data:null,timestamp:0},wc=null;const Wt={QUEUED:"queued",STARTED:"started",SUCCESS:"success",ERROR:"error",INFO:"info"},JB={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},eV=()=>!!Ja.data&&Date.now()-Ja.timestamp{Ja={data:e,timestamp:Date.now()}},tV=e=>Array.isArray(e)?[...e].sort((t,r)=>((t==null?void 0:t.Name)||"").localeCompare((r==null?void 0:r.Name)||"")):[];function rV(){const[e,t]=P.useState(()=>tV(Ja.data)),[r,n]=P.useState(()=>!Ja.data),[o,a]=P.useState(""),[i,l]=P.useState([]),[f,g]=P.useState("all"),[m,S]=P.useState(""),[O,T]=P.useState(!1),[C,w]=P.useState(!1),[b,d]=P.useState(!1),{showToast:s}=Fa(),{maintenance:c,update:u,script:h,ssh:y}=Yo(),{hasPermission:x}=Yr(),E=x("stacks-redeploy-single","full"),k=x("stacks-redeploy-selection","full"),j=x("stacks-redeploy-all","full"),A=!!(c!=null&&c.active),M=c==null?void 0:c.message,D=!!(u!=null&&u.running),L=A||D,z=u!=null&&u.stage?JB[u.stage]??u.stage:"–",{page:H,perPage:Y,perPageOptions:G,setPage:B,setTotals:$,handlePerPageChange:q,resetPagination:ee}=Fs(),oe=P.useCallback(()=>{},[]);P.useEffect(()=>()=>ee(),[ee]),P.useEffect(()=>{L&&(n(!1),t([]),l([]))},[L]);const ge=P.useRef(new Map),fe=P.useCallback((Z,ue)=>{const ne=new Map(Z.map(se=>[se.Id,se]));return[...ue].sort((se,ce)=>se.Name.localeCompare(ce.Name)).map(se=>{const ce=ne.get(se.Id);if(ce&&ce.updateStatus==="✅"&&se.updateStatus==="⚠️"){const Ve=se.Name?`${se.Name} (ID: ${se.Id})`:`Stack ${se.Id}`;s({variant:"warning",title:"Aktualisierung gefunden",description:Ve})}let Ce=se.redeployPhase??(ce==null?void 0:ce.redeployPhase)??null;!Ce&&(se.redeploying||ce!=null&&ce.redeploying)&&(Ce=Wt.STARTED);const Ie=Ce===Wt.QUEUED,Ne=Ce===Wt.STARTED;return{...se,redeployPhase:Ce,redeployQueued:Ie,redeploying:Ie||Ne,redeployDisabled:se.redeployDisabled??(ce==null?void 0:ce.redeployDisabled)??!1,duplicateName:se.duplicateName??(ce==null?void 0:ce.duplicateName)??!1}})},[s]);P.useEffect(()=>{const Z=td("/",{path:"/socket.io",transports:["websocket"]});return console.log("🔌 Socket connected"),Z.on("redeployStatus",async(ue={})=>{const{stackId:ne}=ue;if(!ne)return;let xe=ne;if(typeof ne=="string"){const Ve=Number(ne);Number.isNaN(Ve)||(xe=Ve)}const se=ue.redeployPhase??ue.phase;let ce=se;ce?se==="started"||se==="running"?ce=Wt.STARTED:se==="queued"?ce=Wt.QUEUED:se==="success"?ce=Wt.SUCCESS:se==="error"?ce=Wt.ERROR:se==="info"&&(ce=Wt.INFO):ue.isRedeploying===!0?ce=Wt.STARTED:ue.isRedeploying===!1&&(ce=Wt.SUCCESS);const Ce=ge.current.get(xe)??ge.current.get(String(xe)),Ie=ue.stackName??(Ce==null?void 0:Ce.Name),Ne=Ie?`${Ie} (ID: ${xe})`:`Stack ${xe}`;if(console.log(`🔄 Stack ${xe} Redeploy Update: ${ce??"unbekannt"}`),ce===Wt.STARTED)s({variant:"info",title:"Redeploy gestartet",description:Ne});else if(ce===Wt.SUCCESS)s({variant:"success",title:"Redeploy abgeschlossen",description:Ne});else if(ce===Wt.ERROR){const Ve=ue.message?` – ${ue.message}`:"";s({variant:"error",title:"Redeploy fehlgeschlagen",description:`${Ne}${Ve}`})}if(t(Ve=>Ve.map(tt=>{if(String(tt.Id)!==String(xe))return tt;const wt=ce??tt.redeployPhase??null,Vt=wt===Wt.QUEUED,He=wt===Wt.STARTED,Yt=wt===Wt.SUCCESS,It=wt===Wt.ERROR,Dt=Vt||He,kt={...tt,redeployPhase:wt,redeployQueued:Vt,redeploying:Dt};return Yt&&(kt.updateStatus="✅",kt.redeploying=!1,kt.redeployQueued=!1),It&&(kt.redeploying=!1,kt.redeployQueued=!1),!Dt&&!Yt&&!It&&ce===void 0&&(kt.redeploying=!1,kt.redeployQueued=!1,kt.redeployPhase=tt.redeployPhase??null),kt})),ce===Wt.SUCCESS||ce===Wt.ERROR||ue.isRedeploying===!1&&!ce)try{const Ve=await Je.get("/api/stacks");$w(Ve.data),t(tt=>fe(tt,Ve.data))}catch(Ve){console.error("Fehler beim Aktualisieren nach Redeploy:",Ve)}}),()=>Z.disconnect()},[]);const re=P.useCallback(async({force:Z=!1,silent:ue=!1}={})=>{if(A||D){ue||n(!1);return}const ne=!!Ja.data;if(!Z&&ne&&(t(se=>fe(se,Ja.data)),!ue&&(n(!1),eV())))return;const xe=!ue&&(!ne||Z);xe&&n(!0);try{(Z||!wc)&&(wc=Je.get("/api/stacks").then(ce=>($w(ce.data),ce.data)).finally(()=>{wc=null}));const se=await wc;t(ce=>fe(ce,se)),a("")}catch(se){console.error("❌ Fehler beim Abrufen der Stacks:",se),!ne&&!ue&&a("Fehler beim Laden der Stacks")}finally{xe&&n(!1)}},[A,D,fe]);P.useEffect(()=>{re()},[re]),P.useEffect(()=>{if(typeof document>"u"||A||D)return;const Z=setInterval(()=>{document.hidden||re({force:!0,silent:!0})},ZB);return()=>clearInterval(Z)},[re,A,D]),P.useEffect(()=>{if(typeof document>"u"||A||D)return;const Z=()=>{document.hidden||re({force:!0,silent:!0})};return document.addEventListener("visibilitychange",Z),()=>{document.removeEventListener("visibilitychange",Z)}},[re,A,D]),P.useEffect(()=>{l(Z=>{const ue=Z.filter(ne=>{const xe=e.find(ce=>ce.Id===ne);if(!xe||xe.updateStatus==="✅"||xe.redeployDisabled)return!1;const se=xe.redeployPhase;return!(se===Wt.STARTED||se===Wt.QUEUED)});return ue.length===Z.length?Z:ue})},[e]),P.useEffect(()=>{const Z=new Map;e.forEach(ue=>{Z.set(ue.Id,ue),Z.set(String(ue.Id),ue)}),ge.current=Z},[e]);const be=m.trim().toLowerCase(),he=P.useMemo(()=>e.filter(Z=>!(f==="current"&&Z.updateStatus!=="✅"||f==="outdated"&&Z.updateStatus==="✅"||be&&!`${Z.Name??""} ${Z.Id??""}`.toLowerCase().includes(be))),[e,f,be]),pe=P.useMemo(()=>he.filter(Z=>{if(Z.updateStatus==="✅"||Z.redeployDisabled)return!1;const ue=Z.redeployPhase;return!(ue===Wt.STARTED||ue===Wt.QUEUED)}),[he]),ve=P.useMemo(()=>{const Z=new Map;return e.forEach(ue=>{Z.set(ue.Id,ue)}),Z},[e]);P.useMemo(()=>new Set(he.map(Z=>Z.Id)),[he]);const me=P.useMemo(()=>{if(Y==="all")return he;const Z=Number(Y),ue=(H-1)*Z;return he.slice(ue,ue+Z)},[he,Y,H]);P.useEffect(()=>{$(he.length,me.length)},[he.length,me.length,$]);const ke=P.useRef({action:"keep",remember:!1}),Fe=P.useRef({status:f,search:be}),Pe=P.useRef(!1);P.useEffect(()=>{if(!(typeof window>"u"))try{const Z=window.sessionStorage.getItem(xc);if(!Z)return;const ue=JSON.parse(Z);ue&&(ue.action==="keep"||ue.action==="clear")&&(ke.current={action:ue.action,remember:!0},d(!0))}catch(Z){console.error("⚠️ Konnte gespeicherte Auswahl-Einstellung nicht laden:",Z),ke.current={action:"keep",remember:!1}}},[]),P.useEffect(()=>{const Z=be;if(!Pe.current){Pe.current=!0,Fe.current={status:f,search:Z};return}const ue=Fe.current;if(!(ue.status!==f||ue.search!==Z)){f==="all"&&Z.length===0&&O&&T(!1);return}if(Fe.current={status:f,search:Z},i.length===0){T(!1);return}if(!(f!=="all"||Z.length>0)){T(!1);return}const se=ke.current;if(se!=null&&se.remember){se.action==="clear"&&l([]),T(!1);return}w(!!(se!=null&&se.remember)),T(!0)},[f,be,i.length,O]),P.useEffect(()=>{i.length===0&&O&&T(!1)},[i.length,O]);const te=f!=="all"||be.length>0;P.useEffect(()=>{B(1)},[f,be,B]),P.useEffect(()=>{if(Y==="all"){H!==1&&B(1);return}const Z=Number(Y)||1,ue=Math.max(1,Math.ceil(he.length/Z));H>ue&&B(ue)},[he.length,Y,H,B]);const Oe=(Z,ue)=>{k&&(ue||l(ne=>ne.includes(Z)?ne.filter(xe=>xe!==Z):[...ne,Z]))};P.useEffect(()=>{k||(i.length&&l([]),O&&T(!1))},[k,i.length,O]);const $e=Z=>{if(!k)return;const ue=C;if(typeof window<"u")try{if(ue){const ne={action:Z,remember:!0};window.sessionStorage.setItem(xc,JSON.stringify(ne)),ke.current=ne}else window.sessionStorage.removeItem(xc),ke.current={action:Z,remember:!1}}catch(ne){console.error("⚠️ Konnte Auswahl-Einstellung nicht speichern:",ne),ke.current={action:Z,remember:!1}}else ke.current={action:Z,remember:!1};d(ue),w(ue),Z==="clear"&&l([]),T(!1)},Be=()=>{if(k){if(typeof window<"u")try{window.sessionStorage.removeItem(xc)}catch(Z){console.error("⚠️ Konnte gespeicherte Auswahl-Einstellung nicht löschen:",Z)}ke.current={action:"keep",remember:!1},d(!1),w(!1),te&&i.length>0&&T(!0)}},We=()=>{k&&(l([]),T(!1))},lt=Z=>{k&&l(ue=>ue.filter(ne=>ne!==Z))},qe=async Z=>{if(!E)return;const ue=ge.current.get(Z),ne=ue==null?void 0:ue.redeployPhase;if(!(ne===Wt.STARTED||ne===Wt.QUEUED)){l(xe=>xe.filter(se=>se!==Z)),t(xe=>xe.map(se=>se.Id===Z?{...se,redeployPhase:Wt.STARTED,redeploying:!0,redeployQueued:!1}:se));try{await Je.put(`/api/stacks/${Z}/redeploy`)}catch(xe){if(console.error("❌ Fehler beim Redeploy:",xe),t(se=>se.map(ce=>ce.Id===Z?{...ce,redeployPhase:null,redeploying:!1,redeployQueued:!1}:ce)),!xe.response){const se=ge.current.get(Z),ce=se!=null&&se.Name?`${se.Name} (ID: ${Z})`:`Stack ${Z}`,Ce=xe.message||"Unbekannter Fehler";s({variant:"error",title:"Redeploy fehlgeschlagen",description:`${ce} – ${Ce}`})}}}},Ke=async()=>{var ne,xe;if(!j||!pe.length)return;const Z=pe.map(se=>se.Id),ue=new Set(Z.map(se=>String(se)));t(se=>se.map(ce=>{const Ce=String(ce.Id);return ue.has(Ce)?{...ce,redeployPhase:Wt.QUEUED,redeploying:!0,redeployQueued:!0}:ce}));try{te?await Je.put("/api/stacks/redeploy-selection",{stackIds:Z}):await Je.put("/api/stacks/redeploy-all"),l(se=>se.filter(ce=>!ue.has(String(ce))))}catch(se){console.error("❌ Fehler beim Redeploy ALL:",se),t(Ce=>Ce.map(Ie=>{const Ne=String(Ie.Id);return ue.has(Ne)?{...Ie,redeployPhase:null,redeploying:!1,redeployQueued:!1}:Ie}));const ce=((xe=(ne=se.response)==null?void 0:ne.data)==null?void 0:xe.error)||se.message||"Unbekannter Fehler";s({variant:"error",title:"Redeploy ALL fehlgeschlagen",description:ce})}},xt=async()=>{var ne,xe;if(!k||!i.length)return;const Z=i.filter(se=>{const ce=e.find(Ie=>Ie.Id===se);if(!ce||ce.updateStatus==="✅"||ce.redeployDisabled)return!1;const Ce=ce.redeployPhase;return!(Ce===Wt.STARTED||Ce===Wt.QUEUED)});if(!Z.length){l([]);return}const ue=new Set(Z);t(se=>se.map(ce=>ue.has(ce.Id)?{...ce,redeployPhase:Wt.QUEUED,redeploying:!0,redeployQueued:!0}:ce));try{await Je.put("/api/stacks/redeploy-selection",{stackIds:Z}),l(se=>se.filter(ce=>!ue.has(ce)))}catch(se){console.error("❌ Fehler beim Redeploy Auswahl:",se),t(Ce=>Ce.map(Ie=>ue.has(Ie.Id)?{...Ie,redeployPhase:null,redeploying:!1,redeployQueued:!1}:Ie));const ce=((xe=(ne=se.response)==null?void 0:ne.data)==null?void 0:xe.error)||se.message||"Unbekannter Fehler";s({variant:"error",title:"Redeploy Auswahl fehlgeschlagen",description:ce})}},rt=k&&i.length>0,dt=pe.length>0,Rt=k&&rt||j,Ae=k&&rt?`Redeploy Auswahl (${i.length})`:"Redeploy Alle",ft=L||(k&&rt?O||i.every(Z=>{const ue=e.find(xe=>xe.Id===Z);if(!ue||ue.updateStatus==="✅"||ue.redeployDisabled)return!0;const ne=ue.redeployPhase;return ne===Wt.STARTED||ne===Wt.QUEUED}):!j||!dt),At=()=>{if(L){s({variant:"warning",title:"Wartungsmodus aktiv",description:"Redeploy-Aktionen sind während des Wartungsmodus deaktiviert."});return}k&&rt?xt():j&&Ke()};return v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(A||D)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",M?` – ${M}`:D?" – Portainer-Update läuft":"","."]}),D&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",z]})]})}),v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"p-4 pt-2 pb-2",children:!r&&!o?v.jsx(V.Typography,{variant:"h6",color:"white",children:v.jsx("span",{className:"flex items-center gap-2",children:v.jsx("span",{children:"Filter und Optionen"})})}):v.jsx(V.Typography,{variant:"h6",color:"white",children:v.jsx("span",{className:"flex items-center gap-2",children:v.jsx("span",{children:"Lade Stacks"})})})}),v.jsxs(V.CardBody,{children:[r?v.jsxs("p",{className:"flex py-6 text-center text-sm font-medium text-gray-400",children:[v.jsx(V.Spinner,{className:"mr-2 h-4 w-4 flex"}),"Lade Stacks..."]}):o?v.jsx("p",{className:"py-6 text-sm font-medium text-red-400",children:o}):v.jsxs("div",{className:"gap-4",children:[v.jsx("div",{className:"w-full",children:v.jsxs(V.ButtonGroup,{fullWidth:!0,children:[v.jsx(V.Button,{onClick:()=>g("all"),children:"Alle"}),v.jsx(V.Button,{onClick:()=>g("current"),children:"Aktuell"}),v.jsx(V.Button,{onClick:()=>g("outdated"),children:"Veraltet"})]})}),v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between mt-8",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(V.Input,{value:m,onChange:Z=>S(Z.target.value),variant:"static",placeholder:"Name oder ID"})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(V.Select,{variant:"static",label:"Einträge pro Seite",onChange:oe,value:Y,children:G.map(({value:Z,label:ue})=>v.jsx(V.Option,{value:Z,onClick:()=>q(Z),children:ue},Z))})})]}),v.jsx("div",{className:"flex items-center justify-end gap-3 mt-5",children:k&&b&&v.jsx("button",{onClick:Be,className:"block antialiased font-sans text-sm leading-normal text-inherit text-xs font-medium text-warmAmberGlow-500 underline underline-offset-2 transition hover:text-warmAmberGlow-600",children:"Gespeicherte Entscheidung löschen"})})]}),k&&O&&v.jsx("div",{className:"flex flex-col mt-5",children:v.jsxs("div",{className:"flex flex-col gap-3 rounded-lg border border-arcticBlue-800 bg-arcticBlue-900/90 px-4 py-3 text-arcticBlue-100 md:flex-row md:items-center md:justify-between",children:[v.jsxs("div",{className:"space-y-2 block antialiased font-sans text-sm font-light leading-normal text-inherit",children:[v.jsxs("p",{children:[i.length===1?"1 Stack ist weiterhin ausgewählt.":`${i.length} Stacks sind weiterhin ausgewählt.`," ","Soll die Auswahl entfernt werden?"]}),v.jsxs("label",{className:"flex items-center gap-2",children:[v.jsx("input",{type:"checkbox",checked:C,onChange:Z=>w(Z.target.checked),className:"h-4 w-4 rounded border border-arcticBlue-400 bg-arcticBlue-900 text-arcticBlue-400 focus:ring-arcticBlue-300"}),v.jsx("span",{className:"text-xs",children:"Einstellung merken (bis Browser geschlossen wird)"})]})]}),v.jsxs("div",{className:"flex gap-2",children:[v.jsx(V.Button,{onClick:()=>$e("keep"),className:"rounded-md border border-arcticBlue-600 bg-arcticBlue-700 px-4 py-2 font-sans font-bold text-center uppercase transition-all hover:bg-arcticBlue-800",children:"Auswahl behalten"}),v.jsx(V.Button,{onClick:()=>$e("clear"),className:"rounded-md border border-sunsetCoral-500 bg-sunsetCoral-600 px-4 py-2 font-sans font-bold text-center uppercase transition-all hover:bg-sunsetCoral-600",children:"Auswahl entfernen"})]})]})}),Rt&&v.jsxs("div",{id:"collect",className:"mt-8 flex flex-col gap-4 md:flex-row md:items-start md:gap-6",children:[k&&i.length>0&&v.jsx("div",{className:"w-full md:order-first order-last md:w-3/4",children:v.jsxs("div",{className:"flex flex-col gap-3 text-sm text-gray-300",children:[v.jsx("div",{className:"flex flex-wrap items-center gap-2",children:i.map(Z=>{const ue=ve.get(Z),ne=(ue==null?void 0:ue.Name)||`Stack ${Z}`;return v.jsxs("button",{type:"button",onClick:()=>lt(Z),className:"inline-flex items-center gap-2 rounded-full bg-lavenderSmoke-600/80 px-2 py-0.5 text-white transition hover:bg-lavenderSmoke-600/90 focus:outline-none focus:ring-2 focus:ring-lavenderSmoke-400 cursor-pointer",children:[v.jsx("span",{children:ne}),v.jsx("span",{className:"text-xs font-semibold text-lavenderSmoke-200",children:"x"})]},Z)})}),v.jsx("button",{type:"button",onClick:We,className:"md:order-last self-start mt-1 text-xs font-medium text-gray-400 underline underline-offset-2 transition hover:text-gray-200",children:"Auswahl aufheben"})]})}),v.jsx("div",{className:"w-full md:w-1/4 md:ml-auto",children:v.jsx(V.Button,{className:"w-full bg-arcticBlue-500 hover:bg-arcticBlue-600",onClick:At,disabled:ft,children:Ae})})]})]})]}),v.jsx("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2",children:me.map(Z=>{const ue=Z.redeployPhase,ne=ue===Wt.QUEUED,xe=ue===Wt.STARTED,se=ne||xe,ce=i.includes(Z.Id),Ce=Z.updateStatus==="✅",Ie=!!Z.redeployDisabled,Ne=!se&&!Ce&&!Ie,ct=k&&Ne;return v.jsx(V.Card,{children:v.jsxs(V.CardBody,{className:`flex w-full text-stormGrey-500 items-center justify-between gap-4 rounded-xl shadow-lg transition border + ${ce?"border-purple-500 ring-1 ring-purple-500/40":"border-transparent"} + ${!Ne||se?"opacity-75 bg-stormGrey-200/20":""}`,children:[v.jsxs("div",{className:"flex items-center space-x-4",id:"left",children:[k&&v.jsx("input",{type:"checkbox",checked:ce,onChange:()=>Oe(Z.Id,!ct),className:`h-5 w-5 text-purple-500 focus:ring-purple-400 border-gray-600 bg-gray-900 rounded ${ct?"":"opacity-40 cursor-not-allowed"}`,disabled:!ct}),v.jsx("div",{className:`w-12 h-12 flex items-center justify-center rounded-full + ${Z.updateStatus==="✅"?"bg-mossGreen-600":Z.updateStatus==="⚠️"?"bg-warmAmberGlow-400":"bg-sunsetCoral-500"}`}),v.jsxs("div",{children:[v.jsx("p",{className:"text-lg antialiased font-sans font-semibold leading-normal text-inherit",children:Z.Name}),v.jsxs("p",{className:"text-sm antialiased font-sans font-light leading-normal text-inherit",children:["ID: ",Z.Id]}),Z.duplicateName&&v.jsx("p",{className:"text-xs text-amber-700",children:"⚠️ Doppelter Name erkannt"})]})]}),v.jsx("div",{className:"ml-auto flex flex-col items-end gap-1 text-sm",id:"right",children:xe?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-warmAmberGlow-600",children:"Redeploy"}),v.jsx("span",{className:"text-warmAmberGlow-500",children:"läuft…"})]}):ne?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-warmAmberGlow-600",children:"Redeploy"}),v.jsx("span",{className:"text-warmAmberGlow-500",children:"in Warteliste…"})]}):Ie?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-stormGrey-500",children:"System"}),v.jsx("span",{className:"text-gray-300",children:"Redeploy deaktiviert"})]}):Ce?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"antialiased font-sans font-light leading-normal text-xs uppercase tracking-wide text-stormGrey-500",children:"Status"}),v.jsx("span",{className:"text-mossGreen-600",children:"Aktuell"})]}):E?v.jsx(V.Button,{onClick:()=>qe(Z.Id),disabled:L||se,className:"disabled:opacity-50 disabled:cursor-not-allowed",children:"Redeploy"}):null})]})},Z.Id)})}),v.jsx(ku,{disabled:r||!!o})]})}const nV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},Ri=e=>{if(!e&&e!==0)return"-";const r=(n=>{if(n instanceof Date)return n;if(typeof n=="number"){const o=n>1e12?n:n*1e3;return new Date(o)}if(typeof n=="string"){const o=Number(n);if(!Number.isNaN(o)){const a=o>1e12?o:o*1e3;return new Date(a)}return new Date(n)}return null})(e);return!r||Number.isNaN(r.getTime())?String(e):r.toLocaleString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})},Hw=()=>({host:"",port:"22",username:"",password:"",extraSshArgs:""});function oV(){var Mu,Iu;const e=Hn(),{hasPermission:t,user:r,serverAssignments:n}=Yr(),{showToast:o}=Fa(),{maintenance:a,update:i,script:l,ssh:f,loading:g,error:m,setMaintenanceMode:S,triggerUpdate:O,saveScript:T,resetScript:C,saveSshConfig:w,deleteSshConfig:b,testSshConnection:d,fetchSetupStatus:s,deleteSetupServer:c,updateSetupApiKey:u,updateSelfStackId:h,removeSuperuserAccount:y}=Yo(),x=!!(r!=null&&r.isSuperuser),E=!!(x||t("maintenance-access","read")),k=!!(x||t("maintenance-access","full")),j=!!(x||t("maintenance-server-manage","read")),A=!!(x||t("maintenance-server-edit","full")),M=!!(x||t("maintenance-server-delete","full")),D=!!(x||t("maintenance-superuser-delete","full")),L=!!(x||t("maintenance-mtls","full")),z=L,H=!1,Y=!1,G=!!(a!=null&&a.active),B=a==null?void 0:a.message,$=(Mu=a==null?void 0:a.extra)==null?void 0:Mu.type,q=!!(i!=null&&i.running),ee=G||q,[oe,ge]=P.useState({available:!1,source:null,updatedAt:null,validTo:null}),[fe,re]=P.useState(null),[be,he]=P.useState(""),[pe,ve]=P.useState(!1),[me,ke]=P.useState(!1),[Fe,Pe]=P.useState(""),[te,Oe]=P.useState({key:"",cert:""}),[$e,Be]=P.useState(!1),[We,lt]=P.useState(""),[qe,Ke]=P.useState(!1),xt=P.useRef([]),[rt,dt]=P.useState("");P.useState(!1),P.useState(!1),P.useState("");const[Rt,Ae]=P.useState(!1),ft=P.useCallback(async()=>{var Ee,Xe,et,Ze,it;if(!(!z||!be)){ve(!0),Pe("");try{const Ye=await Je.post("/api/maintenance/mtls-server-credentials/reveal",{password:be});re({key:((Ee=Ye.data)==null?void 0:Ee.key)||"",cert:((Xe=Ye.data)==null?void 0:Xe.cert)||"",source:((et=Ye.data)==null?void 0:et.source)||oe.source})}catch(Ye){const Ut=((it=(Ze=Ye.response)==null?void 0:Ze.data)==null?void 0:it.error)||Ye.message||"Zugang fehlgeschlagen";Pe(Ut),re(null)}finally{ve(!1)}}},[z,be,oe.source]),At=P.useCallback(async()=>{var Ee,Xe;if(!(!z||!be)){ke(!0),Pe("");try{const et=await Je.post("/api/maintenance/mtls-server-credentials/download",{password:be},{responseType:"blob"}),Ze=new Blob([et.data],{type:"application/zip"}),it=window.URL.createObjectURL(Ze),Ye=document.createElement("a");Ye.href=it,Ye.download="mtls-server-credentials.zip",document.body.appendChild(Ye),Ye.click(),document.body.removeChild(Ye),window.URL.revokeObjectURL(it)}catch(et){const Ze=((Xe=(Ee=et.response)==null?void 0:Ee.data)==null?void 0:Xe.error)||et.message||"Download fehlgeschlagen";Pe(Ze)}finally{ke(!1)}}},[z,be]),Z=P.useCallback(async()=>{var et,Ze;if(!z)return;const{key:Ee,cert:Xe}=te;if(!Ee.trim()||!Xe.trim()){lt("Bitte Private Key und Zertifikat (PEM) hochladen.");return}lt(""),Be(!0);try{const it=await Je.post("/api/maintenance/mtls-server-credentials/upload",{key:Ee,cert:Xe});ge(Ye=>{var Ut,qn,Ti;return{available:!0,source:((Ut=it.data)==null?void 0:Ut.source)||Ye.source||"custom",updatedAt:((qn=it.data)==null?void 0:qn.updatedAt)||Ye.updatedAt||null,validTo:((Ti=it.data)==null?void 0:Ti.validTo)||Ye.validTo||null}}),re(null),he(""),Oe({key:"",cert:""}),xt.current&&xt.current.forEach(Ye=>{Ye&&(Ye.value="")}),o({variant:"success",title:"mTLS gespeichert",description:"Custom-Zertifikate wurden übernommen."})}catch(it){const Ye=((Ze=(et=it.response)==null?void 0:et.data)==null?void 0:Ze.error)||it.message||"Upload fehlgeschlagen";lt(Ye),o({variant:"error",title:"Upload fehlgeschlagen",description:Ye})}finally{Be(!1)}},[z,te,o]),ue=P.useCallback(async()=>{var Ee,Xe,et,Ze,it;if(z){Ke(!0),Pe("");try{const Ye=await Je.delete("/api/maintenance/mtls-server-credentials");ge({available:!0,source:((Ee=Ye.data)==null?void 0:Ee.source)||"generated",updatedAt:((Xe=Ye.data)==null?void 0:Xe.updatedAt)||null,validTo:((et=Ye.data)==null?void 0:et.validTo)||null}),re(null),Oe({key:"",cert:""}),lt(""),xt.current&&xt.current.forEach(Ut=>{Ut&&(Ut.value="")}),o({variant:"info",title:"mTLS erneuert",description:"Custom-Zertifikate gelöscht, neue erstellt."})}catch(Ye){const Ut=((it=(Ze=Ye.response)==null?void 0:Ze.data)==null?void 0:it.error)||Ye.message||"Zurücksetzen fehlgeschlagen";Pe(Ut),o({variant:"error",title:"Zurücksetzen fehlgeschlagen",description:Ut})}finally{Ke(!1)}}},[z,o]),[ne,xe]=P.useState(()=>Hw()),[se,ce]=P.useState(!1),[Ce,Ie]=P.useState(!1);P.useState(!1),P.useState(!1),P.useState(!1);const[Ne,ct]=P.useState(null);P.useEffect(()=>{if(!l)return;const Ee=l.custom??l.default??l.effective??"";dt(Ee)},[l]),P.useEffect(()=>{if(!f){xe(Hw()),ce(!1),Ie(!1),ct(null);return}xe({host:f.host??"",port:String(f.port??"22"),username:f.username??"",password:"",extraSshArgs:Array.isArray(f.extraSshArgs)?f.extraSshArgs.join(` +`):""}),ce(!!f.passwordStored),Ie(!1),ct(null)},[f]),P.useEffect(()=>{if(!L)return;(async()=>{var Xe,et,Ze,it;try{const Ye=await Je.get("/api/maintenance/mtls-server-credentials/meta");ge({available:!!((Xe=Ye.data)!=null&&Xe.available),source:((et=Ye.data)==null?void 0:et.source)||null,updatedAt:((Ze=Ye.data)==null?void 0:Ze.updatedAt)||null,validTo:((it=Ye.data)==null?void 0:it.validTo)||null})}catch{ge({available:!1,source:null,updatedAt:null,validTo:null})}})()},[L]),P.useMemo(()=>l?l.source==="custom"&&typeof l.custom=="string"?l.custom:l.default??l.effective??"":"",[l]),l==null||l.source;const[Ve,tt]=P.useState(!0),[wt,Vt]=P.useState(!1),[He,Yt]=P.useState(null),[It,Dt]=P.useState(""),[kt,Gt]=P.useState(!1),[Ot,hr]=P.useState(null),[_r,kr]=P.useState(!0),[Te,Me]=P.useState(""),[Ge,gt]=P.useState(""),[X,_e]=P.useState(""),[ye,ot]=P.useState(""),[at,Ct]=P.useState(""),[Tt,Zt]=P.useState(!1),[Ft,Mr]=P.useState({}),[Ir,br]=P.useState(null),[Vr,go]=P.useState(null),[vr,Gn]=P.useState(""),[za,on]=P.useState(!1),[Dr,Sr]=P.useState(""),Qr=P.useMemo(()=>{var it;const Ee=Array.isArray((it=Ot==null?void 0:Ot.servers)==null?void 0:it.items)?Ot.servers.items:[],et=(Array.isArray(n)&&n.length?n:Array.isArray(r==null?void 0:r.serverAssignments)?r.serverAssignments:[]).map(Ye=>Number((Ye==null?void 0:Ye.serverId)??(Ye==null?void 0:Ye.server_id))).filter(Ye=>Number.isFinite(Ye)&&Ye>0);if(et.length===0)return Ee;const Ze=new Set(et);return Ee.filter(Ye=>Ze.has(Number(Ye.id)))},[Ot,r]);P.useMemo(()=>{var Xe;const Ee=((Xe=Ot==null?void 0:Ot.apiKeys)==null?void 0:Xe.items)??[];return new Map(Ee.map(et=>[et.serverId,et]))},[Ot]),P.useMemo(()=>!!(Ot!=null&&Ot.setupComplete),[Ot]);const mo=(Ot==null?void 0:Ot.selfStack)??null,Nn=(mo==null?void 0:mo.current)??"";(Iu=Ot==null?void 0:Ot.envDefaults)==null||Iu.selfStackId;const{page:gn,perPage:je,perPageOptions:Le,perPageIsAll:ze,handlePerPageChange:Ue,setPage:pt,setTotals:Lt,resetPagination:or}=Fs();P.useEffect(()=>()=>or(),[or]);const[gr,mn]=P.useState(""),[jn,Ba]=P.useState(null),[_i,Nu]=P.useState(!1),[Sb,ju]=P.useState(""),[Cb,zs]=P.useState(!1),[Qo,Si]=P.useState(null),Va=P.useRef(null),Xo=P.useCallback(async()=>{var Ee,Xe,et,Ze;tt(!0),Dt("");try{const it=await Je.get("/api/auth/superuser/status"),Ye=!!((Ee=it.data)!=null&&Ee.exists);Vt(Ye),Yt(Ye?((Xe=it.data)==null?void 0:Xe.user)??null:null)}catch(it){const Ye=((Ze=(et=it.response)==null?void 0:et.data)==null?void 0:Ze.error)||it.message||"Superuser-Status konnte nicht geladen werden";Vt(!1),Yt(null),Dt(Ye)}finally{tt(!1)}},[]),Xr=P.useCallback(async({silent:Ee=!1}={})=>{var Xe,et;Ee||kr(!0),Me("");try{const Ze=await s();hr(Ze),Mr({})}catch(Ze){const it=((et=(Xe=Ze.response)==null?void 0:Xe.data)==null?void 0:et.error)||Ze.message||"Setup-Daten konnten nicht geladen werden";Me(it),Ee||o({variant:"error",title:"Setup-Daten",description:it})}finally{kr(!1)}},[s,o]);P.useCallback(async({silent:Ee=!1}={})=>{if(Va.current)return Va.current;const Xe=(async()=>{var et,Ze;Ee?zs(!0):Nu(!0),ju("");try{const Ye=(await Je.get("/api/maintenance/portainer-status")).data??{};Ba(Ye),Si(new Date)}catch(it){const Ye=((Ze=(et=it.response)==null?void 0:et.data)==null?void 0:Ze.error)||it.message||"Fehler beim Prüfen des Portainer-Status";ju(Ye),o({variant:"error",title:"Statusaktualisierung fehlgeschlagen",description:Ye})}finally{Ee?zs(!1):Nu(!1),Va.current=null}})();return Va.current=Xe,Xe},[o]),P.useEffect(()=>{Xo({silent:!0})},[Xo]),P.useEffect(()=>{Xr()},[Xr]);const bo=P.useMemo(()=>{const Ee=gr.trim().toLowerCase();return Ee?Qr.filter(Xe=>[Xe.name,Xe.url].map(Ze=>String(Ze||"").toLowerCase()).some(Ze=>Ze.includes(Ee))):Qr},[gr,Qr]);P.useEffect(()=>{Lt(bo.length)},[bo.length,Lt]);const Ua=P.useMemo(()=>{if(ze)return bo;const Ee=(gn-1)*je;return bo.slice(Ee,Ee+je)},[bo,gn,je,ze]);P.useEffect(()=>{Gn(Nn||""),Sr("")},[Nn]);const Bs=vr!==Nn,Qf=P.useCallback(Ee=>{mn(Ee.target.value)},[]);P.useEffect(()=>{gn!==1&&pt(1)},[gr,gn,pt]);const Eu=P.useCallback(async()=>{var Ze,it,Ye,Ut;if(!A||Tt)return;const Ee=(Ge||"").trim(),Xe=(X||"").trim(),et=(ye||"").trim();if(!Xe||!et){Ct("Bitte Name, URL und API-Key angeben.");return}Ct(""),Zt(!0);try{await Je.post("/api/setup/servers",{name:Ee,url:Xe,apiKey:et}),gt(""),_e(""),ot(""),await Xr({silent:!0})}catch(qn){const Ti=((it=(Ze=qn.response)==null?void 0:Ze.data)==null?void 0:it.message)||((Ut=(Ye=qn.response)==null?void 0:Ye.data)==null?void 0:Ut.error)||qn.message||"Server konnte nicht angelegt werden.";Ct(Ti)}finally{Zt(!1)}},[A,ye,Ge,X,Tt,Xr]),Ci=P.useCallback(()=>{Tt||(gt(""),_e(""),ot(""),Ct(""))},[Tt]);P.useCallback((Ee,Xe)=>{},[Y]);const Au=P.useMemo(()=>{const Ee={host:ne.host.trim(),port:Number.parseInt(ne.port,10)||22,username:ne.username.trim(),extraSshArgs:(ne.extraSshArgs||"").split(/\r?\n/).map(et=>et.trim()).filter(Boolean)},Xe=ne.password??"";return Xe?Ee.password=Xe:se||(Ee.password=""),Ee},[ne,se]);P.useCallback(async()=>{},[Y,T,rt,l,o]),P.useCallback(async()=>{},[Y,C,o]),P.useCallback(async()=>{},[Y,Au,w,o]),P.useCallback(async()=>{},[Y,Au,d,o]),P.useCallback(async()=>{},[Y,b,o]);const Ru=P.useCallback(async()=>{var Ee,Xe,et;if(!(!D||kt||Ve||!wt)&&!(typeof window<"u"&&!window.confirm(`Superuser und zugehörige Gruppe wirklich löschen? +Dies setzt die Superuser-Einrichtung zurück.`)))try{Gt(!0);const Ze=await y(),it=Number((Ze==null?void 0:Ze.usersRemoved)??0);o({variant:"success",title:"Superuser gelöscht",description:it>1?`${it} Konten aus der Superuser-Gruppe wurden entfernt.`:"Superuser-Konto wurde entfernt."}),await Xo({silent:!0})}catch(Ze){if(((Ee=Ze.response)==null?void 0:Ee.status)===404)await Xo({silent:!0}),o({variant:"info",title:"Kein Superuser vorhanden",description:"Es ist kein Superuser mehr vorhanden."});else{const Ye=((et=(Xe=Ze.response)==null?void 0:Xe.data)==null?void 0:et.error)||Ze.message||"Superuser konnte nicht gelöscht werden";o({variant:"error",title:"Löschen fehlgeschlagen",description:Ye})}}finally{Gt(!1)}},[D,kt,Ve,wt,y,Xo,o]),Vs=P.useCallback(async Ee=>{var it,Ye;if(!M||Vr===Ee)return;const Xe=Qr.find(Ut=>Ut.id===Ee);if(!Xe)return;const et=Xe.name||Xe.url||`Server ${Ee}`,Ze=[`Server "${et}" wirklich löschen?`,"Das System benötigt anschließend erneut einen gültigen Server im Setup."].filter(Boolean).join(` +`);if(!(typeof window<"u"&&!window.confirm(Ze))){go(Ee);try{await c(Ee),o({variant:"success",title:"Server gelöscht",description:`Server "${et}" wurde entfernt.`}),await Xr({silent:!0})}catch(Ut){const qn=((Ye=(it=Ut.response)==null?void 0:it.data)==null?void 0:Ye.error)||Ut.message||"Server konnte nicht gelöscht werden.";o({variant:"error",title:"Server löschen fehlgeschlagen",description:qn})}finally{go(null)}}},[M,c,Xr,Vr,Qr,o]);P.useCallback((Ee,Xe)=>{A&&Mr(et=>({...et,[Ee]:Xe}))},[A]),P.useCallback(async Ee=>{var et,Ze;if(!A)return;const Xe=(Ft[Ee]??"").trim();if(!Xe){o({variant:"warning",title:"API-Key fehlt",description:"Bitte gib einen API-Key ein."});return}if(Ir!==Ee){br(Ee);try{await u(Ee,Xe),o({variant:"success",title:"API-Key aktualisiert",description:"Der API-Key wurde gespeichert."}),Mr(it=>({...it,[Ee]:""})),await Xr({silent:!0})}catch(it){const Ye=((Ze=(et=it.response)==null?void 0:et.data)==null?void 0:Ze.error)||it.message||"API-Key konnte nicht aktualisiert werden.";o({variant:"error",title:"Aktualisierung fehlgeschlagen",description:Ye})}finally{br(null)}}},[Ft,Ir,A,Xr,o,u]),P.useCallback(Ee=>{A&&(Gn(Ee),Sr(""))},[A]),P.useCallback(async()=>{var Xe,et;if(!A||!Bs)return;on(!0),Sr("");const Ee=typeof vr=="string"?vr.trim():"";try{await h(Ee),o({variant:"success",title:"Self-Stack-ID gespeichert",description:Ee?`Self-Stack-ID wurde auf "${Ee}" gesetzt.`:"Self-Stack-ID wurde entfernt."}),await Xr({silent:!0})}catch(Ze){const it=((et=(Xe=Ze.response)==null?void 0:Xe.data)==null?void 0:et.error)||Ze.message||"Self-Stack-ID konnte nicht aktualisiert werden.";Sr(it),o({variant:"error",title:"Self-Stack-ID",description:it})}finally{on(!1)}},[A,Xr,Bs,vr,o,h]),P.useCallback(async()=>{var Ee,Xe;if(A&&!(!vr&&!Nn)&&!(typeof window<"u"&&!window.confirm("Self-Stack-ID wirklich entfernen?"))){on(!0),Sr("");try{await h(""),Gn(""),o({variant:"success",title:"Self-Stack-ID entfernt",description:"Die Self-Stack-ID wurde gelöscht."}),await Xr({silent:!0})}catch(et){const Ze=((Xe=(Ee=et.response)==null?void 0:Ee.data)==null?void 0:Xe.error)||et.message||"Self-Stack-ID konnte nicht entfernt werden.";Sr(Ze),o({variant:"error",title:"Self-Stack-ID",description:Ze})}finally{on(!1)}}},[A,Nn,Xr,vr,o,h]);const Us=P.useCallback(async Ee=>{var Xe,et;if(k&&!(g||Rt)&&Ee!==G){if(q){o({variant:"warning",title:"Aktion nicht möglich",description:"Während eines laufenden Updates kann der Wartungsmodus nicht geändert werden."});return}Ae(!0);try{const Ze=Ee&&!!$,it={active:Ee};Ze&&B?it.message=B:it.message=null,await S(it),o({variant:Ee?"info":"success",title:Ee?"Wartungsmodus aktiviert":"Wartungsmodus deaktiviert",description:Ee?"Benutzer sehen jetzt die Wartungsseite.":"StackPulse steht wieder zur Verfügung."})}catch(Ze){const it=((et=(Xe=Ze.response)==null?void 0:Xe.data)==null?void 0:et.error)||Ze.message||"Wartungsmodus konnte nicht geändert werden";o({variant:"error",title:"Änderung fehlgeschlagen",description:it})}finally{Ae(!1)}}},[k,g,Rt,G,q,S,B,$,o]);P.useCallback(async()=>{},[H,G,q,jn,O,o]),a!=null&&a.activatedAt&&Ri(a.activatedAt),a!=null&&a.updatedAt&&Ri(a.updatedAt),i==null||i.status;const Ws=i!=null&&i.stage?nV[i.stage]??i.stage:"–";return i==null||i.logs,i==null||i.targetVersion,i==null||i.resultVersion,i!=null&&i.startedAt&&Ri(i.startedAt),i!=null&&i.finishedAt&&Ri(i.finishedAt),i==null||i.message,E?v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(G||q)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",B?` – ${B}`:q?" – Portainer-Update läuft":"","."]}),q&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",Ws]})]})}),E&&v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:v.jsx("span",{children:"Wartungsmodus"})})}),v.jsxs(V.CardBody,{className:"flex flex-col gap-4 p-4",children:[v.jsxs("div",{className:"flex items-start justify-between gap-4",children:[v.jsx("div",{className:"space-y-1",children:v.jsx("p",{className:"text-sm antialiased font-sans text-sm font-light leading-normal text-inherit",children:"Schaltet StackPulse für Benutzer in den Wartungsmodus."})}),v.jsx(V.Switch,{checked:G,disabled:!k||Rt||g||q,onChange:Ee=>Us(Ee.target.checked),ripple:!1,color:"amber"})]}),Rt&&v.jsx("p",{className:"text-xs text-stormGrey-500",children:"Wartungsmodus wird aktualisiert…"})]})]}),L&&v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",children:"mTLS-Serverzertifikate (Backend)"})}),v.jsxs(V.CardBody,{className:"flex flex-col gap-4 p-4",children:[v.jsxs("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"small",color:"blue-gray",className:"font-semibold uppercase",children:"Status"}),v.jsx("p",{className:"text-sm text-stormGrey-600",children:oe.available?"Zertifikate vorhanden":"Keine Zertifikate geladen"}),v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Quelle: ",oe.source||"unbekannt"," ",oe.updatedAt?`– aktualisiert ${Ri(oe.updatedAt)}`:""," ",oe.validTo?`– gültig bis ${Ri(oe.validTo)}`:""]})]}),v.jsx(V.Chip,{value:oe.available?"Verfügbar":"Nicht verfügbar",color:oe.available?"green":"red",size:"sm",variant:"ghost",className:"w-fit px-3"})]}),Fe&&v.jsx("p",{className:"text-xs text-sunsetCoral-600",children:Fe}),fe&&v.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsx("span",{className:"text-xs font-semibold uppercase text-blue-gray-500",children:"Server-Key"}),v.jsx("textarea",{readOnly:!0,value:fe.key||"",className:"w-full rounded-md border border-blue-gray-100 p-2 font-mono text-xs text-blue-gray-800",rows:8})]}),v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsx("span",{className:"text-xs font-semibold uppercase text-blue-gray-500",children:"Server-Zertifikat"}),v.jsx("textarea",{readOnly:!0,value:fe.cert||"",className:"w-full rounded-md border border-blue-gray-100 p-2 font-mono text-xs text-blue-gray-800",rows:8})]})]}),!fe&&v.jsxs("div",{className:"grid gap-2 md:grid-cols-2",children:[v.jsx("div",{className:"rounded-md border border-blue-gray-100 bg-blue-gray-50/60 p-3 text-sm text-blue-gray-500",children:v.jsx("span",{className:"font-mono",children:"******"})}),v.jsx("div",{className:"rounded-md border border-blue-gray-100 bg-blue-gray-50/60 p-3 text-sm text-blue-gray-500",children:v.jsx("span",{className:"font-mono",children:"******"})})]}),v.jsxs("div",{className:"grid gap-3 md:grid-cols-3 md:items-end",children:[v.jsx(V.Input,{type:"password",label:"Benutzerpasswort",value:be,onChange:Ee=>he(Ee.target.value),disabled:!z||pe||me}),v.jsx(V.Button,{color:"blue",onClick:ft,disabled:!z||!be||pe,children:pe?"Prüfe…":"Anzeigen"}),v.jsx(V.Button,{variant:"outlined",color:"gray",onClick:At,disabled:!z||!be||me,children:me?"Bereite Download vor…":"Als ZIP herunterladen"})]}),v.jsxs("div",{className:"mt-4 grid gap-3",children:[v.jsx(V.Typography,{variant:"small",color:"blue-gray",className:"font-semibold uppercase",children:"Eigene Zertifikate hochladen"}),v.jsx("p",{className:"text-xs text-stormGrey-600",children:"Lade Private Key und Zertifikat (PEM) hoch. Beide Felder sind Pflicht. Bestehende Custom-Zertifikate werden nicht mehr überschrieben."}),v.jsx("div",{className:"grid gap-2",children:v.jsx(V.Input,{type:"file",accept:".pem",crossOrigin:"",label:"Private Key (.pem)",className:"cursor-pointer [&::-webkit-file-upload-button]:hidden [&::file-selector-button]:hidden",inputRef:Ee=>{xt.current[0]=Ee},onChange:Ee=>{var Ze;const Xe=(Ze=Ee.target.files)==null?void 0:Ze[0];if(!Xe)return;const et=new FileReader;et.onload=it=>{Oe(Ye=>{var Ut;return{...Ye,key:((Ut=it.target)==null?void 0:Ut.result)||""}})},et.readAsText(Xe)},disabled:$e})}),v.jsx("div",{className:"grid gap-2",children:v.jsx(V.Input,{type:"file",accept:".pem",crossOrigin:"",label:"Zertifikat (.pem)",className:"cursor-pointer [&::-webkit-file-upload-button]:hidden [&::file-selector-button]:hidden",inputRef:Ee=>{xt.current[1]=Ee},onChange:Ee=>{var Ze;const Xe=(Ze=Ee.target.files)==null?void 0:Ze[0];if(!Xe)return;const et=new FileReader;et.onload=it=>{Oe(Ye=>{var Ut;return{...Ye,cert:((Ut=it.target)==null?void 0:Ut.result)||""}})},et.readAsText(Xe)},disabled:$e})}),We&&v.jsx("p",{className:"text-xs text-sunsetCoral-600",children:We}),v.jsxs("div",{className:"flex flex-wrap gap-2 justify-end",children:[v.jsx(V.Button,{color:"blue",onClick:Z,disabled:$e||!te.key.trim()||!te.cert.trim(),className:"w-full sm:w-auto",children:$e?"Lade hoch…":"Zertifikate speichern"}),v.jsx(V.Button,{variant:"outlined",color:"gray",onClick:ue,disabled:qe||oe.source!=="custom",className:"w-full sm:w-auto",children:qe?"Erzeuge neu…":"Custom-Zertifikate löschen & neu generieren"})]})]})]})]}),j&&v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsxs(V.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:[v.jsx("span",{children:"Server"}),v.jsxs(V.Typography,{variant:"small",color:"white",children:[Qr.length," vorhanden"]})]})}),v.jsxs(V.CardBody,{className:"p-4",children:[A&&v.jsxs("div",{className:"mb-8 rounded-lg border border-blue-gray-50 p-4",children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-2",children:"Neuen Server hinzufügen"}),v.jsx("p",{className:"text-sm text-stormGrey-600 mb-4",children:"Hinterlege deine Portainer-Instanz. Die Verbindung wird beim Speichern automatisch geprüft."}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[v.jsx(V.Input,{label:"Servername",value:Ge,onChange:Ee=>gt(Ee.target.value),disabled:Tt||ee,crossOrigin:""}),v.jsx(V.Input,{label:"Server-URL oder IP",value:X,onChange:Ee=>_e(Ee.target.value),disabled:Tt||ee,crossOrigin:""}),v.jsx(V.Input,{type:"password",label:"Portainer API-Key",value:ye,onChange:Ee=>ot(Ee.target.value),disabled:Tt||ee,crossOrigin:""})]}),v.jsxs("div",{className:"mt-4 flex flex-col gap-3 sm:flex-row sm:items-center",children:[v.jsx(V.Button,{color:"green",onClick:Eu,disabled:Tt||ee,children:Tt?"Verifiziere …":"Server anlegen"}),v.jsx(V.Button,{variant:"text",color:"blue-gray",onClick:Ci,disabled:Tt,children:"Formular zurücksetzen"})]}),at&&v.jsx("p",{className:"mt-2 text-sm text-sunsetCoral-600",children:at})]}),v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(V.Input,{label:"Suchen nach Name oder URL",value:gr,onChange:Qf,crossOrigin:""})}),v.jsx("div",{className:"md:mt-0 mt-4 md:flex-1",children:v.jsx(V.Select,{variant:"static",label:"Einträge pro Seite",onChange:Ue,value:je,children:Le.map(({value:Ee,label:Xe})=>v.jsx(V.Option,{value:Ee,children:Xe},Ee))})})]}),Te&&v.jsx("div",{className:"mt-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:Te}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50 mt-6",children:v.jsxs("table",{className:"w-full min-w-[520px] table-auto text-left",children:[v.jsx("thead",{children:v.jsxs("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:[v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Name"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"IP / Host"}),v.jsx("th",{className:"px-6 py-4 font-semibold text-right",children:"Aktionen"})]})}),v.jsx("tbody",{children:_r?v.jsx("tr",{children:v.jsx("td",{colSpan:3,className:"px-6 py-8 text-center text-blue-gray-400",children:"Server werden geladen ..."})}):bo.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:3,className:"px-6 py-8 text-center text-blue-gray-400",children:"Keine Server gefunden."})}):Ua.map((Ee,Xe)=>{const et=Xe===Ua.length-1?"":"border-b border-blue-gray-50",Ze=(()=>{try{return new URL(Ee.url).hostname||Ee.url}catch{return Ee.url}})();return v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${et}`,children:[v.jsxs("td",{className:"px-6 py-4",children:[v.jsx(V.Typography,{variant:"small",className:"font-medium text-stormGrey-900",children:Ee.name||"–"}),v.jsx(V.Typography,{variant:"small",className:"text-xs text-stormGrey-500",children:Ee.url})]}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",children:Ze||"–"})}),v.jsx("td",{className:"px-6 py-4",children:v.jsxs("div",{className:"flex justify-end gap-2",children:[v.jsx(V.Button,{size:"sm",variant:"outlined",color:"blue-gray",onClick:()=>e(`/dashboard/maintenance/servers/${Ee.id}`),disabled:!A,children:"Bearbeiten"}),v.jsx(V.Button,{size:"sm",variant:"text",color:"red",onClick:()=>Vs(Ee.id),disabled:ee||!M||Vr===Ee.id,children:Vr===Ee.id?"Lösche…":"Löschen"})]})})]},Ee.id)})})]})}),v.jsxs("div",{className:"mt-4 flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsxs(V.Typography,{variant:"small",color:"blue-gray",className:"text-sm",children:[ze?"Alle Server":`${Ua.length} von ${bo.length}`," angezeigt"]}),v.jsx(ku,{})]})]})]}),D&&v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:v.jsx("span",{children:"Superuser"})})}),v.jsxs(V.CardBody,{className:"flex flex-col gap-4 p-4",children:[v.jsxs("div",{className:"space-y-2",children:[Ve&&v.jsx("p",{className:"text-sm text-stormGrey-500",children:"Status wird geladen…"}),!Ve&&It&&v.jsx("p",{className:"text-sm text-sunsetCoral-600",children:It}),!Ve&&!It&&wt&&v.jsxs("div",{className:"space-y-1",children:[v.jsx("p",{className:"text-sm",children:"Superuser ist angelegt."}),v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Benutzername: ",v.jsx("span",{className:"font-medium text-stormGrey-900",children:(He==null?void 0:He.username)??"unbekannt"}),He!=null&&He.email?` - ${He.email}`:""]})]}),!Ve&&!It&&!wt&&v.jsx("p",{className:"text-sm",children:"Es ist kein Superuser vorhanden."})]}),v.jsx("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:v.jsx(V.Button,{color:"red",onClick:Ru,disabled:ee||!D||Ve||kt||!wt,className:"w-full sm:w-auto",children:kt?"Wird gelöscht…":"Superuser löschen"})}),v.jsx("span",{className:"text-xs text-stormGrey-500",children:"Entfernt das Superuser-Konto samt zugehöriger Gruppe. Danach kann der Erstbenutzer bei Bedarf erneut angelegt werden."})]})]})]}):null}const aV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},Ka=Oo.forwardRef(({value:e,onClick:t,onKeyDown:r,...n},o)=>{const{setOpen:a}=V.useSelect(),i=P.useCallback(()=>{(typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame:m=>setTimeout(m,0))(()=>{a(!0)})},[a]),l=P.useCallback(g=>{typeof t=="function"&&t(g),i()},[t,i]),f=P.useCallback(g=>{typeof r=="function"&&r(g),(g.key==="Enter"||g.key===" ")&&i()},[r,i]);return v.jsx(V.Option,{...n,value:e,ref:o,onClick:l,onKeyDown:f})});Ka.displayName="StickyOption";const iV={success:"text-mossGreen-500",warning:"text-warmAmberGlow-500",error:"text-sunsetCoral-500",started:"text-arcticBlue-500",running:"text-arcticBlue-500",info:"text-arcticBlue-500",queued:"text-indigo-500"},sV=e=>{if(!e)return"-";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})},Gw=e=>{if(e)return e.replace("T"," ")},qw="eventLogFilters",wo="__all__",lV="- Alle -",uV=e=>!!(e.categories&&e.categories.length||e.eventTypes&&e.eventTypes.length||e.actions&&e.actions.length||e.statuses&&e.statuses.length||e.entityTypes&&e.entityTypes.length||e.contextTypes&&e.contextTypes.length||e.entityId&&e.entityId.trim()||e.contextId&&e.contextId.trim()||e.search&&e.search.trim()||e.from&&e.from.trim()||e.to&&e.to.trim()),cV=e=>{if(e==null)return"-";if(typeof e=="object")try{return JSON.stringify(e)}catch{return"[Objekt]"}return String(e)},dV=e=>{if(!e||typeof e!="object")return"";const t=Object.entries(e);return t.length?t.map(([r,n])=>`${r}: ${cV(n)}`).join(" • "):""};function fV(){const[e,t]=P.useState([]),[r,n]=P.useState(!0),[o,a]=P.useState(""),[i,l]=P.useState(!1),[f,g]=P.useState([]),[m,S]=P.useState([]),[O,T]=P.useState([]),[C,w]=P.useState([]),[b,d]=P.useState([]),[s,c]=P.useState([]),[u,h]=P.useState([]),[y,x]=P.useState([]),[E,k]=P.useState([]),[j,A]=P.useState([]),[M,D]=P.useState([]),[L,z]=P.useState([]),[H,Y]=P.useState(""),[G,B]=P.useState(""),[$,q]=P.useState(""),[ee,oe]=P.useState(""),[ge,fe]=P.useState(""),[re,be]=P.useState(!1),[he,pe]=P.useState(!1),[ve,me]=P.useState(!1),[ke,Fe]=P.useState(0),{maintenance:Pe,update:te}=Yo(),Oe=!!(Pe!=null&&Pe.active),$e=Pe==null?void 0:Pe.message,Be=!!(te!=null&&te.running),We=Oe||Be,lt=te!=null&&te.stage?aV[te.stage]??te.stage:"–",{hasPermission:qe}=Yr(),Ke=qe("logs-delete","full"),xt=qe("logs-export","full"),{page:rt,perPage:dt,perPageOptions:Rt,setPage:Ae,setPerPage:ft,setTotals:At,handlePerPageChange:Z,validPerPageValues:ue,resetPagination:ne}=Fs(),xe=P.useCallback(()=>{},[]);P.useEffect(()=>()=>ne(),[ne]);const se=P.useCallback(X=>{const _e=Array.isArray(X)?X:(X==null?void 0:X.items)??[],ye=new Set,ot=new Set,at=new Set,Ct=new Set,Tt=new Set,Zt=new Set;_e.forEach(Ft=>{Ft.category&&ye.add(Ft.category),Ft.eventType&&ot.add(Ft.eventType),Ft.action&&at.add(Ft.action),Ft.status&&Ct.add(Ft.status),Ft.entityType&&Tt.add(Ft.entityType),Ft.contextType&&Zt.add(Ft.contextType)}),g(Array.from(ye).sort()),S(Array.from(ot).sort()),T(Array.from(at).sort()),w(Array.from(Ct).sort()),d(Array.from(Tt).sort()),c(Array.from(Zt).sort()),me(!0)},[]);P.useEffect(()=>{ve&&h(X=>{const _e=X.filter(ye=>f.includes(ye));return _e.length===X.length?X:_e})},[ve,f]),P.useEffect(()=>{ve&&x(X=>{const _e=X.filter(ye=>m.includes(ye));return _e.length===X.length?X:_e})},[ve,m]),P.useEffect(()=>{ve&&k(X=>{const _e=X.filter(ye=>O.includes(ye));return _e.length===X.length?X:_e})},[ve,O]),P.useEffect(()=>{ve&&A(X=>{const _e=X.filter(ye=>C.includes(ye));return _e.length===X.length?X:_e})},[ve,C]),P.useEffect(()=>{ve&&D(X=>{const _e=X.filter(ye=>b.includes(ye));return _e.length===X.length?X:_e})},[ve,b]),P.useEffect(()=>{ve&&z(X=>{const _e=X.filter(ye=>s.includes(ye));return _e.length===X.length?X:_e})},[ve,s]),P.useEffect(()=>{if(typeof window>"u"){pe(!0);return}try{const X=window.localStorage.getItem(qw);if(X){const _e=JSON.parse(X),ye=(_e==null?void 0:_e.filters)??_e??{},ot=(_e==null?void 0:_e.pagination)??{};h(ye.categories||[]),x(ye.eventTypes||[]),k(ye.actions||[]),A(ye.statuses||[]),D(ye.entityTypes||[]),z(ye.contextTypes||[]),Y(ye.entityId||""),B(ye.contextId||""),q(ye.search||""),oe(ye.from||""),fe(ye.to||""),be(uV(ye));const at=ot.perPage;if(at!==void 0){const Tt=String(at);ue.has(Tt)&&ft(Tt,{resetPage:!1})}const Ct=ot.page;typeof Ct=="number"&&Ct>0&&Ae(Ct)}}catch(X){console.error("❌ Fehler beim Laden der gespeicherten Log-Filter:",X)}finally{pe(!0)}},[Ae,ft,ue]);const ce=P.useCallback(()=>{const X={};u.length&&(X.categories=u.join(",")),y.length&&(X.eventTypes=y.join(",")),E.length&&(X.actions=E.join(",")),j.length&&(X.statuses=j.join(",")),M.length&&(X.entityTypes=M.join(",")),L.length&&(X.contextTypes=L.join(",")),H.trim()&&(X.entityId=H.trim()),G.trim()&&(X.contextId=G.trim()),$.trim()&&(X.search=$.trim());const _e=Gw(ee);_e&&(X.from=_e);const ye=Gw(ge);return ye&&(X.to=ye),X},[u,y,E,j,M,L,H,G,$,ee,ge]);P.useEffect(()=>{if(!he)return;let X=!1;return Je.get("/api/logs",{params:{perPage:"all",page:1}}).then(_e=>{X||se(_e.data)}).catch(_e=>{X||console.error("⚠️ Konnte Filteroptionen nicht aktualisieren:",_e)}),()=>{X=!0}},[he,se,ke]);const Ce=P.useMemo(()=>({categories:u,eventTypes:y,actions:E,statuses:j,entityTypes:M,contextTypes:L,entityId:H,contextId:G,search:$,from:ee,to:ge}),[u,y,E,j,M,L,H,G,$,ee,ge]);P.useEffect(()=>{if(!he)return;const X={...ce()};dt==="all"?(X.perPage="all",X.page=1):(X.perPage=dt,X.page=rt);let _e=!1;return n(!0),a(""),Je.get("/api/logs",{params:X}).then(ye=>{if(_e)return;const ot=ye.data||{},at=Array.isArray(ot)?ot:ot.items??[],Ct=Array.isArray(ot)?at.length:ot.total??at.length;if(t(at),At(Ct,at.length),dt==="all")rt!==1&&Ae(1);else{const Tt=Math.max(1,Math.ceil((Ct||0)/Number(dt))),Zt=Math.min(Math.max(rt,1),Tt);Zt!==rt&&Ae(Zt)}}).catch(ye=>{_e||(console.error("❌ Fehler beim Laden der Logs:",ye),a("Fehler beim Laden der Logs"))}).finally(()=>{_e||n(!1)}),()=>{_e=!0}},[he,ce,se,ke,dt,rt,At]),P.useEffect(()=>{if(he&&!(typeof window>"u"))try{window.localStorage.setItem(qw,JSON.stringify({filters:Ce,pagination:{perPage:dt,page:rt}}))}catch(X){console.error("⚠️ Konnte Filter nicht speichern:",X)}},[he,Ce,dt,rt]);const Ie=P.useCallback(X=>_e=>{var at;if(typeof _e=="string"){const Ct=_e;if(Ct==="")return;X(Tt=>Ct===wo?[]:Tt.includes(Ct)?Tt.filter(Zt=>Zt!==Ct):[...Tt,Ct]),Ae(1);return}const ye=(at=_e==null?void 0:_e.target)==null?void 0:at.selectedOptions;if(!ye)return;const ot=Array.from(ye).map(Ct=>Ct.value);ot.includes(wo)?X([]):X(ot),Ae(1)},[Ae]),Ne=P.useMemo(()=>Ie(h),[Ie]),ct=P.useMemo(()=>Ie(x),[Ie]),Ve=P.useMemo(()=>Ie(k),[Ie]),tt=P.useMemo(()=>Ie(A),[Ie]),wt=P.useMemo(()=>Ie(D),[Ie]),Vt=P.useMemo(()=>Ie(z),[Ie]),He=(X,_e)=>{X(ye=>ye.filter(ot=>ot!==_e)),Ae(1)},Yt=()=>{h([]),x([]),k([]),A([]),D([]),z([]),Y(""),B(""),q(""),oe(""),fe(""),be(!1),Ae(1)},It=()=>{be(X=>!X)},Dt=P.useCallback(X=>[{value:wo,label:lV},...X.filter(_e=>_e!==wo).map(_e=>({value:_e,label:_e}))],[]),kt=P.useMemo(()=>Dt(f),[Dt,f]),Gt=P.useMemo(()=>Dt(m),[Dt,m]),Ot=P.useMemo(()=>Dt(O),[Dt,O]),hr=P.useMemo(()=>Dt(C),[Dt,C]),_r=P.useMemo(()=>Dt(b),[Dt,b]),kr=P.useMemo(()=>Dt(s),[Dt,s]),Te=P.useMemo(()=>{let X=0;return u.length&&(X+=u.length),y.length&&(X+=y.length),E.length&&(X+=E.length),j.length&&(X+=j.length),M.length&&(X+=M.length),L.length&&(X+=L.length),H.trim()&&(X+=1),G.trim()&&(X+=1),$.trim()&&(X+=1),ee&&(X+=1),ge&&(X+=1),X},[u,y,E,j,M,L,H,G,$,ee,ge]),Me=async X=>{if(!Ke){a("Dir fehlt die Berechtigung, einzelne Logeinträge zu löschen.");return}if(window.confirm("Diesen Log-Eintrag dauerhaft löschen?")){l(!0),a("");try{await Je.delete(`/api/logs/${X}`),Fe(_e=>_e+1)}catch(_e){console.error("❌ Fehler beim Löschen des Logs:",_e),a("Fehler beim Löschen des Logs")}finally{l(!1)}}},Ge=async()=>{if(!Ke){a("Dir fehlt die Berechtigung, Logs zu löschen.");return}if(e.length&&window.confirm("Alle angezeigten Logs (entsprechend Filter) löschen?")){l(!0),a("");try{const X={...ce(),ids:e.map(_e=>_e.id).join(",")};await Je.delete("/api/logs",{params:X}),Fe(_e=>_e+1)}catch(X){console.error("❌ Fehler beim Löschen der gefilterten Logs:",X),a("Fehler beim Löschen der gefilterten Logs")}finally{l(!1)}}},gt=async X=>{if(!xt){a("Dir fehlt die Berechtigung, Logs zu exportieren.");return}l(!0),a("");try{const _e=await Je.get("/api/logs/export",{params:{...ce(),format:X},responseType:"blob"}),ye=_e.headers["content-type"]||(X==="sql"?"application/sql":"text/plain"),at=(_e.headers["content-disposition"]||"").match(/filename="?([^";]+)"?/i),Ct=(at==null?void 0:at[1])||`event-logs.${X}`,Tt=new Blob([_e.data],{type:ye}),Zt=window.URL.createObjectURL(Tt),Ft=document.createElement("a");Ft.href=Zt,Ft.download=Ct,document.body.appendChild(Ft),Ft.click(),Ft.remove(),window.URL.revokeObjectURL(Zt)}catch(_e){console.error("❌ Fehler beim Export der Logs:",_e),a("Fehler beim Export der Logs")}finally{l(!1)}};return Oo.useState(!1),v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(Oe||Be)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",$e?` – ${$e}`:Be?" – Portainer-Update läuft":"","."]}),Be&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",lt]})]})}),v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",children:v.jsxs("button",{onClick:It,className:"flex w-full items-center justify-between",children:[v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{children:"Logs"}),Te>0&&v.jsxs("span",{className:"rounded-full bg-blue-gray-500/80 px-2 py-0.5 text-xs text-white",children:[Te," aktiv"]})]}),v.jsx("span",{className:"text-xs uppercase tracking-wide text-gray-400",children:re?"Filter ausblenden":"Filter anzeigen"})]})})}),v.jsxs(V.CardBody,{className:"pt-0",children:[re&&v.jsxs("div",{className:"mb-8",children:[(xt||Ke)&&v.jsxs("div",{className:"flex flex-wrap gap-2",children:[xt&&v.jsxs(v.Fragment,{children:[v.jsx(V.Button,{onClick:()=>gt("txt"),disabled:We||i||r,className:"w-full md:flex-1",children:"Export TXT"}),v.jsx(V.Button,{onClick:()=>gt("sql"),disabled:We||i||r,className:"w-full md:flex-1",children:"Export SQL"})]}),Ke&&v.jsx(V.Button,{onClick:Ge,disabled:We||i||r||e.length===0,className:"w-full md:flex-1 bg-sunsetCoral-500 hover:bg-sunsetCoral-600",children:"Angezeigte löschen"})]}),v.jsxs("div",{className:"grid gap-6 mt-10",children:[v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsxs("div",{className:"grid gap-3",children:[v.jsx(V.Select,{multiple:!0,onChange:xe,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Kategorien",children:kt.map(({value:X,label:_e})=>v.jsx(Ka,{value:X,onClick:()=>Ne(X),onKeyDown:ye=>{(ye.key==="Enter"||ye.key===" ")&&(ye.preventDefault(),Ne(X))},className:`text-black-600 ${X===wo?"font-semibold text-black-800":""}`,children:_e},X))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:u.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Kategorien"}):v.jsx("span",{children:u.map(X=>v.jsx("button",{type:"button",onClick:()=>He(h,X),className:"rounded-full bg-lavenderSmoke-600/80 px-2 py-0.5 text-white transition hover:bg-lavenderSmoke-600/90 focus:outline-none focus:ring-2 focus:ring-lavenderSmoke-400 cursor-pointer",title:"Filter entfernen",children:X},X))})})]}),v.jsxs("div",{className:"grid gap-3",children:[v.jsx(V.Select,{multiple:!0,onChange:xe,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Event-Typen",children:Gt.map(({value:X,label:_e})=>v.jsx(Ka,{value:X,onClick:()=>ct(X),onKeyDown:ye=>{(ye.key==="Enter"||ye.key===" ")&&(ye.preventDefault(),ct(X))},className:`text-black-600 ${X===wo?"font-semibold text-black-800":""}`,children:_e},X))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:y.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Event-Typen"}):v.jsx("span",{children:y.map(X=>v.jsx("button",{type:"button",onClick:()=>He(x,X),className:"rounded-full bg-citrusPunch-600/80 px-2 py-0.5 text-white transition hover:bg-citrusPunch-600/90 focus:outline-none focus:ring-2 focus:ring-citrusPunch-400 cursor-pointer",title:"Filter entfernen",children:X},X))})})]})]}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsxs("div",{className:"grid gap-3",children:[v.jsx(V.Select,{multiple:!0,onChange:xe,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Aktionen",children:Ot.map(({value:X,label:_e})=>v.jsx(Ka,{value:X,onClick:()=>Ve(X),onKeyDown:ye=>{(ye.key==="Enter"||ye.key===" ")&&(ye.preventDefault(),Ve(X))},className:`text-black-600 ${X===wo?"font-semibold text-black-800":""}`,children:_e},X))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:E.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Aktionen"}):v.jsx("span",{children:E.map(X=>v.jsx("button",{type:"button",onClick:()=>He(k,X),className:"rounded-full bg-emeraldMist-500/80 px-2 py-0.5 text-white transition hover:bg-emeraldMist-500/90 focus:outline-none focus:ring-2 focus:ring-emeraldMist-400 cursor-pointer",title:"Filter entfernen",children:X},X))})})]}),v.jsxs("div",{className:"grid gap-3",children:[v.jsx(V.Select,{multiple:!0,onChange:xe,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Status",children:hr.map(({value:X,label:_e})=>v.jsx(Ka,{value:X,onClick:()=>tt(X),onKeyDown:ye=>{(ye.key==="Enter"||ye.key===" ")&&(ye.preventDefault(),tt(X))},className:`text-black-600 ${X===wo?"font-semibold text-black-800":""}`,children:_e},X))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:j.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Status"}):v.jsx("span",{children:j.map(X=>v.jsx("button",{type:"button",onClick:()=>He(A,X),className:"rounded-full bg-copperRust-600/80 px-2 py-0.5 text-white transition hover:bg-copperRust-600/90 focus:outline-none focus:ring-2 focus:ring-copperRust-400 cursor-pointer",title:"Filter entfernen",children:X},X))})})]})]}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsxs("div",{className:"grid gap-3",children:[v.jsx(V.Select,{multiple:!0,onChange:xe,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Entitäts-Typen",children:_r.map(({value:X,label:_e})=>v.jsx(Ka,{value:X,onClick:()=>wt(X),onKeyDown:ye=>{(ye.key==="Enter"||ye.key===" ")&&(ye.preventDefault(),wt(X))},className:`text-black-600 ${X===wo?"font-semibold text-black-800":""}`,children:_e},X))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:M.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Entitäten"}):v.jsx("span",{children:M.map(X=>v.jsx("button",{type:"button",onClick:()=>He(D,X),className:"rounded-full bg-indigo-600/80 px-2 py-0.5 text-white transition hover:bg-indigo-600/90 focus:outline-none focus:ring-2 focus:ring-indigo-400 cursor-pointer",title:"Filter entfernen",children:X},X))})})]}),v.jsxs("div",{className:"grid gap-3",children:[v.jsx(V.Select,{multiple:!0,onChange:xe,className:"text-stormGrey-500",variant:"static",dismiss:{itemPress:!1},label:"Kontext",children:kr.map(({value:X,label:_e})=>v.jsx(Ka,{value:X,onClick:()=>Vt(X),onKeyDown:ye=>{(ye.key==="Enter"||ye.key===" ")&&(ye.preventDefault(),Vt(X))},className:`text-black-600 ${X===wo?"font-semibold text-black-800":""}`,children:_e},X))}),v.jsx("div",{className:"mt-2 mb-2 min-h-[1.5rem] text-xs text-stormGrey-400",children:L.length===0?v.jsx("span",{className:"rounded-full bg-stormGrey-700/60 px-2 py-0.5 text-white",children:"Alle Kontexte"}):v.jsx("span",{children:L.map(X=>v.jsx("button",{type:"button",onClick:()=>He(z,X),className:"rounded-full bg-sunsetCoral-600/80 px-2 py-0.5 text-white transition hover:bg-sunsetCoral-600/90 focus:outline-none focus:ring-2 focus:ring-sunsetCoral-400 cursor-pointer",title:"Filter entfernen",children:X},X))})})]})]}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(V.Input,{value:H,onChange:X=>{Y(X.target.value),Ae(1)},variant:"static",label:"Entitäts-ID",placeholder:"z. B. Stack-ID"})}),v.jsx("div",{className:"md:flex-1",children:v.jsx(V.Input,{value:G,onChange:X=>{B(X.target.value),Ae(1)},variant:"static",label:"Kontext-ID",placeholder:"z. B. Server-ID"})})]}),v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(V.Input,{value:$,onChange:X=>{q(X.target.value),Ae(1)},variant:"static",label:"Suche (Nachricht & Details)",placeholder:"Freitext"})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(V.Select,{variant:"static",label:"Einträge pro Seite",onChange:xe,value:dt,children:Rt.map(({value:X,label:_e})=>v.jsx(V.Option,{value:X,onClick:()=>Z(X),children:_e},X))})})]}),v.jsxs("div",{className:"flex flex-col md:flex-row flex-wrap gap-4",children:[v.jsx("div",{className:"flex-1 min-w-[200px]",children:v.jsx(V.Input,{type:"datetime-local",variant:"static",label:"Von",value:ee,onChange:X=>{oe(X.target.value),Ae(1)},className:"w-full"})}),v.jsx("div",{className:"flex-1 min-w-[200px]",children:v.jsx(V.Input,{type:"datetime-local",variant:"static",label:"Bis",value:ge,onChange:X=>{fe(X.target.value),Ae(1)},className:"w-full"})}),v.jsx("div",{className:"flex-1 min-w-[180px]",children:v.jsx(V.Button,{onClick:Yt,disabled:We||i||r,className:"w-full",children:"Zurücksetzen"})})]})]})]}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50",children:v.jsxs("table",{className:"w-full min-w-[860px] table-auto text-left",children:[v.jsx("thead",{children:v.jsx("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:["Zeitpunkt","Kategorie","Status","Entität","Kontext","Nachricht","Details","Aktionen"].map(X=>v.jsx("th",{className:"px-6 py-4 font-semibold",children:X},X))})}),v.jsx("tbody",{children:r?v.jsx("tr",{children:v.jsx("td",{colSpan:8,className:"px-6 py-8 text-center text-stormGrey-400",children:"Logs werden geladen ..."})}):e.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:8,className:"px-6 py-8 text-center text-stormGrey-400",children:"Keine Logs gefunden."})}):e.map((X,_e)=>{const ye=iV[X.status]||"text-blue-300",ot=_e===e.length-1?"":"border-b border-blue-gray-50",at=X.category||"-",Ct=X.entityName||X.entityId||"-",Tt=[];X.entityName&&X.entityId?Tt.push(`ID: ${X.entityId}`):!X.entityName&&X.entityId&&Tt.push(`ID: ${X.entityId}`),X.entityType&&Tt.push(X.entityType);const Zt=X.contextLabel||X.contextType||(X.contextId?`#${X.contextId}`:"-"),Ft=[];X.contextType&&Ft.push(X.contextType),X.contextId&&Ft.push(`#${X.contextId}`);const Mr=dV(X.metadata),Ir=[];if(X.actorName||X.actorId){const br=X.actorName?X.actorName:`#${X.actorId}`,Vr=X.actorName&&X.actorId?` (#${X.actorId})`:"";Ir.push(`Akteur: ${br}${Vr}`)}return X.source&&Ir.push(`Quelle: ${X.source}`),Mr&&Ir.push(Mr),Ir.length||Ir.push("-"),v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${ot}`,children:[v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsx(V.Typography,{variant:"small",className:"block text-xs font-medium text-stormGrey-600",children:sV(X.timestamp)})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsxs("div",{className:"flex flex-col gap-2",children:[v.jsx("span",{className:"font-medium",children:at}),v.jsxs("div",{className:"flex flex-wrap gap-2 text-xs text-stormGrey-400",children:[X.eventType&&v.jsx("span",{className:"rounded-full bg-citrusPunch-600/80 px-2 py-0.5 text-white",children:X.eventType}),X.action&&v.jsx("span",{className:"rounded-full bg-emeraldMist-500/80 px-2 py-0.5 text-white",children:X.action})]})]})}),v.jsxs("td",{className:"px-6 py-4 align-top",children:[v.jsx(V.Typography,{variant:"small",className:`font-semibold ${ye}`,children:X.status||"-"}),X.severity&&v.jsx(V.Typography,{variant:"small",className:"text-xs text-stormGrey-400",children:X.severity})]}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsx("span",{className:"font-medium break-words",children:Ct}),Tt.length>0&&v.jsx("div",{className:"flex flex-col text-xs text-stormGrey-400",children:Tt.map(br=>v.jsx("span",{className:"break-words",children:br},br))})]})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsx("span",{className:"font-medium break-words",children:Zt}),Ft.length>0&&v.jsx("div",{className:"flex flex-col text-xs text-stormGrey-400",children:Ft.map(br=>v.jsx("span",{className:"break-words",children:br},br))})]})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsx(V.Typography,{variant:"small",className:"break-words",children:X.message||"-"})}),v.jsx("td",{className:"px-6 py-4 align-top",children:v.jsx("div",{className:"flex flex-col gap-1 text-xs text-stormGrey-500",children:Ir.map((br,Vr)=>v.jsx("span",{className:"break-words",children:br},Vr))})}),v.jsx("td",{className:"px-6 py-4 align-top",children:Ke&&v.jsx(V.Typography,{variant:"small",children:v.jsx("button",{onClick:()=>Me(X.id),disabled:We||i,className:"rounded-md border border-sunsetCoral-600 px-3 py-1 text-xs text-sunsetCoral-800 transition hover:bg-sunsetCoral-600/20 disabled:opacity-60",children:"Löschen"})})})]},X.id)})})]})}),v.jsxs("div",{className:"mt-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(V.Typography,{variant:"small",color:"gray",children:""}),v.jsx(ku,{disabled:r&&e.length===0})]})]})]})]})}const pV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},hV=e=>Array.isArray(e)?e.map(t=>{if(t&&typeof t=="object"){const r=Number(t.id),n=typeof t.name=="string"?t.name:"";return n?{id:Number.isFinite(r)?r:null,name:n}:null}if(typeof t=="string"){const r=t.trim();return r?{id:null,name:r}:null}return null}).filter(Boolean):[];function gV(){const[e,t]=P.useState([]),[r,n]=P.useState(!1),[o,a]=P.useState(""),[i,l]=P.useState(""),[f,g]=P.useState([]),[m,S]=P.useState(!1),[O,T]=P.useState(""),[C,w]=P.useState(""),[b,d]=P.useState(""),[s,c]=P.useState(""),[u,h]=P.useState(""),[y,x]=P.useState(""),[E,k]=P.useState(!1),[j,A]=P.useState(null),[M,D]=P.useState(null),{showToast:L}=Fa(),{maintenance:z,update:H}=Yo(),Y=!!(z!=null&&z.active),G=z==null?void 0:z.message,B=!!(H!=null&&H.running),$=H!=null&&H.stage?pV[H.stage]??H.stage:"–",q=Y||B,ee=Hn(),oe=P.useCallback(()=>{},[]),{hasPermission:ge}=Yr(),fe=ge("users-edit","full"),re=ge("users-delete","full"),{page:be,perPage:he,perPageOptions:pe,perPageIsAll:ve,handlePerPageChange:me,setPage:ke,setTotals:Fe,resetPagination:Pe}=Fs();P.useEffect(()=>()=>Pe(),[Pe]);const te=P.useCallback(async()=>{var ne,xe,se;n(!0),a("");try{const ce=await Je.get("/api/users"),Ie=(Array.isArray((ne=ce.data)==null?void 0:ne.items)?ce.data.items:[]).map(Ne=>({id:Ne.id,username:Ne.username||"",email:Ne.email||"",isActive:!!Ne.isActive,avatarColor:typeof Ne.avatarColor=="string"?Ne.avatarColor.trim():null,lastLogin:Ne.lastLogin||null,createdAt:Ne.createdAt||null,updatedAt:Ne.updatedAt||null,groups:hV(Ne.groups)})).sort((Ne,ct)=>Ne.username.localeCompare(ct.username,"de-DE"));t(Ie)}catch(ce){const Ce=((se=(xe=ce.response)==null?void 0:xe.data)==null?void 0:se.error)||ce.message||"Unbekannter Fehler";a(Ce),L({variant:"error",title:"Benutzer konnten nicht geladen werden",description:Ce})}finally{n(!1)}},[L]),Oe=P.useCallback(async()=>{var ne,xe,se;S(!0),T("");try{const ce=await Je.get("/api/groups"),Ie=(Array.isArray((ne=ce.data)==null?void 0:ne.items)?ce.data.items:[]).map(Ne=>({id:Number(Ne.id),name:Ne.name||""})).filter(Ne=>Number.isFinite(Ne.id)&&Ne.id>0&&Ne.name).filter(Ne=>Ne.name.toLowerCase()!=="superuser").sort((Ne,ct)=>Ne.name.localeCompare(ct.name,"de-DE"));g(Ie)}catch(ce){const Ce=((se=(xe=ce.response)==null?void 0:xe.data)==null?void 0:se.error)||ce.message||"Benutzergruppen konnten nicht geladen werden.";T(Ce),L({variant:"error",title:"Benutzergruppen",description:Ce})}finally{S(!1)}},[L]);P.useEffect(()=>{te()},[te]),P.useEffect(()=>{Oe()},[Oe]),P.useCallback(()=>{te(),Oe()},[te,Oe]);const $e=P.useCallback(ne=>{l(ne.target.value)},[]);P.useCallback(()=>{l("")},[]),P.useEffect(()=>{be!==1&&ke(1)},[i,be,ke]);const Be=P.useMemo(()=>{const ne=i.trim().toLowerCase();return ne?e.filter(xe=>[xe.username,xe.email,...xe.groups.map(ce=>ce.name)].map(ce=>String(ce||"").toLowerCase()).some(ce=>ce.includes(ne))):e},[e,i]),We=P.useMemo(()=>{if(ve)return null;const ne=Number(he);return Number.isFinite(ne)&&ne>0?ne:null},[he,ve]),lt=P.useMemo(()=>{if(ve||!We)return Be;const ne=(be-1)*We;return Be.slice(ne,ne+We)},[Be,be,ve,We]),qe=Be.length,Ke=lt.length;P.useEffect(()=>{if(ve){Fe(qe,qe),be!==1&&ke(1);return}const ne=Number(he);if(!Number.isFinite(ne)||ne<=0){Fe(qe,qe);return}const xe=Math.max(1,Math.ceil(qe/ne));if(be>xe){ke(xe);return}Fe(qe,Ke)},[qe,Ke,be,he,ve,ke,Fe]);const xt=P.useCallback(ne=>{if(!ne)return"–";const xe=typeof ne=="string"?ne.replace(" ","T"):ne,se=new Date(xe);return Number.isNaN(se.getTime())?ne:new Intl.DateTimeFormat("de-DE",{dateStyle:"short",timeStyle:"short"}).format(se)},[]),rt=P.useCallback(()=>{w(""),d(""),c(""),h(""),x("")},[]),dt=P.useCallback(async ne=>{var Ce,Ie;if(q||!(ne!=null&&ne.id)||!re)return;if(Array.isArray(ne==null?void 0:ne.groups)?ne.groups.some(Ne=>((Ne==null?void 0:Ne.name)||"").toLowerCase()==="superuser"):!1){L({variant:"error",title:"Löschen nicht möglich",description:"Der Superuser kann nicht gelöscht werden."});return}if(!window.confirm(`Benutzer "${ne.username}" wirklich löschen?`))return;const ce=Number(ne.id);if(!Number.isFinite(ce)||ce<=0){L({variant:"error",title:"Löschen fehlgeschlagen",description:"Ungültige Benutzer-ID."});return}A(ce);try{await Je.delete(`/api/users/${ce}`),L({variant:"success",title:"Benutzer gelöscht",description:`Der Benutzer "${ne.username}" wurde entfernt.`}),te()}catch(Ne){const ct=(Ie=(Ce=Ne.response)==null?void 0:Ce.data)==null?void 0:Ie.error;let Ve="Der Benutzer konnte nicht gelöscht werden.";ct==="INVALID_USER_ID"?Ve="Die Benutzer-ID ist ungültig.":ct==="USER_NOT_FOUND"?Ve="Der Benutzer wurde bereits entfernt.":ct==="USER_SUPERUSER_PROTECTED"&&(Ve="Der Superuser kann nicht gelöscht werden."),L({variant:"error",title:"Löschen fehlgeschlagen",description:Ve})}finally{A(null)}},[q,re,L,te]),Rt=P.useCallback(async ne=>{var Ce,Ie;if(!(ne!=null&&ne.id)||!fe)return;if(q){L({variant:"error",title:"Aktion nicht möglich",description:"Im Wartungsmodus oder während eines Updates sind Statusänderungen gesperrt."});return}if((Array.isArray(ne==null?void 0:ne.groups)?ne.groups.some(Ne=>((Ne==null?void 0:Ne.name)||"").toLowerCase()==="superuser"):!1)&&ne.isActive){L({variant:"error",title:"Änderung nicht möglich",description:"Der Superuser kann nicht deaktiviert werden."});return}const se=Number(ne.id);if(!Number.isFinite(se)||se<=0){L({variant:"error",title:"Statusänderung fehlgeschlagen",description:"Ungültige Benutzer-ID."});return}const ce=!ne.isActive;D(se);try{await Je.put(`/api/users/${se}/active`,{isActive:ce}),te(),L({variant:"success",title:"Status aktualisiert",description:`Der Benutzer wurde ${ce?"aktiviert":"deaktiviert"}.`})}catch(Ne){const ct=(Ie=(Ce=Ne.response)==null?void 0:Ce.data)==null?void 0:Ie.error;let Ve="Der Benutzerstatus konnte nicht geändert werden.";ct==="INVALID_USER_ID"?Ve="Die Benutzer-ID ist ungültig.":ct==="USER_NOT_FOUND"?Ve="Der Benutzer wurde nicht gefunden.":ct==="USER_SUPERUSER_PROTECTED"&&(Ve="Der Superuser kann nicht deaktiviert werden."),L({variant:"error",title:"Statusänderung fehlgeschlagen",description:Ve})}finally{D(null)}},[q,fe,L,te]),Ae=P.useCallback(async()=>{var se,ce,Ce,Ie;if(q){x("Im Wartungsmodus oder während eines Updates können keine Benutzer angelegt werden.");return}if(!fe){x("Du verfügst nicht über die Berechtigung zum Anlegen von Benutzern.");return}const ne=C.trim();if(!ne){x("Benutzername ist erforderlich.");return}const xe=typeof s=="string"?s.trim():"";if(xe.length<8){x("Passwort muss mindestens 8 Zeichen enthalten.");return}if(!u){x("Bitte eine globale Rolle auswählen.");return}k(!0),x("");try{const Ne={username:ne,password:xe,groupId:Number(u)},ct=b.trim();ct&&(Ne.email=ct);const Ve=await Je.post("/api/users",Ne);rt(),te(),L({variant:"success",title:"Benutzer angelegt",description:`Der Benutzer "${((ce=(se=Ve.data)==null?void 0:se.item)==null?void 0:ce.username)??ne}" wurde erstellt.`})}catch(Ne){const ct=(Ie=(Ce=Ne.response)==null?void 0:Ce.data)==null?void 0:Ie.error;let Ve="Benutzer konnte nicht angelegt werden.";switch(ct){case"USERNAME_REQUIRED":Ve="Benutzername ist erforderlich.";break;case"INVALID_EMAIL":Ve="Bitte eine gültige E-Mail-Adresse angeben.";break;case"INVALID_PASSWORD":case"PASSWORD_TOO_SHORT":Ve="Passwort muss mindestens 8 Zeichen enthalten.";break;case"INVALID_GROUP_ID":case"GROUP_NOT_FOUND":Ve="Bitte eine gültige globale Rolle auswählen.";break;case"USERNAME_TAKEN":Ve="Benutzername wird bereits verwendet.";break;case"EMAIL_TAKEN":Ve="E-Mail-Adresse wird bereits verwendet.";break}x(Ve),L({variant:"error",title:"Erstellen fehlgeschlagen",description:Ve})}finally{k(!1)}},[q,fe,C,b,s,u,L,rt,te]),ft=f.length>0,At=q||E||m||!ft,Z=q||E||m||!ft,ue=P.useCallback(ne=>{if(ne&&ne.props&&ne.props.children)return ne.props.children;if(!u)return"Bitte auswählen";const xe=f.find(se=>String(se.id)===u);return xe?xe.name:"Bitte auswählen"},[f,u]);return v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(Y||B)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",G?` – ${G}`:B?" – Portainer-Update läuft":"","."]}),B&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",$]})]})}),v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",children:v.jsx("span",{children:"Benutzerverwaltung"})})}),v.jsxs(V.CardBody,{className:"pt-0",children:[fe&&v.jsxs("div",{className:"mb-8 rounded-lg border border-blue-gray-100 bg-white p-4 shadow-sm",children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-2",children:"Neuen Benutzer anlegen"}),ft?v.jsxs(v.Fragment,{children:[v.jsx(V.Typography,{variant:"small",className:"text-sm text-stormGrey-500 mb-4",children:"Benutzername, Passwort (mindestens 8 Zeichen) und eine globale Rolle sind Pflichtfelder."}),y&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:y}),O&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:O}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsx(V.Input,{label:"Benutzername",value:C,onChange:ne=>w(ne.target.value),disabled:q||E,crossOrigin:""}),v.jsx(V.Input,{label:"E-Mail (optional)",value:b,onChange:ne=>d(ne.target.value),disabled:q||E,crossOrigin:""}),v.jsx(V.Input,{type:"password",label:"Passwort",value:s,onChange:ne=>c(ne.target.value),disabled:q||E,crossOrigin:""}),v.jsxs(V.Select,{label:"Globale Rolle",variant:"outlined",value:u,onChange:h,disabled:Z,selected:ue,children:[v.jsx(V.Option,{value:"",children:"Bitte auswählen"}),f.map(ne=>v.jsx(V.Option,{value:String(ne.id),children:ne.name},ne.id))]})]}),v.jsx("div",{className:"mt-4 text-sm text-stormGrey-500",children:m?"Benutzergruppen werden geladen ...":""}),v.jsxs("div",{className:"mt-4 flex flex-col gap-3 sm:flex-row sm:items-center",children:[v.jsx(V.Button,{color:"green",onClick:Ae,disabled:At,children:E?"Speichert ...":"Benutzer anlegen"}),v.jsx(V.Button,{variant:"text",color:"blue-gray",onClick:rt,disabled:E||q,children:"Formular zurücksetzen"})]})]}):v.jsx("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:"Es existiert keine verfügbare Benutzergruppe. Bitte lege zuerst eine Gruppe an."})]}),v.jsx("div",{className:"mb-8",children:v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between mt-8",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(V.Input,{label:"Suchen nach Name, E-Mail oder Gruppe",value:i,onChange:$e,disabled:r&&!e.length,crossOrigin:""})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(V.Select,{variant:"static",label:"Einträge pro Seite",onChange:oe,value:he,children:pe.map(({value:ne,label:xe})=>v.jsx(V.Option,{value:ne,children:xe},ne))})})]})}),o&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:o}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50",children:v.jsxs("table",{className:"w-full min-w-[720px] table-auto text-left",children:[v.jsx("thead",{children:v.jsxs("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:[v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Benutzername"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"E-Mail"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Gruppen"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Status"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Letzte Anmeldung"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Erstellt am"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Aktionen"})]})}),v.jsx("tbody",{children:r&&e.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:7,className:"px-6 py-8 text-center text-blue-gray-400",children:"Benutzerdaten werden geladen ..."})}):lt.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:7,className:"px-6 py-8 text-center text-blue-gray-400",children:"Keine Benutzer gefunden."})}):lt.map((ne,xe)=>{const se=xe===lt.length-1?"":"border-b border-blue-gray-50",ce=Array.isArray(ne==null?void 0:ne.groups)?ne.groups.some(Ce=>((Ce==null?void 0:Ce.name)||"").toLowerCase()==="superuser"):!1;return v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${se}`,children:[v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",className:"font-medium text-stormGrey-900",children:ne.username||"–"})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",children:ne.email||"–"})}),v.jsx("td",{className:"px-6 py-4",children:ne.groups.length>0?v.jsx("div",{className:"flex flex-wrap gap-2",children:ne.groups.map(Ce=>v.jsx(V.Chip,{value:Ce.name,size:"sm",color:"blue-gray",variant:"ghost"},Ce.id??Ce.name))}):v.jsx("span",{className:"text-stormGrey-400",children:"–"})}),v.jsx("td",{className:"px-6 py-4",children:fe?v.jsx("button",{type:"button",className:`inline-flex items-center rounded-full px-1 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 ${q?"cursor-not-allowed":"cursor-pointer"}`,onClick:()=>Rt(ne),disabled:q||M===ne.id||Array.isArray(ne.groups)&&ne.groups.some(Ce=>((Ce==null?void 0:Ce.name)||"").toLowerCase()==="superuser"&&ne.isActive),children:v.jsx(V.Chip,{value:M===ne.id?"Wechselt ...":ne.isActive?"Aktiv":"Deaktiviert",size:"sm",color:ne.isActive?"green":"red",variant:"ghost",className:"pointer-events-none"})}):v.jsx(V.Chip,{value:ne.isActive?"Aktiv":"Deaktiviert",size:"sm",color:ne.isActive?"green":"red",variant:"ghost"})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:xt(ne.lastLogin)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:xt(ne.createdAt)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-2",children:[v.jsx(V.Button,{size:"sm",variant:"outlined",color:"blue-gray",onClick:()=>ee(`/dashboard/users/${ne.id}`),children:"Details"}),re&&!ce&&v.jsx(V.Button,{size:"sm",variant:"text",color:"red",onClick:()=>dt(ne),disabled:q||j===ne.id,children:j===ne.id?"Löscht ...":"Löschen"})]})})]},ne.id)})})]})}),v.jsxs("div",{className:"mt-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(V.Typography,{variant:"small",color:"gray",children:""}),v.jsx(ku,{disabled:r&&e.length===0})]})]})]})]})}const mV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"};function bV(){const[e,t]=P.useState([]),[r,n]=P.useState(!1),[o,a]=P.useState(""),[i,l]=P.useState(""),[f,g]=P.useState(""),[m,S]=P.useState(""),[O,T]=P.useState(""),[C,w]=P.useState(!1),[b,d]=P.useState(null),{showToast:s}=Fa(),{maintenance:c,update:u}=Yo(),h=!!(c!=null&&c.active),y=c==null?void 0:c.message,x=!!(u!=null&&u.running),E=u!=null&&u.stage?mV[u.stage]??u.stage:"–",k=h||x,j=Hn(),{hasPermission:A}=Yr(),M=A("user-groups-edit","full"),D=A("user-groups-delete","full"),{page:L,perPage:z,perPageOptions:H,perPageIsAll:Y,handlePerPageChange:G,setPage:B,setTotals:$,resetPagination:q}=Fs();P.useEffect(()=>()=>q(),[q]);const ee=P.useCallback(()=>{},[]),oe=P.useCallback(async()=>{var te,Oe,$e;n(!0),a("");try{const Be=await Je.get("/api/groups"),lt=(Array.isArray((te=Be.data)==null?void 0:te.items)?Be.data.items:[]).map(qe=>({id:qe.id,name:qe.name||"",description:qe.description||"",avatarColor:qe.avatarColor||null,memberCount:Number(qe.memberCount)||0,members:Array.isArray(qe.members)?qe.members.map(Ke=>({id:Ke.id,username:Ke.username||""})).filter(Ke=>Ke.username):[],createdAt:qe.createdAt||null,updatedAt:qe.updatedAt||null})).sort((qe,Ke)=>qe.name.localeCompare(Ke.name,"de-DE"));t(lt)}catch(Be){const We=(($e=(Oe=Be.response)==null?void 0:Oe.data)==null?void 0:$e.error)||Be.message||"Unbekannter Fehler";a(We),s({variant:"error",title:"Benutzergruppen konnten nicht geladen werden",description:We})}finally{n(!1)}},[s]);P.useEffect(()=>{oe()},[oe]),P.useCallback(()=>{oe()},[oe]);const ge=P.useCallback(te=>{l(te.target.value)},[]);P.useCallback(()=>{l("")},[]),P.useEffect(()=>{L!==1&&B(1)},[i,L,B]);const fe=P.useMemo(()=>{const te=i.trim().toLowerCase();return te?e.filter(Oe=>[Oe.name,Oe.description,...Oe.members.map(Be=>Be.username)].map(Be=>String(Be||"").toLowerCase()).some(Be=>Be.includes(te))):e},[e,i]),re=P.useMemo(()=>{if(Y)return null;const te=Number(z);return Number.isFinite(te)&&te>0?te:null},[z,Y]),be=P.useMemo(()=>{if(Y||!re)return fe;const te=(L-1)*re;return fe.slice(te,te+re)},[fe,L,Y,re]),he=fe.length,pe=be.length;P.useEffect(()=>{if(Y){$(he,he),L!==1&&B(1);return}const te=Number(z);if(!Number.isFinite(te)||te<=0){$(he,he);return}const Oe=Math.max(1,Math.ceil(he/te));if(L>Oe){B(Oe);return}$(he,pe)},[he,pe,L,z,Y,B,$]);const ve=P.useCallback(te=>{if(!te)return"–";const Oe=typeof te=="string"?te.replace(" ","T"):te,$e=new Date(Oe);return Number.isNaN($e.getTime())?te:new Intl.DateTimeFormat("de-DE",{dateStyle:"short",timeStyle:"short"}).format($e)},[]),me=P.useCallback(()=>{g(""),S(""),T("")},[]),ke=P.useCallback(async()=>{var Oe,$e,Be,We;if(k){T("Im Wartungsmodus oder während eines Updates können keine Gruppen angelegt werden.");return}if(!M){T("Du verfügst nicht über die Berechtigung zum Anlegen von Gruppen.");return}const te=f.trim();if(!te){T("Gruppenname ist erforderlich.");return}w(!0),T("");try{const lt={name:te},qe=m.trim();qe&&(lt.description=qe);const Ke=await Je.post("/api/groups",lt);s({variant:"success",title:"Gruppe angelegt",description:`Die Benutzergruppe "${(($e=(Oe=Ke.data)==null?void 0:Oe.item)==null?void 0:$e.name)??te}" wurde erstellt.`}),me(),oe()}catch(lt){const qe=(We=(Be=lt.response)==null?void 0:Be.data)==null?void 0:We.error;let Ke="Benutzergruppe konnte nicht angelegt werden.";qe==="GROUP_NAME_REQUIRED"?Ke="Gruppenname ist erforderlich.":qe==="GROUP_NAME_TAKEN"&&(Ke="Der Gruppenname wird bereits verwendet."),T(Ke),s({variant:"error",title:"Erstellen fehlgeschlagen",description:Ke})}finally{w(!1)}},[k,M,f,m,s,me,oe]),Fe=k||C,Pe=P.useCallback(async te=>{var lt,qe;if(k||!(te!=null&&te.id)||!D)return;if(((te==null?void 0:te.name)||"").toLowerCase()==="superuser"){s({variant:"error",title:"Löschen nicht möglich",description:"Die Superuser-Gruppe kann nicht gelöscht werden."});return}if((Number(te.memberCount)||0)>0){s({variant:"error",title:"Löschen nicht möglich",description:"Die Gruppe enthält noch Benutzer. Bitte entfernen Sie diese zuerst."});return}if(!window.confirm(`Benutzergruppe "${te.name}" wirklich löschen?`))return;const We=Number(te.id);if(!Number.isFinite(We)||We<=0){s({variant:"error",title:"Löschen fehlgeschlagen",description:"Ungültige Gruppen-ID."});return}d(We);try{await Je.delete(`/api/groups/${We}`),s({variant:"success",title:"Gruppe gelöscht",description:`Die Benutzergruppe "${te.name}" wurde entfernt.`}),oe()}catch(Ke){const xt=(qe=(lt=Ke.response)==null?void 0:lt.data)==null?void 0:qe.error;let rt="Die Benutzergruppe konnte nicht gelöscht werden.";xt==="INVALID_GROUP_ID"?rt="Die Gruppen-ID ist ungültig.":xt==="GROUP_NOT_FOUND"?rt="Die Benutzergruppe wurde bereits entfernt.":xt==="GROUP_HAS_MEMBERS"?rt="Die Gruppe enthält noch Benutzer. Bitte entfernen Sie diese zuerst.":xt==="GROUP_SUPERUSER_PROTECTED"&&(rt="Die Superuser-Gruppe kann nicht gelöscht werden."),s({variant:"error",title:"Löschen fehlgeschlagen",description:rt})}finally{d(null)}},[k,D,s,oe]);return v.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(h||x)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",y?` – ${y}`:x?" – Portainer-Update läuft":"","."]}),x&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",E]})]})}),v.jsxs(V.Card,{className:"border border-blue-gray-100 shadow-sm",children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",children:v.jsx("span",{children:"Benutzergruppen"})})}),v.jsxs(V.CardBody,{className:"pt-0",children:[M&&v.jsxs("div",{className:"mb-8 rounded-lg border border-blue-gray-100 bg-white p-4 shadow-sm",children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-2",children:"Neue Benutzergruppe anlegen"}),v.jsx(V.Typography,{variant:"small",className:"text-sm text-stormGrey-500 mb-4",children:"Der Gruppenname ist Pflicht, die Beschreibung optional."}),O&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:O}),v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsx(V.Input,{label:"Gruppenname",value:f,onChange:te=>g(te.target.value),disabled:Fe,crossOrigin:""}),v.jsx(V.Input,{label:"Beschreibung (optional)",value:m,onChange:te=>S(te.target.value),disabled:Fe,crossOrigin:""})]}),v.jsxs("div",{className:"mt-4 flex flex-col gap-3 sm:flex-row sm:items-center",children:[v.jsx(V.Button,{color:"green",onClick:ke,disabled:Fe,children:C?"Speichert ...":"Gruppe anlegen"}),v.jsx(V.Button,{variant:"text",color:"blue-gray",onClick:me,disabled:C||k,children:"Formular zurücksetzen"})]})]}),v.jsx("div",{className:"mb-8",children:v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsx("div",{className:"md:flex-1",children:v.jsx(V.Input,{label:"Suchen nach Name, E-Mail oder Gruppe",value:i,onChange:ge,disabled:r&&!e.length,crossOrigin:""})}),v.jsx("div",{className:"md:mt-0 mt-8 md:flex-1",children:v.jsx(V.Select,{variant:"static",label:"Einträge pro Seite",onChange:ee,value:z,children:H.map(({value:te,label:Oe})=>v.jsx(V.Option,{value:te,children:Oe},te))})})]})}),o&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:o}),o&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:o}),v.jsx("div",{className:"overflow-x-auto rounded-lg border border-blue-gray-50",children:v.jsxs("table",{className:"w-full min-w-[720px] table-auto text-left",children:[v.jsx("thead",{children:v.jsxs("tr",{className:"bg-blue-gray-50/50 text-xs uppercase tracking-wide text-stormGrey-400",children:[v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Gruppenname"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Beschreibung"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Mitglieder"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Erstellt am"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Zuletzt aktualisiert"}),v.jsx("th",{className:"px-6 py-4 font-semibold",children:"Aktionen"})]})}),v.jsx("tbody",{children:r&&e.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:6,className:"px-6 py-8 text-center text-stormGrey-400",children:"Gruppen werden geladen ..."})}):be.length===0?v.jsx("tr",{children:v.jsx("td",{colSpan:6,className:"px-6 py-8 text-center text-stormGrey-400",children:"Keine Gruppen gefunden."})}):be.map((te,Oe)=>{const $e=Oe===be.length-1?"":"border-b border-blue-gray-50",Be=((te==null?void 0:te.name)||"").toLowerCase()==="superuser";return v.jsxs("tr",{className:`text-sm text-stormGrey-700 ${$e}`,children:[v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",className:"font-medium text-stormGrey-900",children:te.name||"–"})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",children:te.description?te.description:v.jsx("span",{className:"text-stormGrey-400",children:"–"})})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:te.memberCount.toLocaleString("de-DE")})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:ve(te.createdAt)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsx(V.Typography,{variant:"small",className:"antialiased font-sans mb-1 block text-xs font-medium text-stormGrey-600",children:ve(te.updatedAt)})}),v.jsx("td",{className:"px-6 py-4",children:v.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-2",children:[v.jsx(V.Button,{size:"sm",variant:"outlined",color:"blue-gray",onClick:()=>j(`/dashboard/usergroups/${te.id}`),children:"Details"}),D&&!Be&&v.jsx(V.Button,{size:"sm",variant:"text",color:"red",onClick:()=>Pe(te),disabled:k||b===te.id||Number(te.memberCount)>0,children:b===te.id?"Löscht ...":"Löschen"})]})})]},te.id)})})]})}),v.jsxs("div",{className:"mt-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(V.Typography,{variant:"small",color:"gray",children:!r&&e.length===0?"Noch keine Gruppen angelegt.":`${he.toLocaleString("de-DE")} Gruppen gefunden`}),v.jsx(ku,{disabled:r&&e.length===0})]})]})]})]})}const nN=["bg-arcticBlue-600","bg-copperRust-500","bg-sunsetCoral-600","bg-mintTea-400","bg-lavenderSmoke-500","bg-emeraldMist-500","bg-roseQuartz-500","bg-auroraTeal-500","bg-citrusPunch-500","bg-mossGreen-400"],vV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},yV=e=>Array.isArray(e)?e.map(t=>{if(t&&typeof t=="object"){const r=Number(t.id),n=typeof t.name=="string"?t.name:"";return n?{id:Number.isFinite(r)?r:null,name:n}:null}if(typeof t=="string"){const r=t.trim();return r?{id:null,name:r}:null}return null}).filter(Boolean):[],Kw=e=>({id:(e==null?void 0:e.id)??null,username:(e==null?void 0:e.username)||"",email:(e==null?void 0:e.email)||"",isActive:!!(e!=null&&e.isActive),avatarColor:(e==null?void 0:e.avatarColor)||null,lastLogin:(e==null?void 0:e.lastLogin)||null,createdAt:(e==null?void 0:e.createdAt)||null,updatedAt:(e==null?void 0:e.updatedAt)||null,groups:yV(e==null?void 0:e.groups),securityPhraseDownloadedAt:(e==null?void 0:e.securityPhraseDownloadedAt)||null}),xV=e=>{if(!e||typeof e!="object")return null;const t=Number(e.id??e.serverId??e.server_id);if(!Number.isFinite(t))return null;const r=e.name||e.serverName||e.server_name||`Server ${t}`;return{id:t,name:r,url:e.url||e.serverUrl||e.server_url||""}},Yw=(e,t=[])=>{const r=new Map(t.map(n=>[n.id,n]));return Array.isArray(e)?e.map(n=>{const o=Number((n==null?void 0:n.serverId)??(n==null?void 0:n.server_id));if(!Number.isFinite(o))return null;const a=Number((n==null?void 0:n.groupId)??(n==null?void 0:n.group_id)),i=r.get(o);return{serverId:o,serverName:(n==null?void 0:n.serverName)||(n==null?void 0:n.server_name)||(i==null?void 0:i.name)||"",serverUrl:(n==null?void 0:n.serverUrl)||(n==null?void 0:n.server_url)||(i==null?void 0:i.url)||"",groupId:Number.isFinite(a)?a:null,groupName:(n==null?void 0:n.groupName)||(n==null?void 0:n.group_name)||"",useGlobalGroup:!!((n==null?void 0:n.useGlobalGroup)??(n==null?void 0:n.use_global_group))}}).filter(Boolean):[]},wV=e=>{if(!e||!Array.isArray(e.groups)||e.groups.length===0)return null;const t=e.groups.map(r=>Number(r.id)).find(r=>Number.isFinite(r)&&r>0);return Number.isFinite(t)?t:null},ia=e=>{if(!e)return{username:"",email:"",password:"",groupId:null,avatarColor:""};const t=wV(e);return{username:e.username||"",email:e.email||"",password:"",groupId:Number.isFinite(t)?t:null,avatarColor:e.avatarColor||""}};function _V(){const{userId:e}=cm(),{showToast:t}=Fa(),{maintenance:r,update:n}=Yo(),{hasPermission:o,user:a}=Yr(),[i,l]=P.useState(null),[f,g]=P.useState(ia(null)),m=P.useRef(ia(null)),[S,O]=P.useState(!1),[T,C]=P.useState(""),[w,b]=P.useState(!1),[d,s]=P.useState([]),[c,u]=P.useState(!1),[h,y]=P.useState(""),[x,E]=P.useState(!1),[k,j]=P.useState(""),[A,M]=P.useState([]),[D,L]=P.useState(null),[z,H]=P.useState(!1),[Y,G]=P.useState(""),[B,$]=P.useState(!1),[q,ee]=P.useState([]),[oe,ge]=P.useState([]),[fe,re]=P.useState(""),[be,he]=P.useState(!1),pe=P.useRef([]),ve=!!(r!=null&&r.active),me=r==null?void 0:r.message,ke=!!(n!=null&&n.running),Fe=n!=null&&n.stage?vV[n.stage]??n.stage:"–",Pe=ve||ke,te=!!(a!=null&&a.isSuperuser||o("users-edit","full")),Oe=!!(a!=null&&a.isSuperuser||o("users-edit","read")),$e=!!(a!=null&&a.isSuperuser||o("users-security-phrase","full")),Be=$e;if(!Oe)return null;const We=P.useMemo(()=>Array.isArray(i==null?void 0:i.groups)?i.groups.some(Te=>((Te==null?void 0:Te.name)||"").toLowerCase()==="superuser"):!1,[i]),lt=(a==null?void 0:a.isSuperuser)&&(i==null?void 0:i.id)&&Number(a.id)===Number(i.id),qe=We&&!lt,Ke=P.useMemo(()=>{const Te=Number(e);return Number.isFinite(Te)?Te:null},[e]),xt=P.useCallback(async()=>{var Te,Me,Ge,gt,X,_e,ye,ot;if(!Ke){C("Ungültige Benutzer-ID."),l(null),g(ia(null)),m.current=ia(null),b(!0);return}O(!0),C("");try{const at=await Je.get(`/api/users/${Ke}`),Ct=Kw((Te=at.data)==null?void 0:Te.item);if(!Ct.id)throw new Error("USER_NOT_FOUND");const Tt=Array.isArray((Me=at.data)==null?void 0:Me.servers)?at.data.servers.map(xV).filter(Boolean):[];ge(Tt);const Zt=Yw(((gt=(Ge=at.data)==null?void 0:Ge.item)==null?void 0:gt.serverAssignments)??((X=at.data)==null?void 0:X.serverAssignments)??[],Tt);pe.current=Zt,ee(Zt),re(""),l(Ct),M([]),L(Ct.securityPhraseDownloadedAt||null),G("");const Ft=ia(Ct);m.current={...Ft},g(Ft),j("")}catch(at){const Ct=(ye=(_e=at.response)==null?void 0:_e.data)==null?void 0:ye.error;let Tt="Benutzerdetails konnten nicht geladen werden.";Ct==="USER_NOT_FOUND"?Tt="Der angeforderte Benutzer wurde nicht gefunden.":Ct==="INVALID_USER_ID"?Tt="Die angegebene Benutzer-ID ist ungültig.":((ot=at.response)==null?void 0:ot.status)===404&&(Tt="Der angeforderte Benutzer existiert nicht."),l(null),m.current=ia(null),g(ia(null)),ee([]),ge([]),re(""),C(Tt),t({variant:"error",title:"Fehler beim Laden",description:Tt})}finally{O(!1),b(!0)}},[Ke,t]),rt=P.useCallback(async()=>{var Te,Me,Ge;u(!0),y("");try{const gt=await Je.get("/api/groups"),_e=(Array.isArray((Te=gt.data)==null?void 0:Te.items)?gt.data.items:[]).map(ye=>({id:Number(ye.id),name:ye.name||"",description:ye.description||"",memberCount:Number.isFinite(Number(ye.memberCount))?Number(ye.memberCount):0})).filter(ye=>Number.isFinite(ye.id)&&ye.id>0&&ye.name).sort((ye,ot)=>ye.name.localeCompare(ot.name,"de-DE"));s(_e)}catch(gt){const X=((Ge=(Me=gt.response)==null?void 0:Me.data)==null?void 0:Ge.error)||gt.message||"Benutzergruppen konnten nicht geladen werden.";y(X),t({variant:"error",title:"Benutzergruppen",description:X})}finally{u(!1)}},[t]);P.useEffect(()=>{xt()},[xt]),P.useEffect(()=>{rt()},[rt]);const dt=P.useMemo(()=>{if(!w||!i)return!1;const Te=m.current;if(!Te)return!1;const Me=Te.username||"",Ge=f.username||"",gt=Te.email||"",X=f.email||"",_e=Number.isFinite(Te.groupId)?Number(Te.groupId):null,ye=Number.isFinite(f.groupId)?Number(f.groupId):null,ot=Te.avatarColor||"",at=f.avatarColor||"",Ct=!!(f.password&&f.password.trim().length>0);return Me!==Ge||gt!==X||!We&&_e!==ye||ot!==at||Ct},[f,w,i,We]),Rt=P.useCallback(Te=>{var Me;return(Me=Te==null?void 0:Te.props)!=null&&Me.children?Te.props.children:f.avatarColor?f.avatarColor:"Standardfarbe"},[f.avatarColor]),Ae=P.useCallback(Te=>{if(!te)return;const{value:Me}=Te.target;g(Ge=>({...Ge,username:Me}))},[te]),ft=P.useCallback(Te=>{if(!te)return;const{value:Me}=Te.target;g(Ge=>({...Ge,email:Me}))},[te]),At=P.useCallback(Te=>{if(!te)return;const{value:Me}=Te.target;g(Ge=>({...Ge,password:Me}))},[te]),Z=P.useCallback(Te=>{if(!te)return;if(!Te){g(Ge=>({...Ge,groupId:null}));return}const Me=Number(Te);g(Ge=>({...Ge,groupId:Number.isFinite(Me)&&Me>0?Me:null}))},[te]),ue=P.useCallback(Te=>{te&&g(Me=>({...Me,avatarColor:Te||""}))},[te]),ne=P.useMemo(()=>{const Te=Me=>JSON.stringify(Me.map(Ge=>({serverId:Number(Ge.serverId)||null,groupId:Ge.useGlobalGroup?null:Number(Ge.groupId)||null,useGlobalGroup:!!Ge.useGlobalGroup})).sort((Ge,gt)=>(Ge.serverId||0)-(gt.serverId||0)));return Te(q)!==Te(pe.current)},[q]),xe=P.useMemo(()=>new Set(q.map(Te=>Number(Te.serverId)).filter(Te=>Number.isFinite(Te)&&Te>0)),[q]),se=P.useCallback(Te=>oe.filter(Me=>Me.id===Te||!xe.has(Me.id)),[oe,xe]),ce=P.useCallback(()=>{if(!te||We)return;const Te=new Set(q.map(Ge=>Number(Ge.serverId)).filter(Ge=>Number.isFinite(Ge)&&Ge>0)),Me=oe.find(Ge=>!Te.has(Ge.id));if(!Me){re("Alle verfügbaren Server sind bereits zugeordnet.");return}re(""),ee(Ge=>[...Ge,{serverId:Me.id,serverName:Me.name??"",serverUrl:Me.url??"",groupId:null,groupName:"",useGlobalGroup:!0}])},[te,q,oe]),Ce=P.useCallback((Te,Me)=>{if(!te||We)return;const Ge=Number(Me),gt=oe.find(X=>X.id===Ge);ee(X=>X.map((_e,ye)=>ye===Te?{..._e,serverId:Number.isFinite(Ge)?Ge:null,serverName:(gt==null?void 0:gt.name)||_e.serverName,serverUrl:(gt==null?void 0:gt.url)||_e.serverUrl}:_e))},[oe,te]),Ie=P.useCallback((Te,Me)=>{if(!te||We)return;const Ge=Number(Me);ee(gt=>gt.map((X,_e)=>_e===Te?{...X,groupId:Number.isFinite(Ge)?Ge:null,useGlobalGroup:!1}:X))},[te]),Ne=P.useCallback((Te,Me)=>{!te||We||ee(Ge=>Ge.map((gt,X)=>X===Te?{...gt,useGlobalGroup:!!Me,groupId:Me?null:gt.groupId}:gt))},[te]),ct=P.useCallback(Te=>{!te||We||ee(Me=>Me.filter((Ge,gt)=>gt!==Te))},[te,We]),Ve=P.useCallback(async()=>{var Ge,gt,X;if(!te||!Ke||!ne||We)return;const Te=[],Me=new Set;for(const _e of q){const ye=Number(_e.serverId);if(!Number.isFinite(ye)||ye<=0){re("Bitte wähle für jede Zuordnung einen Server aus.");return}if(Me.has(ye)){re("Jeder Server kann nur einmal zugeordnet werden.");return}Me.add(ye);const ot=!!_e.useGlobalGroup,at=Number(_e.groupId);if(!ot&&(!Number.isFinite(at)||at<=0)){re("Bitte wähle eine Rechtegruppe oder aktiviere die globale Gruppe.");return}Te.push({serverId:ye,groupId:ot?null:at,useGlobalGroup:ot})}re(""),he(!0);try{const _e=await Je.put(`/api/users/${Ke}/server-assignments`,{assignments:Te}),ye=Yw(((Ge=_e.data)==null?void 0:Ge.items)??[],oe);pe.current=ye,ee(ye),t({variant:"success",title:"Serverzuordnungen gespeichert",description:"Die Zuordnungen wurden erfolgreich aktualisiert."})}catch(_e){const ye=(X=(gt=_e.response)==null?void 0:gt.data)==null?void 0:X.error;let ot="Die Serverzuordnungen konnten nicht gespeichert werden.";ye==="USER_NOT_FOUND"?ot="Der Benutzer wurde nicht gefunden.":ye==="INVALID_USER_ID"?ot="Die Benutzer-ID ist ungültig.":ye==="USER_SUPERUSER_PROTECTED"?ot="Für den Superuser können keine Server-Zuordnungen gesetzt werden.":ye==="SERVER_NOT_FOUND"?ot="Ein ausgewählter Server existiert nicht mehr.":ye==="GROUP_NOT_FOUND"?ot="Eine ausgewählte Rechtegruppe existiert nicht mehr.":ye==="INSUFFICIENT_PERMISSIONS"&&(ot="Keine Berechtigung zum Ändern der Zuordnungen."),re(ot),t({variant:"error",title:"Speichern fehlgeschlagen",description:ot})}finally{he(!1)}},[te,Ke,q,oe,ne,t]),tt=P.useCallback(async()=>{var Te,Me,Ge,gt;if(!(!te||!i||!dt)){E(!0),j("");try{const X={username:f.username,email:f.email,password:f.password,avatarColor:f.avatarColor};We||(X.groupId=f.groupId);const _e=await Je.put(`/api/users/${i.id}`,X),ye=Kw(((Te=_e.data)==null?void 0:Te.item)||((Me=_e.data)==null?void 0:Me.user));l(ye);const ot=ia(ye);m.current={...ot},g(ot),y(""),t({variant:"success",title:"Benutzer gespeichert",description:"Die Änderungen wurden erfolgreich gespeichert."})}catch(X){const _e=(gt=(Ge=X.response)==null?void 0:Ge.data)==null?void 0:gt.error;let ye="Die Benutzerdaten konnten nicht gespeichert werden.";_e==="USERNAME_REQUIRED"?ye="Bitte einen Benutzernamen angeben.":_e==="USERNAME_TAKEN"?ye="Der Benutzername wird bereits verwendet.":_e==="INVALID_EMAIL"?ye="Bitte eine gültige E-Mail-Adresse eingeben.":_e==="EMAIL_TAKEN"?ye="Die E-Mail-Adresse wird bereits verwendet.":_e==="INVALID_PASSWORD"?ye="Das Passwort ist ungültig.":_e==="PASSWORD_TOO_SHORT"?ye="Das Passwort muss mindestens 8 Zeichen enthalten.":_e==="INVALID_AVATAR_COLOR"?ye="Bitte eine gültige Avatar-Farbe auswählen.":_e==="GROUP_NOT_FOUND"&&(ye="Die ausgewählte Benutzergruppe existiert nicht mehr.",y(ye)),j(ye),t({variant:"error",title:"Speichern fehlgeschlagen",description:ye})}finally{E(!1)}}},[te,i,dt,f,t,We]),wt=P.useCallback(async()=>{var Te,Me,Ge,gt,X,_e;if(!(!$e||!Ke)){H(!0),G("");try{const ye=await Je.get(`/api/users/${Ke}/security-phrase`),ot=Array.isArray((Me=(Te=ye.data)==null?void 0:Te.item)==null?void 0:Me.words)?ye.data.item.words:[];M(ot),L(((gt=(Ge=ye.data)==null?void 0:Ge.item)==null?void 0:gt.downloadedAt)||null)}catch(ye){const ot=(_e=(X=ye.response)==null?void 0:X.data)==null?void 0:_e.error;let at="Sicherheitsschlüssel konnte nicht geladen werden.";ot==="USER_NOT_FOUND"?at="Der Benutzer wurde nicht gefunden.":ot==="INVALID_USER_ID"?at="Die Benutzer-ID ist ungültig.":ot==="INSUFFICIENT_PERMISSIONS"&&(at="Keine Berechtigung zum Anzeigen des Sicherheitsschlüssels."),G(at),M([]),L(null)}finally{H(!1)}}},[$e,Ke]),Vt=P.useCallback(()=>{Be&&(z||B||wt())},[Be,wt,B,z]),He=P.useCallback(async()=>{var Te,Me,Ge,gt,X,_e;if(!(!Be||!Ke||Pe||B)){$(!0),G("");try{const ye=await Je.post(`/api/users/${Ke}/security-phrase/renew`),ot=Array.isArray((Me=(Te=ye.data)==null?void 0:Te.item)==null?void 0:Me.words)?ye.data.item.words:[];M(ot),L(((gt=(Ge=ye.data)==null?void 0:Ge.item)==null?void 0:gt.downloadedAt)||null),t({variant:"success",title:"Sicherheitsschlüssel erneuert",description:"Der Benutzer muss den neuen Schlüssel erneut herunterladen."})}catch(ye){const ot=(_e=(X=ye.response)==null?void 0:X.data)==null?void 0:_e.error;let at="Der Sicherheitsschlüssel konnte nicht erneuert werden.";ot==="USER_NOT_FOUND"?at="Der Benutzer wurde nicht gefunden.":ot==="INVALID_USER_ID"?at="Die Benutzer-ID ist ungültig.":ot==="INSUFFICIENT_PERMISSIONS"&&(at="Keine Berechtigung zum Erneuern des Sicherheitsschlüssels."),G(at)}finally{$(!1)}}},[Be,Ke,Pe,B,t]),Yt=P.useMemo(()=>{const Te=(f.username||f.email||"").trim();return Te?Te.charAt(0).toUpperCase():"?"},[f.username,f.email]),It=P.useMemo(()=>f.avatarColor?f.avatarColor:(i==null?void 0:i.avatarColor)||"",[f.avatarColor,i]),Dt=P.useMemo(()=>{if(!Array.isArray(A)||A.length===0)return[];const Te=[];for(let Me=0;Me{if(!D)return{text:"Noch nicht heruntergeladen",tone:"text-red-500"};const Te=new Date(D);return Number.isNaN(Te.getTime())?{text:"Zuletzt heruntergeladen: unbekannt",tone:"text-blue-gray-500"}:{text:`Zuletzt heruntergeladen: ${Te.toLocaleString("de-DE")}`,tone:"text-blue-gray-500"}},[D]),Gt=P.useMemo(()=>Array.isArray(d)?d.filter(Te=>((Te==null?void 0:Te.name)||"").toLowerCase()!=="superuser"):[],[d]);P.useEffect(()=>{if(We)return;const Te=f.groupId?Number(f.groupId):null;Gt.some(Ge=>Number(Ge.id)===Te)||g(Ge=>({...Ge,groupId:null}))},[Gt,f.groupId,We]),P.useEffect(()=>{if(w){if(!$e||!Ke){M([]),L(null),G(""),H(!1);return}wt()}},[w,$e,wt,Ke]);const Ot=Pe||x||!i||!te,hr=Pe||x||!i||c||!te||We,_r=Pe||x||!i||!te||qe,kr=f.groupId?String(f.groupId):"";return v.jsx(v.Fragment,{children:v.jsxs("div",{className:"mt-12 flex flex-col gap-12",children:[(ve||ke)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",me?` – ${me}`:ke?" – Portainer-Update läuft":"","."]}),ke&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",Fe]})]})}),v.jsx("div",{className:"relative h-72 w-full overflow-hidden rounded-xl bg-[url('/img/background-image.png')] bg-cover\\tbg-center",children:v.jsx("div",{className:"absolute inset-0 h-full w-full bg-gray-900/75"})}),v.jsx(V.Card,{className:"mx-3 -mt-16 mb-6 lg:mx-4 border border-blue-gray-100",children:v.jsxs(V.CardBody,{className:"p-4",children:[v.jsxs("div",{className:"mb-10 flex flex-wrap items-center justify-between gap-6",children:[v.jsxs("div",{className:"flex items-center gap-6",children:[v.jsx("div",{className:`text-black flex h-[74px] w-[74px] items-center justify-center rounded-xl text-3xl font-semibold uppercase shadow-lg shadow-blue-gray-500/40 ${It}`,"aria-label":f.username||"Benutzeravatar",children:Yt}),v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:f.username||"–"}),v.jsx(V.Typography,{className:"text-xs font-semibold tracking-wide text-stormGrey-400",children:f.email||"–"})]})]}),dt&&v.jsx(V.Button,{color:"green",className:"normal-case",onClick:tt,disabled:Pe||x,children:x?"Speichert ...":"Änderungen speichern"})]}),S&&!i&&v.jsxs("div",{className:"mb-6 flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(V.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Benutzerdaten werden geladen ..."})]}),T&&!S&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:T}),k&&!S&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:k}),v.jsxs("div",{className:"grid-cols-1 mb-12 grid gap-12 px-4 lg:grid-cols-2 xl:grid-cols-3",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Allgemeine Einstellungen"}),We&&v.jsxs("div",{className:"mb-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:["Systemgruppe – Name und Beschreibung sind geschützt.",qe&&v.jsx("span",{className:"mt-1 block text-xs text-amber-600",children:"Nur der Superuser selbst kann Benutzername, E-Mail-Adresse und Passwort ändern."})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Benutzername"}),v.jsx(V.Input,{value:f.username,onChange:Ae,placeholder:"Benutzername",disabled:Ot||qe,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"E-Mail-Adresse"}),v.jsx(V.Input,{type:"email",value:f.email,onChange:ft,placeholder:"benutzer@example.com",disabled:Ot||qe,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Neues Passwort"}),v.jsx(V.Input,{type:"password",value:f.password,onChange:At,placeholder:"Passwort setzen",disabled:Ot||qe,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}}),v.jsx(V.Typography,{className:"mt-1 text-xs text-blue-gray-400",children:"Das Passwort wird nur geändert, wenn ein neuer Wert eingetragen wird."})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Globale Rolle"}),We?v.jsx(V.Typography,{className:"block text-xs font-semibold uppercase text-blue-gray-500",children:"Die Rolle für den Superuser kann nicht geändert werden."}):c&&d.length===0?v.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(V.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Benutzergruppen werden geladen ..."})]}):Gt.length===0?v.jsx(V.Typography,{className:"block text-xs font-semibold uppercase text-blue-gray-500",children:"Es sind keine weiteren Benutzergruppen vorhanden. Bitte lege zunächst eine neue Gruppe an."}):v.jsx(V.Select,{label:"Benutzergruppe wählen",value:kr,onChange:Z,disabled:hr,variant:"outlined",children:Gt.map(Te=>v.jsx(V.Option,{value:String(Te.id),children:Te.name},Te.id))})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Avatar-Farbe"}),v.jsxs(V.Select,{label:"Avatar-Farbe auswählen",variant:"outlined",value:f.avatarColor,onChange:ue,disabled:_r,selected:Rt,children:[v.jsx(V.Option,{value:"",children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:"h-4 w-4 rounded border border-blue-gray-100"}),v.jsx("span",{className:"text-xs",children:"Keine"})]})}),nN.map(Te=>v.jsx(V.Option,{value:Te,children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:`h-4 w-4 rounded border border-blue-gray-100 ${Te}`}),v.jsx("span",{className:"text-xs",children:Te})]})},Te))]})]})]}),v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-3",children:"Server-Zuordnungen"}),We?v.jsx("div",{className:"mb-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:"Für den Superuser gelten immer alle Rechte und es können keine server-spezifischen Zuordnungen gesetzt werden."}):v.jsxs(v.Fragment,{children:[v.jsx(V.Typography,{className:"mb-4 text-sm text-blue-gray-500",children:"Ohne Zuordnungen hat der Benutzer Zugriff auf alle Server mit seinen globalen Rechten. Lege hier Server-spezifische Gruppen fest oder markiere den Server explizit zur Nutzung der globalen Gruppe."}),fe&&v.jsx("div",{className:"mb-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:fe}),v.jsx("div",{className:"flex flex-col gap-4",children:q.length===0?v.jsx("div",{className:"rounded-lg border border-blue-gray-100 bg-blue-gray-50/60 px-4 py-3 text-sm text-blue-gray-600",children:"Keine Server zugeordnet. Die globalen Gruppen gelten für alle Server."}):q.map((Te,Me)=>{const Ge=se(Te.serverId),gt=Te.useGlobalGroup||!Te.groupId?"":String(Te.groupId);return v.jsxs("div",{className:"rounded-lg border border-blue-gray-100 bg-white px-4 py-3 shadow-sm",children:[v.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Server"}),v.jsx(V.Select,{label:"Server auswählen",value:Te.serverId?String(Te.serverId):"",onChange:X=>Ce(Me,X),disabled:Pe||be||!te,variant:"outlined",children:Ge.map(X=>v.jsx(V.Option,{value:String(X.id),children:X.name},X.id))})]}),v.jsxs("div",{children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Rechtegruppe"}),v.jsxs("div",{className:"flex flex-col gap-2",children:[v.jsx(V.Switch,{id:`assignment-global-${Me}`,label:"Globale Gruppe verwenden",checked:Te.useGlobalGroup,onChange:({target:X})=>Ne(Me,X==null?void 0:X.checked),disabled:Pe||be||!te,labelProps:{className:"text-sm font-normal text-blue-gray-600"}}),v.jsxs(V.Select,{label:"Server-Gruppe wählen",value:gt,onChange:X=>Ie(Me,X),disabled:Pe||be||!te||Te.useGlobalGroup,variant:"outlined",className:"max-w-xl",children:[v.jsx(V.Option,{value:"",children:"Globale Gruppe"}),d.map(X=>v.jsx(V.Option,{value:String(X.id),children:X.name},X.id))]})]})]})]}),v.jsx("div",{className:"mt-3 flex justify-end",children:v.jsx(V.Button,{variant:"text",color:"red",className:"normal-case",onClick:()=>ct(Me),disabled:Pe||be||!te,children:"Entfernen"})})]},`assignment-${Te.serverId??Me}-${Me}`)})}),v.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-3",children:[v.jsx(V.Button,{variant:"outlined",color:"blue",className:"normal-case",onClick:ce,disabled:Pe||be||!te||oe.length===0||xe.size>=oe.length,children:"Server hinzufügen"}),v.jsx(V.Button,{color:"green",className:"normal-case",onClick:Ve,disabled:Pe||be||!te||!ne,children:be?"Speichert ...":"Zuordnungen speichern"}),be&&v.jsx(V.Spinner,{className:"h-4 w-4"})]})]})]})]}),$e&&v.jsxs("div",{className:"mt-10 border-t border-blue-gray-50 pt-8",children:[v.jsxs("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-4",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",children:"Sicherheitsschlüssel"}),v.jsx(V.Typography,{className:`text-sm ${kt.tone}`,children:kt.text})]}),v.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[v.jsx(V.Button,{variant:"outlined",color:"blue",className:"normal-case",onClick:Vt,disabled:!Be||Pe||z||B,children:"Aktualisieren"}),v.jsx(V.Button,{color:"red",className:"normal-case",onClick:He,disabled:!Be||Pe||z||B,children:B?"Erneuert ...":"Schlüssel erneuern"})]})]}),z?v.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(V.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Sicherheitsschlüssel wird geladen ..."})]}):Y?v.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700",children:[v.jsx("span",{children:Y}),v.jsx(V.Button,{variant:"text",size:"sm",color:"red",className:"normal-case",onClick:Vt,disabled:!Be||Pe||z||B,children:"Erneut laden"})]}):Dt.length>0?v.jsx("div",{className:"rounded-lg border border-blue-gray-100 bg-blue-gray-50/60 p-4",children:v.jsx("div",{className:"space-y-2 text-center font-mono text-base tracking-wide text-blue-gray-900 md:text-lg",children:Dt.map((Te,Me)=>v.jsx("div",{className:"flex flex-wrap items-center justify-center gap-4",children:Te.map((Ge,gt)=>v.jsx("span",{className:"uppercase",children:Ge},`security-phrase-${Me}-${gt}`))},`security-phrase-row-${Me}`))})}):v.jsx(V.Typography,{className:"text-sm text-blue-gray-500",children:"Kein Sicherheitsschlüssel verfügbar."}),v.jsx(V.Typography,{className:"mt-3 text-sm text-blue-gray-500",children:"Nach dem Erneuern muss der Benutzer den neuen Sicherheitsschlüssel erneut herunterladen."})]})]})})]})})}const SV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},Qw=e=>({id:(e==null?void 0:e.id)??null,name:(e==null?void 0:e.name)||"",description:(e==null?void 0:e.description)||"",avatarColor:(e==null?void 0:e.avatarColor)||null,createdAt:(e==null?void 0:e.createdAt)||null,updatedAt:(e==null?void 0:e.updatedAt)||null,memberCount:Number.isFinite(Number(e==null?void 0:e.memberCount))?Number(e.memberCount):0,members:Array.isArray(e==null?void 0:e.members)?e.members.map(t=>({id:(t==null?void 0:t.id)??null,username:(t==null?void 0:t.username)||""})).filter(t=>t.username):[]}),sa=e=>e?{name:e.name||"",description:e.description||"",avatarColor:e.avatarColor||""}:{name:"",description:"",avatarColor:""},_c=[{value:"full",label:"Vollzugriff"},{value:"read",label:"Nur lesen"},{value:"none",label:"Kein Zugriff"}],Sc={none:0,read:1,full:2},CV=(e,t)=>{const r=t||"!=none";return r==="!=none"?e!=="none":r.startsWith("!=")?e!==r.substring(2):r.startsWith("=")?e===r.substring(1):r?e===r:!0};function TV(){const{groupId:e}=cm(),{showToast:t}=Fa(),{maintenance:r,update:n}=Yo(),{hasPermission:o,user:a}=Yr(),[i,l]=P.useState(null),[f,g]=P.useState(sa(null)),m=P.useRef(sa(null)),[S,O]=P.useState({}),[T,C]=P.useState(!1),[w,b]=P.useState(""),[d,s]=P.useState(!1),[c,u]=P.useState(!1),[h,y]=P.useState(""),[x,E]=P.useState([]),[k,j]=P.useState({}),[A,M]=P.useState({}),[D,L]=P.useState(!1),[z,H]=P.useState(""),Y=!!(r!=null&&r.active),G=r==null?void 0:r.message,B=!!(n!=null&&n.running),$=n!=null&&n.stage?SV[n.stage]??n.stage:"–",q=Y||B,ee=P.useMemo(()=>((i==null?void 0:i.name)||"").toLowerCase()==="superuser",[i]),oe=!!(a!=null&&a.isSuperuser),ge=!!(oe||o("user-groups-edit","full")),fe=!!(oe||o("user-groups-edit","read")),re=!!(oe||o("user-groups-edit","full")),be=ee&&!oe,he=P.useMemo(()=>{const Z=Number(e);return Number.isFinite(Z)?Z:null},[e]),pe=P.useCallback(async Z=>{var ne,xe,se,ce;const ue=Number(Z);if(!Number.isFinite(ue)||ue<=0){E([]),j({}),M({}),H(""),O({}),L(!1);return}L(!0),H("");try{const Ce=await Je.get(`/api/groups/${ue}/permissions`),Ie=Array.isArray((ne=Ce.data)==null?void 0:ne.sections)?Ce.data.sections:[],Ne=(xe=Ce.data)!=null&&xe.values&&typeof Ce.data.values=="object"?Ce.data.values:{},ct={},Ve={},tt=(He,Yt)=>{if(!He||typeof He!="object")return null;const It=He.key||"",Dt=typeof He.defaultLevel=="string"&&He.defaultLevel?He.defaultLevel:"none";ct[It]=Dt;const kt=Ne[It];let Gt=typeof kt=="string"&&kt?kt:Dt;const Ot=Array.isArray(He.availableLevels)&&He.availableLevels.length?He.availableLevels:_c.map(_r=>_r.value);Ot.includes(Gt)||(Gt=Dt),Ve[It]=Gt;const hr=Array.isArray(He.dependencies)?He.dependencies:[];return{...He,availableLevels:Ot,dependencies:hr,sortOrder:typeof He.sortOrder=="number"?He.sortOrder:Yt}},wt=(He,Yt=0)=>{const It=Array.isArray(He.items)?He.items.map((kt,Gt)=>tt(kt,Gt)).filter(Boolean):[],Dt=Array.isArray(He.groups)?He.groups.map((kt,Gt)=>wt(kt,Gt)):[];return{...He,sortOrder:typeof He.sortOrder=="number"?He.sortOrder:Yt,items:It,groups:Dt}},Vt=Ie.map((He,Yt)=>{const It=Array.isArray(He.items)?He.items.map((kt,Gt)=>tt(kt,Gt)).filter(Boolean):[],Dt=Array.isArray(He.groups)?He.groups.map((kt,Gt)=>wt(kt,Gt)):[];return{...He,sortOrder:typeof He.sortOrder=="number"?He.sortOrder:Yt,hasNavigation:!!He.hasNavigation,items:It,groups:Dt}});E(Vt),M(ct),j({...Ve}),O({...Ve})}catch(Ce){let Ie="Die Berechtigungen konnten nicht geladen werden.";((ce=(se=Ce.response)==null?void 0:se.data)==null?void 0:ce.error)==="GROUP_NOT_FOUND"&&(Ie="Die angeforderte Benutzergruppe wurde nicht gefunden."),H(Ie),E([]),j({}),M({}),O({}),t({variant:"error",title:"Fehler beim Laden",description:Ie})}finally{L(!1)}},[t]),ve=P.useCallback(async()=>{var Z,ue,ne,xe;if(!he){b("Ungültige Gruppen-ID."),l(null),g(sa(null)),m.current=sa(null),E([]),j({}),M({}),H(""),s(!0);return}C(!0),b("");try{const se=await Je.get(`/api/groups/${he}`),ce=Qw((Z=se.data)==null?void 0:Z.item);if(!ce.id)throw new Error("GROUP_NOT_FOUND");l(ce);const Ce=sa(ce);m.current={...Ce},g(Ce),y(""),(ce.name||"").toLowerCase()==="superuser"?(E([]),j({}),M({}),H(""),O({}),L(!1)):fe?pe(ce.id):(E([]),j({}),M({}),H(""),O({}),L(!1))}catch(se){const ce=(ne=(ue=se.response)==null?void 0:ue.data)==null?void 0:ne.error;let Ce="Gruppendetails konnten nicht geladen werden.";ce==="GROUP_NOT_FOUND"?Ce="Die angeforderte Benutzergruppe wurde nicht gefunden.":ce==="INVALID_GROUP_ID"?Ce="Die angegebene Gruppen-ID ist ungültig.":((xe=se.response)==null?void 0:xe.status)===404&&(Ce="Die angeforderte Benutzergruppe existiert nicht."),l(null),m.current=sa(null),g(sa(null)),E([]),j({}),M({}),H(""),L(!1),b(Ce),t({variant:"error",title:"Fehler beim Laden",description:Ce})}finally{C(!1),s(!0)}},[he,t,pe,fe]);P.useEffect(()=>{ve()},[ve]);const me=P.useMemo(()=>{if(!d||!i)return!1;const Z=m.current;if(!Z)return!1;const ue=Z.name||"",ne=f.name||"",xe=Z.description||"",se=f.description||"",ce=Z.avatarColor||"",Ce=f.avatarColor||"";return ue!==ne||xe!==se||ce!==Ce},[f,d,i]),ke=P.useMemo(()=>{if(ee)return!1;const Z=S||{},ue=k||{},ne=new Set([...Object.keys(Z),...Object.keys(ue)]);for(const xe of ne){const se=Z[xe]??null,ce=ue[xe]??null;if(se!==ce)return!0}return!1},[k,S,ee]),Fe=P.useMemo(()=>me||ke,[me,ke]),Pe=P.useCallback(Z=>{const{value:ue}=Z.target;g(ne=>({...ne,name:ue}))},[]),te=P.useCallback(Z=>{const{value:ue}=Z.target;g(ne=>({...ne,description:ue}))},[]),Oe=P.useCallback(Z=>{g(ue=>({...ue,avatarColor:Z||""}))},[]),$e=P.useCallback(async()=>{var Z,ue,ne,xe;if(!(!i||!me&&!ke)){if(me&&!ge){y("Dir fehlt die Berechtigung, diese Gruppe zu bearbeiten.");return}if(ke&&!re){y("Dir fehlt die Berechtigung, die Gruppenrechte anzupassen.");return}u(!0),y("");try{if(me){const se={avatarColor:f.avatarColor};ee||(se.name=f.name,se.description=f.description);const ce=await Je.put(`/api/groups/${i.id}`,se),Ce=Qw(((Z=ce.data)==null?void 0:Z.item)||((ue=ce.data)==null?void 0:ue.group));if(Ce!=null&&Ce.id){l(Ce);const Ie=sa(Ce);m.current={...Ie},g(Ie)}}ke&&(await Je.put(`/api/groups/${i.id}/permissions`,{values:k}),j(se=>({...se,...k})),O({...k})),me?t({variant:"success",title:"Gruppe gespeichert",description:"Die Änderungen wurden erfolgreich gespeichert."}):ke&&t({variant:"success",title:"Berechtigungen gespeichert",description:"Die Berechtigungen wurden erfolgreich gespeichert."}),y("")}catch(se){const ce=(xe=(ne=se.response)==null?void 0:ne.data)==null?void 0:xe.error;let Ce="Die Änderungen konnten nicht gespeichert werden.";ce==="GROUP_NAME_REQUIRED"?Ce="Bitte einen Gruppennamen angeben.":ce==="GROUP_NAME_TAKEN"?Ce="Der Gruppenname wird bereits verwendet.":ce==="INVALID_AVATAR_COLOR"?Ce="Bitte eine gültige Avatar-Farbe auswählen.":ce==="GROUP_NOT_FOUND"?Ce="Die Benutzergruppe wurde nicht gefunden.":ce==="GROUP_SUPERUSER_PROTECTED"?Ce="Für die Superuser-Gruppe können Berechtigungen nicht angepasst werden.":ce==="PERMISSION_INVALID_PAYLOAD"?Ce="Ungültige Berechtigungsdaten übermittelt.":ce==="PERMISSION_INVALID_LEVEL"?Ce="Für mindestens eine Berechtigung wurde ein nicht erlaubter Wert übermittelt.":ce==="PERMISSION_UNKNOWN_KEY"&&(Ce="Es wurde eine unbekannte Berechtigung übermittelt."),y(Ce),t({variant:"error",title:"Speichern fehlgeschlagen",description:Ce})}finally{u(!1)}}},[i,me,ke,f,t,ee,k,ge,re]),Be=P.useMemo(()=>{const Z=(f.name||f.description||"").trim();return Z?Z.charAt(0).toUpperCase():"?"},[f.name,f.description]),We=P.useMemo(()=>f.avatarColor?f.avatarColor:(i==null?void 0:i.avatarColor)||"",[f.avatarColor,i]),lt=q||c||!i||be||!ge,qe=q||c||!i||be||!ge,Ke=f.avatarColor||"",xt=P.useCallback((Z,ue)=>{if(!Z||!re||ee)return;const ne=(Ne,ct)=>ct[Ne]??A[Ne]??"none",se=(()=>{const Ne=[],ct=Ve=>{(Ve||[]).forEach(tt=>{(tt.items||[]).forEach(wt=>Ne.push(wt)),tt.groups&&ct(tt.groups)})};return x.forEach(Ve=>{(Ve.items||[]).forEach(tt=>Ne.push(tt)),ct(Ve.groups)}),Ne})(),ce=new Map(se.map(Ne=>[Ne.key,Ne])),Ce=(Ne,ct)=>{const Ve=ce.get(Ne);if(!Ve)return ct;const tt=Array.isArray(Ve.availableLevels)&&Ve.availableLevels.length?Ve.availableLevels:_c.map(wt=>wt.value);return tt.includes(ct)?ct:tt.reduce((wt,Vt)=>Sc[Vt]{const ct=ne(Z,Ne),Ve=Sc[Ie]{const He=Array.isArray(Vt.dependencies)?Vt.dependencies:[];if(!He.length)return;if(!He.every(It=>CV(ne(It.key,tt),It.requiredLevel))){const It=Ce(Vt.key,Ie);ne(Vt.key,tt)!==It&&(tt[Vt.key]=It,wt=!0)}})}return tt})},[re,ee,A,x]),rt=P.useCallback(Z=>{if(!Z)return null;let ue=null;return Object.prototype.hasOwnProperty.call(k,Z)?ue=k[Z]:Object.prototype.hasOwnProperty.call(A,Z)&&(ue=A[Z]),ue},[k,A]),dt=P.useMemo(()=>v.jsx("span",{className:"mx-auto block h-2.5 w-2.5 rounded-full border border-blue-gray-400 bg-black"}),[]),Rt=P.useCallback(Z=>!Z||!Z.key?!1:(Array.isArray(Z.dependencies)?Z.dependencies:[]).every(ne=>{if(!ne||!ne.key)return!0;const xe=rt(ne.key)??"none",se=ne.requiredLevel||"!=none";return se==="!=none"?xe!=="none":se.startsWith("!=")?xe!==se.substring(2):se.startsWith("=")?xe===se.substring(1):se?xe===se:!0}),[rt]),Ae=(Z,ue,ne={})=>{if(!Rt(Z))return null;const xe=`permission-${ue}-${Z.key}`,ce=rt(Z.key)??"none",{addTopBorder:Ce=!0}=ne,Ie=["flex flex-col gap-2.5 px-4 py-4 md:flex-row md:items-center md:gap-6",Ce?"border-t border-blue-gray-100":""].filter(Boolean).join(" "),Ne=Array.isArray(Z.availableLevels)&&Z.availableLevels.length?Z.availableLevels:_c.map(tt=>tt.value),ct=new Set(Ne),Ve=_c;return v.jsxs("div",{className:Ie,children:[v.jsx("div",{className:"text-sm font-medium leading-5 text-blue-gray-600 md:w-1/2",children:Z.label}),v.jsx(V.List,{className:"flex-col gap-1.5 md:ml-auto md:flex-row md:flex-nowrap md:w-1/2 md:items-center md:justify-end md:gap-3",children:Ve.map(tt=>{const wt=`${xe}-${tt.value}`,Vt=ce===tt.value,He=!ct.has(tt.value)||D||c||!re||ee;return v.jsx(V.ListItem,{className:"w-full min-w-[140px] p-0 md:w-auto md:flex-1",children:v.jsxs("label",{htmlFor:wt,className:`inline-flex w-full items-center gap-2 rounded-lg px-3 py-2 min-h-[38px] ${He?"cursor-not-allowed bg-blue-gray-50/40":"cursor-pointer hover:bg-blue-gray-50/60"}`,children:[v.jsx(V.ListItemPrefix,{className:"flex-shrink-0",children:v.jsx(V.Radio,{id:wt,name:xe,value:tt.value,checked:Vt,onChange:()=>xt(Z.key,tt.value),disabled:He,ripple:!1,className:"h-4 w-4 hover:before:opacity-0",containerProps:{className:"p-0"},icon:dt})}),v.jsx(V.Typography,{color:"blue-gray",className:`text-sm font-medium leading-5 whitespace-nowrap ${He?"text-blue-gray-300":"text-blue-gray-600"}`,children:tt.label})]})},`${ue}-${Z.key}-${tt.value}`)})})]},`${ue}-${Z.key}`)},ft=Z=>{if(!Z)return!1;const ue=Array.isArray(Z.items)?Z.items:[],ne=Array.isArray(Z.groups)?Z.groups:[];return ue.some(Rt)?!0:ne.some(ft)},At=Z=>{if(!Z)return!1;const ue=Array.isArray(Z.items)?Z.items:[],ne=Array.isArray(Z.groups)?Z.groups:[];return ue.some(Rt)?!0:ne.some(ft)};return v.jsx(v.Fragment,{children:v.jsxs("div",{className:"mt-12 flex flex-col gap-12",children:[(Y||B)&&v.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:v.jsxs("div",{className:"flex flex-col gap-1",children:[v.jsxs("span",{children:["Wartungsmodus aktiv",G?` – ${G}`:B?" – Portainer-Update läuft":"","."]}),B&&v.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",$]})]})}),v.jsx(V.Card,{className:"mx-3 -mt-16 mb-6 lg:mx-4 border border-blue-gray-100",children:v.jsxs(V.CardBody,{className:"p-4",children:[v.jsxs("div",{className:"mb-10 flex flex-wrap items-center justify-between gap-6",children:[v.jsxs("div",{className:"flex items-center gap-6",children:[v.jsx("div",{className:`text-black flex h-[74px] w-[74px] items-center justify-center rounded-xl text-3xl font-semibold uppercase shadow-lg shadow-blue-gray-500/40 ${We}`,"aria-label":f.name||"Gruppenavatar",children:Be}),v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:f.name||"–"}),v.jsxs(V.Typography,{className:"text-xs font-semibold tracking-wide text-stormGrey-400",children:["Gruppen-ID: ",(i==null?void 0:i.id)??"–"]})]})]}),Fe&&v.jsx(V.Button,{color:"green",className:"normal-case",onClick:$e,disabled:q||c,children:c?"Speichert ...":"Änderungen speichern"})]}),T&&!i&&v.jsxs("div",{className:"mb-6 flex items-center gap-3 rounded-lg border border-blue-gray-50 bg-blue-gray-50/50 px-4 py-3 text-sm text-blue-gray-500",children:[v.jsx(V.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Gruppendaten werden geladen ..."})]}),w&&!T&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:w}),h&&!T&&v.jsx("div",{className:"mb-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-800",children:h}),v.jsxs("div",{className:"grid-cols-1 mb-12 grid gap-12 px-4 lg:grid-cols-2 xl:grid-cols-3",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Gruppendaten"}),ee&&v.jsxs("div",{className:"mb-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800",children:["Systemgruppe – Name und Beschreibung sind geschützt.",be&&v.jsx("span",{className:"mt-1 block text-xs text-amber-600",children:"Nur der Superuser darf die Superuser-Gruppe bearbeiten."})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Gruppenname"}),v.jsx(V.Input,{value:f.name,onChange:Pe,placeholder:"Gruppenname",disabled:lt,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Beschreibung"}),v.jsx(V.Input,{value:f.description,onChange:te,placeholder:"Beschreibung der Gruppe",disabled:lt,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{className:"mb-6",children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Avatar-Farbe"}),v.jsxs(V.Select,{label:"Avatar-Farbe auswählen",variant:"outlined",value:Ke,onChange:Oe,disabled:qe,selected:Z=>{var ue;return(ue=Z==null?void 0:Z.props)!=null&&ue.children?Z.props.children:f.avatarColor?f.avatarColor:"Standardfarbe"},children:[v.jsx(V.Option,{value:"",children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:"h-4 w-4 rounded border border-blue-gray-100"}),v.jsx("span",{className:"text-xs",children:"Keine"})]})}),nN.map(Z=>v.jsx(V.Option,{value:Z,children:v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx("span",{className:`h-4 w-4 rounded border border-blue-gray-100 ${Z}`}),v.jsx("span",{className:"text-xs",children:Z})]})},Z))]})]})]}),v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Mitglieder"}),!i||i.members.length===0?v.jsx(V.Typography,{className:"text-sm text-stormGrey-500",children:"Aktuell sind keine Benutzer dieser Gruppe zugeordnet."}):v.jsx("div",{className:"flex flex-wrap gap-2",children:i.members.map(Z=>v.jsx(V.Chip,{value:Z.username,size:"sm",color:"blue-gray",variant:"ghost"},`${i.id}-${Z.id}-${Z.username}`))}),v.jsx("div",{className:"mt-6 text-xs text-stormGrey-400",children:v.jsxs("p",{children:["Mitglieder insgesamt: ",(i==null?void 0:i.memberCount)??0]})})]}),v.jsx("div",{className:"lg:col-span-2 xl:col-span-3",children:!Y&&!B&&v.jsxs(v.Fragment,{children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",className:"mb-4",children:"Berechtigungen (Ansicht)"}),ee?v.jsx("div",{className:"rounded-xl border border-blue-gray-100 bg-white px-4 py-4 text-sm text-blue-gray-600 shadow-sm",children:"Die Superuser-Gruppe besitzt automatisch Vollzugriff auf alle Bereiche. Berechtigungen können hier nicht angepasst werden."}):fe?v.jsxs(v.Fragment,{children:[D&&v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4",children:v.jsxs("div",{className:"flex items-center gap-3 text-sm text-blue-gray-500",children:[v.jsx(V.Spinner,{className:"h-4 w-4"}),v.jsx("span",{children:"Berechtigungen werden geladen ..."})]})}),!D&&z&&v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4 text-sm text-red-700",children:z}),!D&&!z&&(x.length===0?v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4 text-sm text-blue-gray-500",children:"Für diese Gruppe sind keine Berechtigungen definiert."}):(()=>{const Z=x.map((ue,ne)=>{const xe=Array.isArray(ue.items)?ue.items:[],se=Array.isArray(ue.groups)?ue.groups:[];if(!At(ue))return null;const ce=(Ce,Ie=`${ue.key||ne}-group`,Ne=0)=>{if(!ft(Ce))return null;const ct=Array.isArray(Ce.items)?Ce.items:[],Ve=Array.isArray(Ce.groups)?Ce.groups:[];return v.jsxs("div",{className:"",children:[v.jsx("div",{className:"border-b border-blue-gray-100 bg-blue-gray-50/80 px-4 py-3",children:v.jsx(V.Typography,{className:`${Ne>0?"ml-2":""} text-xs font-semibold uppercase tracking-wide text-blue-gray-600`,children:Ce.title})}),v.jsxs("div",{className:"divide-y divide-blue-gray-100",children:[ct.map(tt=>Ae(tt,`${Ie}-${tt.key}`,{addTopBorder:!1})),Ve.map((tt,wt)=>ce(tt,`${Ie}-${tt.key||wt}`,Ne+1))]})]},Ce.key||Ie)};return v.jsxs("div",{className:"overflow-hidden rounded-xl border border-blue-gray-100 bg-white shadow-sm",children:[v.jsx("div",{className:"border-b border-blue-gray-100 bg-blue-gray-50/70 px-4 py-3",children:v.jsx(V.Typography,{variant:"h6",className:"text-lg font-semibold text-blue-gray-700",children:ue.title})}),v.jsxs("div",{className:"divide-y divide-blue-gray-100",children:[xe.map(Ce=>Ae(Ce,ue.key||ne,{addTopBorder:!1})),se.map((Ce,Ie)=>ce(Ce,`${ue.key||ne}-${Ie}`,0))]})]},ue.key||ne)}).filter(Boolean);return Z.length===0?v.jsx("div",{className:"border-b border-blue-gray-100 px-4 py-4 text-sm text-blue-gray-500",children:"Für diese Gruppe sind keine Berechtigungen definiert."}):v.jsx("div",{className:"flex flex-col gap-4",children:Z})})())]}):null]})})]})]})})]})})}const PV={initializing:"Vorbereitung","activating-maintenance":"Wartungsmodus aktivieren","executing-script":"Skript wird ausgeführt",waiting:"Warte auf Portainer",completed:"Abgeschlossen",failed:"Fehlgeschlagen"},OV=(e=[])=>{if(!Array.isArray(e)||e.length===0)return"";const t=[];for(let r=0;r{if(!Array.isArray(e))return[];const t=[];for(let r=0;rkV(m),[m]),h=P.useCallback(k=>{if(!k)return;const j=new Blob([k],{type:"text/plain;charset=utf-8"}),A=URL.createObjectURL(j),M=document.createElement("a");M.href=A;const D=t!=null&&t.username?`${t.username}-sicherheitsschluessel`:"security-phrase";M.download=`${D}.txt`,document.body.appendChild(M),M.click(),document.body.removeChild(M),URL.revokeObjectURL(A)},[t==null?void 0:t.username]),y=P.useCallback(async()=>{var k,j,A,M,D,L,z,H;l(!0),g("");try{const Y=await Je.get("/api/users/me/security-phrase"),G=Array.isArray((j=(k=Y.data)==null?void 0:k.item)==null?void 0:j.words)?Y.data.item.words:[];if(!G.length)throw new Error("EMPTY_SECURITY_PHRASE");S(G),w(!1)}catch(Y){if(((A=Y==null?void 0:Y.response)==null?void 0:A.status)===409||((D=(M=Y==null?void 0:Y.response)==null?void 0:M.data)==null?void 0:D.error)==="SECURITY_PHRASE_ALREADY_DOWNLOADED"){await n(),e("/dashboard/stacks",{replace:!0});return}if(((L=Y==null?void 0:Y.response)==null?void 0:L.status)===401){await n(),e("/auth/sign-in",{replace:!0});return}const G=((H=(z=Y==null?void 0:Y.response)==null?void 0:z.data)==null?void 0:H.error)||(Y==null?void 0:Y.message)||"Sicherheitsschlüssel konnte nicht geladen werden.";g(G)}finally{l(!1)}},[e,n]);P.useEffect(()=>{if(!t){e("/auth/sign-in",{replace:!0});return}if(!b){e("/dashboard/stacks",{replace:!0});return}y()},[t,b,y,e]);const x=P.useCallback(()=>{y()},[y]),E=P.useCallback(async()=>{var k,j,A,M,D,L;if(!(O||!Array.isArray(m)||m.length===0)){T(!0),g("");try{const z=OV(m);h(z);const H=await Je.post("/api/users/me/security-phrase/downloaded"),Y=((j=(k=H.data)==null?void 0:k.item)==null?void 0:j.downloadedAt)||null,G=(A=H.data)==null?void 0:A.session;G!=null&&G.user?r(G):await n(),w(!!Y),e("/dashboard/stacks",{replace:!0})}catch(z){if(((M=z==null?void 0:z.response)==null?void 0:M.status)===401){await n(),e("/auth/sign-in",{replace:!0});return}const H=((L=(D=z==null?void 0:z.response)==null?void 0:D.data)==null?void 0:L.error)||(z==null?void 0:z.message)||"Download konnte nicht bestätigt werden.";g(H)}finally{T(!1)}}},[m,O,h,n,e,r]);return b?v.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center bg-blue-gray-50/50 px-4 py-10",children:[v.jsxs("div",{className:"mb-6 text-center",children:[v.jsx(V.Typography,{variant:"h2",className:"font-semibold text-blue-gray-800",children:"Sicherheitsschlüssel sichern"}),v.jsx(V.Typography,{color:"blue-gray",className:"mt-2 max-w-3xl text-base",children:"Bitte lade den einmaligen Sicherheitsschlüssel herunter und bewahre ihn sicher auf. Er wird benötigt, um dein Passwort zurückzusetzen. Ohne den Download kannst du die Anwendung nicht weiter nutzen."})]}),v.jsx(V.Card,{className:"w-full max-w-3xl shadow-lg",children:v.jsxs(V.CardBody,{className:"space-y-6",children:[i&&v.jsx("div",{className:"flex items-center justify-center py-10",children:v.jsx(V.Spinner,{className:"h-10 w-10 text-blue-gray-500"})}),!i&&f&&v.jsx(V.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",icon:v.jsx(Bz,{className:"h-5 w-5"}),children:v.jsxs("div",{className:"flex items-start justify-between gap-4",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{variant:"h6",color:"red",children:"Fehler"}),v.jsx(V.Typography,{color:"red",className:"text-sm",children:f})]}),v.jsx(V.Button,{size:"sm",color:"red",variant:"text",onClick:x,className:"normal-case",children:"Erneut versuchen"})]})}),!i&&!f&&v.jsxs(v.Fragment,{children:[v.jsxs("div",{className:"rounded-lg border border-blue-gray-100 bg-blue-gray-50/60 p-6",children:[v.jsx(V.Typography,{variant:"h5",className:"mb-4 text-blue-gray-800",children:"Deine Sicherheitsphrase"}),v.jsx("div",{className:"space-y-3",children:u.map((k,j)=>v.jsx("div",{className:"flex flex-wrap items-center justify-center gap-4 text-lg font-mono tracking-wide text-blue-gray-900 md:text-xl",children:k.map((A,M)=>v.jsx("span",{className:"uppercase",children:A},`phrase-${j}-${M}`))},`phrase-row-${j}`))})]}),v.jsxs("div",{className:"flex flex-col items-center justify-between gap-4 md:flex-row",children:[v.jsx("div",{className:"text-sm text-blue-gray-600",children:"Der Download startet im TXT-Format. Bewahre die Datei sicher auf – sie kann später nicht erneut angezeigt werden."}),v.jsxs(V.Button,{color:"blue",size:"md",className:"flex items-center gap-2 normal-case",onClick:E,disabled:c||O||C||m.length===0,children:[v.jsx(Lz,{className:"h-5 w-5"}),"Sicherheitsschlüssel herunterladen"]})]})]})]})})]}):null}const cl=e=>{if(!e&&e!==0)return"-";const r=(n=>{if(n instanceof Date)return n;if(typeof n=="number"){const o=n>1e12?n:n*1e3;return new Date(o)}if(typeof n=="string"){const o=Number(n);if(!Number.isNaN(o)){const a=o>1e12?o:o*1e3;return new Date(a)}return new Date(n)}return null})(e);return!r||Number.isNaN(r.getTime())?String(e):r.toLocaleString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})},Xw=e=>e===1?"Git":e===2?"Compose":e??"-",Ch=()=>({host:"",port:"22",username:"",password:"",extraSshArgs:""});function jV(){var Qr,mo,Nn,gn;const e=Hn(),{serverId:t}=cm(),r=P.useMemo(()=>{const je=Number(t);return Number.isFinite(je)?je:null},[t]),{hasServerPermission:n,user:o}=Yr(),{deleteSetupServer:a,updateSetupApiKey:i}=Yo(),{showToast:l}=Fa(),f=!!(o!=null&&o.isSuperuser),g=!!(f||n(r,"maintenance-server-manage","read")),m=!!(f||n(r,"maintenance-server-edit","full")),S=!!(f||n(r,"maintenance-server-edit","read")),O=!!(f||n(r,"maintenance-server-delete","full")),T=!!(f||n(r,"maintenance-server-edit","read")||n(r,"maintenance-server-manage","read")),C=!!(f||n(r,"maintenance-duplicates","read")),w=!!(f||n(r,"maintenance-duplicates","full")),b=!!(f||n(r,"maintenance-ssh-update","read")),d=!!(f||n(r,"maintenance-ssh-update","full")),[s,c]=P.useState(null),[u,h]=P.useState(null),[y,x]=P.useState(!0),[E,k]=P.useState(""),[j,A]=P.useState(!1),[M,D]=P.useState(null),[L,z]=P.useState({name:"",url:""}),[H,Y]=P.useState(""),[G,B]=P.useState(!1),[$,q]=P.useState(null),[ee,oe]=P.useState(!1),[ge,fe]=P.useState(""),[re,be]=P.useState(null),[he,pe]=P.useState(""),[ve,me]=P.useState(!1),[ke,Fe]=P.useState(!1),[Pe,te]=P.useState(""),[Oe,$e]=P.useState(null),[Be,We]=P.useState([]),[lt,qe]=P.useState(!1),[Ke,xt]=P.useState(!1),[rt,dt]=P.useState(""),[Rt,Ae]=P.useState(null),[ft,At]=P.useState(null),Z=P.useRef(null),[ue,ne]=P.useState(null),[xe,se]=P.useState(()=>Ch()),[ce,Ce]=P.useState(!1),[Ie,Ne]=P.useState(!1),[ct,Ve]=P.useState(!1),[tt,wt]=P.useState(!1),[Vt,He]=P.useState(!1),[Yt,It]=P.useState(null),[Dt,kt]=P.useState(!1),[Gt,Ot]=P.useState(""),hr=P.useCallback(async()=>{var je,Le,ze,Ue,pt;if(!r){c(null),h(null);return}x(!0),k("");try{const Lt=await Je.get(`/api/setup/servers/${r}`);c(((je=Lt.data)==null?void 0:je.server)??null),h(((Le=Lt.data)==null?void 0:Le.apiKey)??null)}catch(Lt){const or=(ze=Lt.response)==null?void 0:ze.status,gr=((pt=(Ue=Lt.response)==null?void 0:Ue.data)==null?void 0:pt.error)||Lt.message||"Serverdetails konnten nicht geladen werden";k(gr),c(null),h(null),(or===403||gr==="SERVER_ACCESS_DENIED")&&(l({variant:"error",title:"Kein Zugriff",description:"Du hast keine Berechtigung für diesen Server."}),e(-1))}finally{x(!1)}},[r,l,e]),_r=P.useCallback(async({silent:je=!1}={})=>{var Le,ze,Ue;if(!r||!T){q(null),fe(""),be(null);return}je||oe(!0),fe("");try{const pt=await Je.get(`/api/setup/servers/${r}/check`);q(pt.data??null),be(new Date)}catch(pt){const Lt=(Le=pt.response)==null?void 0:Le.status,or=((Ue=(ze=pt.response)==null?void 0:ze.data)==null?void 0:Ue.error)||pt.message||"Status konnte nicht ermittelt werden";fe(or),q(null),be(null),(Lt===403||or==="SERVER_ACCESS_DENIED")&&(l({variant:"error",title:"Kein Zugriff",description:"Du hast keine Berechtigung für diesen Server."}),e(-1))}finally{oe(!1)}},[r,T,l,e]),kr=P.useCallback(async()=>{var je,Le,ze;if(!r||!b){$e(null),pe("");return}Fe(!0),te("");try{const pt=((je=(await Je.get(`/api/setup/servers/${r}/update-script`)).data)==null?void 0:je.script)??null;$e(pt);const Lt=(pt==null?void 0:pt.custom)??(pt==null?void 0:pt.default)??(pt==null?void 0:pt.effective)??"";pe(Lt)}catch(Ue){const pt=((ze=(Le=Ue.response)==null?void 0:Le.data)==null?void 0:ze.error)||Ue.message||"Update-Skript konnte nicht geladen werden";te(pt),$e(null),pe("")}finally{Fe(!1)}},[r,b]),Te=P.useCallback(async()=>{var je,Le,ze;if(!r||!b){ne(null);return}kt(!0),Ot("");try{const Ue=await Je.get(`/api/setup/servers/${r}/ssh-config`);ne(((je=Ue.data)==null?void 0:je.ssh)??null)}catch(Ue){const pt=((ze=(Le=Ue.response)==null?void 0:Le.data)==null?void 0:ze.error)||Ue.message||"SSH-Konfiguration konnte nicht geladen werden";Ot(pt),ne(null)}finally{kt(!1)}},[r,b]),Me=P.useCallback(async({silent:je=!1}={})=>{if(!C){We([]),dt(""),Ae(null);return}if(Z.current)return Z.current;const Le=(async()=>{var ze,Ue;je?xt(!0):qe(!0),dt("");try{const Lt=(await Je.get("/api/maintenance/duplicates")).data,or=Array.isArray(Lt)?Lt:(Lt==null?void 0:Lt.items)??[];We(or),Ae(new Date)}catch(pt){const Lt=((Ue=(ze=pt.response)==null?void 0:ze.data)==null?void 0:Ue.error)||pt.message||"Fehler beim Laden der Wartungsdaten";dt(Lt)}finally{je?xt(!1):qe(!1),Z.current=null}})();return Z.current=Le,Le},[C]);P.useEffect(()=>{hr()},[hr]),P.useEffect(()=>{_r()},[_r]),P.useEffect(()=>{Me()},[Me,C]),P.useEffect(()=>{q(null),fe(""),be(null)},[r]),P.useEffect(()=>{kr()},[kr]),P.useEffect(()=>{Te()},[Te]),P.useEffect(()=>{if(!s){z({name:"",url:""});return}z({name:s.name||"",url:s.url||""})},[s]),P.useEffect(()=>{if(!ue){se(Ch()),Ce(!1),Ne(!1),It(null);return}se({host:ue.host??"",port:String(ue.port??"22"),username:ue.username??"",password:"",extraSshArgs:Array.isArray(ue.extraSshArgs)?ue.extraSshArgs.join(` +`):""}),Ce(!!ue.passwordStored),Ne(!1),It(null)},[ue]);const Ge=P.useMemo(()=>Oe?Oe.source==="custom"&&typeof Oe.custom=="string"?Oe.custom:Oe.default??Oe.effective??"":"",[Oe]),gt=Oe?he!==Ge:!1,X=(Oe==null?void 0:Oe.source)==="custom"?"Benutzerdefiniert":"Standard",_e=s?(L.name||"").trim()!==(s.name||"")||(L.url||"").trim()!==(s.url||""):!1;P.useMemo(()=>{if(!(s!=null&&s.url))return"-";try{return new URL(s.url).hostname||s.url}catch{return s.url}},[s]);const ye=((Qr=$==null?void 0:$.portainer)==null?void 0:Qr.edition)??"-";(ye||"").toLowerCase().includes("community");const ot=T,at=P.useMemo(()=>{const je={host:xe.host.trim(),port:Number.parseInt(xe.port,10)||22,username:xe.username.trim(),extraSshArgs:(xe.extraSshArgs||"").split(/\r?\n/).map(ze=>ze.trim()).filter(Boolean)},Le=xe.password??"";return Le?je.password=Le:ce||(je.password=""),je},[xe,ce]),Ct=P.useCallback((je,Le)=>{m&&z(ze=>({...ze,[je]:Le}))},[m]),Tt=P.useCallback(async()=>{var je,Le,ze,Ue;if(!(!m||!r||!_e)){A(!0);try{await Je.put(`/api/setup/servers/${r}`,{name:((je=L.name)==null?void 0:je.trim())??"",url:((Le=L.url)==null?void 0:Le.trim())??""}),l({variant:"success",title:"Server gespeichert",description:"Serverdetails wurden aktualisiert."}),await hr()}catch(pt){const Lt=((Ue=(ze=pt.response)==null?void 0:ze.data)==null?void 0:Ue.error)||pt.message||"Server konnte nicht aktualisiert werden";l({variant:"error",title:"Speichern fehlgeschlagen",description:Lt})}finally{A(!1)}}},[m,r,_e,L,hr,l]),Zt=P.useCallback(async()=>{var Le,ze;if(!m||!r)return;const je=(H||"").trim();if(!je){l({variant:"warning",title:"API-Key fehlt",description:"Bitte gib einen API-Key ein."});return}B(!0);try{await i(r,je),l({variant:"success",title:"API-Key gespeichert",description:"Der neue API-Key wurde hinterlegt."}),Y(""),await hr()}catch(Ue){const pt=((ze=(Le=Ue.response)==null?void 0:Le.data)==null?void 0:ze.error)||Ue.message||"API-Key konnte nicht gespeichert werden";l({variant:"error",title:"Speichern fehlgeschlagen",description:pt})}finally{B(!1)}},[H,m,r,i,hr,l]),Ft=P.useCallback(()=>{_r()},[_r]),Mr=P.useMemo(()=>{const je=Array.isArray(Be)?Be.length:0,Le=Array.isArray(Be)?Be.reduce((ze,Ue)=>{var pt;return ze+(((pt=Ue==null?void 0:Ue.duplicates)==null?void 0:pt.length)||0)},0):0;return{groups:je,duplicateCount:Le}},[Be]),Ir=P.useCallback(async je=>{var pt,Lt,or,gr;if(!w||!je)return;const Le=(pt=je.canonical)==null?void 0:pt.Id;if(!Le)return;const ze=(je.duplicates||[]).map(mn=>mn.Id).filter(Boolean);if(!ze.length)return;const Ue=((Lt=je.canonical)==null?void 0:Lt.Name)||je.name||`Stack ${Le}`;if(!(typeof window<"u"&&!window.confirm(`Bereinigung für "${Ue}" starten? +Es werden ${ze.length} Duplikate entfernt: ${ze.join(", ")}`))){At(String(Le));try{const jn=(await Je.post("/api/maintenance/duplicates/cleanup",{canonicalId:Le,duplicateIds:ze})).data??{};if(jn.success===!1)throw new Error(jn.error||"Bereinigung fehlgeschlagen");const Ba=Array.isArray(jn.results)?jn.results.filter(_i=>_i.status==="deleted").map(_i=>_i.id):ze;l({variant:"success",title:"Bereinigung abgeschlossen",description:`${Ue} – entfernte IDs: ${Ba.join(", ")}`}),await Me({silent:!0})}catch(mn){const jn=((gr=(or=mn.response)==null?void 0:or.data)==null?void 0:gr.error)||mn.message||"Bereinigung fehlgeschlagen";l({variant:"error",title:"Bereinigung fehlgeschlagen",description:jn})}finally{At(null)}}},[w,Me,l]),br=P.useCallback(async()=>{var Le,ze;if(!O||!r||M===r)return;const je=(s==null?void 0:s.name)||(s==null?void 0:s.url)||`Server ${r}`;if(!(typeof window<"u"&&!window.confirm(`Server "${je}" wirklich löschen?`))){D(r);try{await a(r),l({variant:"success",title:"Server gelöscht",description:`Server "${je}" wurde entfernt.`}),e("/dashboard/maintenance/servers")}catch(Ue){const pt=((ze=(Le=Ue.response)==null?void 0:Le.data)==null?void 0:ze.error)||Ue.message||"Server konnte nicht gelöscht werden";l({variant:"error",title:"Löschen fehlgeschlagen",description:pt})}finally{D(null)}}},[O,a,e,r,M,s,l]),Vr=P.useCallback(async()=>{var je,Le;if(!(!d||!r||!Oe))try{me(!0),te(""),await Je.put(`/api/setup/servers/${r}/update-script`,{script:he}),await kr(),l({variant:"success",title:"Skript gespeichert",description:"Das benutzerdefinierte Portainer-Update-Skript wurde aktualisiert."})}catch(ze){const Ue=((Le=(je=ze.response)==null?void 0:je.data)==null?void 0:Le.error)||ze.message||"Skript konnte nicht gespeichert werden";te(Ue),l({variant:"error",title:"Speichern fehlgeschlagen",description:Ue})}finally{me(!1)}},[d,r,Oe,he,kr,l]),go=P.useCallback(async()=>{var je,Le;if(!(!d||!r))try{me(!0),te(""),await Je.delete(`/api/setup/servers/${r}/update-script`),await kr(),l({variant:"info",title:"Standardskript wiederhergestellt",description:"Es wird wieder das Standard-Update-Skript verwendet."})}catch(ze){const Ue=((Le=(je=ze.response)==null?void 0:je.data)==null?void 0:Le.error)||ze.message||"Standardskript konnte nicht wiederhergestellt werden";te(Ue),l({variant:"error",title:"Zurücksetzen fehlgeschlagen",description:Ue})}finally{me(!1)}},[d,r,kr,l]),vr=P.useCallback((je,Le)=>{d&&(se(ze=>({...ze,[je]:Le})),je==="password"&&Ce(!1))},[d]),Gn=P.useCallback(async()=>{var je,Le;if(!(!d||!r))try{Ve(!0),await Je.put(`/api/setup/servers/${r}/ssh-config`,at),It(null),Ne(!1),await Te(),l({variant:"success",title:"SSH-Konfiguration gespeichert",description:"Verbindungseinstellungen wurden aktualisiert."})}catch(ze){const Ue=((Le=(je=ze.response)==null?void 0:je.data)==null?void 0:Le.error)||ze.message||"SSH-Konfiguration konnte nicht gespeichert werden";Ot(Ue),l({variant:"error",title:"Speichern fehlgeschlagen",description:Ue})}finally{Ve(!1)}},[d,at,r,Te,l]),za=P.useCallback(async()=>{var je,Le,ze;if(!(!d||!r))try{wt(!0);const Ue=await Je.post(`/api/setup/servers/${r}/test-ssh`,at);It({success:!0,timestamp:new Date,details:(je=Ue.data)==null?void 0:je.result}),l({variant:"success",title:"SSH-Verbindung erfolgreich",description:"Verbindung zum Portainer-Host wurde hergestellt."})}catch(Ue){const pt=((ze=(Le=Ue.response)==null?void 0:Le.data)==null?void 0:ze.error)||Ue.message||"SSH-Verbindung fehlgeschlagen";It({success:!1,timestamp:new Date,error:pt}),l({variant:"error",title:"SSH-Test fehlgeschlagen",description:pt})}finally{wt(!1)}},[d,at,r,l]),on=P.useCallback(async()=>{var je,Le;if(!(!d||!r))try{He(!0),await Je.delete(`/api/setup/servers/${r}/ssh-config`),ne(null),se(Ch()),Ce(!1),Ne(!1),It(null),l({variant:"info",title:"SSH-Konfiguration gelöscht",description:"Die Verbindungseinstellungen wurden zurückgesetzt."})}catch(ze){const Ue=((Le=(je=ze.response)==null?void 0:je.data)==null?void 0:Le.error)||ze.message||"SSH-Konfiguration konnte nicht gelöscht werden";Ot(Ue),l({variant:"error",title:"Löschen fehlgeschlagen",description:Ue})}finally{He(!1)}},[d,r,l]),Dr=!d||ct||tt||Vt||Dt||!r;if(!g)return null;if(!r)return v.jsxs("div",{className:"mt-12 flex flex-col gap-4",children:[v.jsx(V.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-800",children:"Ungültige Server-ID."}),v.jsx(V.Button,{variant:"outlined",color:"gray",onClick:()=>e("/dashboard/maintenance/servers"),children:"Zurück zur Übersicht"})]});const Sr=!m&&S;return v.jsx("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsxs(V.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:[v.jsxs("span",{children:["Serverdetails ",s?`– ${s.name||"Ohne Namen"}`:""]}),v.jsxs("div",{className:"flex items-center gap-2",children:[v.jsx(V.Button,{variant:"text",color:"white",size:"sm",onClick:()=>e("/dashboard/maintenance/servers"),children:"Zur Übersicht"}),O&&v.jsx(V.Button,{variant:"text",color:"white",size:"sm",onClick:br,disabled:M===r,children:M===r?"Lösche…":"Löschen"})]})]})}),v.jsxs(V.CardBody,{className:"flex flex-col gap-6 p-4",children:[y&&v.jsx("p",{className:"text-sm text-stormGrey-500",children:"Serverdetails werden geladen…"}),!y&&E&&v.jsx(V.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:E}),!y&&!E&&!s&&v.jsx(V.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:"Der angeforderte Server wurde nicht gefunden."}),s&&v.jsxs(v.Fragment,{children:[ot?v.jsxs("div",{className:"rounded-md border border-blue-gray-100 p-4",children:[v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[v.jsxs("div",{children:[v.jsxs(V.Typography,{variant:"small",color:"blue-gray",className:"font-semibold uppercase",children:["Verbindungsstatus",re&&v.jsxs("span",{className:"antialiased font-sans font-light text-xs text-blue-gray-400 pl-2",children:["Stand: ",cl(re)]})]}),v.jsx("p",{className:"text-sm text-stormGrey-600 break-all",children:s.url}),ge&&v.jsx("p",{className:"text-xs text-sunsetCoral-600 mt-2 text-right",children:ge})]}),v.jsxs("div",{className:"flex flex-wrap gap-2",children:[v.jsx(V.Chip,{value:($==null?void 0:$.online)===!0?"Server online":($==null?void 0:$.online)===!1?"Offline":"Unbekannt",size:"sm",color:($==null?void 0:$.online)===!0?"green":($==null?void 0:$.online)===!1?"red":"blue-gray",variant:"ghost"}),v.jsx(V.Chip,{value:(()=>{var Le;const je=(Le=$==null?void 0:$.portainer)==null?void 0:Le.updateAvailable;return je===!0?"Update vorhanden":je===!1?"Portainer aktuell":"Portainer unbekannt"})(),size:"sm",color:((mo=$==null?void 0:$.portainer)==null?void 0:mo.updateAvailable)===!0?"amber":"blue-gray",variant:"ghost"})]})]}),v.jsxs("div",{className:"mt-4 grid gap-2 text-sm",children:[v.jsxs("div",{className:"flex items-center justify-between",children:[v.jsx("span",{children:"Installierte Version"}),v.jsx("span",{className:"font-medium",children:((Nn=$==null?void 0:$.portainer)==null?void 0:Nn.currentVersion)??"–"})]}),v.jsxs("div",{className:"flex items-center justify-between",children:[v.jsx("span",{children:"Neueste Version"}),v.jsx("span",{className:"font-medium",children:((gn=$==null?void 0:$.portainer)==null?void 0:gn.latestVersion)??"–"})]}),v.jsxs("div",{className:"flex items-center justify-between",children:[v.jsx("span",{children:"Edition"}),v.jsx("span",{className:"font-medium",children:ye})]})]}),v.jsx("div",{className:"mt-4 flex justify-end",children:v.jsx(V.Button,{variant:"outlined",color:"gray",size:"sm",onClick:Ft,disabled:ee,className:"w-full sm:w-auto",children:ee?"Prüfe…":"Status manuell abgleichen"})})]}):v.jsx(V.Alert,{color:"blue",className:"border border-blue-200 bg-blue-50 text-blue-900",children:"Keine Berechtigung für die Portainer-Sektion."}),ot&&m&&v.jsxs("div",{className:"rounded-md border border-blue-gray-100 p-4",children:[v.jsx(V.Typography,{variant:"small",color:"blue-gray",className:"font-semibold uppercase",children:"Server"}),v.jsxs("div",{className:"mt-4 grid gap-3 md:grid-cols-2",children:[v.jsx(V.Input,{label:"Servername",value:L.name,onChange:je=>Ct("name",je.target.value),disabled:!m&&!Sr||j||Sr}),v.jsx(V.Input,{label:"Server-URL",value:L.url,onChange:je=>Ct("url",je.target.value),disabled:!m&&!Sr||j||Sr})]}),m&&!Sr&&v.jsx("div",{className:"flex mt-2 mb-5",children:v.jsx(V.Button,{color:"blue",size:"sm",onClick:Tt,disabled:j||!_e,children:j?"Speichere…":"Server speichern"})}),v.jsxs("div",{className:"flex flex-col gap-2 md:max-w-md",children:[v.jsxs("p",{className:"text-xs text-stormGrey-500",children:[u!=null&&u.hasKey?"API-Key gespeichert":"Kein API-Key hinterlegt",u!=null&&u.updatedAt?` – aktualisiert am ${cl(u.updatedAt)}`:""]}),v.jsx(V.Input,{type:"password",label:"Neuer API-Key",value:H,onChange:je=>Y(je.target.value),disabled:!m||G}),m&&v.jsx("div",{className:"flex",children:v.jsx(V.Button,{color:"blue",size:"sm",onClick:Zt,disabled:G||!H.trim(),className:"w-full sm:w-auto",children:G?"Speichere…":"API-Key speichern"})})]})]}),b&&v.jsxs("div",{className:"grid gap-6 lg:grid-cols-2",children:[v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",children:"SSH-Verbindung"})}),v.jsxs(V.CardBody,{className:"flex flex-col gap-3 p-4",children:[v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Host"}),v.jsx("input",{type:"text",value:xe.host,onChange:je=>vr("host",je.target.value),disabled:Dr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none"})]}),v.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Port"}),v.jsx("input",{type:"number",min:"1",value:xe.port,onChange:je=>vr("port",je.target.value),disabled:Dr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none"})]}),v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Benutzer"}),v.jsx("input",{type:"text",value:xe.username,onChange:je=>vr("username",je.target.value),disabled:Dr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none"})]})]}),v.jsxs("div",{className:"grid gap-1",children:[v.jsxs("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide",children:[v.jsx("label",{htmlFor:"server-ssh-password",className:"cursor-pointer",children:"Passwort"}),v.jsx("button",{type:"button",onClick:()=>Ne(je=>!je),disabled:Dr,className:"text-[11px] font-medium text-blue-500 transition hover:text-blue-800 disabled:opacity-50",children:Ie?"Verbergen":"Anzeigen"})]}),v.jsx("input",{id:"server-ssh-password",type:Ie?"text":"password",value:xe.password,onChange:je=>vr("password",je.target.value),disabled:Dr,className:"w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none",placeholder:"Passwort für den SSH-Benutzer",autoComplete:"off",spellCheck:!1}),ce&&!xe.password&&v.jsx("span",{className:"text-[11px] text-stormGrey-500",children:"Ein Passwort ist gespeichert. Neuer Inhalt ersetzt es oder lösche die Konfiguration unten."})]}),v.jsxs("label",{className:"grid gap-1",children:[v.jsx("span",{className:"text-xs uppercase tracking-wide",children:"Weitere SSH-Argumente"}),v.jsx("textarea",{rows:3,value:xe.extraSshArgs,onChange:je=>vr("extraSshArgs",je.target.value),disabled:Dr,className:"w-full rounded-md border border-gray-300 px-3 py-2 font-mono text-[11px] focus:border-blue-500 focus:outline-none",placeholder:"je Zeile ein Argument (optional)"})]}),v.jsxs("div",{className:"mt-2 grid gap-2",children:[v.jsx(V.Button,{onClick:Gn,disabled:Dr,children:ct?"Speichern…":"SSH-Konfiguration speichern"}),v.jsx(V.Button,{onClick:za,disabled:Dr,className:"bg-arcticBlue-500 hover:bg-arcticBlue-600",children:tt?"Test läuft…":"Verbindung testen"}),v.jsx(V.Button,{onClick:on,disabled:Dr,className:"bg-sunsetCoral-500 hover:bg-sunsetCoral-600",children:Vt?"Löschen…":"SSH-Einstellungen löschen"})]}),Dt&&v.jsx("p",{className:"text-xs text-stormGrey-500",children:"SSH-Konfiguration wird geladen…"}),Gt&&v.jsx("p",{className:"text-xs text-sunsetCoral-500",children:Gt}),Yt&&v.jsx("p",{className:`text-xs ${Yt.success?"text-mossGreen-600":"text-sunsetCoral-500"}`,children:Yt.success?"SSH-Verbindung erfolgreich.":`SSH-Verbindung fehlgeschlagen: ${Yt.error}`})]})]}),v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsxs(V.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:[v.jsx("span",{children:"Update-Skript"}),v.jsxs("span",{className:"text-xs",children:["Quelle: ",X]})]})}),v.jsxs(V.CardBody,{className:"flex flex-col gap-3 p-4",children:[v.jsx("textarea",{value:he,onChange:je=>pe(je.target.value),rows:12,disabled:!d||ve||ke||!r,className:"w-full rounded-md border border-blue-gray-100 px-3 py-2 font-mono text-xs focus:border-blue-500 focus:outline-none"}),ke&&v.jsx("p",{className:"text-xs text-stormGrey-500",children:"Skript wird geladen…"}),Pe&&v.jsx("p",{className:"text-xs text-sunsetCoral-500",children:Pe}),v.jsxs("div",{className:"grid gap-2",children:[v.jsx(V.Button,{onClick:Vr,disabled:!d||!gt||ve||ke||!r,children:"Speichern"}),v.jsx(V.Button,{color:"purple",onClick:go,disabled:!d||!Oe||Oe.source!=="custom"||ve||ke||!r,className:"bg-sunsetCoral-500 hover:bg-sunsetCoral-600",children:"Standard wiederherstellen"})]}),(Oe==null?void 0:Oe.customUpdatedAt)&&v.jsxs("p",{className:"text-xs text-stormGrey-500",children:["Zuletzt geändert: ",cl(Oe.customUpdatedAt)]})]})]})]}),C&&v.jsxs(V.Card,{children:[v.jsx(V.CardHeader,{variant:"gradient",color:"gray",className:"mb-5 p-4",children:v.jsx(V.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:v.jsx("span",{children:"Doppelte Stacks"})})}),v.jsxs(V.CardBody,{className:"flex flex-col gap-4 p-4",children:[v.jsxs("div",{className:"flex items-start justify-between gap-4",children:[v.jsxs("div",{className:"space-y-1",children:[v.jsx("p",{className:"text-sm antialiased font-sans font-light leading-normal text-inherit",children:lt?"Analyse läuft…":Mr.groups===0?"Keine Duplikate gefunden":`${Mr.groups} Stack-Namen mit insgesamt ${Mr.duplicateCount} Duplikaten gefunden`}),Rt&&!lt&&v.jsxs("p",{className:"mt-1 text-xs text-gray-500",children:["Stand: ",Rt.toLocaleString("de-DE",{hour:"2-digit",minute:"2-digit",second:"2-digit"})]})]}),v.jsx(V.Button,{onClick:()=>Me({silent:!1}),disabled:lt||Ke||ft!==null,children:"Aktualisieren"})]}),rt&&v.jsx(V.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-800",children:rt}),lt?v.jsx("div",{className:"flex flex-col gap-4 p-4 text-sm text-blue-gray-500",children:"Daten werden geladen…"}):Mr.groups===0?v.jsx("div",{className:"rounded-xl border-mossGreen-500/80 bg-mossGreen-900/90 text-mossGreen-100 p-6 text-center text-sm text-white",children:"Es wurden keine doppelten Stacks gefunden."}):v.jsx("div",{className:"space-y-5",children:Be.map(je=>{var pt,Lt,or;const Le=(pt=je==null?void 0:je.canonical)==null?void 0:pt.Id,ze=(je==null?void 0:je.duplicates)||[],Ue=ft===String(Le);return v.jsxs("div",{className:"rounded-xl border border-gray-700 bg-gray-800/70 p-6 shadow",children:[v.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-start md:justify-between",children:[v.jsxs("div",{className:"space-y-1",children:[v.jsxs("div",{className:"flex items-center gap-2",children:[v.jsx("h3",{className:"text-lg font-semibold text-white",children:je.name}),v.jsxs("span",{className:"rounded-full bg-amber-500/20 px-3 py-0.5 text-xs font-medium text-amber-200",children:[ze.length," Duplikat",ze.length===1?"":"e"]})]}),v.jsxs("p",{className:"text-sm text-gray-300",children:["Behaltener Stack: ID ",Le]}),v.jsxs("p",{className:"text-xs text-gray-500",children:["Typ: ",Xw((Lt=je==null?void 0:je.canonical)==null?void 0:Lt.Type)," • Erstellt: ",cl((or=je==null?void 0:je.canonical)==null?void 0:or.Created)]})]}),v.jsx("button",{type:"button",onClick:()=>Ir(je),disabled:!w||Ue||Ke||lt,className:"self-start rounded-lg bg-sunsetCoral-500 px-4 py-2 text-sm font-semibold text-white transition hover:bg-sunsetCoral-600 disabled:opacity-50",children:Ue?"Bereinigung läuft…":`Bereinigen (${ze.length})`})]}),v.jsx("div",{className:"mt-5 grid gap-3",children:ze.map(gr=>v.jsx("div",{className:"rounded-lg border border-sunsetCoral-500/40 bg-sunsetCoral-900/20 p-4 text-sm text-white",children:v.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[v.jsxs("span",{className:"font-semibold text-white",children:["ID: ",gr.Id]}),v.jsxs("span",{children:["Typ: ",Xw(gr.Type)]}),v.jsxs("span",{children:["Erstellt: ",cl(gr.Created)]})]})},gr.Id))})]},Le||je.name)})})]})]})]})]})]})})}const EV="/assets/pattern-68ea7609.png";function AV(){const e=Hn(),{setSession:t,refreshSession:r}=Yr(),[n,o]=P.useState(""),[a,i]=P.useState(""),[l,f]=P.useState(!1),[g,m]=P.useState(null),[S,O]=P.useState(!1);P.useEffect(()=>{let C=!0;const w=new AbortController;return(async()=>{try{const d=await fetch("/api/setup/status",{credentials:"include",signal:w.signal});if(d.ok&&!(await d.json()).setupComplete&&C){e("/setup",{replace:!0});return}const s=await fetch("/api/auth/session",{credentials:"include",signal:w.signal});if(s.ok){const c=await s.json();if(c!=null&&c.user&&t(c),c!=null&&c.user&&C){const u=!!c.user.requiresSecurityPhraseDownload;e(u?"/dashboard/security-phrase":"/dashboard/stacks",{replace:!0});return}}}catch(d){d.name!=="AbortError"&&console.error("⚠️ [Auth] Initiale Prüfung fehlgeschlagen:",d)}finally{C&&O(!0)}})(),()=>{C=!1,w.abort()}},[e,t]);const T=P.useCallback(async C=>{var d,s;if(C.preventDefault(),l)return;m(null);const w=n.trim(),b=a.trim();if(!w||!b){m("Bitte fülle beide Felder aus.");return}f(!0);try{const c=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({identifier:w,password:b})}),u=await c.json().catch(()=>({}));if(!c.ok){if(c.status===401||u.error==="INVALID_CREDENTIALS")m("Ungültige Zugangsdaten.");else if(u.error==="MISSING_CREDENTIALS")m("Bitte fülle beide Felder aus.");else if(u.error==="SETUP_REQUIRED"||u.error==="SUPERUSER_REQUIRED"){e("/setup",{replace:!0});return}else u.error==="USER_INACTIVE"?m("Dieses Konto ist deaktiviert. Bitte wende dich an einen Administrator."):m("Anmeldung fehlgeschlagen. Bitte versuche es erneut.");return}let h=null;if(u!=null&&u.user)t(u),h=u;else{const x=await r();x!=null&&x.ok&&((d=x==null?void 0:x.data)!=null&&d.user)&&(h=x.data)}const y=!!((s=h==null?void 0:h.user)!=null&&s.requiresSecurityPhraseDownload);e(y?"/dashboard/security-phrase":"/dashboard/stacks",{replace:!0})}catch(c){console.error("⚠️ [Auth] Anmeldung fehlgeschlagen:",c),m("Netzwerkfehler – bitte erneut versuchen.")}finally{f(!1)}},[n,a,l,e,r,t]);return S?v.jsxs("section",{className:"m-8 flex gap-4",children:[v.jsxs("div",{className:"w-full lg:w-3/5 mt-24",children:[v.jsxs("div",{className:"text-center",children:[v.jsx(V.Typography,{variant:"h2",className:"font-bold mb-4",children:"Anmelden"}),v.jsx(V.Typography,{variant:"paragraph",color:"blue-gray",className:"text-lg font-normal",children:"Gib deine E-Mail oder deinen Benutzernamen sowie dein Passwort ein, um dich anzumelden."})]}),v.jsxs("form",{className:"mt-8 mb-2 mx-auto w-80 max-w-screen-lg lg:w-1/2",onSubmit:T,children:[v.jsxs("div",{className:"mb-1 flex flex-col gap-6",children:[v.jsx(V.Typography,{variant:"small",color:"blue-gray",className:"-mb-3 font-medium",children:"E-Mail oder Benutzername"}),v.jsx(V.Input,{size:"lg",placeholder:"E-Mail oder Benutzername",value:n,onChange:C=>o(C.target.value),required:!0,autoFocus:!0,disabled:l,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}}),v.jsx(V.Typography,{variant:"small",color:"blue-gray",className:"-mb-3 font-medium",children:"Passwort"}),v.jsx(V.Input,{type:"password",size:"lg",placeholder:"********",value:a,onChange:C=>i(C.target.value),required:!0,disabled:l,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),g&&v.jsx(V.Alert,{color:"red",className:"mt-2 border border-red-200 bg-red-50 text-red-700",children:g}),v.jsx(V.Button,{type:"submit",className:"mt-6",fullWidth:!0,disabled:l,children:l?"Anmeldung läuft ...":"Anmelden"}),v.jsx(V.Typography,{as:"button",type:"button",onClick:()=>e("/auth/forgot-password"),className:"mt-4 text-sm font-medium text-blue-600 transition hover:text-blue-800",children:"Passwort vergessen?"})]})]}),v.jsx("div",{className:"w-2/5 h-full hidden lg:block",children:v.jsx("img",{src:EV,className:"h-full w-full object-cover rounded-3xl"})})]}):v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Pruefe Anmeldestatus ..."})})}function RV(){return v.jsxs("section",{className:"m-8 flex",children:[v.jsx("div",{className:"w-2/5 h-full hidden lg:block",children:v.jsx("img",{src:"/img/pattern.png",className:"h-full w-full object-cover rounded-3xl"})}),v.jsxs("div",{className:"w-full lg:w-3/5 flex flex-col items-center justify-center",children:[v.jsxs("div",{className:"text-center",children:[v.jsx(V.Typography,{variant:"h2",className:"font-bold mb-4",children:"Join Us Today"}),v.jsx(V.Typography,{variant:"paragraph",color:"blue-gray",className:"text-lg font-normal",children:"Enter your email and password to register."})]}),v.jsxs("form",{className:"mt-8 mb-2 mx-auto w-80 max-w-screen-lg lg:w-1/2",children:[v.jsxs("div",{className:"mb-1 flex flex-col gap-6",children:[v.jsx(V.Typography,{variant:"small",color:"blue-gray",className:"-mb-3 font-medium",children:"Your email"}),v.jsx(V.Input,{size:"lg",placeholder:"name@mail.com",className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsx(V.Checkbox,{label:v.jsxs(V.Typography,{variant:"small",color:"gray",className:"flex items-center justify-start font-medium",children:["I agree the ",v.jsx("a",{href:"#",className:"font-normal text-black transition-colors hover:text-gray-900 underline",children:"Terms and Conditions"})]}),containerProps:{className:"-ml-2.5"}}),v.jsx(V.Button,{className:"mt-6",fullWidth:!0,children:"Register Now"}),v.jsxs("div",{className:"space-y-4 mt-8",children:[v.jsxs(V.Button,{size:"lg",color:"white",className:"flex items-center gap-2 justify-center shadow-md",fullWidth:!0,children:[v.jsxs("svg",{width:"17",height:"16",viewBox:"0 0 17 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[v.jsxs("g",{clipPath:"url(#clip0_1156_824)",children:[v.jsx("path",{d:"M16.3442 8.18429C16.3442 7.64047 16.3001 7.09371 16.206 6.55872H8.66016V9.63937H12.9813C12.802 10.6329 12.2258 11.5119 11.3822 12.0704V14.0693H13.9602C15.4741 12.6759 16.3442 10.6182 16.3442 8.18429Z",fill:"#4285F4"}),v.jsx("path",{d:"M8.65974 16.0006C10.8174 16.0006 12.637 15.2922 13.9627 14.0693L11.3847 12.0704C10.6675 12.5584 9.7415 12.8347 8.66268 12.8347C6.5756 12.8347 4.80598 11.4266 4.17104 9.53357H1.51074V11.5942C2.86882 14.2956 5.63494 16.0006 8.65974 16.0006Z",fill:"#34A853"}),v.jsx("path",{d:"M4.16852 9.53356C3.83341 8.53999 3.83341 7.46411 4.16852 6.47054V4.40991H1.51116C0.376489 6.67043 0.376489 9.33367 1.51116 11.5942L4.16852 9.53356Z",fill:"#FBBC04"}),v.jsx("path",{d:"M8.65974 3.16644C9.80029 3.1488 10.9026 3.57798 11.7286 4.36578L14.0127 2.08174C12.5664 0.72367 10.6469 -0.0229773 8.65974 0.000539111C5.63494 0.000539111 2.86882 1.70548 1.51074 4.40987L4.1681 6.4705C4.8001 4.57449 6.57266 3.16644 8.65974 3.16644Z",fill:"#EA4335"})]}),v.jsx("defs",{children:v.jsx("clipPath",{id:"clip0_1156_824",children:v.jsx("rect",{width:"16",height:"16",fill:"white",transform:"translate(0.5)"})})})]}),v.jsx("span",{children:"Sign in With Google"})]}),v.jsxs(V.Button,{size:"lg",color:"white",className:"flex items-center gap-2 justify-center shadow-md",fullWidth:!0,children:[v.jsx("img",{src:"/img/twitter-logo.svg",height:24,width:24,alt:""}),v.jsx("span",{children:"Sign in With Twitter"})]})]}),v.jsxs(V.Typography,{variant:"paragraph",className:"text-center text-blue-gray-500 font-medium mt-4",children:["Already have an account?",v.jsx(HC,{to:"/auth/sign-in",className:"text-gray-900 ml-1",children:"Sign in"})]})]})]})]})}function oN(){const e=Hn(),{logout:t}=Yr(),[r,n]=P.useState("abmelden..."),[o,a]=P.useState(null);return P.useEffect(()=>{let i=!1;return(async()=>{try{n("Abmeldung läuft …"),a(null),await t()}catch(f){i||(console.error("⚠️ [Auth] Logout fehlgeschlagen:",f),a("Abmeldung fehlgeschlagen. Bitte versuche es erneut."))}finally{i||e("/auth/sign-in",{replace:!0})}})(),()=>{i=!0}},[t,e]),v.jsx("section",{className:"m-8 flex min-h-[60vh] items-center justify-center",children:v.jsx(V.Card,{className:"w-full max-w-md border border-blue-gray-100 shadow-sm",children:v.jsxs(V.CardBody,{className:"space-y-4 text-center",children:[v.jsxs("div",{className:"flex items-center justify-center gap-3",children:[v.jsx(V.Spinner,{className:"h-5 w-5 text-blue-gray-500"}),v.jsx(V.Typography,{color:"blue-gray",className:"text-sm font-medium",children:r})]}),o&&v.jsx(V.Typography,{color:"red",className:"text-sm",children:o}),v.jsx(V.Typography,{className:"text-xs text-blue-gray-400",children:"Du wirst automatisch weitergeleitet …"})]})})})}oN.displayName="/src/pages/auth/sign-out.jsx";const Cc=8,aN=e=>String(e||"").trim().toLowerCase(),MV=(e="")=>{const t=String(e||"").replace(/[\r\n\t]+/g," ").trim().toLowerCase();return t?t.split(/\s+/).filter(Boolean):[]},IV=(e=[])=>{const t=e.map(aN).filter(Boolean);return{words:t,canonical:t.join("")}};function DV(){const e=Hn(),{showToast:t}=Fa(),{user:r}=Yr(),[n,o]=P.useState(""),[a,i]=P.useState(Array(Cc).fill("")),[l,f]=P.useState(""),[g,m]=P.useState(""),[S,O]=P.useState(""),[T,C]=P.useState(!1),[w,b]=P.useState(""),[d,s]=P.useState(""),[c,u]=P.useState(""),[h,y]=P.useState(!1),[x,E]=P.useState("");P.useEffect(()=>{r&&e("/dashboard/stacks",{replace:!0})},[r,e]);const k=P.useMemo(()=>g.trim()?MV(g):a.map(aN).filter(Boolean),[g,a]),j=P.useCallback((z,H)=>{i(Y=>{const G=[...Y];return G[z]=H,G})},[]),A=P.useCallback(z=>{const[H]=z.target.files||[];if(!H){f(""),m("");return}f(H.name);const Y=new FileReader;Y.onload=G=>{var $;const B=String((($=G.target)==null?void 0:$.result)||"");m(B),i(Array(Cc).fill(""))},Y.onerror=()=>{f(""),m(""),t({variant:"error",title:"Datei konnte nicht gelesen werden",description:"Bitte lade die Datei erneut hoch."})},Y.readAsText(H)},[t]),M=P.useCallback(async()=>{var B,$,q;O(""),b("");const z=n.trim();if(!z){O("Bitte gib deinen Benutzernamen ein.");return}const H=k,Y=!!g.trim();if(!Y&&H.length!==Cc){O("Bitte gib alle acht Wörter des Sicherheitsschlüssels ein.");return}if(Y&&H.length!==Cc){O("Die hochgeladene Datei enthält nicht genau acht Wörter.");return}const G=IV(H);if(!G.canonical){O("Der Sicherheitsschlüssel ist ungültig oder leer.");return}C(!0);try{const oe=(B=(await Je.post("/api/auth/recover/verify",{username:z,phrase:G.canonical,words:G.words})).data)==null?void 0:B.token;if(!oe)throw new Error("TOKEN_MISSING");b(oe),t({variant:"success",title:"Sicherheitsschlüssel bestätigt",description:"Du kannst jetzt ein neues Passwort festlegen."})}catch(ee){const oe=(q=($=ee.response)==null?void 0:$.data)==null?void 0:q.error;O(oe==="USER_NOT_FOUND"?"Der angegebene Benutzer wurde nicht gefunden.":oe==="PHRASE_MISMATCH"?"Der Sicherheitsschlüssel passt nicht zum Benutzer.":oe==="PHRASE_NOT_INITIALIZED"?"Für diesen Benutzer ist aktuell kein Sicherheitsschlüssel hinterlegt.":oe==="PHRASE_REQUIRED"?"Bitte gib den Sicherheitsschlüssel ein.":oe==="USERNAME_REQUIRED"?"Der Benutzername darf nicht leer sein.":oe==="INVALID_PASSWORD"?"Der Sicherheitsschlüssel ist ungültig.":"Die Sicherheitsprüfung ist fehlgeschlagen. Bitte versuche es erneut.")}finally{C(!1)}},[g,k,t,n]),D=P.useCallback(async()=>{var Y,G;if(E(""),!w){E("Bitte bestätige zuerst deinen Sicherheitsschlüssel.");return}const z=d.trim(),H=c.trim();if(!z||!H){E("Bitte gib das neue Passwort zweimal ein.");return}if(z!==H){E("Die Passwörter stimmen nicht überein.");return}y(!0);try{await Je.post("/api/auth/recover/reset",{token:w,password:z,confirmPassword:H}),t({variant:"success",title:"Passwort aktualisiert",description:"Du kannst dich jetzt mit deinem neuen Passwort anmelden."}),e("/auth/sign-in",{replace:!0})}catch(B){const $=(G=(Y=B.response)==null?void 0:Y.data)==null?void 0:G.error;$==="TOKEN_INVALID_OR_EXPIRED"?(E("Die Wiederherstellungssitzung ist abgelaufen. Bitte starte den Vorgang erneut."),b("")):E($==="PASSWORD_TOO_SHORT"?"Das Passwort muss mindestens 8 Zeichen enthalten.":$==="PASSWORD_REQUIRED"?"Bitte gib ein neues Passwort ein.":$==="PASSWORD_MISMATCH"?"Die Passwörter stimmen nicht überein.":"Das Passwort konnte nicht zurückgesetzt werden. Bitte versuche es erneut.")}finally{y(!1)}},[c,e,d,t,w]),L=!!w;return v.jsx("section",{className:"m-8 flex justify-center",children:v.jsxs(V.Card,{className:"w-full max-w-3xl",children:[v.jsxs(V.CardHeader,{floated:!1,shadow:!1,className:"rounded-none border-b border-blue-gray-50 bg-white px-6 py-5",children:[v.jsx(V.Typography,{variant:"h4",color:"blue-gray",className:"font-semibold",children:"Passwort zurücksetzen"}),v.jsx(V.Typography,{color:"blue-gray",className:"mt-1 text-sm",children:"Gib deinen Benutzernamen und den Sicherheitsschlüssel (8 Wörter) ein oder lade die gespeicherte Schlüsseldatei."})]}),v.jsxs(V.CardBody,{className:"space-y-8",children:[v.jsxs("div",{className:"space-y-4",children:[v.jsx(V.Typography,{variant:"h6",color:"blue-gray",children:"Schritt 1: Sicherheitsschlüssel prüfen"}),v.jsxs("div",{children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Benutzername"}),v.jsx(V.Input,{size:"lg",placeholder:"Benutzername",value:n,onChange:z=>o(z.target.value),disabled:L||T,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Sicherheitsschlüssel eingeben"}),v.jsx("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-4 min-w-[20px] [&>div]:!min-w-0",children:a.map((z,H)=>v.jsx(V.Input,{placeholder:`Wort ${H+1}`,value:z,onChange:Y=>j(H,Y.target.value),disabled:L||T||!!g.trim(),className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}},`phrase-input-${H}`))})]}),v.jsxs("div",{children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Alternativ: Schlüsseldatei (.txt) hochladen"}),v.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-center",children:[v.jsx("input",{type:"file",accept:".txt",onChange:A,disabled:L||T,className:"block w-full max-w-xs text-sm text-blue-gray-500 file:mr-4 file:rounded-md file:border-0 file:bg-blue-gray-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-gray-700 hover:file:bg-blue-gray-100"}),l&&v.jsxs(V.Typography,{className:"text-xs text-blue-gray-500",children:["Ausgewählte Datei: ",v.jsx("span",{className:"font-medium text-blue-gray-700",children:l})]})]})]}),S&&v.jsx(V.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:S}),v.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[v.jsx(V.Button,{color:"blue",className:"normal-case",onClick:M,disabled:T||L,children:T?v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx(V.Spinner,{className:"h-4 w-4"})," Prüfe Sicherheitsschlüssel ..."]}):"Sicherheitsschlüssel prüfen"}),L&&v.jsx(V.Typography,{className:"text-sm text-blue-gray-500",children:"Die Wiederherstellung bleibt für kurze Zeit aktiv. Bitte setze dein Passwort zeitnah zurück."})]})]}),v.jsxs("div",{className:"space-y-4",children:[v.jsx(V.Typography,{variant:"h6",color:L?"blue-gray":"gray",children:"Schritt 2: Neues Passwort festlegen"}),!L&&v.jsx(V.Typography,{className:"text-sm text-blue-gray-500",children:"Nach erfolgreicher Prüfung des Sicherheitsschlüssels kannst du hier ein neues Passwort vergeben."}),L&&v.jsxs("div",{className:"space-y-4",children:[v.jsxs("div",{children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Neues Passwort"}),v.jsx(V.Input,{type:"password",size:"lg",placeholder:"Neues Passwort",value:d,onChange:z=>s(z.target.value),disabled:h,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),v.jsxs("div",{children:[v.jsx(V.Typography,{className:"mb-2 block text-xs font-semibold uppercase text-blue-gray-500",children:"Passwort bestätigen"}),v.jsx(V.Input,{type:"password",size:"lg",placeholder:"Passwort bestätigen",value:c,onChange:z=>u(z.target.value),disabled:h,className:" !border-t-blue-gray-200 focus:!border-t-gray-900",labelProps:{className:"before:content-none after:content-none"}})]}),x&&v.jsx(V.Alert,{color:"red",className:"border border-red-200 bg-red-50 text-red-700",children:x}),v.jsx(V.Button,{color:"green",className:"normal-case",onClick:D,disabled:h,children:h?v.jsxs("span",{className:"flex items-center gap-2",children:[v.jsx(V.Spinner,{className:"h-4 w-4"})," Speichere Passwort ..."]}):"Neues Passwort speichern"})]})]}),v.jsx("div",{className:"border-t border-blue-gray-50 pt-4",children:v.jsx(V.Typography,{as:"button",type:"button",onClick:()=>e("/auth/sign-in"),className:"text-sm font-medium text-blue-600 transition hover:text-blue-800",children:"Zurück zur Anmeldung"})})]})]})})}function va({permission:e,requiredLevel:t="full",loadingFallback:r=null,children:n}){const{initialized:o,loading:a,hasPermission:i}=Yr();return e?!o||a?r??v.jsx("div",{className:"flex min-h-[200px] items-center justify-center",children:v.jsx(V.Typography,{variant:"small",color:"blue-gray",children:"Berechtigungen werden geladen …"})}):i(e,t)?n:v.jsx("div",{className:"mt-12 flex items-center justify-center px-4",children:v.jsx(V.Card,{className:"max-w-xl border border-blue-gray-100 shadow-sm",children:v.jsxs(V.CardBody,{className:"space-y-3 text-center",children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:"Kein Zugriff auf diesen Bereich"}),v.jsxs(V.Typography,{variant:"small",className:"text-blue-gray-500",children:["Für diese Funktion wird die Berechtigung ",v.jsx("code",{children:e})," benötigt."]})]})})}):n}va.propTypes={permission:xn.string,requiredLevel:xn.string,loadingFallback:xn.node,children:xn.node.isRequired};const Eo={className:"w-5 h-5 text-inherit"},o0=[{layout:"dashboard",pages:[{icon:v.jsx(h4,{...Eo}),name:"stacks",path:"/stacks",element:v.jsx(rV,{}),permission:null},{icon:v.jsx(S4,{...Eo}),name:"wartung",path:"/maintenance",element:v.jsx(va,{permission:"maintenance-access",requiredLevel:"read",children:v.jsx(oV,{})}),permission:{key:"maintenance-access",requiredLevel:"read"}},{icon:v.jsx(a4,{...Eo}),name:"logs",path:"/logs",element:v.jsx(va,{permission:"logs-access",requiredLevel:"full",children:v.jsx(fV,{})}),permission:{key:"logs-access",requiredLevel:"full"}},{icon:v.jsx(x4,{...Eo}),name:"benutzer",path:"/users",element:v.jsx(va,{permission:"users-access",requiredLevel:"read",children:v.jsx(gV,{})}),permission:{key:"users-access",requiredLevel:"read"}},{icon:v.jsx(b4,{...Eo}),name:"rechtegruppen",path:"/usergroups",element:v.jsx(va,{permission:"user-groups-access",requiredLevel:"read",children:v.jsx(bV,{})}),permission:{key:"user-groups-access",requiredLevel:"read"}}]},{title:"auth pages",layout:"auth",pages:[{icon:v.jsx(d4,{...Eo}),name:"sign in",path:"/sign-in",element:v.jsx(AV,{})},{icon:v.jsx(r4,{...Eo}),name:"passwort vergessen",path:"/forgot-password",element:v.jsx(DV,{}),hidden:!0},{icon:v.jsx(KI,{...Eo}),name:"log out",path:"/logout",element:v.jsx(oN,{})},{icon:v.jsx(l4,{...Eo}),name:"sign up",path:"/sign-up",element:v.jsx(RV,{})}]}];function iN(){const[e,t]=Gf(),{sidenavType:r}=e,n=Da(),o=Hn(),[a,i]=P.useState(!1),[l,f]=P.useState(!0),{initialized:g,loading:m,isAuthenticated:S,refreshSession:O,user:T}=Yr(),C=P.useCallback(async()=>{i(!1);try{const b=await fetch("/api/setup/status",{credentials:"include"});if(!b.ok)throw new Error("STATUS_REQUEST_FAILED");const d=await b.json();f(!d.setupComplete)}catch(b){console.error("⚠️ [Setup] Statusprüfung fehlgeschlagen:",b),f(!0)}finally{i(!0)}},[]);if(P.useEffect(()=>{C()},[C]),P.useEffect(()=>{!a||l||g||m||O()},[a,l,g,m,O]),P.useEffect(()=>{if(!a)return;if(l){n.pathname!=="/setup"&&o("/setup",{replace:!0});return}if(!g)return;if(!S){n.pathname!=="/auth/sign-in"&&o("/auth/sign-in",{replace:!0});return}const b=!!(T!=null&&T.requiresSecurityPhraseDownload),d=n.pathname==="/dashboard/security-phrase";if(b&&!d){o("/dashboard/security-phrase",{replace:!0});return}!b&&d&&o("/dashboard/stacks",{replace:!0})},[a,l,g,S,n.pathname,o,T==null?void 0:T.requiresSecurityPhraseDownload]),P.useEffect(()=>{if(!a||l||!g||m)return;if(!S){n.pathname!=="/auth/sign-in"&&o("/auth/sign-in",{replace:!0});return}const b=n.pathname.startsWith("/auth/"),d=n.pathname==="/auth/logout";(n.pathname==="/setup"||b&&!d)&&o("/dashboard/stacks",{replace:!0})},[a,l,g,m,S,n.pathname,o]),!a)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Pruefe Systemkonfiguration ..."})});if(l)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Setup erforderlich ..."})});if(!g||m)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Pruefe Anmeldung ..."})});if(!S)return v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Weiterleitung zur Anmeldung ..."})});const w=n.pathname==="/dashboard/security-phrase";return v.jsxs("div",{className:"min-h-screen bg-blue-gray-50/50",children:[!w&&v.jsx(qf,{routes:o0,brandImg:r==="dark"?"/img/logo-ct.png":"/img/logo-ct-dark.png"}),v.jsxs("div",{className:w?"":"p-4 xl:ml-80",children:[!w&&v.jsxs(v.Fragment,{children:[v.jsx(Fk,{}),v.jsx(zk,{}),v.jsx(V.IconButton,{size:"lg",color:"white",className:"fixed bottom-8 right-8 z-40 rounded-full shadow-blue-gray-900/10 xl:hidden",ripple:!1,onClick:()=>mb(t,!0),children:v.jsx(GC,{className:"h-5 w-5"})})]}),v.jsxs(dm,{children:[o0.map(({layout:b,pages:d})=>b==="dashboard"&&d.map(({path:s,element:c})=>v.jsx(to,{exact:!0,path:s,element:c}))),v.jsx(to,{path:"security-phrase",element:v.jsx(NV,{})}),v.jsx(to,{path:"users/:userId",element:v.jsx(va,{permission:"users-access",requiredLevel:"read",children:v.jsx(_V,{})})}),v.jsx(to,{path:"usergroups/:groupId",element:v.jsx(va,{permission:"user-groups-access",requiredLevel:"read",children:v.jsx(TV,{})})}),v.jsx(to,{path:"maintenance/servers/:serverId",element:v.jsx(va,{permission:"maintenance-server-manage",requiredLevel:"read",children:v.jsx(jV,{})})})]}),!w&&v.jsx("div",{className:"text-blue-gray-600",children:v.jsx(Bk,{})})]})]})}iN.displayName="/src/layout/dashboard.jsx";function sN(){return v.jsx("div",{className:"relative min-h-screen w-full",children:v.jsx(dm,{children:o0.map(({layout:e,pages:t})=>e==="auth"&&t.map(({path:r,element:n})=>v.jsx(to,{exact:!0,path:r,element:n})))})})}sN.displayName="/src/layout/Auth.jsx";const dl=["Willkommen","Superuser","Server & API-Key","Stack auswählen (optional)","Abschluss"],LV=e=>typeof(e==null?void 0:e.Name)=="string"&&e.Name.toLowerCase().includes("stackpulse"),FV={username:"",email:"",password:""},zV={name:"",url:""};function BV(){var qe,Ke,xt,rt,dt,Rt;const e=Hn(),[t,r]=P.useState(null),[n,o]=P.useState(!0),[a,i]=P.useState(null),[l,f]=P.useState(FV),[g,m]=P.useState(zV),[S,O]=P.useState(""),[T,C]=P.useState({loading:!1,success:!1,tried:!1,message:""}),[w,b]=P.useState({loading:!1,fetched:!1,error:"",items:[],updatedAt:null}),[d,s]=P.useState(""),[c,u]=P.useState(""),[h,y]=P.useState(0),[x,E]=P.useState(!1),[k,j]=P.useState(null),[A,M]=P.useState(!1);P.useEffect(()=>{let Ae=!0;const ft=new AbortController;return(async()=>{var Z,ue,ne;o(!0),i(null);try{const xe=await fetch("/api/setup/status",{signal:ft.signal,credentials:"include"});if(!xe.ok)throw new Error("STATUS_REQUEST_FAILED");const se=await xe.json();if(!Ae)return;if(r(se),se.setupComplete){e("/auth/sign-in",{replace:!0});return}f(Ce=>{var Ie,Ne,ct,Ve,tt,wt;return{username:(Ne=(Ie=se.envDefaults)==null?void 0:Ie.superuserUsername)!=null&&Ne.length?se.envDefaults.superuserUsername:Ce.username,email:(Ve=(ct=se.envDefaults)==null?void 0:ct.superuserEmail)!=null&&Ve.length?se.envDefaults.superuserEmail:Ce.email,password:(wt=(tt=se.envDefaults)==null?void 0:tt.superuserPassword)!=null&&wt.length?se.envDefaults.superuserPassword:Ce.password}}),m(Ce=>{var Ie,Ne,ct,Ve;return{name:(Ne=(Ie=se.envDefaults)==null?void 0:Ie.serverName)!=null&&Ne.length?se.envDefaults.serverName:Ce.name,url:(Ve=(ct=se.envDefaults)==null?void 0:ct.serverUrl)!=null&&Ve.length?se.envDefaults.serverUrl:Ce.url}}),O(Ce=>{var Ie,Ne;return(Ne=(Ie=se.envDefaults)==null?void 0:Ie.apiKeyValue)!=null&&Ne.length?se.envDefaults.apiKeyValue:Ce});const ce=((Z=se.selfStack)==null?void 0:Z.current)||((ue=se.envDefaults)==null?void 0:ue.selfStackId)||"";u(ce),s((ne=se.selfStack)!=null&&ne.current?String(se.selfStack.current):""),y(0),C({loading:!1,success:!1,tried:!1,message:""}),b({loading:!1,fetched:!1,error:"",items:[],updatedAt:null}),j(null),M(!1)}catch(xe){if(xe.name==="AbortError")return;console.error("⚠️ [Setup] Status konnte nicht geladen werden:",xe),Ae&&i("Setup-Status konnte nicht geladen werden. Bitte Seite aktualisieren.")}finally{Ae&&o(!1)}})(),()=>{Ae=!1,ft.abort()}},[e]);const D=(t==null?void 0:t.envDefaults)||{},L=!!((qe=t==null?void 0:t.requirements)!=null&&qe.superuser),z=!!((Ke=t==null?void 0:t.requirements)!=null&&Ke.server),H=!!((xt=t==null?void 0:t.requirements)!=null&&xt.apiKey),Y=!!((rt=t==null?void 0:t.apiKeys)!=null&&rt.count),G=!!(D.serverUrl||(dt=t==null?void 0:t.servers)!=null&&dt.envProvided),B=!!(D.apiKeyValue||(Rt=t==null?void 0:t.apiKeys)!=null&&Rt.envProvided),$=z||G,q=H||!Y||B,ee=!!D.superuserUsername,oe=!!D.superuserEmail,ge=!!D.superuserPassword,fe=!!D.serverNameFromEnv,re=!!D.serverUrl,be=!!D.apiKeyValue,he=P.useCallback(()=>{C(Ae=>Ae.loading||!Ae.tried?Ae:{loading:!1,success:!1,tried:!1,message:""})},[]),pe=P.useCallback(Ae=>ft=>{const At=ft.target.value;f(Z=>({...Z,[Ae]:At}))},[]),ve=P.useCallback(Ae=>ft=>{if(Ae==="name"&&fe||Ae==="url"&&re)return;const At=ft.target.value;m(Z=>({...Z,[Ae]:At})),he()},[he,fe,re]),me=P.useCallback(Ae=>{be||(O(Ae.target.value),he())},[be,he]),ke=P.useCallback(async()=>{const Ae=g.url.trim(),ft=S.trim();if(!Ae){C({loading:!1,success:!1,tried:!0,message:"Bitte gib eine Server-URL an."});return}if(!ft){C({loading:!1,success:!1,tried:!0,message:"Bitte gib einen API-Key ein."});return}C({loading:!0,success:!1,tried:!0,message:""});try{const At=await fetch("/api/setup/test-portainer",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({server:{name:g.name.trim()||null,url:Ae},apiKey:ft})});if(!At.ok){const ue=(await At.json().catch(()=>({}))).message||"Verbindungstest fehlgeschlagen. Bitte Daten prüfen.";throw new Error(ue)}C({loading:!1,success:!0,tried:!0,message:"Verbindung wurde erfolgreich hergestellt."})}catch(At){console.error("⚠️ [Setup] Verbindungstest fehlgeschlagen:",At),C({loading:!1,success:!1,tried:!0,message:At.message||"Verbindungstest fehlgeschlagen."})}},[S,g]),Fe=P.useCallback(async({silent:Ae=!1}={})=>{if(!T.success){b(Z=>({...Z,error:"Bitte teste zuerst die Verbindung."}));return}const ft=g.url.trim(),At=S.trim();if(!(!ft||!At)){b(Z=>({...Z,loading:!Ae,error:"",fetched:!0}));try{const Z=await fetch("/api/setup/portainer-stacks",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({server:{name:g.name.trim()||null,url:ft},apiKey:At})});if(!Z.ok){const ce=(await Z.json().catch(()=>({}))).message||"Stacks konnten nicht geladen werden.";throw new Error(ce)}const ue=await Z.json().catch(()=>({stacks:[]})),xe=(Array.isArray(ue.stacks)?ue.stacks:[]).filter(LV);b({loading:!1,fetched:!0,error:xe.length?"":"Es wurden keine passenden Stacks gefunden.",items:xe,updatedAt:new Date})}catch(Z){console.error("⚠️ [Setup] Stack-Abruf fehlgeschlagen:",Z),b({loading:!1,fetched:!0,error:Z.message||"Stacks konnten nicht geladen werden.",items:[],updatedAt:new Date})}}},[S,T.success,g]);P.useEffect(()=>{h===3&&T.success&&!w.loading&&!w.fetched&&Fe({silent:!0})},[h,T.success,Fe,w.fetched,w.loading]),P.useEffect(()=>{T.success||(b(Ae=>({...Ae,items:[],fetched:!1,error:""})),s(""))},[T.success]);const Pe=(d||c||"").trim(),te=P.useMemo(()=>{switch(h){case 0:return!0;case 1:return L?l.username.trim()&&l.email.trim()&&l.password.trim():!0;case 2:{const Ae=$?!!g.url.trim():!0,ft=q?!!S.trim():!0,At=$||q?T.success:!0;return Ae&&ft&&At}case 3:return!0;case 4:return!0;default:return!1}},[h,S,T.success,L,q,$,l.email,l.password,l.username,g.url]),Oe=P.useCallback(()=>{h>=dl.length-1||y(Ae=>Math.min(Ae+1,dl.length-1))},[h]),$e=P.useCallback(()=>{y(Ae=>Math.max(Ae-1,0))},[]),Be=P.useCallback(async()=>{if(!(!t||x)){j(null),M(!1),E(!0);try{const Ae={};L&&(Ae.superuser={username:l.username.trim(),email:l.email.trim(),password:l.password}),$&&(Ae.server={name:g.name.trim(),url:g.url.trim()}),(q||S.trim())&&(Ae.apiKey={value:S.trim()}),Pe&&(Ae.selfStackId=Pe);const ft=await fetch("/api/setup/complete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(Ae)});if(!ft.ok){const Z=await ft.json().catch(()=>({})),ue=(()=>{switch(Z.error){case"SERVER_DETAILS_REQUIRED":return"Bitte gib eine gültige Server-URL an.";case"API_KEY_REQUIRED":return"Bitte gib einen gültigen API-Key an.";case"USERNAME_REQUIRED":return"Benutzername wird benötigt.";case"EMAIL_INVALID":return"Bitte gib eine gültige E-Mail-Adresse an.";case"PASSWORD_TOO_SHORT":return"Passwort muss mindestens 8 Zeichen enthalten.";case"INVALID_PASSWORD":return"Das Passwort ist ungültig.";case"API_KEY_ENCRYPT_FAILED":return"API-Key konnte nicht verschlüsselt werden.";case"SUPERUSER_EXISTS":return"Der Superuser wurde bereits angelegt.";default:return"Setup konnte nicht abgeschlossen werden."}})();throw new Error(ue)}const At=await ft.json().catch(()=>({}));r(At.status),M(!0),setTimeout(()=>{e("/auth/sign-in",{replace:!0})},1500)}catch(Ae){console.error("⚠️ [Setup] Abschluss fehlgeschlagen:",Ae),j(Ae.message||"Setup fehlgeschlagen.")}finally{E(!1)}}},[S,Pe,x,e,L,q,$,t,l.email,l.password,l.username,g.name,g.url]),We=P.useMemo(()=>w.items,[w.items]),lt=()=>{switch(h){case 0:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:"Willkommen bei StackPulse"}),v.jsx(V.Typography,{className:"text-sm text-blue-gray-600",children:"Dieser Assistent führt dich durch fünf Schritte:"}),v.jsxs("ol",{className:"list-decimal space-y-2 pl-5 text-sm text-blue-gray-600",children:[v.jsx("li",{children:"Superuser-Zugang anlegen"}),v.jsx("li",{children:"Server-URL und Portainer API-Key hinterlegen und testen"}),v.jsx("li",{children:"Den eigenen Stack in Portainer identifizieren"}),v.jsx("li",{children:"Alle Angaben überprüfen und Setup abschließen"})]}),v.jsx(V.Alert,{color:"blue",className:"bg-blue-50 text-blue-800",children:"Du kannst jederzeit zum vorherigen Schritt zurückkehren. Vorwärts geht es, sobald alle Pflichtangaben eines Schritts erledigt sind."})]});case 1:return L?v.jsxs("div",{className:"space-y-4",children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:"Superuser anlegen"}),v.jsx(V.Typography,{className:"text-sm text-blue-gray-600",children:"Dieser Benutzer hat Zugriff auf alle Funktionen."}),v.jsxs("div",{className:"grid gap-4",children:[v.jsx(V.Input,{label:"Benutzername",value:l.username,onChange:pe("username"),readOnly:ee}),v.jsx(V.Input,{label:"E-Mail-Adresse",type:"email",value:l.email,onChange:pe("email"),readOnly:oe}),v.jsx(V.Input,{label:"Passwort",type:"password",value:l.password,onChange:pe("password"),readOnly:ge})]})]}):v.jsx(V.Alert,{color:"green",className:"bg-green-50 text-green-800",children:"Superuser ist bereits vorhanden. Du kannst direkt zum nächsten Schritt gehen."});case 2:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:"Server und Portainer-Zugriff"}),v.jsx(V.Typography,{className:"text-sm text-blue-gray-600",children:"Gib die URL zu deiner Portainer-Instanz sowie den dazugehörigen Business-API-Key ein und teste anschließend die Verbindung."}),v.jsxs("div",{className:"grid gap-4",children:[v.jsx(V.Input,{label:"Server-Name",value:g.name,onChange:ve("name"),readOnly:fe}),v.jsx(V.Input,{label:"Server-URL",required:$,value:g.url,onChange:ve("url"),readOnly:re}),v.jsx(V.Input,{label:"Portainer API-Key",type:"password",required:q,value:S,onChange:me,readOnly:be}),v.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[v.jsx(V.Button,{color:"blue",onClick:ke,disabled:T.loading,className:"w-full sm:w-auto",children:T.loading?"Teste Verbindung…":"Verbindung testen"}),T.tried&&v.jsx("span",{className:`text-sm ${T.success?"text-green-600":"text-red-600"}`,children:T.message||(T.success?"Verbindung erfolgreich":"Verbindungstest fehlgeschlagen")})]})]})]});case 3:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:"Eigenen Stack wählen (optional)"}),v.jsx(V.Typography,{className:"text-sm text-blue-gray-600",children:"StackPulse kann deinen eigenen Stack hinterlegen, um spätere Wartungsschritte zu erleichtern. Wir versuchen, passende Stacks automatisch zu finden."}),v.jsx(V.Alert,{color:"blue",className:"bg-blue-50 text-blue-800",children:"Dieser Schritt ist optional. Du kannst die Self-Stack-ID später jederzeit im Bereich „Wartung > Server & API-Keys“ hinterlegen oder anpassen."}),v.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(V.Button,{color:"blue",variant:"outlined",onClick:()=>Fe({silent:!1}),disabled:!T.success||w.loading,className:"w-full sm:w-auto",children:w.loading?"Lade…":"Stacks neu laden"}),w.updatedAt&&v.jsxs("span",{className:"text-xs text-blue-gray-500",children:["Stand: ",w.updatedAt.toLocaleTimeString("de-DE")]})]}),w.error&&v.jsx(V.Alert,{color:"red",className:"bg-red-50 text-red-700",children:w.error}),v.jsx("div",{className:"space-y-3",children:We.length===0&&!w.loading?v.jsx("p",{className:"text-sm text-blue-gray-500",children:'Es wurden keine Stacks gefunden, die "stackpulse" im Namen enthalten. Bitte die ID manuell eingeben oder die Suche erneut ausführen.'}):We.map(Ae=>v.jsxs("label",{className:"flex cursor-pointer items-center justify-between rounded-md border border-blue-gray-100 p-3",children:[v.jsxs("div",{children:[v.jsx("p",{className:"text-sm font-medium text-blue-gray-900",children:Ae.Name||"Ohne Namen"}),v.jsxs("p",{className:"text-xs text-blue-gray-500",children:["ID: ",Ae.Id]})]}),v.jsx(V.Radio,{name:"stack-selection",value:String(Ae.Id),checked:d===String(Ae.Id),onChange:()=>{s(String(Ae.Id)),u("")},ripple:!1})]},Ae.Id))}),v.jsxs("div",{className:"space-y-2",children:[v.jsx(V.Typography,{className:"text-sm font-semibold text-blue-gray-700",children:"Alternative: Stack-ID manuell eintragen (optional)"}),v.jsx(V.Input,{label:"Stack-ID (optional)",value:c,onChange:Ae=>{u(Ae.target.value),s("")},placeholder:"z. B. 42"})]})]});case 4:return v.jsxs("div",{className:"space-y-6",children:[v.jsx(V.Typography,{variant:"h5",color:"blue-gray",children:"Zusammenfassung"}),v.jsxs("div",{className:"space-y-4 rounded-md border border-blue-gray-100 p-4 text-sm text-blue-gray-700",children:[v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"Superuser"}),v.jsx("p",{children:L?`${l.username||"-"} (${l.email||"ohne E-Mail"})`:"Bereits vorhanden"})]}),v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"Server"}),v.jsx("p",{children:g.url||"-"})]}),v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"API-Key"}),v.jsx("p",{children:S?"(ausgefüllt)":"nicht angegeben"})]}),v.jsxs("div",{children:[v.jsx("p",{className:"font-semibold",children:"Self-Stack-ID"}),v.jsx("p",{children:Pe||"nicht ausgewählt"})]})]}),k&&v.jsx(V.Alert,{color:"red",className:"bg-red-50 text-red-700",children:k}),A&&v.jsx(V.Alert,{color:"green",className:"bg-green-50 text-green-800",children:"Setup abgeschlossen. Du wirst zum Login weitergeleitet …"})]});default:return null}};return n?v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx("span",{className:"text-blue-gray-500",children:"Lade Setup-Status …"})}):a?v.jsx("div",{className:"flex min-h-screen items-center justify-center bg-blue-gray-50/50",children:v.jsx(V.Alert,{color:"red",className:"w-full max-w-lg border border-red-200 bg-red-50 text-red-700",children:a})}):t?v.jsx("div",{className:"flex min-h-screen w-full items-center justify-center py-10",children:v.jsxs(V.Card,{className:"w-full max-w-3xl border border-blue-gray-100 shadow-sm",children:[v.jsxs(V.CardHeader,{floated:!1,shadow:!1,className:"grid gap-1 rounded-none bg-transparent p-6 text-left",children:[v.jsx(V.Typography,{variant:"h4",color:"blue-gray",children:"System Setup"}),v.jsx(V.Typography,{color:"gray",className:"text-sm",children:"Folge den Schritten, um StackPulse mit deiner Portainer-Instanz zu verbinden."})]}),v.jsxs(V.CardBody,{className:"pt-0",children:[v.jsx(V.Stepper,{activeStep:h,className:"w-full py-6",children:dl.map((Ae,ft)=>v.jsx(V.Step,{onClick:()=>y(ft),className:"cursor-pointer",activeClassName:"bg-blue-600 text-white",completedClassName:"bg-blue-600 text-white",children:ft+1},Ae))}),v.jsx("div",{className:"mt-4 grid grid-cols-1 gap-2 text-center text-xs font-medium text-blue-gray-600 sm:grid-cols-5",children:dl.map(Ae=>v.jsx("span",{children:Ae},Ae))}),v.jsx("div",{className:"mt-6 min-h-[260px] space-y-6",children:lt()}),v.jsxs("div",{className:"mt-10 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[v.jsx(V.Button,{variant:"text",color:"blue",onClick:$e,disabled:h===0||x,className:"w-full sm:w-auto",children:"Zurück"}),h:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-amber-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(255 179 0 / var(--tw-divide-opacity))}.divide-blue-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 136 229 / var(--tw-divide-opacity))}.divide-blue-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(207 216 220 / var(--tw-divide-opacity))}.divide-blue-gray-50>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(236 239 241 / var(--tw-divide-opacity))}.divide-blue-gray-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(84 110 122 / var(--tw-divide-opacity))}.divide-brown-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(109 76 65 / var(--tw-divide-opacity))}.divide-cyan-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(0 172 193 / var(--tw-divide-opacity))}.divide-deep-orange-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(244 81 30 / var(--tw-divide-opacity))}.divide-deep-purple-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(94 53 177 / var(--tw-divide-opacity))}.divide-gray-800>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(66 66 66 / var(--tw-divide-opacity))}.divide-green-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(22 163 74 / var(--tw-divide-opacity))}.divide-indigo-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(57 73 171 / var(--tw-divide-opacity))}.divide-light-blue-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(3 155 229 / var(--tw-divide-opacity))}.divide-light-green-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(124 179 66 / var(--tw-divide-opacity))}.divide-lime-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(192 202 51 / var(--tw-divide-opacity))}.divide-orange-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(234 88 12 / var(--tw-divide-opacity))}.divide-pink-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(216 27 96 / var(--tw-divide-opacity))}.divide-purple-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(142 36 170 / var(--tw-divide-opacity))}.divide-red-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 57 53 / var(--tw-divide-opacity))}.divide-teal-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(0 137 123 / var(--tw-divide-opacity))}.divide-yellow-600>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(253 216 53 / var(--tw-divide-opacity))}.self-start{align-self:flex-start}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.\!overflow-visible{overflow:visible!important}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-full{border-radius:9999px!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[7px\]{border-radius:7px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-br-none{border-bottom-right-radius:0}.rounded-tl-none{border-top-left-radius:0}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r-0{border-right-width:0px}.border-r-2{border-right-width:2px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(255 224 130 / var(--tw-border-opacity))}.border-amber-500{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.border-arcticBlue-400{--tw-border-opacity: 1;border-color:rgb(102 182 231 / var(--tw-border-opacity))}.border-arcticBlue-500{--tw-border-opacity: 1;border-color:rgb(51 158 222 / var(--tw-border-opacity))}.border-arcticBlue-600{--tw-border-opacity: 1;border-color:rgb(31 134 195 / var(--tw-border-opacity))}.border-arcticBlue-800{--tw-border-opacity: 1;border-color:rgb(15 75 111 / var(--tw-border-opacity))}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(144 202 249 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.border-blue-gray-100{--tw-border-opacity: 1;border-color:rgb(207 216 220 / var(--tw-border-opacity))}.border-blue-gray-200{--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.border-blue-gray-400{--tw-border-opacity: 1;border-color:rgb(120 144 156 / var(--tw-border-opacity))}.border-blue-gray-50{--tw-border-opacity: 1;border-color:rgb(236 239 241 / var(--tw-border-opacity))}.border-blue-gray-500{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.border-brown-500{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.border-cyan-500\/60{border-color:#00bcd499}.border-deep-orange-500{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.border-deep-purple-500{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(238 238 238 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(224 224 224 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(117 117 117 / var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(97 97 97 / var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-indigo-500{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.border-light-blue-500{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.border-light-green-500{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.border-lime-500{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.border-mossGreen-500\/80{border-color:#60b240cc}.border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(239 154 154 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity))}.border-sunsetCoral-500{--tw-border-opacity: 1;border-color:rgb(255 106 93 / var(--tw-border-opacity))}.border-sunsetCoral-500\/40{border-color:#ff6a5d66}.border-sunsetCoral-500\/80{border-color:#ff6a5dcc}.border-sunsetCoral-600{--tw-border-opacity: 1;border-color:rgb(230 80 72 / var(--tw-border-opacity))}.border-teal-500{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-warmAmberGlow-500\/80{border-color:#ff8f00cc}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.border-white\/80{border-color:#fffc}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.\!border-t-blue-gray-200{--tw-border-opacity: 1 !important;border-top-color:rgb(176 190 197 / var(--tw-border-opacity))!important}.\!border-t-transparent{border-top-color:transparent!important}.border-b-blue-gray-100{--tw-border-opacity: 1;border-bottom-color:rgb(207 216 220 / var(--tw-border-opacity))}.border-l-transparent{border-left-color:transparent}.border-r-transparent{border-right-color:transparent}.border-t-blue-gray-100{--tw-border-opacity: 1;border-top-color:rgb(207 216 220 / var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 248 225 / var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.bg-amber-500\/10{background-color:#ffc1071a}.bg-amber-500\/20{background-color:#ffc10733}.bg-arcticBlue-400{--tw-bg-opacity: 1;background-color:rgb(102 182 231 / var(--tw-bg-opacity))}.bg-arcticBlue-500{--tw-bg-opacity: 1;background-color:rgb(51 158 222 / var(--tw-bg-opacity))}.bg-arcticBlue-600{--tw-bg-opacity: 1;background-color:rgb(31 134 195 / var(--tw-bg-opacity))}.bg-arcticBlue-700{--tw-bg-opacity: 1;background-color:rgb(22 105 155 / var(--tw-bg-opacity))}.bg-arcticBlue-900{--tw-bg-opacity: 1;background-color:rgb(8 45 67 / var(--tw-bg-opacity))}.bg-arcticBlue-900\/90{background-color:#082d43e6}.bg-auroraTeal-500{--tw-bg-opacity: 1;background-color:rgb(56 198 204 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(227 242 253 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.bg-blue-500\/10{background-color:#2196f31a}.bg-blue-500\/20{background-color:#2196f333}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(30 136 229 / var(--tw-bg-opacity))}.bg-blue-gray-100{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.bg-blue-gray-50{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.bg-blue-gray-50\/40{background-color:#eceff166}.bg-blue-gray-50\/50{background-color:#eceff180}.bg-blue-gray-50\/60{background-color:#eceff199}.bg-blue-gray-50\/70{background-color:#eceff1b3}.bg-blue-gray-50\/80{background-color:#eceff1cc}.bg-blue-gray-500{--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.bg-blue-gray-500\/10{background-color:#607d8b1a}.bg-blue-gray-500\/20{background-color:#607d8b33}.bg-blue-gray-500\/80{background-color:#607d8bcc}.bg-brown-500{--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.bg-brown-500\/10{background-color:#7955481a}.bg-brown-500\/20{background-color:#79554833}.bg-citrusPunch-500{--tw-bg-opacity: 1;background-color:rgb(255 214 51 / var(--tw-bg-opacity))}.bg-citrusPunch-600\/80{background-color:#e6bd00cc}.bg-copperRust-500{--tw-bg-opacity: 1;background-color:rgb(141 77 85 / var(--tw-bg-opacity))}.bg-copperRust-600\/80{background-color:#7a444bcc}.bg-current{background-color:currentColor}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.bg-cyan-500\/10{background-color:#00bcd41a}.bg-cyan-500\/20{background-color:#00bcd433}.bg-cyan-900\/30{background-color:#0060644d}.bg-deep-orange-500{--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.bg-deep-orange-500\/10{background-color:#ff57221a}.bg-deep-orange-500\/20{background-color:#ff572233}.bg-deep-purple-500{--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.bg-deep-purple-500\/10{background-color:#673ab71a}.bg-deep-purple-500\/20{background-color:#673ab733}.bg-emeraldMist-500{--tw-bg-opacity: 1;background-color:rgb(63 181 134 / var(--tw-bg-opacity))}.bg-emeraldMist-500\/80{background-color:#3fb586cc}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(224 224 224 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(158 158 158 / var(--tw-bg-opacity))}.bg-gray-800\/70{background-color:#424242b3}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.bg-gray-900\/10{background-color:#2121211a}.bg-gray-900\/75{background-color:#212121bf}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/20{background-color:#22c55e33}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.bg-indigo-500\/10{background-color:#3f51b51a}.bg-indigo-500\/20{background-color:#3f51b533}.bg-indigo-600\/80{background-color:#3949abcc}.bg-lavenderSmoke-500{--tw-bg-opacity: 1;background-color:rgb(150 112 184 / var(--tw-bg-opacity))}.bg-lavenderSmoke-600\/80{background-color:#7a5894cc}.bg-light-blue-500{--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.bg-light-blue-500\/10{background-color:#03a9f41a}.bg-light-blue-500\/20{background-color:#03a9f433}.bg-light-green-500{--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.bg-light-green-500\/10{background-color:#8bc34a1a}.bg-light-green-500\/20{background-color:#8bc34a33}.bg-lime-500{--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.bg-lime-500\/10{background-color:#cddc391a}.bg-lime-500\/20{background-color:#cddc3933}.bg-mintTea-400{--tw-bg-opacity: 1;background-color:rgb(102 207 201 / var(--tw-bg-opacity))}.bg-mossGreen-400{--tw-bg-opacity: 1;background-color:rgb(140 197 111 / var(--tw-bg-opacity))}.bg-mossGreen-500{--tw-bg-opacity: 1;background-color:rgb(96 178 64 / var(--tw-bg-opacity))}.bg-mossGreen-600{--tw-bg-opacity: 1;background-color:rgb(77 143 51 / var(--tw-bg-opacity))}.bg-mossGreen-900\/90{background-color:#1c3012e6}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.bg-orange-500\/10{background-color:#f973161a}.bg-orange-500\/20{background-color:#f9731633}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.bg-pink-500\/10{background-color:#e91e631a}.bg-pink-500\/20{background-color:#e91e6333}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.bg-purple-500\/10{background-color:#9c27b01a}.bg-purple-500\/20{background-color:#9c27b033}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(255 235 238 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.bg-red-500\/10{background-color:#f443361a}.bg-red-500\/20{background-color:#f4433633}.bg-roseQuartz-500{--tw-bg-opacity: 1;background-color:rgb(212 91 137 / var(--tw-bg-opacity))}.bg-stormGrey-200\/20{background-color:#d9dce233}.bg-stormGrey-700{--tw-bg-opacity: 1;background-color:rgb(62 68 86 / var(--tw-bg-opacity))}.bg-stormGrey-700\/60{background-color:#3e445699}.bg-sunsetCoral-400{--tw-bg-opacity: 1;background-color:rgb(255 145 137 / var(--tw-bg-opacity))}.bg-sunsetCoral-500{--tw-bg-opacity: 1;background-color:rgb(255 106 93 / var(--tw-bg-opacity))}.bg-sunsetCoral-600{--tw-bg-opacity: 1;background-color:rgb(230 80 72 / var(--tw-bg-opacity))}.bg-sunsetCoral-600\/80{background-color:#e65048cc}.bg-sunsetCoral-900\/20{background-color:#5c1c1a33}.bg-sunsetCoral-900\/90{background-color:#5c1c1ae6}.bg-teal-500{--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.bg-teal-500\/10{background-color:#0096881a}.bg-teal-500\/20{background-color:#00968833}.bg-transparent{background-color:transparent}.bg-warmAmberGlow-400{--tw-bg-opacity: 1;background-color:rgb(255 173 77 / var(--tw-bg-opacity))}.bg-warmAmberGlow-900\/90{background-color:#4d2600e6}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/50{background-color:#ffffff80}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.bg-yellow-500\/10{background-color:#ffeb3b1a}.bg-yellow-500\/20{background-color:#ffeb3b33}.bg-opacity-60{--tw-bg-opacity: .6}.bg-opacity-80{--tw-bg-opacity: .8}.bg-\[url\(\'\/img\/background-image\.png\'\)\]{background-image:url(/img/background-image.png)}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-amber-600{--tw-gradient-from: #ffb300 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 179 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-black{--tw-gradient-from: #000000 var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from: #1e88e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 136 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-gray-600{--tw-gradient-from: #546e7a var(--tw-gradient-from-position);--tw-gradient-to: rgb(84 110 122 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-gray-800{--tw-gradient-from: #37474f var(--tw-gradient-from-position);--tw-gradient-to: rgb(55 71 79 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-brown-600{--tw-gradient-from: #6d4c41 var(--tw-gradient-from-position);--tw-gradient-to: rgb(109 76 65 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-600{--tw-gradient-from: #00acc1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 172 193 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-deep-orange-600{--tw-gradient-from: #f4511e var(--tw-gradient-from-position);--tw-gradient-to: rgb(244 81 30 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-deep-purple-600{--tw-gradient-from: #5e35b1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(94 53 177 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-600{--tw-gradient-from: #757575 var(--tw-gradient-from-position);--tw-gradient-to: rgb(117 117 117 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-800{--tw-gradient-from: #424242 var(--tw-gradient-from-position);--tw-gradient-to: rgb(66 66 66 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-900{--tw-gradient-from: #212121 var(--tw-gradient-from-position);--tw-gradient-to: rgb(33 33 33 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-400{--tw-gradient-from: #4ade80 var(--tw-gradient-from-position);--tw-gradient-to: rgb(74 222 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-600{--tw-gradient-from: #16a34a var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-600{--tw-gradient-from: #3949ab var(--tw-gradient-from-position);--tw-gradient-to: rgb(57 73 171 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-light-blue-600{--tw-gradient-from: #039be5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(3 155 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-light-green-600{--tw-gradient-from: #7cb342 var(--tw-gradient-from-position);--tw-gradient-to: rgb(124 179 66 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-lime-600{--tw-gradient-from: #c0ca33 var(--tw-gradient-from-position);--tw-gradient-to: rgb(192 202 51 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-400{--tw-gradient-from: #fb923c var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 146 60 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-600{--tw-gradient-from: #ea580c var(--tw-gradient-from-position);--tw-gradient-to: rgb(234 88 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-400{--tw-gradient-from: #ec407a var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 64 122 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-600{--tw-gradient-from: #d81b60 var(--tw-gradient-from-position);--tw-gradient-to: rgb(216 27 96 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-600{--tw-gradient-from: #8e24aa var(--tw-gradient-from-position);--tw-gradient-to: rgb(142 36 170 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-400{--tw-gradient-from: #ef5350 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 83 80 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-600{--tw-gradient-from: #e53935 var(--tw-gradient-from-position);--tw-gradient-to: rgb(229 57 53 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-teal-600{--tw-gradient-from: #00897b var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 137 123 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-600{--tw-gradient-from: #fdd835 var(--tw-gradient-from-position);--tw-gradient-to: rgb(253 216 53 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-amber-400{--tw-gradient-to: #ffca28 var(--tw-gradient-to-position)}.to-black{--tw-gradient-to: #000000 var(--tw-gradient-to-position)}.to-blue-400{--tw-gradient-to: #42a5f5 var(--tw-gradient-to-position)}.to-blue-gray-400{--tw-gradient-to: #78909c var(--tw-gradient-to-position)}.to-blue-gray-900{--tw-gradient-to: #263238 var(--tw-gradient-to-position)}.to-brown-400{--tw-gradient-to: #8d6e63 var(--tw-gradient-to-position)}.to-cyan-400{--tw-gradient-to: #26c6da var(--tw-gradient-to-position)}.to-deep-orange-400{--tw-gradient-to: #ff7043 var(--tw-gradient-to-position)}.to-deep-purple-400{--tw-gradient-to: #7e57c2 var(--tw-gradient-to-position)}.to-gray-400{--tw-gradient-to: #bdbdbd var(--tw-gradient-to-position)}.to-gray-800{--tw-gradient-to: #424242 var(--tw-gradient-to-position)}.to-gray-900{--tw-gradient-to: #212121 var(--tw-gradient-to-position)}.to-green-400{--tw-gradient-to: #4ade80 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-indigo-400{--tw-gradient-to: #5c6bc0 var(--tw-gradient-to-position)}.to-light-blue-400{--tw-gradient-to: #29b6f6 var(--tw-gradient-to-position)}.to-light-green-400{--tw-gradient-to: #9ccc65 var(--tw-gradient-to-position)}.to-lime-400{--tw-gradient-to: #d4e157 var(--tw-gradient-to-position)}.to-orange-400{--tw-gradient-to: #fb923c var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-400{--tw-gradient-to: #ec407a var(--tw-gradient-to-position)}.to-pink-600{--tw-gradient-to: #d81b60 var(--tw-gradient-to-position)}.to-purple-400{--tw-gradient-to: #ab47bc var(--tw-gradient-to-position)}.to-red-400{--tw-gradient-to: #ef5350 var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to: #e53935 var(--tw-gradient-to-position)}.to-teal-400{--tw-gradient-to: #26a69a var(--tw-gradient-to-position)}.to-yellow-400{--tw-gradient-to: #ffee58 var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-clip-border{background-clip:border-box}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.px-px{padding-left:1px;padding-right:1px}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.\!pr-7{padding-right:1.75rem!important}.\!pr-9{padding-right:2.25rem!important}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-6{padding-bottom:1.5rem}.pl-2{padding-left:.5rem}.pl-5{padding-left:1.25rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.pt-\[9px\]{padding-top:9px}.pt-px{padding-top:1px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-start{text-align:start}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-sans{font-family:Roboto,sans-serif}.\!text-\[11px\]{font-size:11px!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.\!leading-tight{line-height:1.25!important}.leading-5{line-height:1.25rem}.leading-\[1\.3\]{line-height:1.3}.leading-\[3\.75\]{line-height:3.75}.leading-\[4\.1\]{line-height:4.1}.leading-\[4\.25\]{line-height:4.25}.leading-\[4\.875\]{line-height:4.875}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0em}.tracking-wide{letter-spacing:.025em}.\!text-black{--tw-text-opacity: 1 !important;color:rgb(0 0 0 / var(--tw-text-opacity))!important}.\!text-white{--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.text-amber-200{--tw-text-opacity: 1;color:rgb(255 224 130 / var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity: 1;color:rgb(255 193 7 / var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity: 1;color:rgb(255 179 0 / var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity: 1;color:rgb(255 160 0 / var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity: 1;color:rgb(255 143 0 / var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity: 1;color:rgb(255 111 0 / var(--tw-text-opacity))}.text-arcticBlue-100{--tw-text-opacity: 1;color:rgb(230 243 251 / var(--tw-text-opacity))}.text-arcticBlue-400{--tw-text-opacity: 1;color:rgb(102 182 231 / var(--tw-text-opacity))}.text-arcticBlue-500{--tw-text-opacity: 1;color:rgb(51 158 222 / var(--tw-text-opacity))}.text-arcticBlue-700{--tw-text-opacity: 1;color:rgb(22 105 155 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity: 1;color:rgb(100 181 246 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(33 150 243 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(30 136 229 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(25 118 210 / var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity: 1;color:rgb(21 101 192 / var(--tw-text-opacity))}.text-blue-900{--tw-text-opacity: 1;color:rgb(13 71 161 / var(--tw-text-opacity))}.text-blue-gray-200{--tw-text-opacity: 1;color:rgb(176 190 197 / var(--tw-text-opacity))}.text-blue-gray-300{--tw-text-opacity: 1;color:rgb(144 164 174 / var(--tw-text-opacity))}.text-blue-gray-400{--tw-text-opacity: 1;color:rgb(120 144 156 / var(--tw-text-opacity))}.text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.text-blue-gray-600{--tw-text-opacity: 1;color:rgb(84 110 122 / var(--tw-text-opacity))}.text-blue-gray-700{--tw-text-opacity: 1;color:rgb(69 90 100 / var(--tw-text-opacity))}.text-blue-gray-800{--tw-text-opacity: 1;color:rgb(55 71 79 / var(--tw-text-opacity))}.text-blue-gray-900{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.text-brown-500{--tw-text-opacity: 1;color:rgb(121 85 72 / var(--tw-text-opacity))}.text-brown-700{--tw-text-opacity: 1;color:rgb(93 64 55 / var(--tw-text-opacity))}.text-brown-900{--tw-text-opacity: 1;color:rgb(62 39 35 / var(--tw-text-opacity))}.text-current{color:currentColor}.text-cyan-500{--tw-text-opacity: 1;color:rgb(0 188 212 / var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity: 1;color:rgb(0 151 167 / var(--tw-text-opacity))}.text-cyan-900{--tw-text-opacity: 1;color:rgb(0 96 100 / var(--tw-text-opacity))}.text-deep-orange-500{--tw-text-opacity: 1;color:rgb(255 87 34 / var(--tw-text-opacity))}.text-deep-orange-700{--tw-text-opacity: 1;color:rgb(230 74 25 / var(--tw-text-opacity))}.text-deep-orange-900{--tw-text-opacity: 1;color:rgb(191 54 12 / var(--tw-text-opacity))}.text-deep-purple-500{--tw-text-opacity: 1;color:rgb(103 58 183 / var(--tw-text-opacity))}.text-deep-purple-700{--tw-text-opacity: 1;color:rgb(81 45 168 / var(--tw-text-opacity))}.text-deep-purple-900{--tw-text-opacity: 1;color:rgb(49 27 146 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(238 238 238 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(224 224 224 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(189 189 189 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(158 158 158 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(97 97 97 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(33 33 33 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(63 81 181 / var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(48 63 159 / var(--tw-text-opacity))}.text-indigo-900{--tw-text-opacity: 1;color:rgb(26 35 126 / var(--tw-text-opacity))}.text-inherit{color:inherit}.text-lavenderSmoke-200{--tw-text-opacity: 1;color:rgb(236 226 243 / var(--tw-text-opacity))}.text-lavenderSmoke-700{--tw-text-opacity: 1;color:rgb(93 67 115 / var(--tw-text-opacity))}.text-light-blue-500{--tw-text-opacity: 1;color:rgb(3 169 244 / var(--tw-text-opacity))}.text-light-blue-700{--tw-text-opacity: 1;color:rgb(2 136 209 / var(--tw-text-opacity))}.text-light-blue-900{--tw-text-opacity: 1;color:rgb(1 87 155 / var(--tw-text-opacity))}.text-light-green-500{--tw-text-opacity: 1;color:rgb(139 195 74 / var(--tw-text-opacity))}.text-light-green-700{--tw-text-opacity: 1;color:rgb(104 159 56 / var(--tw-text-opacity))}.text-light-green-900{--tw-text-opacity: 1;color:rgb(51 105 30 / var(--tw-text-opacity))}.text-lime-500{--tw-text-opacity: 1;color:rgb(205 220 57 / var(--tw-text-opacity))}.text-lime-700{--tw-text-opacity: 1;color:rgb(175 180 43 / var(--tw-text-opacity))}.text-lime-900{--tw-text-opacity: 1;color:rgb(130 119 23 / var(--tw-text-opacity))}.text-mossGreen-100{--tw-text-opacity: 1;color:rgb(235 245 229 / var(--tw-text-opacity))}.text-mossGreen-500{--tw-text-opacity: 1;color:rgb(96 178 64 / var(--tw-text-opacity))}.text-mossGreen-600{--tw-text-opacity: 1;color:rgb(77 143 51 / var(--tw-text-opacity))}.text-mossGreen-700{--tw-text-opacity: 1;color:rgb(59 107 39 / var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity: 1;color:rgb(233 30 99 / var(--tw-text-opacity))}.text-pink-700{--tw-text-opacity: 1;color:rgb(194 24 91 / var(--tw-text-opacity))}.text-pink-900{--tw-text-opacity: 1;color:rgb(136 14 79 / var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity: 1;color:rgb(156 39 176 / var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity: 1;color:rgb(123 31 162 / var(--tw-text-opacity))}.text-purple-900{--tw-text-opacity: 1;color:rgb(74 20 140 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(239 83 80 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(229 57 53 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(211 47 47 / var(--tw-text-opacity))}.text-red-800{--tw-text-opacity: 1;color:rgb(198 40 40 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(183 28 28 / var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity))}.text-stormGrey-400{--tw-text-opacity: 1;color:rgb(139 145 164 / var(--tw-text-opacity))}.text-stormGrey-500{--tw-text-opacity: 1;color:rgb(96 103 128 / var(--tw-text-opacity))}.text-stormGrey-600{--tw-text-opacity: 1;color:rgb(79 85 107 / var(--tw-text-opacity))}.text-stormGrey-700{--tw-text-opacity: 1;color:rgb(62 68 86 / var(--tw-text-opacity))}.text-stormGrey-900{--tw-text-opacity: 1;color:rgb(27 30 41 / var(--tw-text-opacity))}.text-sunsetCoral-500{--tw-text-opacity: 1;color:rgb(255 106 93 / var(--tw-text-opacity))}.text-sunsetCoral-600{--tw-text-opacity: 1;color:rgb(230 80 72 / var(--tw-text-opacity))}.text-sunsetCoral-700{--tw-text-opacity: 1;color:rgb(185 61 56 / var(--tw-text-opacity))}.text-sunsetCoral-800{--tw-text-opacity: 1;color:rgb(138 44 40 / var(--tw-text-opacity))}.text-teal-500{--tw-text-opacity: 1;color:rgb(0 150 136 / var(--tw-text-opacity))}.text-teal-700{--tw-text-opacity: 1;color:rgb(0 121 107 / var(--tw-text-opacity))}.text-teal-900{--tw-text-opacity: 1;color:rgb(0 77 64 / var(--tw-text-opacity))}.text-transparent{color:transparent}.text-warmAmberGlow-500{--tw-text-opacity: 1;color:rgb(255 143 0 / var(--tw-text-opacity))}.text-warmAmberGlow-600{--tw-text-opacity: 1;color:rgb(230 118 0 / var(--tw-text-opacity))}.text-warmAmberGlow-700{--tw-text-opacity: 1;color:rgb(179 90 0 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/60{color:#fff9}.text-white\/80{color:#fffc}.text-yellow-500{--tw-text-opacity: 1;color:rgb(255 235 59 / var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(251 192 45 / var(--tw-text-opacity))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(245 127 23 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-amber-500\/20{--tw-shadow-color: rgb(255 193 7 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-amber-500\/40{--tw-shadow-color: rgb(255 193 7 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/20{--tw-shadow-color: rgb(33 150 243 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/40{--tw-shadow-color: rgb(33 150 243 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/10{--tw-shadow-color: rgb(96 125 139 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/20{--tw-shadow-color: rgb(96 125 139 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/25{--tw-shadow-color: rgb(96 125 139 / .25);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/40{--tw-shadow-color: rgb(96 125 139 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-500\/5{--tw-shadow-color: rgb(96 125 139 / .05);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-gray-900\/10{--tw-shadow-color: rgb(38 50 56 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-brown-500\/20{--tw-shadow-color: rgb(121 85 72 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-brown-500\/40{--tw-shadow-color: rgb(121 85 72 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-500\/20{--tw-shadow-color: rgb(0 188 212 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-500\/40{--tw-shadow-color: rgb(0 188 212 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-orange-500\/20{--tw-shadow-color: rgb(255 87 34 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-orange-500\/40{--tw-shadow-color: rgb(255 87 34 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-purple-500\/20{--tw-shadow-color: rgb(103 58 183 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-deep-purple-500\/40{--tw-shadow-color: rgb(103 58 183 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-gray-900\/10{--tw-shadow-color: rgb(33 33 33 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-gray-900\/20{--tw-shadow-color: rgb(33 33 33 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-green-500\/20{--tw-shadow-color: rgb(34 197 94 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-green-500\/40{--tw-shadow-color: rgb(34 197 94 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-indigo-500\/20{--tw-shadow-color: rgb(63 81 181 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-indigo-500\/40{--tw-shadow-color: rgb(63 81 181 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-blue-500\/20{--tw-shadow-color: rgb(3 169 244 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-blue-500\/40{--tw-shadow-color: rgb(3 169 244 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-green-500\/20{--tw-shadow-color: rgb(139 195 74 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-light-green-500\/40{--tw-shadow-color: rgb(139 195 74 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-lime-500\/20{--tw-shadow-color: rgb(205 220 57 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-lime-500\/40{--tw-shadow-color: rgb(205 220 57 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-orange-500\/20{--tw-shadow-color: rgb(249 115 22 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-orange-500\/40{--tw-shadow-color: rgb(249 115 22 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-pink-500\/20{--tw-shadow-color: rgb(233 30 99 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-pink-500\/40{--tw-shadow-color: rgb(233 30 99 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-purple-500\/20{--tw-shadow-color: rgb(156 39 176 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-purple-500\/40{--tw-shadow-color: rgb(156 39 176 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-500\/20{--tw-shadow-color: rgb(244 67 54 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-500\/40{--tw-shadow-color: rgb(244 67 54 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-teal-500\/20{--tw-shadow-color: rgb(0 150 136 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-teal-500\/40{--tw-shadow-color: rgb(0 150 136 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-yellow-500\/20{--tw-shadow-color: rgb(255 235 59 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-yellow-500\/40{--tw-shadow-color: rgb(255 235 59 / .4);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-0{outline-width:0px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-purple-500\/40{--tw-ring-color: rgb(156 39 176 / .4)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-2xl{--tw-backdrop-blur: blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-saturate-200{--tw-backdrop-saturate: saturate(2);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.content-\[\'\'\]{--tw-content: "";content:var(--tw-content)}.\[-webkit-appearance\:none\]{-webkit-appearance:none}.file\:mr-4::file-selector-button{margin-right:1rem}.file\:rounded-md::file-selector-button{border-radius:.375rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-blue-gray-50::file-selector-button{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.file\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.file\:py-2::file-selector-button{padding-top:.5rem;padding-bottom:.5rem}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-semibold::file-selector-button{font-weight:600}.file\:text-blue-gray-700::file-selector-button{--tw-text-opacity: 1;color:rgb(69 90 100 / var(--tw-text-opacity))}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:left-2\/4:before{content:var(--tw-content);left:50%}.before\:top-2\/4:before{content:var(--tw-content);top:50%}.before\:mr-1:before{content:var(--tw-content);margin-right:.25rem}.before\:mt-\[6\.5px\]:before{content:var(--tw-content);margin-top:6.5px}.before\:box-border:before{content:var(--tw-content);box-sizing:border-box}.before\:block:before{content:var(--tw-content);display:block}.before\:h-1:before{content:var(--tw-content);height:.25rem}.before\:h-1\.5:before{content:var(--tw-content);height:.375rem}.before\:h-10:before{content:var(--tw-content);height:2.5rem}.before\:h-12:before{content:var(--tw-content);height:3rem}.before\:w-10:before{content:var(--tw-content);width:2.5rem}.before\:w-12:before{content:var(--tw-content);width:3rem}.before\:w-2:before{content:var(--tw-content);width:.5rem}.before\:w-2\.5:before{content:var(--tw-content);width:.625rem}.before\:-translate-x-2\/4:before{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:-translate-y-2\/4:before{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:rounded-full:before{content:var(--tw-content);border-radius:9999px}.before\:rounded-tl-md:before{content:var(--tw-content);border-top-left-radius:.375rem}.before\:border-l:before{content:var(--tw-content);border-left-width:1px}.before\:border-l-2:before{content:var(--tw-content);border-left-width:2px}.before\:border-t:before{content:var(--tw-content);border-top-width:1px}.before\:border-t-2:before{content:var(--tw-content);border-top-width:2px}.before\:\!border-blue-gray-200:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(176 190 197 / var(--tw-border-opacity))!important}.before\:border-amber-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.before\:border-black:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.before\:border-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.before\:border-blue-gray-200:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.before\:border-blue-gray-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.before\:border-brown-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.before\:border-cyan-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.before\:border-deep-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.before\:border-deep-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.before\:border-gray-900:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.before\:border-green-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.before\:border-indigo-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.before\:border-light-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.before\:border-light-green-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.before\:border-lime-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.before\:border-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.before\:border-pink-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.before\:border-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.before\:border-red-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.before\:border-teal-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.before\:border-white:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.before\:border-yellow-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.before\:border-l-transparent:before{content:var(--tw-content);border-left-color:transparent}.before\:border-t-transparent:before{content:var(--tw-content);border-top-color:transparent}.before\:bg-blue-gray-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.before\:opacity-0:before{content:var(--tw-content);opacity:0}.before\:transition-all:before{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:transition-opacity:before{content:var(--tw-content);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:content-none:before{--tw-content: none;content:var(--tw-content)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-bottom-0:after{content:var(--tw-content);bottom:-0px}.after\:-bottom-1:after{content:var(--tw-content);bottom:-.25rem}.after\:-bottom-1\.5:after{content:var(--tw-content);bottom:-.375rem}.after\:-bottom-2:after{content:var(--tw-content);bottom:-.5rem}.after\:-bottom-2\.5:after{content:var(--tw-content);bottom:-.625rem}.after\:-bottom-6:after{content:var(--tw-content);bottom:-1.5rem}.after\:left-2\/4:after{content:var(--tw-content);left:50%}.after\:ml-1:after{content:var(--tw-content);margin-left:.25rem}.after\:mt-\[6\.5px\]:after{content:var(--tw-content);margin-top:6.5px}.after\:box-border:after{content:var(--tw-content);box-sizing:border-box}.after\:block:after{content:var(--tw-content);display:block}.after\:h-0:after{content:var(--tw-content);height:0px}.after\:h-1:after{content:var(--tw-content);height:.25rem}.after\:h-1\.5:after{content:var(--tw-content);height:.375rem}.after\:h-4\/6:after{content:var(--tw-content);height:66.666667%}.after\:w-0:after{content:var(--tw-content);width:0px}.after\:w-0\.5:after{content:var(--tw-content);width:.125rem}.after\:w-2:after{content:var(--tw-content);width:.5rem}.after\:w-2\.5:after{content:var(--tw-content);width:.625rem}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:flex-grow:after{content:var(--tw-content);flex-grow:1}.after\:-translate-x-2\/4:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:scale-x-0:after{content:var(--tw-content);--tw-scale-x: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:scale-x-100:after{content:var(--tw-content);--tw-scale-x: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:rounded-tr-md:after{content:var(--tw-content);border-top-right-radius:.375rem}.after\:border-b-2:after{content:var(--tw-content);border-bottom-width:2px}.after\:border-r:after{content:var(--tw-content);border-right-width:1px}.after\:border-r-2:after{content:var(--tw-content);border-right-width:2px}.after\:border-t:after{content:var(--tw-content);border-top-width:1px}.after\:border-t-2:after{content:var(--tw-content);border-top-width:2px}.after\:\!border-blue-gray-200:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(176 190 197 / var(--tw-border-opacity))!important}.after\:border-amber-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.after\:border-black:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.after\:border-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.after\:border-blue-gray-200:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.after\:border-blue-gray-50:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(236 239 241 / var(--tw-border-opacity))}.after\:border-blue-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.after\:border-brown-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.after\:border-cyan-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.after\:border-deep-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.after\:border-deep-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.after\:border-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(158 158 158 / var(--tw-border-opacity))}.after\:border-gray-900:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.after\:border-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.after\:border-indigo-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.after\:border-light-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.after\:border-light-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.after\:border-lime-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.after\:border-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.after\:border-pink-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.after\:border-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.after\:border-red-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.after\:border-teal-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.after\:border-white:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.after\:border-yellow-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.after\:border-r-transparent:after{content:var(--tw-content);border-right-color:transparent}.after\:border-t-transparent:after{content:var(--tw-content);border-top-color:transparent}.after\:bg-blue-gray-50:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:duration-300:after{content:var(--tw-content);transition-duration:.3s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.after\:content-none:after{--tw-content: none;content:var(--tw-content)}.checked\:border-amber-500:checked{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.checked\:border-blue-500:checked{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.checked\:border-blue-gray-500:checked{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.checked\:border-brown-500:checked{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.checked\:border-cyan-500:checked{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.checked\:border-deep-orange-500:checked{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.checked\:border-deep-purple-500:checked{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.checked\:border-gray-900:checked{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.checked\:border-green-500:checked{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.checked\:border-indigo-500:checked{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.checked\:border-light-blue-500:checked{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.checked\:border-light-green-500:checked{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.checked\:border-lime-500:checked{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.checked\:border-orange-500:checked{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.checked\:border-pink-500:checked{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.checked\:border-purple-500:checked{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.checked\:border-red-500:checked{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.checked\:border-teal-500:checked{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.checked\:border-yellow-500:checked{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.checked\:bg-amber-500:checked{--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.checked\:bg-blue-500:checked{--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.checked\:bg-blue-gray-500:checked{--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.checked\:bg-brown-500:checked{--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.checked\:bg-cyan-500:checked{--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.checked\:bg-deep-orange-500:checked{--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.checked\:bg-deep-purple-500:checked{--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.checked\:bg-gray-900:checked{--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.checked\:bg-green-500:checked{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.checked\:bg-indigo-500:checked{--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.checked\:bg-light-blue-500:checked{--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.checked\:bg-light-green-500:checked{--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.checked\:bg-lime-500:checked{--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.checked\:bg-orange-500:checked{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.checked\:bg-pink-500:checked{--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.checked\:bg-purple-500:checked{--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.checked\:bg-red-500:checked{--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.checked\:bg-teal-500:checked{--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.checked\:bg-yellow-500:checked{--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.checked\:before\:bg-amber-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.checked\:before\:bg-blue-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.checked\:before\:bg-blue-gray-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.checked\:before\:bg-brown-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.checked\:before\:bg-cyan-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.checked\:before\:bg-deep-orange-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.checked\:before\:bg-deep-purple-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.checked\:before\:bg-gray-900:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.checked\:before\:bg-green-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.checked\:before\:bg-indigo-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.checked\:before\:bg-light-blue-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.checked\:before\:bg-light-green-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.checked\:before\:bg-lime-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.checked\:before\:bg-orange-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.checked\:before\:bg-pink-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.checked\:before\:bg-purple-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.checked\:before\:bg-red-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.checked\:before\:bg-teal-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.checked\:before\:bg-yellow-500:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.placeholder-shown\:border:-moz-placeholder-shown{border-width:1px}.placeholder-shown\:border:placeholder-shown{border-width:1px}.placeholder-shown\:border-blue-gray-200:-moz-placeholder-shown{--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-blue-gray-200:placeholder-shown{--tw-border-opacity: 1;border-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-green-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-green-500:placeholder-shown{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-red-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.placeholder-shown\:border-red-500:placeholder-shown{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.placeholder-shown\:border-t-blue-gray-200:-moz-placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-t-blue-gray-200:placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(176 190 197 / var(--tw-border-opacity))}.placeholder-shown\:border-t-green-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-t-green-500:placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(34 197 94 / var(--tw-border-opacity))}.placeholder-shown\:border-t-red-500:-moz-placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(244 67 54 / var(--tw-border-opacity))}.placeholder-shown\:border-t-red-500:placeholder-shown{--tw-border-opacity: 1;border-top-color:rgb(244 67 54 / var(--tw-border-opacity))}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-slate-800:hover{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.hover\:bg-amber-500\/10:hover{background-color:#ffc1071a}.hover\:bg-arcticBlue-600:hover{--tw-bg-opacity: 1;background-color:rgb(31 134 195 / var(--tw-bg-opacity))}.hover\:bg-arcticBlue-800:hover{--tw-bg-opacity: 1;background-color:rgb(15 75 111 / var(--tw-bg-opacity))}.hover\:bg-blue-500\/10:hover{background-color:#2196f31a}.hover\:bg-blue-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.hover\:bg-blue-gray-50\/60:hover{background-color:#eceff199}.hover\:bg-blue-gray-500\/10:hover{background-color:#607d8b1a}.hover\:bg-brown-500\/10:hover{background-color:#7955481a}.hover\:bg-citrusPunch-600\/90:hover{background-color:#e6bd00e6}.hover\:bg-copperRust-600\/90:hover{background-color:#7a444be6}.hover\:bg-cyan-500\/10:hover{background-color:#00bcd41a}.hover\:bg-deep-orange-500\/10:hover{background-color:#ff57221a}.hover\:bg-deep-purple-500\/10:hover{background-color:#673ab71a}.hover\:bg-emeraldMist-500\/90:hover{background-color:#3fb586e6}.hover\:bg-gray-900\/10:hover{background-color:#2121211a}.hover\:bg-green-500\/10:hover{background-color:#22c55e1a}.hover\:bg-indigo-500\/10:hover{background-color:#3f51b51a}.hover\:bg-indigo-600\/90:hover{background-color:#3949abe6}.hover\:bg-lavenderSmoke-600\/90:hover{background-color:#7a5894e6}.hover\:bg-light-blue-500\/10:hover{background-color:#03a9f41a}.hover\:bg-light-green-500\/10:hover{background-color:#8bc34a1a}.hover\:bg-lime-500\/10:hover{background-color:#cddc391a}.hover\:bg-orange-500\/10:hover{background-color:#f973161a}.hover\:bg-pink-500\/10:hover{background-color:#e91e631a}.hover\:bg-purple-500\/10:hover{background-color:#9c27b01a}.hover\:bg-red-500\/10:hover{background-color:#f443361a}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.hover\:bg-sunsetCoral-600:hover{--tw-bg-opacity: 1;background-color:rgb(230 80 72 / var(--tw-bg-opacity))}.hover\:bg-sunsetCoral-600\/20:hover{background-color:#e6504833}.hover\:bg-sunsetCoral-600\/90:hover{background-color:#e65048e6}.hover\:bg-teal-500\/10:hover{background-color:#0096881a}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-yellow-500\/10:hover{background-color:#ffeb3b1a}.hover\:bg-opacity-80:hover{--tw-bg-opacity: .8}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(21 101 192 / var(--tw-text-opacity))}.hover\:text-blue-gray-500:hover{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.hover\:text-blue-gray-900:hover{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(238 238 238 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(33 33 33 / var(--tw-text-opacity))}.hover\:text-light-blue-500:hover{--tw-text-opacity: 1;color:rgb(3 169 244 / var(--tw-text-opacity))}.hover\:text-warmAmberGlow-600:hover{--tw-text-opacity: 1;color:rgb(230 118 0 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:text-white\/90:hover{color:#ffffffe6}.hover\:opacity-75:hover{opacity:.75}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-amber-500\/40:hover{--tw-shadow-color: rgb(255 193 7 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-blue-500\/40:hover{--tw-shadow-color: rgb(33 150 243 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-blue-gray-500\/20:hover{--tw-shadow-color: rgb(96 125 139 / .2);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-blue-gray-500\/40:hover{--tw-shadow-color: rgb(96 125 139 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-brown-500\/40:hover{--tw-shadow-color: rgb(121 85 72 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-cyan-500\/40:hover{--tw-shadow-color: rgb(0 188 212 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-deep-orange-500\/40:hover{--tw-shadow-color: rgb(255 87 34 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-deep-purple-500\/40:hover{--tw-shadow-color: rgb(103 58 183 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-gray-900\/20:hover{--tw-shadow-color: rgb(33 33 33 / .2);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-green-500\/40:hover{--tw-shadow-color: rgb(34 197 94 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-indigo-500\/40:hover{--tw-shadow-color: rgb(63 81 181 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-light-blue-500\/40:hover{--tw-shadow-color: rgb(3 169 244 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-light-green-500\/40:hover{--tw-shadow-color: rgb(139 195 74 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-lime-500\/40:hover{--tw-shadow-color: rgb(205 220 57 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-orange-500\/40:hover{--tw-shadow-color: rgb(249 115 22 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-pink-500\/40:hover{--tw-shadow-color: rgb(233 30 99 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-purple-500\/40:hover{--tw-shadow-color: rgb(156 39 176 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-red-500\/40:hover{--tw-shadow-color: rgb(244 67 54 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-teal-500\/40:hover{--tw-shadow-color: rgb(0 150 136 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-yellow-500\/40:hover{--tw-shadow-color: rgb(255 235 59 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:file\:bg-blue-gray-100::file-selector-button:hover{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.hover\:before\:opacity-0:hover:before{content:var(--tw-content);opacity:0}.hover\:before\:opacity-10:hover:before{content:var(--tw-content);opacity:.1}.focus\:scale-110:focus{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.focus\:border-2:focus{border-width:2px}.focus\:border-amber-500:focus{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.focus\:border-black:focus{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.focus\:border-blue-gray-500:focus{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.focus\:border-blue-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(38 50 56 / var(--tw-border-opacity))}.focus\:border-brown-500:focus{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.focus\:border-cyan-500:focus{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.focus\:border-deep-orange-500:focus{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.focus\:border-deep-purple-500:focus{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.focus\:border-gray-500:focus{--tw-border-opacity: 1;border-color:rgb(158 158 158 / var(--tw-border-opacity))}.focus\:border-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.focus\:border-green-500:focus{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.focus\:border-light-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.focus\:border-light-green-500:focus{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.focus\:border-lime-500:focus{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.focus\:border-orange-500:focus{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.focus\:border-pink-500:focus{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.focus\:border-purple-500:focus{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.focus\:border-slate-800:focus{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.focus\:border-teal-500:focus{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.focus\:border-white:focus{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.focus\:border-yellow-500:focus{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.focus\:\!border-t-gray-900:focus{--tw-border-opacity: 1 !important;border-top-color:rgb(33 33 33 / var(--tw-border-opacity))!important}.focus\:border-t-transparent:focus{border-top-color:transparent}.focus\:bg-blue-gray-50:focus{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.focus\:bg-slate-800:focus{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.focus\:bg-transparent:focus{background-color:transparent}.focus\:bg-opacity-80:focus{--tw-bg-opacity: .8}.focus\:text-blue-gray-500:focus{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.focus\:text-blue-gray-900:focus{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.focus\:text-white:focus{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.focus\:opacity-\[0\.85\]:focus{opacity:.85}.focus\:shadow-none:focus{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-0:focus{outline-width:0px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-amber-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 224 130 / var(--tw-ring-opacity))}.focus\:ring-arcticBlue-300:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(153 206 239 / var(--tw-ring-opacity))}.focus\:ring-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(144 202 249 / var(--tw-ring-opacity))}.focus\:ring-blue-gray-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(176 190 197 / var(--tw-ring-opacity))}.focus\:ring-brown-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(188 170 164 / var(--tw-ring-opacity))}.focus\:ring-citrusPunch-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 224 102 / var(--tw-ring-opacity))}.focus\:ring-copperRust-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(178 138 134 / var(--tw-ring-opacity))}.focus\:ring-cyan-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(128 222 234 / var(--tw-ring-opacity))}.focus\:ring-deep-orange-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 171 145 / var(--tw-ring-opacity))}.focus\:ring-deep-purple-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(179 157 219 / var(--tw-ring-opacity))}.focus\:ring-emeraldMist-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(110 200 163 / var(--tw-ring-opacity))}.focus\:ring-gray-300:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(224 224 224 / var(--tw-ring-opacity))}.focus\:ring-green-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(187 247 208 / var(--tw-ring-opacity))}.focus\:ring-indigo-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(159 168 218 / var(--tw-ring-opacity))}.focus\:ring-indigo-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(92 107 192 / var(--tw-ring-opacity))}.focus\:ring-lavenderSmoke-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(184 138 207 / var(--tw-ring-opacity))}.focus\:ring-light-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(129 212 250 / var(--tw-ring-opacity))}.focus\:ring-light-green-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(197 225 165 / var(--tw-ring-opacity))}.focus\:ring-lime-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(230 238 156 / var(--tw-ring-opacity))}.focus\:ring-orange-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(254 215 170 / var(--tw-ring-opacity))}.focus\:ring-pink-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(244 143 177 / var(--tw-ring-opacity))}.focus\:ring-purple-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(206 147 216 / var(--tw-ring-opacity))}.focus\:ring-purple-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(171 71 188 / var(--tw-ring-opacity))}.focus\:ring-red-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 154 154 / var(--tw-ring-opacity))}.focus\:ring-sunsetCoral-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 145 137 / var(--tw-ring-opacity))}.focus\:ring-teal-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(128 203 196 / var(--tw-ring-opacity))}.focus\:ring-white\/50:focus{--tw-ring-color: rgb(255 255 255 / .5)}.focus\:ring-yellow-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 245 157 / var(--tw-ring-opacity))}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-blue-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(33 150 243 / var(--tw-ring-opacity))}.active\:scale-100:active{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:border-slate-800:active{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.active\:bg-amber-500\/30:active{background-color:#ffc1074d}.active\:bg-blue-500\/30:active{background-color:#2196f34d}.active\:bg-blue-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.active\:bg-blue-gray-500\/30:active{background-color:#607d8b4d}.active\:bg-brown-500\/30:active{background-color:#7955484d}.active\:bg-cyan-500\/30:active{background-color:#00bcd44d}.active\:bg-deep-orange-500\/30:active{background-color:#ff57224d}.active\:bg-deep-purple-500\/30:active{background-color:#673ab74d}.active\:bg-gray-900\/20:active{background-color:#21212133}.active\:bg-green-500\/30:active{background-color:#22c55e4d}.active\:bg-indigo-500\/30:active{background-color:#3f51b54d}.active\:bg-light-blue-500\/30:active{background-color:#03a9f44d}.active\:bg-light-green-500\/30:active{background-color:#8bc34a4d}.active\:bg-lime-500\/30:active{background-color:#cddc394d}.active\:bg-orange-500\/30:active{background-color:#f973164d}.active\:bg-pink-500\/30:active{background-color:#e91e634d}.active\:bg-purple-500\/30:active{background-color:#9c27b04d}.active\:bg-red-500\/30:active{background-color:#f443364d}.active\:bg-slate-800:active{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.active\:bg-teal-500\/30:active{background-color:#0096884d}.active\:bg-transparent:active{background-color:transparent}.active\:bg-white\/30:active{background-color:#ffffff4d}.active\:bg-yellow-500\/30:active{background-color:#ffeb3b4d}.active\:bg-opacity-80:active{--tw-bg-opacity: .8}.active\:text-blue-gray-500:active{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.active\:text-blue-gray-900:active{--tw-text-opacity: 1;color:rgb(38 50 56 / var(--tw-text-opacity))}.active\:text-white:active{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.active\:opacity-\[0\.85\]:active{opacity:.85}.active\:shadow-none:active{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:resize-none:disabled{resize:none}.disabled\:border-0:disabled{border-width:0px}.disabled\:bg-blue-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(236 239 241 / var(--tw-bg-opacity))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:shadow-none:disabled{--tw-shadow: 0 0 rgb(0, 0 / 0, 0);--tw-shadow-colored: 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:checked~.peer-checked\:translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:border-amber-500{--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-blue-500{--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-blue-gray-500{--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-brown-500{--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-cyan-500{--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-deep-orange-500{--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-deep-purple-500{--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-gray-900{--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-indigo-500{--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-light-blue-500{--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-light-green-500{--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-lime-500{--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-pink-500{--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-purple-500{--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-red-500{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-teal-500{--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:border-yellow-500{--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.peer:checked~.peer-checked\:opacity-100{opacity:1}.peer:checked~.peer-checked\:before\:bg-amber-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 193 7 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-blue-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 150 243 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-blue-gray-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(96 125 139 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-brown-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(121 85 72 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-cyan-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-deep-orange-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 87 34 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-deep-purple-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(103 58 183 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-gray-900:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(33 33 33 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-green-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-indigo-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(63 81 181 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-light-blue-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(3 169 244 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-light-green-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(139 195 74 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-lime-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(205 220 57 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-orange-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-pink-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(233 30 99 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-purple-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(156 39 176 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-red-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-teal-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 150 136 / var(--tw-bg-opacity))}.peer:checked~.peer-checked\:before\:bg-yellow-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.875rem;line-height:1.25rem}.peer:placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.875rem;line-height:1.25rem}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[3\.75\]{line-height:3.75}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[3\.75\]{line-height:3.75}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[4\.1\]{line-height:4.1}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[4\.1\]{line-height:4.1}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[4\.25\]{line-height:4.25}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[4\.25\]{line-height:4.25}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-\[4\.875\]{line-height:4.875}.peer:placeholder-shown~.peer-placeholder-shown\:leading-\[4\.875\]{line-height:4.875}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:leading-tight{line-height:1.25}.peer:placeholder-shown~.peer-placeholder-shown\:leading-tight{line-height:1.25}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:placeholder-shown~.peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.peer:placeholder-shown~.peer-placeholder-shown\:text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.peer:placeholder-shown~.peer-placeholder-shown\:text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.peer:placeholder-shown~.peer-placeholder-shown\:before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.peer:placeholder-shown~.peer-placeholder-shown\:after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.peer:focus~.peer-focus\:text-\[11px\]{font-size:11px}.peer:focus~.peer-focus\:text-sm{font-size:.875rem;line-height:1.25rem}.peer:focus~.peer-focus\:leading-tight{line-height:1.25}.peer:focus~.peer-focus\:text-amber-500{--tw-text-opacity: 1;color:rgb(255 193 7 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-blue-500{--tw-text-opacity: 1;color:rgb(33 150 243 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-brown-500{--tw-text-opacity: 1;color:rgb(121 85 72 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-cyan-500{--tw-text-opacity: 1;color:rgb(0 188 212 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-deep-orange-500{--tw-text-opacity: 1;color:rgb(255 87 34 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-deep-purple-500{--tw-text-opacity: 1;color:rgb(103 58 183 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-gray-900{--tw-text-opacity: 1;color:rgb(33 33 33 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-indigo-500{--tw-text-opacity: 1;color:rgb(63 81 181 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-light-blue-500{--tw-text-opacity: 1;color:rgb(3 169 244 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-light-green-500{--tw-text-opacity: 1;color:rgb(139 195 74 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-lime-500{--tw-text-opacity: 1;color:rgb(205 220 57 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-pink-500{--tw-text-opacity: 1;color:rgb(233 30 99 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-purple-500{--tw-text-opacity: 1;color:rgb(156 39 176 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-red-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-teal-500{--tw-text-opacity: 1;color:rgb(0 150 136 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:text-yellow-500{--tw-text-opacity: 1;color:rgb(255 235 59 / var(--tw-text-opacity))}.peer:focus~.peer-focus\:before\:border-l-2:before{content:var(--tw-content);border-left-width:2px}.peer:focus~.peer-focus\:before\:border-t-2:before{content:var(--tw-content);border-top-width:2px}.peer:focus~.peer-focus\:before\:\!border-amber-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 193 7 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-black:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 0 0 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 150 243 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-blue-gray-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(96 125 139 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-brown-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(121 85 72 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-cyan-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 188 212 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-deep-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 87 34 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-deep-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(103 58 183 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-gray-900:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 33 33 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-green-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(34 197 94 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-indigo-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(63 81 181 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-light-blue-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(3 169 244 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-light-green-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(139 195 74 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-lime-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(205 220 57 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-orange-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(249 115 22 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-pink-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(233 30 99 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-purple-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(156 39 176 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-red-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(244 67 54 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-teal-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 150 136 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-white:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:\!border-yellow-500:before{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 235 59 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:before\:border-green-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:before\:border-red-500:before{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:scale-x-100:after{content:var(--tw-content);--tw-scale-x: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:after\:border-r-2:after{content:var(--tw-content);border-right-width:2px}.peer:focus~.peer-focus\:after\:border-t-2:after{content:var(--tw-content);border-top-width:2px}.peer:focus~.peer-focus\:after\:\!border-amber-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 193 7 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-black:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 0 0 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 150 243 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-blue-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(96 125 139 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-brown-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(121 85 72 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-cyan-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 188 212 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-deep-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 87 34 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-deep-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(103 58 183 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-gray-900:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(33 33 33 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-green-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(34 197 94 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-indigo-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(63 81 181 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-light-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(3 169 244 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-light-green-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(139 195 74 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-lime-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(205 220 57 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(249 115 22 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-pink-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(233 30 99 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(156 39 176 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-red-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(244 67 54 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-teal-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(0 150 136 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-white:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:\!border-yellow-500:after{content:var(--tw-content);--tw-border-opacity: 1 !important;border-color:rgb(255 235 59 / var(--tw-border-opacity))!important}.peer:focus~.peer-focus\:after\:border-amber-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 193 7 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-black:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 150 243 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-blue-gray-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(96 125 139 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-brown-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(121 85 72 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-cyan-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 188 212 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-deep-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 87 34 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-deep-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(103 58 183 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-gray-900:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(33 33 33 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-indigo-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(63 81 181 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-light-blue-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(3 169 244 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-light-green-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(139 195 74 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-lime-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(205 220 57 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-orange-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-pink-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(233 30 99 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-purple-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(156 39 176 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-red-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-teal-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(0 150 136 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.peer:focus~.peer-focus\:after\:border-yellow-500:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 235 59 / var(--tw-border-opacity))}.peer:disabled~.peer-disabled\:text-blue-gray-400{--tw-text-opacity: 1;color:rgb(120 144 156 / var(--tw-text-opacity))}.peer:disabled~.peer-disabled\:text-transparent{color:transparent}.peer:disabled~.peer-disabled\:before\:border-transparent:before{content:var(--tw-content);border-color:transparent}.peer:disabled~.peer-disabled\:after\:border-transparent:after{content:var(--tw-content);border-color:transparent}.peer:disabled:-moz-placeholder-shown~.peer-disabled\:peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}.peer:disabled:placeholder-shown~.peer-disabled\:peer-placeholder-shown\:text-blue-gray-500{--tw-text-opacity: 1;color:rgb(96 125 139 / var(--tw-text-opacity))}@media (min-width: 540px){.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}}@media (min-width: 720px){.md\:order-first{order:-9999}.md\:order-last{order:9999}.md\:ml-auto{margin-left:auto}.md\:mt-0{margin-top:0}.md\:w-1\/2{width:50%}.md\:w-1\/4{width:25%}.md\:w-2\/3{width:66.666667%}.md\:w-3\/4{width:75%}.md\:w-3\/5{width:60%}.md\:w-5\/6{width:83.333333%}.md\:w-auto{width:auto}.md\:min-w-\[60\%\]{min-width:60%}.md\:min-w-\[66\.666667\%\]{min-width:66.666667%}.md\:min-w-\[75\%\]{min-width:75%}.md\:min-w-\[83\.333333\%\]{min-width:83.333333%}.md\:max-w-\[60\%\]{max-width:60%}.md\:max-w-\[66\.666667\%\]{max-width:66.666667%}.md\:max-w-\[75\%\]{max-width:75%}.md\:max-w-\[83\.333333\%\]{max-width:83.333333%}.md\:max-w-md{max-width:28rem}.md\:flex-1{flex:1 1 0%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-nowrap{flex-wrap:nowrap}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-3{gap:.75rem}.md\:gap-6{gap:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 960px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-4{margin-left:1rem;margin-right:1rem}.lg\:mb-0{margin-bottom:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:inline-block{display:inline-block}.lg\:hidden{display:none}.lg\:w-1\/2,.lg\:w-2\/4{width:50%}.lg\:w-2\/5{width:40%}.lg\:w-3\/4{width:75%}.lg\:w-3\/5{width:60%}.lg\:min-w-\[40\%\]{min-width:40%}.lg\:min-w-\[50\%\]{min-width:50%}.lg\:min-w-\[60\%\]{min-width:60%}.lg\:min-w-\[75\%\]{min-width:75%}.lg\:max-w-\[40\%\]{max-width:40%}.lg\:max-w-\[50\%\]{max-width:50%}.lg\:max-w-\[60\%\]{max-width:60%}.lg\:max-w-\[75\%\]{max-width:75%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:gap-6{gap:1.5rem}}@media (min-width: 1140px){.xl\:col-span-2{grid-column:span 2 / span 2}.xl\:col-span-3{grid-column:span 3 / span 3}.xl\:ml-80{margin-left:20rem}.xl\:flex{display:flex}.xl\:hidden{display:none}.xl\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1320px){.\32xl\:w-1\/3{width:33.333333%}.\32xl\:w-1\/4{width:25%}.\32xl\:w-2\/5{width:40%}.\32xl\:w-3\/4{width:75%}.\32xl\:w-3\/5{width:60%}.\32xl\:min-w-\[25\%\]{min-width:25%}.\32xl\:min-w-\[33\.333333\%\]{min-width:33.333333%}.\32xl\:min-w-\[40\%\]{min-width:40%}.\32xl\:min-w-\[60\%\]{min-width:60%}.\32xl\:min-w-\[75\%\]{min-width:75%}.\32xl\:max-w-\[25\%\]{max-width:25%}.\32xl\:max-w-\[33\.333333\%\]{max-width:33.333333%}.\32xl\:max-w-\[40\%\]{max-width:40%}.\32xl\:max-w-\[60\%\]{max-width:60%}.\32xl\:max-w-\[75\%\]{max-width:75%}}.\[\&\:\:-moz-range-thumb\]\:relative::-moz-range-thumb{position:relative}.\[\&\:\:-moz-range-thumb\]\:z-20::-moz-range-thumb{z-index:20}.\[\&\:\:-moz-range-thumb\]\:-mt-1::-moz-range-thumb{margin-top:-.25rem}.\[\&\:\:-moz-range-thumb\]\:-mt-\[3px\]::-moz-range-thumb{margin-top:-3px}.\[\&\:\:-moz-range-thumb\]\:h-2\.5::-moz-range-thumb{height:.625rem}.\[\&\:\:-moz-range-thumb\]\:h-3\.5::-moz-range-thumb{height:.875rem}.\[\&\:\:-moz-range-thumb\]\:h-5::-moz-range-thumb{height:1.25rem}.\[\&\:\:-moz-range-thumb\]\:w-2\.5::-moz-range-thumb{width:.625rem}.\[\&\:\:-moz-range-thumb\]\:w-3\.5::-moz-range-thumb{width:.875rem}.\[\&\:\:-moz-range-thumb\]\:w-5::-moz-range-thumb{width:1.25rem}.\[\&\:\:-moz-range-thumb\]\:appearance-none::-moz-range-thumb{-moz-appearance:none;-webkit-appearance:none;appearance:none}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:9999px}.\[\&\:\:-moz-range-thumb\]\:border-0::-moz-range-thumb{border-width:0px}.\[\&\:\:-moz-range-thumb\]\:bg-white::-moz-range-thumb{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.\[\&\:\:-moz-range-thumb\]\:ring-2::-moz-range-thumb{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.\[\&\:\:-moz-range-thumb\]\:ring-current::-moz-range-thumb{--tw-ring-color: currentColor}.\[\&\:\:-moz-range-thumb\]\:\[-webkit-appearance\:none\]::-moz-range-thumb{-webkit-appearance:none}.\[\&\:\:-moz-range-track\]\:h-full::-moz-range-track{height:100%}.\[\&\:\:-moz-range-track\]\:rounded-full::-moz-range-track{border-radius:9999px}.\[\&\:\:-moz-range-track\]\:bg-blue-gray-100::-moz-range-track{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.\[\&\:\:-webkit-file-upload-button\]\:hidden::-webkit-file-upload-button{display:none}.\[\&\:\:-webkit-slider-runnable-track\]\:h-full::-webkit-slider-runnable-track{height:100%}.\[\&\:\:-webkit-slider-runnable-track\]\:rounded-full::-webkit-slider-runnable-track{border-radius:9999px}.\[\&\:\:-webkit-slider-runnable-track\]\:bg-blue-gray-100::-webkit-slider-runnable-track{--tw-bg-opacity: 1;background-color:rgb(207 216 220 / var(--tw-bg-opacity))}.\[\&\:\:-webkit-slider-thumb\]\:relative::-webkit-slider-thumb{position:relative}.\[\&\:\:-webkit-slider-thumb\]\:z-20::-webkit-slider-thumb{z-index:20}.\[\&\:\:-webkit-slider-thumb\]\:-mt-1::-webkit-slider-thumb{margin-top:-.25rem}.\[\&\:\:-webkit-slider-thumb\]\:-mt-\[3px\]::-webkit-slider-thumb{margin-top:-3px}.\[\&\:\:-webkit-slider-thumb\]\:h-2\.5::-webkit-slider-thumb{height:.625rem}.\[\&\:\:-webkit-slider-thumb\]\:h-3\.5::-webkit-slider-thumb{height:.875rem}.\[\&\:\:-webkit-slider-thumb\]\:h-5::-webkit-slider-thumb{height:1.25rem}.\[\&\:\:-webkit-slider-thumb\]\:w-2\.5::-webkit-slider-thumb{width:.625rem}.\[\&\:\:-webkit-slider-thumb\]\:w-3\.5::-webkit-slider-thumb{width:.875rem}.\[\&\:\:-webkit-slider-thumb\]\:w-5::-webkit-slider-thumb{width:1.25rem}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:9999px}.\[\&\:\:-webkit-slider-thumb\]\:border-0::-webkit-slider-thumb{border-width:0px}.\[\&\:\:-webkit-slider-thumb\]\:bg-white::-webkit-slider-thumb{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.\[\&\:\:-webkit-slider-thumb\]\:ring-2::-webkit-slider-thumb{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.\[\&\:\:-webkit-slider-thumb\]\:ring-current::-webkit-slider-thumb{--tw-ring-color: currentColor}.\[\&\:\:-webkit-slider-thumb\]\:\[-webkit-appearance\:none\]::-webkit-slider-thumb{-webkit-appearance:none}.\[\&\:\:file-selector-button\]\:hidden::file-selector-button{display:none}.\[\&\>div\]\:\!min-w-0>div{min-width:0px!important} diff --git a/backend/public/index.html b/backend/public/index.html index 85e2e06..5de4507 100644 --- a/backend/public/index.html +++ b/backend/public/index.html @@ -34,8 +34,8 @@ - - + +
diff --git a/backend/setup/index.js b/backend/setup/index.js index 7ccc576..0016a6f 100644 --- a/backend/setup/index.js +++ b/backend/setup/index.js @@ -14,17 +14,6 @@ const updateServer = db.prepare(` SET name = ?, url = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ? `); -const selectAgentByServerId = db.prepare('SELECT * FROM server_agents WHERE server_id = ?'); -const selectAllAgents = db.prepare('SELECT * FROM server_agents'); -const upsertAgent = db.prepare(` - INSERT INTO server_agents (server_id, agent_url, agent_token, created_at, updated_at) - VALUES (?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) - ON CONFLICT(server_id) DO UPDATE SET - agent_url = excluded.agent_url, - agent_token = excluded.agent_token, - updated_at = CURRENT_TIMESTAMP -`); - const deleteServerStmt = db.prepare('DELETE FROM servers WHERE id = ?'); const selectApiKeyByServerId = db.prepare('SELECT * FROM server_api_keys WHERE server_id = ?'); @@ -44,6 +33,10 @@ const deleteApiKeyByServerId = db.prepare('DELETE FROM server_api_keys WHERE ser const countServersStmt = db.prepare('SELECT COUNT(*) as count FROM servers'); const selectFirstServerStmt = db.prepare('SELECT * FROM servers ORDER BY id ASC LIMIT 1'); +function listServers() { + return selectAllServers.all(); +} + const API_KEY_SECRET = crypto.createHash('sha256') .update(process.env.PORTAINER_API_SECRET || process.env.PORTAINER_API_KEY || 'stackpulse-portainer-api-key') .digest(); @@ -136,49 +129,6 @@ function ensureServer({ name, url }) { return created; } -const generateAgentToken = () => `sp_${crypto.randomBytes(16).toString('hex')}`; - -function getAgentConfig(serverId, { autoCreate = false } = {}) { - const id = Number(serverId); - if (!Number.isFinite(id)) { - const error = new Error('SERVER_ID_INVALID'); - error.code = 'SERVER_ID_INVALID'; - throw error; - } - const server = getServerById(id); - let agent = selectAgentByServerId.get(server.id) || null; - if (!agent && autoCreate) { - const token = generateAgentToken(); - upsertAgent.run(server.id, null, token); - agent = selectAgentByServerId.get(server.id) || null; - } - return agent ? { serverId: server.id, agentUrl: agent.agent_url, agentToken: agent.agent_token } : null; -} - -function setAgentConfig(serverId, { agentUrl, agentToken } = {}) { - const id = Number(serverId); - if (!Number.isFinite(id)) { - const error = new Error('SERVER_ID_INVALID'); - error.code = 'SERVER_ID_INVALID'; - throw error; - } - const server = getServerById(id); - const normalizedUrl = typeof agentUrl === 'string' && agentUrl.trim().length - ? agentUrl.trim().replace(/\/+$/, '') - : null; - let normalizedToken = typeof agentToken === 'string' ? agentToken.trim() : ''; - if (!normalizedToken) { - const existing = selectAgentByServerId.get(server.id); - normalizedToken = existing?.agent_token || generateAgentToken(); - } - if (!normalizedToken.startsWith('sp_')) { - normalizedToken = `sp_${normalizedToken}`; - } - upsertAgent.run(server.id, normalizedUrl, normalizedToken); - const agent = selectAgentByServerId.get(server.id); - return { serverId: server.id, agentUrl: agent.agent_url, agentToken: agent.agent_token }; -} - function getServerById(serverId) { const id = Number(serverId); if (!Number.isFinite(id)) { @@ -371,15 +321,12 @@ function ensureDefaultsFromEnv() { function getServerStatus(serverId) { const server = getServerById(serverId); const apiKeyMeta = selectApiKeyByServerId.get(server.id) || null; - const agent = getAgentConfig(server.id, { autoCreate: true }); - return { server, apiKey: { hasKey: Boolean(apiKeyMeta), updatedAt: apiKeyMeta?.updated_at ?? null - }, - agent + } }; } @@ -484,10 +431,8 @@ export { ensureDefaultsFromEnv, ensureServer, getServerById, + listServers, setServerApiKey, - getAgentConfig, - setAgentConfig, - generateAgentToken, getServerConnection, updateServerDetails, getServerStatus, diff --git a/backend/users/index.js b/backend/users/index.js index 5ee9f09..a9b3b9b 100644 --- a/backend/users/index.js +++ b/backend/users/index.js @@ -75,6 +75,48 @@ const insertMembershipForUser = db.prepare(` VALUES (?, ?) `); +const selectServerByIdForAssignment = db.prepare('SELECT id, name, url FROM servers WHERE id = ?'); + +const selectAssignmentsByUser = db.prepare(` + SELECT + usa.user_id, + usa.server_id, + usa.group_id, + usa.use_global_group, + usa.created_at, + usa.updated_at, + s.name AS server_name, + s.url AS server_url, + g.name AS group_name + FROM user_server_assignments usa + JOIN servers s ON s.id = usa.server_id + LEFT JOIN user_groups g ON g.id = usa.group_id + WHERE usa.user_id = ? + ORDER BY s.name ASC, usa.server_id ASC +`); + +const upsertUserServerAssignment = db.prepare(` + INSERT INTO user_server_assignments ( + user_id, + server_id, + group_id, + use_global_group, + created_at, + updated_at + ) VALUES ( + ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + ) + ON CONFLICT(user_id, server_id) DO UPDATE SET + group_id = excluded.group_id, + use_global_group = excluded.use_global_group, + updated_at = CURRENT_TIMESTAMP +`); + +const deleteUserServerAssignments = db.prepare(` + DELETE FROM user_server_assignments + WHERE user_id = ? +`); + const selectSecurityPhraseByUsername = db.prepare(` SELECT id, @@ -883,6 +925,176 @@ export function updateUserDetails(userId, { username, email, password, avatarCol return updatedUser; } +const sanitizeAssignment = (row) => ({ + userId: row.user_id, + serverId: row.server_id, + groupId: row.group_id ?? null, + groupName: row.group_name || null, + serverName: row.server_name || null, + serverUrl: row.server_url || null, + useGlobalGroup: Boolean(row.use_global_group), + createdAt: row.created_at || null, + updatedAt: row.updated_at || null +}); + +export function getUserServerAssignments(userId) { + const numericUserId = Number(userId); + if (!Number.isFinite(numericUserId) || numericUserId <= 0) { + const error = new Error('INVALID_USER_ID'); + error.code = 'INVALID_USER_ID'; + throw error; + } + + const existingUser = selectUserCredentialsById.get(numericUserId); + if (!existingUser) { + const error = new Error('USER_NOT_FOUND'); + error.code = 'USER_NOT_FOUND'; + throw error; + } + + const superuserMembership = isUserInGroupStatement.get(numericUserId, SUPERUSER_GROUP_NAME); + if (superuserMembership?.has_membership) { + return []; + } + + const rows = selectAssignmentsByUser.all(numericUserId); + return rows.map(sanitizeAssignment); +} + +export function setUserServerAssignments(userId, assignments = [], options = {}) { + const actor = options.actor || null; + const numericUserId = Number(userId); + if (!Number.isFinite(numericUserId) || numericUserId <= 0) { + const error = new Error('INVALID_USER_ID'); + error.code = 'INVALID_USER_ID'; + throw error; + } + + const userRecord = selectUserCredentialsById.get(numericUserId); + if (!userRecord) { + const error = new Error('USER_NOT_FOUND'); + error.code = 'USER_NOT_FOUND'; + throw error; + } + + const superuserMembership = isUserInGroupStatement.get(numericUserId, SUPERUSER_GROUP_NAME); + if (superuserMembership?.has_membership) { + const error = new Error('USER_SUPERUSER_PROTECTED'); + error.code = 'USER_SUPERUSER_PROTECTED'; + throw error; + } + + const normalizedList = Array.isArray(assignments) ? assignments : []; + const missingServers = []; + const missingGroups = []; + const normalizedAssignments = new Map(); + + normalizedList.forEach((entry) => { + const rawServerId = entry?.serverId ?? entry?.server_id ?? entry?.id; + const serverId = Number(rawServerId); + if (!Number.isFinite(serverId) || serverId <= 0) { + return; + } + + const serverRow = selectServerByIdForAssignment.get(serverId); + if (!serverRow) { + missingServers.push(serverId); + return; + } + + const useGlobalGroup = + entry?.useGlobalGroup === true || + entry?.use_global_group === 1 || + entry?.use_global_group === true; + + const rawGroupId = entry?.groupId ?? entry?.group_id; + const groupId = Number(rawGroupId); + const normalizedGroupId = Number.isFinite(groupId) && groupId > 0 ? groupId : null; + + if (!useGlobalGroup && normalizedGroupId === null) { + missingGroups.push(serverId); + return; + } + + if (normalizedGroupId !== null) { + const groupRow = selectGroupById.get(normalizedGroupId); + if (!groupRow) { + missingGroups.push(serverId); + return; + } + } + + normalizedAssignments.set(serverId, { + serverId, + groupId: normalizedGroupId, + useGlobalGroup + }); + }); + + if (missingServers.length > 0) { + const error = new Error('SERVER_NOT_FOUND'); + error.code = 'SERVER_NOT_FOUND'; + error.missingServerIds = missingServers; + throw error; + } + + if (missingGroups.length > 0) { + const error = new Error('GROUP_NOT_FOUND'); + error.code = 'GROUP_NOT_FOUND'; + error.missingServerIds = missingGroups; + throw error; + } + + const previousAssignments = selectAssignmentsByUser.all(numericUserId); + + const applyAssignments = db.transaction(() => { + deleteUserServerAssignments.run(numericUserId); + Array.from(normalizedAssignments.values()).forEach((assignment) => { + upsertUserServerAssignment.run( + numericUserId, + assignment.serverId, + assignment.groupId, + assignment.useGlobalGroup ? 1 : 0 + ); + }); + }); + + applyAssignments(); + + const updatedAssignments = selectAssignmentsByUser.all(numericUserId); + const sanitizedUpdated = updatedAssignments.map(sanitizeAssignment); + + logEvent({ + category: 'benutzer', + eventType: 'benutzer-server-zuordnung-aktualisiert', + action: 'aktualisieren', + status: 'erfolgreich', + entityType: 'benutzer', + entityId: String(numericUserId), + entityName: userRecord?.username ?? `ID ${numericUserId}`, + message: `Serverzuordnungen für Benutzer "${userRecord?.username ?? numericUserId}" aktualisiert`, + metadata: { + assignments: sanitizedUpdated.map((entry) => ({ + serverId: entry.serverId, + serverName: entry.serverName, + useGlobalGroup: entry.useGlobalGroup, + groupId: entry.groupId, + groupName: entry.groupName + })), + previousAssignments: previousAssignments.map((entry) => ({ + serverId: entry.server_id, + serverName: entry.server_name, + useGlobalGroup: Boolean(entry.use_global_group), + groupId: entry.group_id, + groupName: entry.group_name || null + })) + }, + ...resolveActorFields(actor) + }); + + return sanitizedUpdated; +} + const deleteMembershipsStatement = db.prepare(` DELETE FROM user_group_memberships WHERE user_id = ? diff --git a/docs/architecture.md b/docs/architecture.md index 8e9f944..1f59814 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -8,13 +8,18 @@ StackPulse folgt einer klassischen Client/Server-Architektur, bei der das Backen │ (React) │ ◀───── Auth-Cookie + JSON ─ │ (Express) │ ◀─────────────── │ Business Ed. │ └────────────┘ Redeploy Events └───────────────┘ (Axios Proxy) └────────────────┘ │ + mTLS (optional)│ + ▼ + StackPulse Agent + │ ▼ SQLite Datenbank ``` ## Hauptschichten -- **Frontend** (Vite + Material Tailwind): stellt alle Views, Formulare, Tabellen und Echtzeit-Widgets bereit. Die `AuthProvider`-Komponente verwaltet Session, Permissions und Socket-Verbindungen. -- **Backend** (Express + better-sqlite3): aggregiert Daten aus Portainer, persistiert Benutzer/Gruppen/Logs, verwaltet Sessions und stößt Redeploy- sowie Wartungsprozesse an. +- **Frontend** (Vite + Material Tailwind): stellt Views, Tabellen, Setup-Wizard und Echtzeit-Widgets bereit. `AuthProvider` verwaltet Session, Permissions und Socket-Verbindungen. +- **Backend** (Express + better-sqlite3): aggregiert Daten aus Portainer, persistiert Benutzer/Gruppen/Logs, verwaltet Sessions, Redeploy-Queue und Maintenance/Agent-Funktionen. +- **Agent (optional)**: kleiner Node-Dienst, der lokal auf dem Portainer-Host läuft. Liefert Stack-/Portainer-Metadaten per REST, authentifiziert via `X-Agent-Token` und kann mTLS-Zertifikate aus dem Backend beziehen. - **Persistenz** (SQLite): Datei `backend/data/stackpulse.db`, WAL-Modus aktiviert. Tabellen umfassen u. a. `users`, `groups`, `permissions`, `servers`, `server_api_keys`, `event_logs`, `settings` sowie Hilfstabellen für Tokens und Sicherheitspassphrasen. ## Datenflüsse @@ -23,7 +28,7 @@ StackPulse folgt einer klassischen Client/Server-Architektur, bei der das Backen 3. **Stack-Übersicht**: Frontend ruft `/api/stacks` auf. Das Backend proxyt `Portainer /api/endpoints/:id/docker/stacks`, ergänzt Caching, interne Metadaten und liefert Redeploy-Status. 4. **Redeploy**: UI stößt `/api/stacks/:id/redeploy`, `/api/stacks/redeploy-selection` oder `/api/stacks/redeploy-all` an. Das Backend ruft Portainer-Endpoints, protokolliert Events und broadcastet Fortschritt via Socket.IO `redeployStatus`. 5. **Logging**: Jeder relevante Vorgang erzeugt Einträge in `event_logs` (siehe `logging/eventLogs.js`). Frontend filtert/paginiert über `/api/logs` und kann Exporte `/api/logs/export` herunterladen. -6. **Wartung**: `/api/maintenance/*` verwaltet Maintenance-Mode, SSH-Zugänge, Update-Skripte und serverseitige Settings (`db/settings.js`). +6. **Wartung**: `/api/maintenance/*` verwaltet Maintenance-Mode, SSH-Zugänge, Update-Skripte sowie weitere Wartungsfunktionen. ## Verzeichnis-Referenz | Pfad | Inhalt | diff --git a/docs/backend.md b/docs/backend.md index 5ca0705..cec0470 100644 --- a/docs/backend.md +++ b/docs/backend.md @@ -11,10 +11,10 @@ Das Backend implementiert alle Anwendungsfälle über Express-Routen, Socket.IO | Modul | Pfad | Aufgabe | |-------|------|---------| | Auth/Superuser | `auth/superuser.js` | Registrieren/Verifizieren von Superusern, Login, Passwortvalidierung, Sicherheitsphrasen. | -| Users & Groups | `users/*`, `groups/*`, `permissions/*` | CRUD für Benutzer, Gruppen, Rechtezuweisung, Ableitung effektiver Berechtigungen. | +| Users & Groups | `users/*`, `groups/*`, `permissions/*` | CRUD für Benutzer, Gruppen, Rechtezuweisung, Ableitung effektiver Berechtigungen. Rechte-Labels z. B. `Bereich & Navigation`, `Benutzergruppen bearbeiten`, `Benutzer löschen`. | | Setup | `setup/index.js` | Verwaltung registrierter Portainer-Server, sichere Ablage der API-Keys, Setup-Status. | | Logging | `logging/eventLogs.js` | Einheitliches Ereignislogging (Insert, Filter, Delete, Export). | -| Maintenance | `maintenance/state.js` + helper in `index.js` | Wartungsmodus, SSH-Konfiguration, Update-Skripte und Ausführung. | +| Maintenance | `maintenance/state.js` + Helper in `index.js` | Wartungsmodus, SSH-Konfiguration, Update-Skripte und Ausführung. | | Portainer Proxy | Funktionen in `index.js` | Kommunikation mit Portainer (`axiosInstance` + dynamische `baseURL`), Environment-Erkennung und Redeploy-Strecke. | ## API-Überblick (Auszug) @@ -56,7 +56,7 @@ Das Backend implementiert alle Anwendungsfälle über Express-Routen, Socket.IO | GET | `/api/stacks` | Aggregierte Liste inkl. Filter, Self-Stack-Blockade und Redeploy-Status. | | PUT | `/api/stacks/:id/redeploy` | Redeploy eines einzelnen Stacks. | | PUT | `/api/stacks/redeploy-selection` | Redeploy einer Liste übermittelter `stackIds`. | -| PUT | `/api/stacks/redeploy-all` | Redeploy aller Stacks (Permission `stacks-redeploy-all`). | +| PUT | `/api/stacks/redeploy-all` | Redeploy aller Stacks (Recht `Redeploy Alle`). | Das Backend veröffentlicht den Redeploy-Fortschritt parallel über Socket.IO (`redeployStatus` Event) und unterscheidet die Phasen `queued`, `started`, `success`, `error`, `info`. @@ -75,7 +75,7 @@ Das Backend veröffentlicht den Redeploy-Fortschritt parallel über Socket.IO (` ## Datenbank & Schema - `ensureDatabaseSchema()` erzeugt Tabellen bei jedem Start, inklusive Default-Gruppen, Permissions, Settings, Server-Einträge und Trigger. -- Permissions werden anhand der Blueprint-Datei `backend/db/dbs` eingelesen. Jede Permission definiert Key, Label, Level (`full`, `read`, `none`) und Abhängigkeiten. +- Permissions werden anhand der Blueprint-Datei `backend/db/dbs` eingelesen. Jede Permission definiert Key, Label (z. B. `Bereich & Navigation`, `Server bearbeiten`, `SSH/Update-Skript`, `Update durchführen`, `Doppelte Stacks`), Level (`full`, `read`, `none`) und Abhängigkeiten. - Events werden in `event_logs` gespeichert. Relevante Felder: - `category`, `event_type`, `action`, `status`, `severity` - `entity_type`, `entity_id`, `entity_name` @@ -85,13 +85,14 @@ Das Backend veröffentlicht den Redeploy-Fortschritt parallel über Socket.IO (` - Filter-Parameter (`ids`, `categories`, `eventTypes`, `status`, `stackIds`, Zeitfenster) werden in `buildEventLogFilter` zentral verarbeitet. ## Berechtigungssystem -- Jeder Benutzer gehört zu beliebig vielen Gruppen; die effektiven Rechte ergeben sich aus der höchsten Ausprägung pro Permission. +- Jeder Benutzer gehört zu beliebig vielen Gruppen; die effektiven Rechte ergeben sich aus der höchsten Ausprägung pro Permission (Labels wie `Bereich & Navigation`, `Server bearbeiten`, `SSH/Update-Skript`, `Update durchführen`, `Doppelte Stacks`). - Superuser erhalten alle Berechtigungen und können nicht über das UI entzogen werden. - `PermissionGate` im Frontend spiegelt die gleichen Keys. Wichtigste Bereiche: - - `stacks-*` (Redeploy) - - `logs-*` - - `users-*` & `user-groups-*` - - `maintenance-*` (inkl. Unterrechte `maintenance-server-*`, `maintenance-ssh-update`, `maintenance-update`) + - `Redeploy einzeln/Auswahl/Alle` + - `Bereich & Navigation (Logs)`, `Logs Exportieren`, `Logs löschen` + - `Bereich & Navigation (Benutzer)`, `Benutzer bearbeiten/löschen`, `Sicherheitsschlüssel` + - `Bereich & Navigation (Benutzergruppen)`, `Benutzergruppen bearbeiten/löschen` + - Wartung: `Bereich & Navigation (Wartung)`, `Server-Sektion`, `Server bearbeiten/löschen`, `SSH/Update-Skript`, `Update durchführen`, `Doppelte Stacks` ## Redeploy-Workflow 1. Eingehender Request wird mit `maintenanceGuard` geprüft (Maintenance-Modus blockiert optional Redeploys). diff --git a/docs/environment.md b/docs/environment.md new file mode 100644 index 0000000..468372e --- /dev/null +++ b/docs/environment.md @@ -0,0 +1,59 @@ +# Umgebungsvariablen + +Diese Seite sammelt alle relevanten Umgebungsvariablen für StackPulse (Backend) und den optionalen StackPulse Agent. Werte ohne Default sind in der Regel optional, sofern sie nicht explizit als „erforderlich“ markiert sind. + +## StackPulse Backend +| Variable | Default | Erforderlich | Beschreibung | +|----------|---------|--------------|--------------| +| `PORTAINER_URL` | – | Nein | Basis-URL zu Portainer. Kann im Setup-UI hinterlegt werden; ohne Wert schlägt Portainer-Zugriff fehl, bis ein Server gespeichert ist. | +| `PORTAINER_API_KEY` | – | Nein | API-Key für Portainer. Kann im Setup-UI gespeichert (verschlüsselt) werden; ohne Wert keine API-Aufrufe. | +| `PORTAINER_SERVER_NAME` | – | Nein | Anzeigename für den initialen Servereintrag (nur kosmetisch). | +| `PORTAINER_API_SECRET` | `stackpulse-portainer-api-key` | Nein | AES-Schlüssel für gespeicherte API-Keys. Stabil halten, sonst müssen Keys neu eingetragen werden. | +| `SUPERUSER_USERNAME` | – | Nein | Legt beim Start einen Superuser an, falls noch keiner existiert; alternativ im Setup-UI anlegen. | +| `SUPERUSER_EMAIL` | – | Nein | E-Mail des initialen Superusers. | +| `SUPERUSER_PASSWORD` | – | Nein | Passwort des initialen Superusers. | +| `SELF_STACK_ID` | – | Nein | ID des StackPulse-Stacks; verhindert Self-Redeploy im UI. | +| `AUTH_COOKIE_NAME` | `sp_auth_token` | Nein | Name des Auth-Cookies. | +| `AUTH_SESSION_TTL_MS` | `43200000` (12h) | Nein | Session-Lebensdauer in Millisekunden. | +| `AUTH_COOKIE_SECURE` | `false` | Nein | Setzt Cookie nur über HTTPS, wenn `true`. | +| `SECURITY_PHRASE_SECRET` | `stackpulse-security-phrase-secret` | Nein | Secret für verschlüsselte Sicherheitsphrasen; stabil halten, sonst Phrasen neu verteilen. | +| `PORTAINER_SSH_SECRET` | – (Fallback API-Key/Default) | Nein | Secret für verschlüsselte SSH-Passwörter; stabil halten, sonst Passwort neu setzen. | +| `AGENT_MTLS_KEY` | generiert | Nein | Optional: eigenes PEM-Key für internen mTLS-Server, falls nicht automatisch erzeugt. | +| `AGENT_MTLS_CERT` | generiert | Nein | Optional: eigenes PEM-Zertifikat für internen mTLS-Server. | +| `AGENT_MTLS_PORT` | `4441` | Nein | Port des internen mTLS-Endpunkts (Agent). | +| `DISPLAY` | `:9999` | Nein | Wird an Child-Prozesse (Update-Skript) weitergereicht. | + +## StackPulse Agent +| Variable | Default | Erforderlich | Beschreibung | +|----------|---------|--------------|--------------| +| `AGENT_PORT` | `7070` | Nein | Listenport des Agents (HTTPS mit mTLS). | +| `AGENT_TOKEN` | – | Ja | Shared Secret für Auth (`X-Agent-Token`) bei allen Agent-Endpoints. | +| `DOCKER_SOCKET` | `/var/run/docker.sock` | Nein | Pfad zum Docker-Socket; nötig für Stack-/Image-Infos. | +| `CONTROL_PLANE_URL` | – | Ja (für Bootstrap/Restore) | Basis-URL des StackPulse-Backends für Zertifikatsabruf ohne mTLS (z. B. `https://stackpulse:4001`). | +| `CONTROL_PLANE_MTLS_URL` | – | Nein (empfohlen) | Bevorzugte mTLS-URL des Backends (z. B. `https://stackpulse:4441`). Wird für alle Agent→Backend-Calls genutzt, sobald Zertifikate vorliegen; fehlt sie, wird aus `CONTROL_PLANE_URL` + `AGENT_MTLS_PORT` abgeleitet. | +| `AGENT_BOOTSTRAP_TOKEN` | – | Nein (für Erstbootstrap) | Einmal-Token aus dem Wartungsbereich, um mTLS-Zertifikate zu ziehen. Pflicht, wenn keine Zertifikate vorliegen und das Backend noch kein Material für den Agent gespeichert hat. | +| `AGENT_MTLS_PORT` | `4441` | Nein | Fallback-Port, falls `CONTROL_PLANE_MTLS_URL` keinen Port enthält. | +| `AGENT_SERVER_KEY` / `AGENT_SERVER_CERT` | – | Nein | PEM-Material für den Agent-Server; nur nötig bei eigenen Zertifikaten statt Backend-CA. | +| `AGENT_CLIENT_KEY` / `AGENT_CLIENT_CERT` / `AGENT_CA_CERT` | – | Nein | PEM-Material für Client/CA; nur bei eigener PKI nötig. | +| `REGISTRY_TOKEN` | – | Nein | Bearer-Token für Registry-Abfragen (Digest-Vergleich). | +| `REGISTRY_USERNAME` / `REGISTRY_PASSWORD` | – | Nein | Basic-Auth-Creds für Registries. | +| `GITHUB_USERNAME` / `GITHUB_TOKEN` / `GITHUB_PAT` | – | Nein | Alternative Credential-Quellen für GitHub Packages. | + + +Agent-Betrieb (wähle eine Variante): + + - **Dynamisch über Backend (empfohlen)** + - Pflicht: `AGENT_TOKEN` + `CONTROL_PLANE_URL` (optional `CONTROL_PLANE_MTLS_URL`). + - Falls keine Zertifikate existieren: einmaliges `AGENT_BOOTSTRAP_TOKEN` setzen. + - Der Agent zieht Zertifikate vom Backend, schaltet auf mTLS um und braucht danach kein Bootstrap-Token mehr. + - **Statisch per ENV** + - Liefere PEMs: `AGENT_SERVER_KEY`/`AGENT_SERVER_CERT` + `AGENT_CLIENT_KEY`/`AGENT_CLIENT_CERT`/`AGENT_CA_CERT`. + - Dann kein `CONTROL_PLANE_URL`/Bootstrap nötig, da mTLS-Material bereits vorhanden ist. + - `AGENT_TOKEN` bleibt erforderlich. + +Hinweise: + + - Server-URL und API-Key kannst du im Setup-UI pflegen; Umgebungsvariablen setzen nur den Initialzustand. + - Secrets (`SECURITY_PHRASE_SECRET`, `PORTAINER_SSH_SECRET`, `PORTAINER_API_SECRET`) in Produktion einmalig setzen und stabil halten – sonst werden bestehende verschlüsselte Werte unlesbar. + + - `CONTROL_PLANE_MTLS_URL`: bevorzugte mTLS-Zieladresse. Fehlt sie, leitet der Agent sie aus `CONTROL_PLANE_URL` + `AGENT_MTLS_PORT` ab und nutzt sie für alle Aufrufe, sobald Zertifikate vorliegen. diff --git a/docs/getting-started.md b/docs/getting-started.md index 28b1421..b949a76 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,80 +1,61 @@ # Getting Started -Dieser Leitfaden hilft dir, StackPulse lokal oder als Container aufzusetzen und die ersten Schritte im UI abzuschließen. +Dieser Leitfaden beschreibt ausschließlich den Docker-Deploy über die bereitgestellten GHCR-Images und die anschließende Einrichtung im UI. ## Voraussetzungen -- Node.js **>= 20** und npm für lokale Entwicklung -- Docker & Docker Compose (optional aber empfohlen für Deployment) -- Zugriff auf eine **Portainer Business Edition** samt API-Key -- Shell-Zugang zum Host, auf dem StackPulse laufen soll +- Docker & Docker Compose +- Portainer-Instanz (Business Edition empfohlen; bei Community/Edge zusätzlich Agent einsetzen) -## Repository & Abhängigkeiten -```bash -# Repository klonen -# git clone -cd stackpulse +## Zentrale Umgebungsvariablen (Kurzfassung) +| Variable | Erforderlich | Beschreibung | +|----------|--------------|--------------| +| `PORTAINER_URL` | Nein | Basis-URL zu Portainer; kann im Setup-UI hinterlegt werden, falls nicht gesetzt. | +| `PORTAINER_API_KEY` | Nein | API-Key; kann im Setup gespeichert werden (wird verschlüsselt). | +| `PORTAINER_SERVER_NAME` | Nein | Anzeige-Name für den initialen Servereintrag. | +| `PORTAINER_API_SECRET` | Nein | AES-Schlüssel für gespeicherte API-Keys; setze stabilen Wert, sonst muss der Key neu eingegeben werden. | +| `SUPERUSER_USERNAME`, `SUPERUSER_EMAIL`, `SUPERUSER_PASSWORD` | Nein | Legt automatisch einen Superuser an, falls noch keiner existiert; sonst im Setup-UI anlegen. | +| `SELF_STACK_ID` | Nein | ID des StackPulse-Stacks; schützt vor Self-Redeploy. | +| `AUTH_COOKIE_NAME`, `AUTH_SESSION_TTL_MS`, `AUTH_COOKIE_SECURE` | Nein | Session/Cookie-Tuning (Name, Dauer, Secure-Flag). | +| `SECURITY_PHRASE_SECRET` | Nein | Secret für verschlüsselte Sicherheitsphrasen; stabil halten, sonst Phrasen neu verteilen. | +| `PORTAINER_SSH_SECRET` | Nein | Secret für verschlüsselte SSH-Passwörter; stabil halten, sonst Passwort neu setzen. | +| `DISPLAY` | Nein | Wird an Update-Childprozesse weitergereicht (Default `:9999`). | -# Skript ausführbar machen -chmod +x scripts/start-dev.sh -``` +Weitere Variablen (Agent, Registry, mTLS) findest du im Detail unter [Umgebungsvariablen](environment.md). Einstellungen wie Server-URL/API-Key, SSH-Config oder Update-Skript kannst du alternativ im UI (Setup/Wartung) verwalten. -## Lokale Dev-Umgebung -Das Skript `scripts/start-dev.sh` richtet Backend und Frontend automatisch ein: - -1. Backend: `npm install`, `npm run migrate` (erstellt/aktualisiert `backend/data/stackpulse.db`), `npm start` -2. Frontend: `npm install`, `npm run dev` (Port 5173) und ein einmaliges `npm run build`, um statische Assets ins Backend zu spiegeln - -Nach erfolgreichem Start: -- Frontend dev server: http://localhost:5173 -- Backend API & statische Assets: http://localhost:4001 - -Zum Stoppen STRG+C verwenden. - -## Manuelles Starten -```bash -# Backend -cd backend -npm install -npm run migrate -PORTAINER_URL=https://portainer.local npm start - -# Frontend in zweiter Shell -cd frontend -npm install -npm run dev -``` -Das Backend liest Umgebungsvariablen beim Start. Alternativ kannst du eine `.env` neben `backend/index.js` anlegen. - -## Zentrale Umgebungsvariablen -| Variable | Beschreibung | -|----------|--------------| -| `PORTAINER_URL` | Basis-URL zu deiner Portainer-Instanz (inkl. Protokoll). Kann später im Setup-UI überschrieben werden. | -| `PORTAINER_API_KEY` | API-Key für Portainer. Wird in der DB verschlüsselt abgelegt, sobald du ihn im Setup speicherst. | -| `PORTAINER_SERVER_NAME` | Optionaler Anzeigename für den Server während des Setups. | -| `PORTAINER_API_SECRET` | Überschreibt den Schlüssel, der zur Verschlüsselung des API-Keys verwendet wird. | -| `SUPERUSER_USERNAME`, `SUPERUSER_EMAIL`, `SUPERUSER_PASSWORD` | Legt einen Superuser automatisch beim Start an (falls nicht vorhanden). | -| `SELF_STACK_ID` | Stack-ID von StackPulse selbst. Wird genutzt, um eigene Redeploys zu blockieren. | -| `AUTH_COOKIE_NAME`, `AUTH_SESSION_TTL_MS`, `AUTH_COOKIE_SECURE` | Feintuning für die Session-Verwaltung der API. | -| `SECURITY_PHRASE_SECRET` | Seed für die Generierung kryptografischer Sicherheitsphrasen. | -| `PORTAINER_SSH_SECRET` | Secret für SSH-Passwortverschlüsselung (Wartungs-Update). | -| `DISPLAY` | Wird an Kindprozesse weitergereicht, wenn Portainer-Updates ausgelöst werden müssen (Default `:9999`). | - -Weitere Einstellungen (SSH-Config, Update-Skripte) verwaltest du später direkt im Maintenance-Bereich des UI. +**Hinweis zu Secrets:** +- `SECURITY_PHRASE_SECRET` und `PORTAINER_SSH_SECRET` steuern die AES-256-GCM-Verschlüsselung von Sicherheitsphrasen bzw. hinterlegten SSH-Passwörtern. +- Wenn sie nicht gesetzt sind, nutzt StackPulse fixe Fallbacks (`stackpulse-security-phrase-secret` bzw. `stackpulse-portainer-ssh-secret` / API-Key). Setze in Produktion eigene, stabile Werte – ein späterer Secret-Wechsel macht zuvor gespeicherte Phrasen/Passwörter unlesbar. +- Eine vollständige Übersicht aller Variablen (inkl. Agent) findest du unter „Technik → Umgebungsvariablen“. ## Ersteinrichtung im UI -1. Öffne das Frontend (`/setup` führt dich automatisch durch den Wizard). -2. Lege den Portainer-Server und den zugehörigen API-Key an – StackPulse testet die Verbindung per `/api/setup/test-portainer`. +1. Öffne das Frontend. +2. Lege den Portainer-Server und den zugehörigen API-Key an (der Wizard führt durch den Test). 3. Registriere einen Superuser oder verwende den per Umgebungsvariablen automatisch angelegten Account. 4. Nach erfolgreicher Einrichtung kannst du dich anmelden und erhältst Zugriff auf Dashboard, Logs, Benutzer & Wartung. -## Docker-Deployment +## Docker Run (Single Container) +```bash +docker run -d \ + -p 4001:4001 \ + -e PORTAINER_URL=https://portainer.example.com \ + -e PORTAINER_API_KEY=xxxx \ + -e SUPERUSER_USERNAME=admin \ + -e SUPERUSER_EMAIL=admin@example.com \ + -e SUPERUSER_PASSWORD=changeme \ + -e SELF_STACK_ID=123 \ + -e SECURITY_PHRASE_SECRET=$(openssl rand -hex 32) \ + -e PORTAINER_SSH_SECRET=$(openssl rand -hex 32) \ + -v stackpulse_data:/app/backend/data \ + ghcr.io/mboehmlaender/stackpulse:latest +``` +Das Volume `stackpulse_data` persistiert die SQLite-Datenbank. Passen Sie Secrets und Ports an Ihre Umgebung an; weitere Variablen siehe Kapitel „Umgebungsvariablen“. + +## Docker-Deployment (Compose) ```yaml # docker-compose.yml (Auszug) services: app: - build: - context: . - dockerfile: Dockerfile + image: ghcr.io/mboehmlaender/stackpulse:latest ports: - "4001:4001" volumes: @@ -91,13 +72,8 @@ volumes: stackpulse_data: ``` -1. `docker compose up -d --build` -2. Das Frontend ist anschließend unter Port 4001 (via Backend `public/`) erreichbar. +1. `docker compose up -d` +2. Das Frontend ist anschließend unter Port 4001 erreichbar. 3. Datenbank & Einstellungen liegen im benannten Volume `stackpulse_data`. -## Datenbank & Migration -- Datei: `backend/data/stackpulse.db` -- Migration: `npm run migrate` (führt `backend/db/ensure.js` aus und erzeugt Schema, Rechte, Defaults) -- Backup: Datei oder Volume regelmäßig sichern; enthält Benutzer, Logs und gespeicherte Secrets. - Damit bist du bereit für die tieferen Kapitel zu Architektur sowie Backend- und Frontend-Details. diff --git a/docs/index.md b/docs/index.md index 16db7cd..5a5a8e4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,6 +8,7 @@ StackPulse ist eine eigenständige Web-Anwendung, die die Portainer Business Edi - **Auditierbare Historie** durch strukturierte Event-Logs mit Export-, Lösch- und Filterfunktionen - **Feingranulare Rechteverwaltung** mit Gruppenrechten, Superuser-Handling und Sicherheitsphrasen - **Wartungsautomatisierung** (SSH Update-Skripte, Maintenance-Mode) ohne direkten Portainer-Zugang +- **Agent-Integration** (mTLS) für Portainer Community/Edge, um Stacks & Versionen auch ohne Business-API auszulesen - **Bereitstellung als Docker-Image** sowie als lokale Dev-Umgebung via `scripts/start-dev.sh` ## Technische Eckdaten diff --git a/docs/local-dev.md b/docs/local-dev.md new file mode 100644 index 0000000..a4476cb --- /dev/null +++ b/docs/local-dev.md @@ -0,0 +1,53 @@ +# Lokale Entwicklung & Migration + +Dieser Abschnitt richtet sich an Contributor:innen, die StackPulse lokal bauen oder erweitern möchten. Für produktive Deployments nutze die GHCR-Images wie im Getting Started beschrieben. + +## Voraussetzungen +- Node.js **>= 20** und npm +- Shell-Zugang zum Host +- Docker (optional) für lokale Tests + +## Repository vorbereiten +```bash +# Repository klonen +# git clone +cd stackpulse + +# Startskript ausführbar machen +chmod +x scripts/start-dev.sh +``` + +## Schnellstart (Dev-Skript) +Das Skript `scripts/start-dev.sh` richtet Backend und Frontend ein und startet beide im Dev-Modus: +1. Backend: `npm install`, `npm run migrate`, `npm start` +2. Frontend: `npm install`, `npm run dev` (Port 5173) und einmalig `npm run build` für statische Assets + +Nach dem Start: +- Frontend Dev Server: http://localhost:5173 +- Backend API & statische Assets: http://localhost:4001 + +Stoppen mit `STRG+C` in der Shell, in der das Skript läuft. + +## Manuelles Starten +```bash +# Backend +cd backend +npm install +npm run migrate +PORTAINER_URL=https://portainer.local npm start + +# Frontend (zweite Shell) +cd frontend +npm install +npm run dev +``` +Das Backend liest Umgebungsvariablen beim Start. Alternativ kannst du eine `.env` neben `backend/index.js` anlegen. + +## Datenbank & Migration +- Datei: `backend/data/stackpulse.db` (SQLite, WAL aktiviert) +- Migration: `npm run migrate` (führt `backend/db/ensure.js` aus, erzeugt/aktualisiert Schema & Defaults) +- Backup: Datei oder Volume regelmäßig sichern; enthält Benutzer, Logs und gespeicherte Secrets + +## Hinweise +- Die lokalen Builds sind für Entwicklung gedacht. Für Deployments verwende `ghcr.io/mboehmlaender/stackpulse`. +- Einige Einstellungen (z. B. Server-URL, API-Key, SSH-Config) kannst du im UI setzen; für lokale Tests reichen die ENV-Defaults und das Setup-UI. diff --git a/docs/operations.md b/docs/operations.md index 0438dcd..4fc860e 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -2,6 +2,10 @@ Dieser Abschnitt deckt typische Aufgaben für Betriebsteams ab – von Backups über Wartungsmodus bis zu Störungssuche. +**Relevante Rechte** +- `Superuser löschen` +- `Bereich & Navigation (Wartung)` + ## Laufender Betrieb - **Services überwachen**: StackPulse stellt nur einen Prozess bereit (Node.js/Express). Nutze Systemd/Docker Healthchecks, indem du regelmäßig `/api/auth/session` (für Auth) oder `/api/maintenance/update-status` (für Backend + DB) abfragst. - **Ports**: Standardmäßig lauscht nur Port 4001 (HTTP + Socket.IO). Hinter einem Reverse Proxy sollte TLS terminiert werden. @@ -13,12 +17,12 @@ Dieser Abschnitt deckt typische Aufgaben für Betriebsteams ab – von Backups 3. **Restore**: Ersetze die Datei im Volume und starte die App neu. Beim ersten Start führt `ensureDatabaseSchema` automatisch eventuelle Nachmigrationen aus. ## Benutzer- & Rechteverwaltung -- Superuser können über `/api/auth/superuser/*` oder im UI registriert werden. Entfernen ist nur mit `maintenance-superuser-delete` möglich. +- Superuser können über `/api/auth/superuser/*` oder im UI registriert werden. Entfernen ist nur mit `Superuser löschen` möglich. - Benutzerkonten lassen sich temporär deaktivieren (`/api/users/:id/active`). Die Historie bleibt erhalten. - Sicherheitsphrasen sind notwendig für Passwort-Reset. Admins können neue Phrasen erzeugen (`/api/users/:id/security-phrase/renew`), müssen diese aber dem Benutzer sicher zustellen. ## Wartungsmodus & Updates -- Maintenance Mode aktivieren: `curl -X POST http://host:4001/api/maintenance/mode -H 'Content-Type: application/json' -d '{"active":true,"message":"Cluster Upgrade"}'` (Permission `maintenance-access`). Das UI informiert alle Nutzer und blockiert Redeploys. +- Maintenance Mode aktivieren: `curl -X POST http://host:4001/api/maintenance/mode -H 'Content-Type: application/json' -d '{"active":true,"message":"Cluster Upgrade"}'` (Recht `Bereich & Navigation (Wartung)`). Das UI informiert alle Nutzer und blockiert Redeploys. - SSH-/Update-Setup: Hinterlege Host, Port, Benutzer, Passwort (optional) und zusätzliche SSH-Argumente. Passwörter werden verschlüsselt gespeichert (`PORTAINER_SSH_SECRET`). - Update-Skript: Das Default-Skript (`DEFAULT_PORTAINER_UPDATE_SCRIPT`) führt `docker stop`, `docker run` etc. aus. Du kannst im UI oder via API ein eigenes Skript setzen – wird erst aktualisiert, wenn kein Update läuft. - Update anstoßen: `POST /api/maintenance/portainer-update` triggert die SSH-Kommandos. Status & Logausgaben können über `/api/maintenance/update-status` überwacht werden. diff --git a/docs/user-guide/groups.md b/docs/user-guide/groups.md index 7134e26..6f1a75d 100644 --- a/docs/user-guide/groups.md +++ b/docs/user-guide/groups.md @@ -1,6 +1,11 @@ # Benutzergruppen & Rechte -Dieser Bereich verwaltet Rollenmodelle und bestimmt, welche Aktionen Benutzer:innen durchführen dürfen. Du benötigst `user-groups-access` zum Lesen sowie `user-groups-edit`/`user-groups-delete` für Änderungen. +Dieser Bereich verwaltet Rollenmodelle und bestimmt, welche Aktionen Benutzer:innen durchführen dürfen. + +**Relevante Rechte** +- `Bereich & Navigation (Benutzergruppen)` +- `Benutzergruppen bearbeiten` +- `Benutzergruppen löschen` ## Gruppen anlegen 1. Button **Gruppe erstellen** wählen. @@ -23,7 +28,7 @@ Der Rechte-Dialog zeigt die gesamte Permissionstruktur in Kategorien (Stacks, Lo - **none** – kein Zugriff - **read** – Zugriff auf Ansicht/Lesen - **full** – volle Bearbeitungsrechte -3. Abhängigkeiten werden automatisch hervorgehoben. Beispiel: Um `logs-delete` nutzen zu dürfen, muss `logs-access` mindestens `full` sein. +3. Abhängigkeiten werden automatisch hervorgehoben. Beispiel: Um `Logs löschen` nutzen zu dürfen, muss `Bereich & Navigation (Logs)` mindestens `Vollzugriff` sein. 4. Speichern bestätigt die Anpassungen. StackPulse aktualisiert sofort die effektiven Rechte aller Benutzer in dieser Gruppe. ## Benutzer zu Gruppen hinzufügen @@ -36,6 +41,6 @@ Der Rechte-Dialog zeigt die gesamte Permissionstruktur in Kategorien (Stacks, Lo - Löschen entfernt keine Benutzer, aber deren effektive Rechte können sich dadurch verringern. ## Best Practices -- Erstelle zunächst eine Basisgruppe (z. B. „Viewer“) mit `read`-Rechten für Stacks und Logs. +- Erstelle zunächst eine Basisgruppe (z. B. „Viewer“) mit Leserechten für Stacks und Logs. - Verwende separate Gruppen für sensible Aktionen wie Wartung oder Superuser-Verwaltung. - Nutze sprechende Beschreibungen, damit Kolleg:innen sofort erkennen, wofür eine Gruppe gedacht ist. diff --git a/docs/user-guide/maintenance.md b/docs/user-guide/maintenance.md index 86073cc..5db563c 100644 --- a/docs/user-guide/maintenance.md +++ b/docs/user-guide/maintenance.md @@ -1,43 +1,62 @@ # Wartungsbereich -Der Wartungsbereich bündelt alle Funktionen rund um Maintenance-Mode, Serververwaltung, Update-Skripte und SSH-Verbindungen. Sichtbar für Benutzer:innen mit `maintenance-access` (Teilbereiche erfordern zusätzliche Unterrechte). +Der Wartungsbereich bündelt Maintenance-Mode, Serververwaltung (inkl. Agent-Integration), Update-Skripte und SSH-Konfiguration. Sichtbar für Benutzer:innen mit `Bereich & Navigation (Wartung)`; Unterbereiche haben eigene Rechte: -## Portainer-Status -- Klick auf **Status prüfen**, um eine Live-Abfrage gegen Portainer durchzuführen. Ergebnis zeigt API-Verfügbarkeit, Endpoint-IDs und Auth-Status. -- Häufige Fehler werden direkt erklärt (z. B. fehlender API-Key oder Netzwerkprobleme). +**Relevante Rechte** +- `Bereich & Navigation (Wartung)` +- `Server-Sektion` +- `Server bearbeiten` / `Server löschen` +- `SSH/Update-Skript` +- `Update durchführen` +- `Agent` +- `Doppelte Stacks` +- `mTLS Sektion` +- `Superuser löschen` + +- `Server-Sektion` (lesen) zeigt die Serverübersicht. +- `Server bearbeiten` (lesen) zeigt Server-Details inkl. Portainer-Status; Felder bleiben schreibgeschützt. Vollzugriff erlaubt Bearbeiten/Speichern. +- `Server löschen` löscht Server (nur bei Vollzugriff). +- `SSH/Update-Skript` und `Update durchführen` hängen am Unterpunkt Portainer/SSH und erfordern Vollzugriff auf Server-Edit. +- `Agent` (lesen/voll) steuert die Agent-Sektion im Server-Detail. ## Maintenance-Mode -1. Schalter **Wartungsmodus aktivieren** toggeln. -2. Optionale Nachricht eingeben (z. B. „Upgrade um 22:00 Uhr“); sie erscheint im gesamten UI als Banner. -3. Aktivieren/Deaktivieren protokolliert automatisch Events in den Logs. +1. Schalter **Wartungsmodus aktivieren** umlegen. +2. Jede Aktivierung/Deaktivierung wird in den Logs protokolliert. -## Server & API-Key verwalten -- Register „Server“ listet alle Portainer-Instanzen. -- Über **Server hinzufügen** kannst du Name + URL ergänzen und anschließend API-Key speichern. -- Buttons in der Tabelle: - - **API-Key aktualisieren** – neues Token einsetzen. - - **Server löschen** – nur möglich, wenn mindestens ein weiterer Server existiert oder du sofort neue Daten einträgst. +## Serververwaltung & API-Key +- Liste zeigt alle eingetragenen Portainer-Server. + - **Server hinzufügen**/**bearbeiten**/**löschen** nur mit `Server bearbeiten` (Vollzugriff); löschen zusätzlich `Server löschen`. +- Im Server-Detail: + - **Server-URL/Name** und **Portainer API-Key**: editierbar nur mit `Server bearbeiten` Vollzugriff; bei Leserecht sichtbar, aber gesperrt. + - **Self-Stack-ID**: Stack-ID von StackPulse selbst; blockiert Redeploys dieses Stacks. +- **Status prüfen**: Live-Check gegen Portainer (Version, Edition, Update vorhanden). Sichtbar ab `Server bearbeiten` (lesen). -## Self-Stack ID -- Feld „Eigener Stack“ akzeptiert die Stack-ID, in der StackPulse selbst läuft. -- Nach dem Speichern sind Redeploy-Aktionen für diesen Stack im Dashboard deaktiviert. +## Agent-Integration (Portainer CE / Edge) +Für die Community Edition von Stackpulse kannst du je Server einen StackPulse Agent hinterlegen. Er liefert Stack- und Portainer-Metadaten, wenn die Business-API fehlt. Hierzu muss auch der Agent auf dem Server der Portainer Instanz laufen. Der Agent wird für die Business Edition nicht benötigt. + +1. Im Server-Detail **Agent konfigurieren** öffnen. +2. **Agent URL** eintragen, der **Agent Token** wird automatisch generiert und kann nicht geändert werden (Token = `AGENT_TOKEN` des Agents). +StackPulse prüft Erreichbarkeit und zeigt Online-/Fehlerstatus. Sichtbar mit `Agent` lesen, Bearbeitung mit `Agent` voll. +3. mTLS-Zertifikate verwalten: + - **Bootstrap-Token erzeugen** (Einmal-Token) und im Agent als `AGENT_BOOTSTRAP_TOKEN` setzen. + - Agent holt Zertifikate automatisch ab; Status im Zertifikate-Abschnitt. + - **Zertifikate anzeigen** (PEM) (nur bei entsprechenden Rechten) +4. Portainer-Version kann gelesen werden, wenn der Agent online ist. ## SSH-Konfiguration -Erforderliche Permission: `maintenance-ssh-update`. -1. Host, Port, Benutzername eintragen. Optional Passwort und zusätzliche SSH-Argumente (z. B. `-o StrictHostKeyChecking=no`). -2. Passwort wird verschlüsselt gespeichert; alternativ kannst du Public-Key-Auth nutzen und das Feld leer lassen. -3. **Verbindung testen**: StackPulse baut eine SSH-Verbindung auf und zeigt das Ergebnis in Echtzeit. +Erfordert `SSH/Update-Skript` (sichtbar/bearbeitbar nur bei Vollzugriff auf Server-Edit). +1. Host, Port, Benutzername und Passwort sowie eventuell notwendige Extra-Argumente eintragen. +2. Passwort wird verschlüsselt gespeichert. +3. **Verbindung testen** prüft Erreichbarkeit und meldet Ergebnis direkt. -## Update-Skript -- Standard-Skript wird angezeigt und kann als Ausgangspunkt genutzt werden. -- Eigenes Skript: Inhalt in das Editorfeld kopieren und speichern. StackPulse prüft auf leere Zeilen und Basisbefehle. -- Skript zurücksetzen entfernt die benutzerdefinierte Variante und stellt den Default wieder her. - -## Portainer-Update auslösen -1. Stelle sicher, dass Wartungsmodus aktiv ist und SSH-Konfiguration + Skript korrekt sind. -2. Klicke auf **Update starten**. Der aktuelle Fortschritt erscheint in einem Logpanel. -3. Der Button bleibt deaktiviert, solange ein Update läuft. Über **Status aktualisieren** kannst du den Fortschritt erneut abfragen. +## Update-Skript & Portainer-Update +- Standard-Skript ist sichtbar und kann überschrieben werden (Recht `SSH/Update-Skript` + Server-Edit Vollzugriff). **Zurücksetzen** stellt den Standard wieder her. +- Start eines Updates (`Update durchführen` + Server-Edit Vollzugriff): + 1) Wartungsmodus wird automatisch aktiviert. + 2) SSH-Konfiguration und Skript prüfen. + 3) **Update starten** klicken. Der Fortschritt und die Logausgaben erscheinen im Fenster. + 4) Während ein Update läuft, sind Änderungen am System gesperrt. ## Fehlerbehandlung -- Bei SSH-Fehlern zeigt StackPulse die genaue Ausgabe an. Passe Host/Port/Benutzer oder Skript an. -- Falls das Update-Skript Probleme verursacht, kannst du es jederzeit stoppen, indem du Portainer manuell prüfst und ggf. das Skript anpasst. +- SSH-/Update-Fehler werden mit Klartextausgabe angezeigt. Bei Bedarf Host/Port/User, Passwort oder Skript anpassen. +- Agent offline: URL/Token prüfen, Bootstrap-Token ggf. neu erzeugen und den Agent neu starten. diff --git a/docs/user-guide/setup.md b/docs/user-guide/setup.md index 0f205f9..6053f4c 100644 --- a/docs/user-guide/setup.md +++ b/docs/user-guide/setup.md @@ -1,6 +1,6 @@ # Setup-Assistent -Beim ersten Start erscheint automatisch der Setup-Bereich. Du erreichst ihn später jederzeit über `/setup`, solange nicht alle Schritte abgeschlossen sind. +Beim ersten Start erscheint automatisch der Setup-Bereich und führt dich durch alle Schritte, bis die Einrichtung abgeschlossen ist. ## Voraussetzungen - Portainer Business Edition mit gültigem API-Key @@ -31,5 +31,5 @@ Beim ersten Start erscheint automatisch der Setup-Bereich. Du erreichst ihn spä ## Setup wiederholen oder ändern - Über das Dashboard → **Wartung** → Abschnitt *Serververwaltung* kannst du zusätzliche Portainer-Server hinzufügen oder entfernen. -- Superuser lässt sich im Bereich **Benutzer** löschen, sofern du `maintenance-superuser-delete` besitzt. +- Superuser lässt sich im Bereich **Benutzer** löschen, sofern du das Recht `Superuser löschen` besitzt. - Der Self-Stack (StackPulse-eigener Stack) kann in der Wartung gepflegt werden, damit er nicht versehentlich redeployed wird. diff --git a/docs/user-guide/stacks.md b/docs/user-guide/stacks.md index ff52875..1230675 100644 --- a/docs/user-guide/stacks.md +++ b/docs/user-guide/stacks.md @@ -2,6 +2,11 @@ Die Stacks-Ansicht ist der Startpunkt nach dem Login und liefert einen Überblick über alle Stacks der angebundenen Portainer-Instanz. +**Relevante Rechte** +- `Redeploy einzeln` +- `Redeploy Auswahl` +- `Redeploy Alle` + ## Aufbau - **Header** mit Suchfeld, Filterchips für Status sowie Buttons für Redeploy-Aktionen. - **Tabelle** mit Name, Endpoint, Status, letzte Aktion, Redeploy-Status und verfügbaren Buttons. @@ -15,9 +20,9 @@ Die Stacks-Ansicht ist der Startpunkt nach dem Login und liefert einen Überblic ## Redeploy-Aktionen | Aktion | Voraussetzung | Vorgehen | |--------|---------------|----------| -| **Einzelner Stack** | Permission `stacks-redeploy-single` | Button **Redeploy** in der jeweiligen Zeile klicken und bestätigen. | -| **Mehrere Stacks** | `stacks-redeploy-selection` | Checkboxen der gewünschten Stacks aktivieren, anschließend **Redeploy Auswahl**. | -| **Alle Stacks** | `stacks-redeploy-all` | Button **Redeploy alle** auslösen. Nutze vorher Filter, um sicherzugehen, dass alle Stacks korrekt angezeigt werden. | +| **Einzelner Stack** | Recht `Redeploy einzeln` | Button **Redeploy** in der jeweiligen Zeile klicken und bestätigen. | +| **Mehrere Stacks** | Recht `Redeploy Auswahl` | Checkboxen der gewünschten Stacks aktivieren, anschließend **Redeploy Auswahl**. | +| **Alle Stacks** | Recht `Redeploy Alle` | Button **Redeploy alle** auslösen. Nutze vorher Filter, um sicherzugehen, dass alle Stacks korrekt angezeigt werden. | Während eines Redeploys erscheint pro Stack ein Fortschrittsbadge. Du kannst das Panel schließen; beim nächsten Besuch wird der aktuelle Status aus dem Backend gelesen. diff --git a/frontend/src/components/AuthProvider.jsx b/frontend/src/components/AuthProvider.jsx index dd2a5ec..761c9f1 100644 --- a/frontend/src/components/AuthProvider.jsx +++ b/frontend/src/components/AuthProvider.jsx @@ -23,10 +23,52 @@ const normalizePermissions = (raw) => { }, {}); }; +const normalizeServerPermissions = (raw) => { + if (!raw || typeof raw !== "object" || Array.isArray(raw)) { + return {}; + } + return Object.entries(raw).reduce((acc, [serverId, value]) => { + const numericId = Number(serverId); + if (!Number.isFinite(numericId)) { + return acc; + } + const permissionMap = value?.permissions && typeof value.permissions === "object" + ? value.permissions + : value; + acc[numericId] = { + permissions: normalizePermissions(permissionMap), + groupId: Number.isFinite(Number(value?.groupId)) ? Number(value.groupId) : null, + useGlobalGroup: Boolean(value?.useGlobalGroup) + }; + return acc; + }, {}); +}; + +const normalizeServerAssignments = (raw) => { + if (!Array.isArray(raw)) { + return []; + } + return raw + .map((entry) => { + const serverId = Number(entry?.serverId ?? entry?.server_id ?? entry?.id); + if (!Number.isFinite(serverId)) return null; + return { + serverId, + groupId: Number.isFinite(Number(entry?.groupId ?? entry?.group_id)) ? Number(entry?.groupId ?? entry?.group_id) : null, + useGlobalGroup: Boolean(entry?.useGlobalGroup ?? entry?.use_global_group), + serverName: entry?.serverName || entry?.server_name || null, + serverUrl: entry?.serverUrl || entry?.server_url || null + }; + }) + .filter(Boolean); +}; + export function AuthProvider({ children }) { const [state, setState] = useState({ user: null, permissions: {}, + serverPermissions: {}, + serverAssignments: [], loading: false, error: null, lastErrorCode: null, @@ -36,9 +78,13 @@ export function AuthProvider({ children }) { const setSession = useCallback((payload) => { const user = payload?.user ?? null; const permissions = normalizePermissions(payload?.permissions); + const serverPermissions = normalizeServerPermissions(payload?.serverPermissions); + const serverAssignments = normalizeServerAssignments(payload?.serverAssignments ?? user?.serverAssignments); setState({ user, permissions, + serverPermissions, + serverAssignments, loading: false, error: null, lastErrorCode: null, @@ -50,6 +96,8 @@ export function AuthProvider({ children }) { setState((prev) => ({ user: null, permissions: {}, + serverPermissions: {}, + serverAssignments: [], loading: false, error: null, lastErrorCode: null, @@ -80,6 +128,8 @@ export function AuthProvider({ children }) { error: payload?.error ?? null, lastErrorCode: payload?.error ?? null, initialized: true, + serverPermissions: {}, + serverAssignments: [] }); return { ok: false, status: response.status, error: payload?.error ?? null }; } @@ -89,9 +139,11 @@ export function AuthProvider({ children }) { } catch (err) { const message = err?.message || "NETWORK_ERROR"; setState({ - user: null, - permissions: {}, - loading: false, + user: null, + permissions: {}, + serverPermissions: {}, + serverAssignments: [], + loading: false, error: message, lastErrorCode: "NETWORK_ERROR", initialized: true, @@ -140,10 +192,36 @@ export function AuthProvider({ children }) { [state.permissions, state.user] ); + const hasServerPermission = useCallback( + (serverId, permissionKey, requiredLevel = "full") => { + if (!permissionKey) { + return true; + } + if (state.user?.isSuperuser) { + return true; + } + const numericServerId = Number(serverId); + let permissionMap = null; + if (Number.isFinite(numericServerId)) { + const entry = state.serverPermissions?.[numericServerId] || state.serverPermissions?.[String(numericServerId)]; + if (entry?.permissions && typeof entry.permissions === "object") { + permissionMap = entry.permissions; + } + } + const basePermissions = permissionMap || state.permissions || {}; + const current = basePermissions[permissionKey] ?? "none"; + const currentPriority = LEVEL_PRIORITY[current] ?? 0; + const requiredPriority = LEVEL_PRIORITY[requiredLevel] ?? LEVEL_PRIORITY.full; + return currentPriority >= requiredPriority; + }, + [state.serverPermissions, state.permissions, state.user] + ); + const value = useMemo( () => ({ user: state.user, permissions: state.permissions, + serverPermissions: state.serverPermissions, loading: state.loading, error: state.error, lastErrorCode: state.lastErrorCode, @@ -154,8 +232,10 @@ export function AuthProvider({ children }) { clearSession, logout, hasPermission, + hasServerPermission, + serverAssignments: state.serverAssignments, }), - [state, refreshSession, setSession, clearSession, logout, hasPermission] + [state, refreshSession, setSession, clearSession, logout, hasPermission, hasServerPermission] ); return {children}; diff --git a/frontend/src/pages/dashboard/maintenance.jsx b/frontend/src/pages/dashboard/maintenance.jsx index caa3d63..fe186c6 100644 --- a/frontend/src/pages/dashboard/maintenance.jsx +++ b/frontend/src/pages/dashboard/maintenance.jsx @@ -3,6 +3,7 @@ import { useNavigate } from "react-router-dom"; import axios from "axios"; import { useMaintenance } from "@/components/MaintenanceProvider"; import { useAuth } from "@/components/AuthProvider.jsx"; +import { useToast } from "@/components/ToastProvider.jsx"; import { Typography, @@ -101,12 +102,6 @@ const formatCreatedAt = (value) => { }); }; -const resolveStackType = (type) => { - if (type === 1) return "Git"; - if (type === 2) return "Compose"; - return type ?? "-"; -}; - const createEmptySshDraft = () => ({ host: '', port: '22', @@ -117,8 +112,8 @@ const createEmptySshDraft = () => ({ export function Maintenance() { const navigate = useNavigate(); - const { hasPermission, user: authUser } = useAuth(); - const showToast = useCallback(() => { }, []); + const { hasPermission, user: authUser, serverAssignments } = useAuth(); + const { showToast } = useToast(); const { maintenance: maintenanceMeta, update: updateState, @@ -133,7 +128,6 @@ export function Maintenance() { saveSshConfig, deleteSshConfig, testSshConnection, - fetchSuperuserStatus, fetchSetupStatus, deleteSetupServer, updateSetupApiKey, @@ -148,14 +142,11 @@ export function Maintenance() { const canEditServers = Boolean(isSuperuserAccount || hasPermission("maintenance-server-edit", "full")); const canDeleteServers = Boolean(isSuperuserAccount || hasPermission("maintenance-server-delete", "full")); const canDeleteSuperuser = Boolean(isSuperuserAccount || hasPermission("maintenance-superuser-delete", "full")); - const canViewPortainer = Boolean(isSuperuserAccount || hasPermission("maintenance-portainer", "read")); - const canManagePortainerUpdate = Boolean(isSuperuserAccount || hasPermission("maintenance-update", "full")); - const canViewSsh = Boolean(isSuperuserAccount || hasPermission("maintenance-ssh-update", "read")); - const canManageSsh = Boolean(isSuperuserAccount || hasPermission("maintenance-ssh-update", "full")); - const canViewDuplicates = Boolean(isSuperuserAccount || hasPermission("maintenance-duplicates", "read")); - const canManageDuplicates = Boolean(isSuperuserAccount || hasPermission("maintenance-duplicates", "full")); + const canViewPortainer = false; + const canManagePortainerUpdate = false; + const canViewSsh = false; + const canManageSsh = false; const showPortainerSection = false; - const showDuplicateSection = false; const maintenanceActive = Boolean(maintenanceMeta?.active); const maintenanceMessage = maintenanceMeta?.message; @@ -168,7 +159,6 @@ export function Maintenance() { const [updateActionLoading, setUpdateActionLoading] = useState(false); const [updateActionError, setUpdateActionError] = useState(""); const [maintenanceToggleLoading, setMaintenanceToggleLoading] = useState(false); - const [sshDraft, setSshDraft] = useState(() => createEmptySshDraft()); const [sshPasswordStored, setSshPasswordStored] = useState(false); const [showPassword, setShowPassword] = useState(false); @@ -234,19 +224,22 @@ export function Maintenance() { const [selfStackSaving, setSelfStackSaving] = useState(false); const [selfStackError, setSelfStackError] = useState(""); - const [duplicates, setDuplicates] = useState([]); - const [duplicatesLoading, setDuplicatesLoading] = useState(true); - const [duplicatesError, setDuplicatesError] = useState(""); - const [duplicatesRefreshing, setDuplicatesRefreshing] = useState(false); - const [activeCleanupId, setActiveCleanupId] = useState(null); - const [duplicatesUpdatedAt, setDuplicatesUpdatedAt] = useState(null); - const duplicatesRequestRef = useRef(null); - - const [serverStatuses, setServerStatuses] = useState(new Map()); - const [serverStatusesLoading, setServerStatusesLoading] = useState(false); - const [serverStatusesError, setServerStatusesError] = useState(""); - - const setupServers = useMemo(() => setupResources?.servers?.items ?? [], [setupResources]); + const setupServers = useMemo(() => { + const items = Array.isArray(setupResources?.servers?.items) ? setupResources.servers.items : []; + const assignments = Array.isArray(serverAssignments) && serverAssignments.length + ? serverAssignments + : Array.isArray(authUser?.serverAssignments) + ? authUser.serverAssignments + : []; + const allowedIds = assignments + .map((entry) => Number(entry?.serverId ?? entry?.server_id)) + .filter((value) => Number.isFinite(value) && value > 0); + if (allowedIds.length === 0) { + return items; + } + const allowedSet = new Set(allowedIds); + return items.filter((server) => allowedSet.has(Number(server.id))); + }, [setupResources, authUser]); const apiKeyInfoMap = useMemo(() => { const items = setupResources?.apiKeys?.items ?? []; return new Map(items.map((entry) => [entry.serverId, entry])); @@ -272,32 +265,29 @@ export function Maintenance() { const [searchQuery, setSearchQuery] = useState(""); const [portainerStatus, setPortainerStatus] = useState(null); - const [portainerLoading, setPortainerLoading] = useState(true); + const [portainerLoading, setPortainerLoading] = useState(false); const [portainerError, setPortainerError] = useState(""); const [portainerRefreshing, setPortainerRefreshing] = useState(false); const [portainerUpdatedAt, setPortainerUpdatedAt] = useState(null); const portainerRequestRef = useRef(null); - const loadSuperuserStatus = useCallback(async ({ silent = false } = {}) => { + const loadSuperuserStatus = useCallback(async () => { setSuperuserStatusLoading(true); setSuperuserStatusError(""); try { - const data = await fetchSuperuserStatus(); - const exists = Boolean(data?.exists); + const response = await axios.get("/api/auth/superuser/status"); + const exists = Boolean(response.data?.exists); setSuperuserExists(exists); - setSuperuserSummary(exists ? data.user ?? null : null); + setSuperuserSummary(exists ? response.data?.user ?? null : null); } catch (err) { const message = err.response?.data?.error || err.message || "Superuser-Status konnte nicht geladen werden"; setSuperuserExists(false); setSuperuserSummary(null); setSuperuserStatusError(message); - if (!silent) { - showToast({ variant: "error", title: "Statusabfrage fehlgeschlagen", description: message }); - } } finally { setSuperuserStatusLoading(false); } - }, [fetchSuperuserStatus, showToast]); + }, []); const loadSetupResources = useCallback(async ({ silent = false } = {}) => { if (!silent) { @@ -359,58 +349,6 @@ export function Maintenance() { return requestPromise; }, [showToast]); - const fetchDuplicates = useCallback(async ({ silent = false } = {}) => { - if (maintenanceActive || updateRunning) { - setDuplicates([]); - setDuplicatesError("Wartungsmodus aktiv – Duplikat-Verwaltung ist vorübergehend deaktiviert."); - setDuplicatesLoading(false); - setDuplicatesRefreshing(false); - return; - } - - if (duplicatesRequestRef.current) { - return duplicatesRequestRef.current; - } - - const requestPromise = (async () => { - if (silent) { - setDuplicatesRefreshing(true); - } else { - setDuplicatesLoading(true); - } - setDuplicatesError(""); - - try { - const response = await axios.get("/api/maintenance/duplicates"); - const payload = response.data; - const items = Array.isArray(payload) ? payload : payload?.items ?? []; - setDuplicates(items); - setDuplicatesUpdatedAt(new Date()); - } catch (err) { - if (err.response?.status === 423) { - const message = "Wartungsmodus aktiv – Duplikat-Verwaltung ist vorübergehend deaktiviert."; - setDuplicates([]); - setDuplicatesError(message); - showToast({ variant: "warning", title: "Duplikat-Verwaltung gesperrt", description: message }); - } else { - const message = err.response?.data?.error || err.message || "Fehler beim Laden der Wartungsdaten"; - setDuplicatesError(message); - showToast({ variant: "error", title: "Duplikate konnten nicht geladen werden", description: message }); - } - } finally { - if (silent) { - setDuplicatesRefreshing(false); - } else { - setDuplicatesLoading(false); - } - duplicatesRequestRef.current = null; - } - })(); - - duplicatesRequestRef.current = requestPromise; - return requestPromise; - }, [maintenanceActive, updateRunning, showToast]); - useEffect(() => { loadSuperuserStatus({ silent: true }); }, [loadSuperuserStatus]); @@ -419,64 +357,6 @@ export function Maintenance() { loadSetupResources(); }, [loadSetupResources]); - useEffect(() => { - fetchPortainerStatus(); - }, [fetchPortainerStatus]); - - useEffect(() => { - fetchDuplicates(); - }, [fetchDuplicates]); - - useEffect(() => { - if (!canViewServers || setupResourcesLoading) { - return; - } - const fetchStatuses = async () => { - if (!setupServers.length) { - setServerStatuses(new Map()); - return; - } - setServerStatusesLoading(true); - setServerStatusesError(""); - try { - const entries = await Promise.all( - setupServers.map(async (server) => { - try { - const res = await axios.get(`/api/setup/servers/${server.id}/check`); - const payload = res.data ?? {}; - return [ - server.id, - { - online: Boolean(payload.online), - portainer: payload.portainer ?? {}, - error: null - } - ]; - } catch (err) { - const message = err.response?.data?.error || err.message || "Status unbekannt"; - return [ - server.id, - { - online: false, - portainer: {}, - error: message - } - ]; - } - }) - ); - setServerStatuses(new Map(entries)); - } catch (err) { - const message = err.response?.data?.error || err.message || "Server-Status konnte nicht geladen werden."; - setServerStatusesError(message); - } finally { - setServerStatusesLoading(false); - } - }; - - fetchStatuses(); - }, [canViewServers, setupResourcesLoading, setupServers, setTotals]); - const filteredServers = useMemo(() => { const query = searchQuery.trim().toLowerCase(); if (!query) { @@ -549,14 +429,6 @@ export function Maintenance() { setCreateServerError(""); }, [creatingServer]); - const totals = useMemo(() => { - const groups = Array.isArray(duplicates) ? duplicates.length : 0; - const duplicateCount = Array.isArray(duplicates) - ? duplicates.reduce((sum, entry) => sum + ((entry?.duplicates?.length) || 0), 0) - : 0; - return { groups, duplicateCount }; - }, [duplicates]); - const handleSshDraftChange = useCallback((field, value) => { if (!canManageSsh) return; setSshDraft((prev) => ({ ...prev, [field]: value })); @@ -978,75 +850,9 @@ export function Maintenance() { } }, [canManagePortainerUpdate, maintenanceActive, updateRunning, portainerStatus, triggerUpdate, showToast]); - const handleCleanup = useCallback(async (entry) => { - if (!canManageDuplicates) return; - if (!entry) return; - if (maintenanceActive || updateRunning) { - showToast({ - variant: "warning", - title: "Aktion nicht möglich", - description: "Während des Wartungsmodus sind Bereinigungen deaktiviert." - }); - return; - } - - const canonicalId = entry.canonical?.Id; - if (!canonicalId) return; - - const duplicateIds = (entry.duplicates || []).map((dup) => dup.Id).filter(Boolean); - if (!duplicateIds.length) return; - - const canonicalName = entry.canonical?.Name || entry.name || `Stack ${canonicalId}`; - - if (typeof window !== "undefined") { - const confirmation = window.confirm( - `Bereinigung für "${canonicalName}" starten?\n` + - `Es werden ${duplicateIds.length} Duplikate entfernt: ${duplicateIds.join(", ")}` - ); - if (!confirmation) { - return; - } - } - - setActiveCleanupId(String(canonicalId)); - - try { - const response = await axios.post("/api/maintenance/duplicates/cleanup", { - canonicalId, - duplicateIds - }); - - const payload = response.data ?? {}; - if (payload.success === false) { - throw new Error(payload.error || "Bereinigung fehlgeschlagen"); - } - - const removedIds = Array.isArray(payload.results) - ? payload.results.filter((result) => result.status === "deleted").map((result) => result.id) - : duplicateIds; - - showToast({ - variant: "success", - title: "Bereinigung abgeschlossen", - description: `${canonicalName} – entfernte IDs: ${removedIds.join(", ")}` - }); - await fetchDuplicates({ silent: true }); - } catch (err) { - const message = err.response?.data?.error || err.message || "Bereinigung fehlgeschlagen"; - showToast({ - variant: "error", - title: "Bereinigung fehlgeschlagen", - description: message - }); - } finally { - setActiveCleanupId(null); - } - }, [canManageDuplicates, fetchDuplicates, maintenanceActive, showToast, updateRunning]); - const maintenanceActivatedAt = maintenanceMeta?.activatedAt ? formatCreatedAt(maintenanceMeta.activatedAt) : null; const maintenanceUpdatedAt = maintenanceMeta?.updatedAt ? formatCreatedAt(maintenanceMeta.updatedAt) : null; - const isDuplicatesDisabled = maintenanceActive || updateRunning; const updateStatusKey = updateState?.status ?? (updateRunning ? "running" : "idle"); const updateStatusLabel = UPDATE_STATUS_LABELS[updateStatusKey] ?? updateStatusKey; const updateBadgeClass = UPDATE_STATUS_STYLES[updateStatusKey] ?? UPDATE_STATUS_STYLES.idle; @@ -1118,6 +924,165 @@ export function Maintenance() { )} + {canViewMtls && ( + + + + mTLS-Serverzertifikate (Backend) + + + +
+
+ + Status + +

+ {mtlsMeta.available ? "Zertifikate vorhanden" : "Keine Zertifikate geladen"} +

+

+ Quelle: {mtlsMeta.source || "unbekannt"} {mtlsMeta.updatedAt ? `– aktualisiert ${formatCreatedAt(mtlsMeta.updatedAt)}` : ""} {mtlsMeta.validTo ? `– gültig bis ${formatCreatedAt(mtlsMeta.validTo)}` : ""} +

+
+ +
+ {mtlsError && ( +

{mtlsError}

+ )} + {mtlsSecret && ( +
+
+ Server-Key +