diff --git a/backend/kern/platten.py b/backend/kern/platten.py new file mode 100644 index 0000000..f88e5ee --- /dev/null +++ b/backend/kern/platten.py @@ -0,0 +1,201 @@ +"""Plattengesundheit (Ausbauplan „Später“, Punkt 18, seit 26.09.2026): SMART-Werte vereinheitlichen und bewerten. + +Quellen: der Proxmox-Host (Ausführer: pvesh disks/list und disks/smart), die KI-Box (smartctl -j) und das NAS (SNMP, +services/homelab/nas_snmp.py). Einheitliche Form je Platte: + {"id", "name", "wo", "typ", "groesse", "gesund": True/False/None, "verbraucht": % oder None, + "reserve": % oder None, "reserve_grenze": % oder None, "warnung": 0 oder Bits, "temperatur": °C oder None, + "stunden": h oder None, "fehler": {"medien", "umgelagert", "ausstehend", "unkorrigierbar", "kabel": Zahl}} +Gemeldet wird, was schlecht ist oder schlechter wird (User-Entscheid „wie empfohlen“ 25.09.2026): + rot die Platte hält sich selbst für krank (SMART FAILED, kritische Warnung, Reserve unter der Grenze) oder ist + zu 90 % verbraucht + gelb zu 80 % verbraucht, zu heiß, oder ein Fehlerzähler ist seit dem letzten „Zur Kenntnis genommen“ gewachsen +Fehler, die schon beim ersten Blick da waren, gelten als Ausgangslage (basis) — sonst meldete eine ältere, aber stabile +Platte für immer. Die Ausgangslage liegt je Instanz in /platten-basis.json. +""" + +import json +import re +from pathlib import Path + +from kern.einstellungen import einstellungen + +VERBRAUCHT_GELB, VERBRAUCHT_ROT = 80, 90 +HEISS = {"nvme": 70, "ssd": 60, "hdd": 55} +FEHLER_NAME = {"medien": "Medienfehler", "umgelagert": "umgelagerte Sektoren", "ausstehend": "wartende Sektoren", + "unkorrigierbar": "unkorrigierbare Sektoren", "kabel": "Übertragungsfehler (Kabel)"} +# SATA-Attribute (Nummer → Fehlerart) und die Temperatur. +ATA_FEHLER = {5: "umgelagert", 197: "ausstehend", 198: "unkorrigierbar", 199: "kabel"} +ATA_TEMPERATUR = (194, 190) + + +def _zahl(text: object) -> int | None: + m = re.search(r"-?\d[\d,.]*", str(text or "")) + if not m: + return None + try: + return int(m.group(0).replace(",", "").replace(".", "")) + except ValueError: + return None + + +def aus_nvme_text(text: str) -> dict: + """Die NVMe-Werte aus dem Text von smartctl (so liefert ihn pvesh disks/smart).""" + werte: dict[str, str] = {} + for zeile in (text or "").splitlines(): + if ":" in zeile: + k, v = zeile.split(":", 1) + werte.setdefault(k.strip(), v.strip()) + warnung = werte.get("Critical Warning") + return { + "warnung": int(warnung, 16) if warnung and re.fullmatch(r"0x[0-9a-fA-F]+", warnung) else _zahl(warnung) or 0, + "temperatur": _zahl(werte.get("Temperature")), + "reserve": _zahl(werte.get("Available Spare")), + "reserve_grenze": _zahl(werte.get("Available Spare Threshold")), + "verbraucht": _zahl(werte.get("Percentage Used")), + "stunden": _zahl(werte.get("Power On Hours")), + "fehler": {"medien": _zahl(werte.get("Media and Data Integrity Errors")) or 0}, + } + + +def aus_ata_attributen(attribute: list) -> dict: + """SATA: Fehlerzähler und Temperatur aus den Attributen (pvesh disks/smart „attributes“).""" + fehler: dict[str, int] = {} + temperatur = None + for a in attribute or []: + try: + nr = int(a.get("id")) + except (TypeError, ValueError): + continue + roh = _zahl(str(a.get("raw") or "").split()[0] if str(a.get("raw") or "").split() else None) + if nr in ATA_FEHLER and roh is not None: + fehler[ATA_FEHLER[nr]] = roh + if nr in ATA_TEMPERATUR and temperatur is None and roh is not None: + temperatur = roh + return {"fehler": fehler, "temperatur": temperatur} + + +def aus_proxmox(disk: dict, smart: dict | None) -> dict: + """Eine Platte des Proxmox-Hosts aus pvesh disks/list (+ disks/smart).""" + typ = str(disk.get("type") or "").lower() or "unbekannt" + health = str((smart or {}).get("health") or disk.get("health") or "").upper() + platte = {"id": f"pve:{disk.get('serial') or disk.get('devpath')}", "name": disk.get("model") or disk.get("devpath"), + "wo": f"Proxmox-Host {disk.get('devpath')}", "typ": typ, "groesse": disk.get("size"), + "gesund": True if health in ("PASSED", "OK") else False if health == "FAILED" else None, + "verbraucht": None, "reserve": None, "reserve_grenze": None, "warnung": 0, "temperatur": None, + "stunden": None, "fehler": {}} + wearout = disk.get("wearout") + if isinstance(wearout, (int, float)) and 0 <= wearout <= 100: + platte["verbraucht"] = 100 - int(wearout) # Proxmox zeigt, was noch übrig ist + if smart: + if (smart.get("type") == "text" or typ == "nvme") and smart.get("text"): + werte = aus_nvme_text(smart["text"]) + platte.update({k: v for k, v in werte.items() if v is not None and k != "fehler"}) + platte["fehler"] = werte["fehler"] + elif smart.get("attributes"): + platte.update(aus_ata_attributen(smart["attributes"])) + return platte + + +def aus_smartctl(d: dict, geraet: str, wo: str) -> dict: + """Eine Platte aus `smartctl -j -a` (KI-Box).""" + n = d.get("nvme_smart_health_information_log") or {} + status = (d.get("smart_status") or {}).get("passed") + typ = "nvme" if n else ("ssd" if (d.get("rotation_rate") == 0) else "hdd") + platte = {"id": f"{wo}:{d.get('serial_number') or geraet}", "name": d.get("model_name") or geraet, + "wo": f"{wo} {geraet}", "typ": typ, "groesse": (d.get("user_capacity") or {}).get("bytes"), + "gesund": status if isinstance(status, bool) else None, "verbraucht": n.get("percentage_used"), + "reserve": n.get("available_spare"), "reserve_grenze": n.get("available_spare_threshold"), + "warnung": int(n.get("critical_warning") or 0), "temperatur": (d.get("temperature") or {}).get("current"), + "stunden": (d.get("power_on_time") or {}).get("hours") or n.get("power_on_hours"), "fehler": {}} + if n: + platte["fehler"] = {"medien": int(n.get("media_errors") or 0)} + else: + tabelle = [{"id": a.get("id"), "raw": str((a.get("raw") or {}).get("value", ""))} + for a in (d.get("ata_smart_attributes") or {}).get("table") or []] + platte.update(aus_ata_attributen(tabelle)) + return platte + + +def bewerten(p: dict, basis: dict | None) -> tuple[str, list[str]]: + """(Stufe, Sätze). basis = die Fehlerzähler, die als Ausgangslage gelten.""" + stufe, saetze = "ok", [] + rang = {"ok": 0, "gelb": 1, "rot": 2} + + def schlimmer(neu: str, satz: str) -> None: + nonlocal stufe + saetze.append(satz) + if rang[neu] > rang[stufe]: + stufe = neu + + if p.get("gesund") is False: + schlimmer("rot", "meldet sich selbst als defekt (SMART)") + if p.get("smart_warnung"): + schlimmer("gelb", "SMART meldet eine Warnung") + if p.get("warnung"): + schlimmer("rot", f"meldet eine kritische Warnung (0x{int(p['warnung']):02x})") + reserve, grenze = p.get("reserve"), p.get("reserve_grenze") + if isinstance(reserve, int) and isinstance(grenze, int) and grenze > 0 and reserve <= grenze: + schlimmer("rot", f"Ersatzblöcke fast aufgebraucht ({reserve} %)") + v = p.get("verbraucht") + if isinstance(v, (int, float)) and v >= VERBRAUCHT_ROT: + schlimmer("rot", f"zu {int(v)} % verbraucht — Ersatz einplanen") + elif isinstance(v, (int, float)) and v >= VERBRAUCHT_GELB: + schlimmer("gelb", f"zu {int(v)} % verbraucht") + t, heiss = p.get("temperatur"), HEISS.get(p.get("typ") or "", 60) + if isinstance(t, (int, float)) and t >= heiss: + schlimmer("gelb", f"{int(t)} °C warm (ab {heiss} °C zu heiß)") + for art, n in (p.get("fehler") or {}).items(): + alt = (basis or {}).get(art, n) + if isinstance(n, int) and isinstance(alt, int) and n > alt: + schlimmer("gelb", f"{FEHLER_NAME.get(art, art)}: {alt} → {n}") + return stufe, saetze + + +# --- Ausgangslage je Instanz ------------------------------------------------------------------------------------- + +def _pfad() -> Path: + return einstellungen().daten_dir / "platten-basis.json" + + +def basis_lesen() -> dict[str, dict]: + try: + daten = json.loads(_pfad().read_text(encoding="utf-8")) + except (OSError, ValueError): + return {} + return daten if isinstance(daten, dict) else {} + + +def _basis_schreiben(daten: dict) -> None: + pfad = _pfad() + pfad.parent.mkdir(parents=True, exist_ok=True) + tmp = pfad.with_suffix(".tmp") + tmp.write_text(json.dumps(daten, ensure_ascii=False, indent=1), encoding="utf-8") + tmp.replace(pfad) + + +def bewertet(platten: list[dict]) -> list[dict]: + """Die Platten mit stufe und saetze. Neue Platten bekommen ihre Ausgangslage beim ersten Blick.""" + basis = basis_lesen() + neu = {p["id"]: dict(p.get("fehler") or {}) for p in platten if p.get("id") and p["id"] not in basis} + if neu: + _basis_schreiben({**basis, **neu}) + basis = {**basis, **neu} + ergebnis = [] + for p in platten: + stufe, saetze = bewerten(p, basis.get(p.get("id"))) + ergebnis.append({**p, "stufe": stufe, "saetze": saetze}) + return ergebnis + + +def hinnehmen(pid: str, platten: list[dict]) -> dict: + """„Zur Kenntnis genommen“: die heutigen Fehlerzähler werden die neue Ausgangslage.""" + p = next((x for x in platten if x.get("id") == pid), None) + if p is None: + return {"ok": False, "detail": "Diese Platte ist gerade nicht zu sehen."} + _basis_schreiben({**basis_lesen(), pid: dict(p.get("fehler") or {})}) + return {"ok": True, "text": f"Zur Kenntnis genommen: {p.get('name')}. Gemeldet wird erst wieder, wenn die Fehler " + "weiter wachsen."} + + +def befund_titel(p: dict) -> str: + return f"Platte {p.get('name')} ({p.get('wo')}): {p['saetze'][0]}" if p.get("saetze") else str(p.get("name")) diff --git a/backend/routers/boxwart.py b/backend/routers/boxwart.py index 0cf4315..263fbe6 100644 --- a/backend/routers/boxwart.py +++ b/backend/routers/boxwart.py @@ -156,6 +156,13 @@ def start() -> dict: } +@router.get("/platten") +def platten() -> dict: + """Plattengesundheit der KI-Box (smartctl, höchstens stündlich gelesen; seit 26.09.2026).""" + from services import platten as box_platten + return box_platten.lage() + + @router.get("/hinweise") def hinweise() -> dict: return waechter.lese_stand() diff --git a/backend/routers/homelab.py b/backend/routers/homelab.py index 1587a1f..d3149b6 100644 --- a/backend/routers/homelab.py +++ b/backend/routers/homelab.py @@ -134,6 +134,33 @@ def hinweis_aktion(hinweis_id: str, aktion_id: str) -> dict: return _antwort(waechter.fuehre_aktion_aus(hinweis_id, aktion_id)) +@router.get("/platten") +def platten() -> dict: + """Plattengesundheit: Proxmox-Host (Ausführer) und NAS (SNMP), bewertet (seit 26.09.2026).""" + from services.homelab import platten as homelab_platten + return homelab_platten.lage() + + +@router.post("/einstellungen/nas-snmp") +async def nas_snmp_setzen(request: Request) -> dict: + """{"community", "adresse"?}: erst das NAS fragen, dann speichern. Der Body wird selbst gelesen (keine 422 mit + dem Zugangsnamen darin), die Abfrage läuft neben dem Ereignis-Takt.""" + from services.homelab import nas_snmp + try: + daten = json.loads(await request.body() or b"{}") + except ValueError: + daten = {} + daten = daten if isinstance(daten, dict) else {} + return await asyncio.to_thread(nas_snmp.setzen, str(daten.get("community") or ""), str(daten.get("adresse") or "")) + + +@router.delete("/einstellungen/nas-snmp") +def nas_snmp_loeschen() -> dict: + from services.homelab import nas_snmp + da = nas_snmp.zugang_loeschen() + return {"ok": True, "text": "Der SNMP-Zugang des NAS ist gelöscht." if da else "Es war kein SNMP-Zugang hinterlegt."} + + @router.get("/netz") def netz() -> dict: """Die Geräte im Heimnetz aus der Nachbartabelle des Proxmox-Hosts, neue zuerst (seit 26.09.2026).""" diff --git a/backend/services/homelab/einstellungen.py b/backend/services/homelab/einstellungen.py index bb9173d..caf2013 100644 --- a/backend/services/homelab/einstellungen.py +++ b/backend/services/homelab/einstellungen.py @@ -17,7 +17,7 @@ import logging import re import time -from services.homelab import adguard, apps, arcane, inventar, kanal, karenz +from services.homelab import adguard, apps, arcane, inventar, kanal, karenz, nas_snmp log = logging.getLogger(__name__) @@ -46,6 +46,9 @@ def stand() -> dict: "echt_quelle": arcane.echt_quelle()}, "adguard": {"url": adguard.url() or "", "zugang": "hinterlegt" if (z := adguard.zugang()) else "fehlt", "benutzer": z[0] if z else None}, + # Seit 26.09.2026: SNMP-Zugang des NAS für die Plattengesundheit — nie der Zugangsname selbst. + "nas_snmp": {"zugang": "hinterlegt" if (n := nas_snmp.zugang()) else "fehlt", + "adresse": (n or {}).get("adresse") or nas_snmp.nas_adresse()}, "karenz_h": round(karenz.karenz_s() / 3600), "ausfuehrer": {"verbunden": bool(zuletzt and time.time() - zuletzt < inventar.BERICHT_ALT_S), "zuletzt": zuletzt, "nur_lesen": bool(host.get("nur_lesen")), diff --git a/backend/services/homelab/nas_snmp.py b/backend/services/homelab/nas_snmp.py new file mode 100644 index 0000000..a4ad6dd --- /dev/null +++ b/backend/services/homelab/nas_snmp.py @@ -0,0 +1,325 @@ +"""Die Platten des NAS über SNMP (Ausbauplan „Später“, Punkt 18, seit 26.09.2026). + +User-Entscheid 25.09.2026: Der User schaltet am QNAP SNMP v1/v2c ein (Systemsteuerung → Netzwerk- und Dateidienste → +SNMP) und trägt den Zugangsnamen („Community“) unter Einstellungen → Homelab ein. Vor dem Speichern fragt dieser Teil +das NAS einmal damit; antwortet es nicht, wird nichts gespeichert. Der Zugangsname liegt in /nas-snmp.json +(0600) und erscheint nie wieder in einer Antwort. + +Ein kleiner SNMPv2c-Leser (GetBulk über UDP 161) statt einer neuen Abhängigkeit. Gelesen wird die Plattentabelle der +QNAP-MIB: zuerst die ältere (NAS-MIB, hdTable — die meisten QTS-Versionen liefern sie noch), sonst die neuere +(QTS-MIB, diskTable), deren Spalten nach Inhalt erkannt werden. Ein falscher Zugangsname fällt bei SNMP v2c nur als +Schweigen auf: Das NAS antwortet dann gar nicht. +""" + +import json +import os +import random +import re +import socket +import threading +import time +from pathlib import Path + +from kern.einstellungen import einstellungen + +from services.homelab import kanal + +PORT = 161 +ZEITLIMIT_S = 3.0 +CACHE_S = 600 +SYS_DESCR = "1.3.6.1.2.1.1.1" +HD_TABELLE = "1.3.6.1.4.1.24681.1.2.11.1" # NAS-MIB hdTable: 2 Name, 3 Temperatur, 4 Status, 5 Modell, 7 SMART +DISK_TABELLE = "1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1" # QTS-MIB diskTable (neuere Firmware) +GESUND = {"good", "normal", "ok"} +KRANK = {"abnormal", "bad", "error"} +_lock = threading.Lock() +_cache: dict[str, tuple[float, dict]] = {} + + +class SnmpFehler(Exception): + pass + + +# --- BER: gerade genug für GetBulk und die Antwort ----------------------------------------------------------------- + +def _laenge(n: int) -> bytes: + if n < 0x80: + return bytes([n]) + b = n.to_bytes((n.bit_length() + 7) // 8, "big") + return bytes([0x80 | len(b)]) + b + + +def _tlv(tag: int, inhalt: bytes) -> bytes: + return bytes([tag]) + _laenge(len(inhalt)) + inhalt + + +def _int(n: int) -> bytes: + return _tlv(0x02, n.to_bytes(max(1, (n.bit_length() + 8) // 8), "big", signed=True)) + + +def _oid(oid: str) -> bytes: + teile = [int(t) for t in oid.strip(".").split(".")] + inhalt = bytearray([40 * teile[0] + teile[1]]) + for t in teile[2:]: + stuecke = [t & 0x7F] + t >>= 7 + while t: + stuecke.insert(0, 0x80 | (t & 0x7F)) + t >>= 7 + inhalt += bytes(stuecke) + return _tlv(0x06, bytes(inhalt)) + + +def anfrage(community: str, oid: str, anfrage_id: int, wiederholungen: int = 25) -> bytes: + """Eine SNMPv2c-GetBulk-Anfrage ab oid.""" + bindung = _tlv(0x30, _oid(oid) + b"\x05\x00") + pdu = _tlv(0xA5, _int(anfrage_id) + _int(0) + _int(wiederholungen) + _tlv(0x30, bindung)) + return _tlv(0x30, _int(1) + _tlv(0x04, community.encode("utf-8")) + pdu) + + +def _lies(daten: bytes, pos: int) -> tuple[int, bytes, int]: + tag = daten[pos] + laenge = daten[pos + 1] + pos += 2 + if laenge & 0x80: + n = laenge & 0x7F + laenge = int.from_bytes(daten[pos:pos + n], "big") + pos += n + return tag, daten[pos:pos + laenge], pos + laenge + + +def _oid_text(b: bytes) -> str: + teile = [b[0] // 40, b[0] % 40] + wert = 0 + for x in b[1:]: + wert = (wert << 7) | (x & 0x7F) + if not x & 0x80: + teile.append(wert) + wert = 0 + return ".".join(str(t) for t in teile) + + +def _wert(tag: int, inhalt: bytes) -> object: + if tag == 0x02: + return int.from_bytes(inhalt, "big", signed=True) + if tag == 0x04: + return inhalt.decode("utf-8", "replace").strip("\x00").strip() + if tag in (0x41, 0x42, 0x43, 0x46): # Counter32, Gauge32, TimeTicks, Counter64 + return int.from_bytes(inhalt, "big") + if tag == 0x06: + return _oid_text(inhalt) + if tag == 0x40: + return ".".join(str(b) for b in inhalt) + return None # NULL, noSuchObject, noSuchInstance, endOfMibView + + +def antwort(daten: bytes) -> tuple[int, int, list[tuple[str, object, int]]]: + """(Anfrage-Nr., Fehlerstatus, [(OID, Wert, Typ)]) aus einer Response-PDU.""" + try: + _, nachricht, _ = _lies(daten, 0) + _, _, pos = _lies(nachricht, 0) # Version + _, _, pos = _lies(nachricht, pos) # Community + tag, pdu, _ = _lies(nachricht, pos) + if tag != 0xA2: + raise SnmpFehler("keine Antwort-PDU") + _, nr, p = _lies(pdu, 0) + _, fehler, p = _lies(pdu, p) + _, _, p = _lies(pdu, p) + _, bindungen, _ = _lies(pdu, p) + werte, q = [], 0 + while q < len(bindungen): + _, bindung, q = _lies(bindungen, q) + _, oid, r = _lies(bindung, 0) + wtag, winhalt, _ = _lies(bindung, r) + werte.append((_oid_text(oid), _wert(wtag, winhalt), wtag)) + except (IndexError, ValueError) as exc: + raise SnmpFehler("unlesbare Antwort") from exc + return int.from_bytes(nr, "big", signed=True), int.from_bytes(fehler, "big"), werte + + +def walk(adresse: str, community: str, basis: str, zeitlimit: float | None = None, grenze: int = 2000, + port: int | None = None) -> list: + """Alle (OID, Wert) unter basis. SnmpFehler bei Schweigen (falscher Zugangsname, SNMP aus) oder Fehlern.""" + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.settimeout(zeitlimit or ZEITLIMIT_S) + ergebnis: list[tuple[str, object]] = [] + oid, nr = basis, random.randint(1, 1_000_000) + try: + while len(ergebnis) < grenze: + nr += 1 + sock.sendto(anfrage(community, oid, nr), (adresse, port or PORT)) + try: + daten, _ = sock.recvfrom(65535) + except TimeoutError as exc: + raise SnmpFehler("keine Antwort") from exc + rnr, fehler, werte = antwort(daten) + if rnr != nr: + continue + if fehler: + raise SnmpFehler(f"Fehlerstatus {fehler}") + fertig = not werte + for o, w, tag in werte: + if tag == 0x82 or not o.startswith(basis + "."): + fertig = True + break + ergebnis.append((o, w)) + if fertig: + break + oid = werte[-1][0] + except OSError as exc: + raise SnmpFehler(f"Netzfehler {exc.__class__.__name__}") from exc + finally: + sock.close() + return ergebnis + + +# --- Plattentabelle der QNAP-MIB ---------------------------------------------------------------------------------- + +def _spalten(werte: list, basis: str) -> dict[str, dict[int, object]]: + """{Zeile: {Spalte: Wert}} aus OIDs der Form ...""" + zeilen: dict[str, dict[int, object]] = {} + for oid, wert in werte: + rest = oid[len(basis) + 1:].split(".") + if len(rest) >= 2 and rest[0].isdigit(): + zeilen.setdefault(".".join(rest[1:]), {})[int(rest[0])] = wert + return zeilen + + +def platte(nr: str, name: object, modell: object, temperatur: object, smart: object, status: object = None) -> dict: + s = str(smart or "").strip().lower() + temp = re.search(r"-?\d+", str(temperatur)) if temperatur is not None else None + return {"id": f"nas:{nr}:{modell or name}", "name": str(modell or name or f"Platte {nr}").strip(), + "wo": f"NAS {name or nr}", "typ": "hdd", "groesse": None, + "gesund": True if s in GESUND else False if s in KRANK else None, + "smart_warnung": s == "warning", "smart": str(smart or "") or None, + "verbraucht": None, "reserve": None, "reserve_grenze": None, "warnung": 0, + "temperatur": int(temp.group(0)) if temp else None, "stunden": None, + "fehler": {}, "status": status} + + +def platten_aus_hd(werte: list) -> list[dict]: + """NAS-MIB hdTable: 2 Name, 3 Temperatur („35 C/95 F“), 4 Status (0 = bereit), 5 Modell, 7 SMART („GOOD“).""" + ergebnis = [] + for nr, z in sorted(_spalten(werte, HD_TABELLE).items()): + if z.get(4) == -5: # kein Laufwerk im Schacht + continue + ergebnis.append(platte(nr, z.get(2), z.get(5), z.get(3), z.get(7), z.get(4))) + return ergebnis + + +def platten_aus_disk(werte: list) -> list[dict]: + """QTS-MIB diskTable, Spalten nach Inhalt: SMART-Wort, Temperatur (Zahl zwischen 5 und 90), längster Text = Modell.""" + ergebnis = [] + for nr, z in sorted(_spalten(werte, DISK_TABELLE).items()): + texte = {k: v for k, v in z.items() if isinstance(v, str) and v} + smart = next((v for v in texte.values() if v.strip().lower() in GESUND | KRANK | {"warning"}), None) + temperatur = next((v for k, v in z.items() if isinstance(v, int) and 5 <= v <= 90 and k > 3), None) + modell = max((v for v in texte.values() if v != smart), key=len, default=None) + ergebnis.append(platte(nr, f"Platte {nr}", modell, temperatur, smart)) + return ergebnis + + +# --- Zugang, Abfrage, Oberfläche --------------------------------------------------------------------------------- + +def _pfad() -> Path: + return einstellungen().daten_dir / "nas-snmp.json" + + +def zugang() -> dict | None: + """{"community", "adresse"} oder None.""" + try: + daten = json.loads(_pfad().read_text(encoding="utf-8")) + except (OSError, ValueError, UnicodeDecodeError): + return None + if not isinstance(daten, dict) or not isinstance(daten.get("community"), str) or not daten["community"]: + return None + return {"community": daten["community"], "adresse": str(daten.get("adresse") or "") or None} + + +def zugang_speichern(community: str, adresse: str | None) -> None: + pfad = _pfad() + tmp = pfad.with_name(pfad.name + ".tmp") + with _lock: + pfad.parent.mkdir(parents=True, exist_ok=True) + tmp.unlink(missing_ok=True) + fd = os.open(tmp, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600) + with os.fdopen(fd, "w", encoding="utf-8") as f: + json.dump({"community": community, "adresse": adresse}, f) + os.replace(tmp, pfad) + _cache.clear() + + +def zugang_loeschen() -> bool: + with _lock: + pfad = _pfad() + da = pfad.exists() + pfad.unlink(missing_ok=True) + _cache.clear() + return da + + +def nas_adresse() -> str | None: + """Das NAS aus dem Bericht (die Einbindungen des Proxmox-Hosts), sonst None.""" + host = ((kanal.bericht() or {}).get("bericht") or {}).get("host") or {} + for m in host.get("netzlaufwerke") or []: + if m.get("server"): + return str(m["server"]) + return None + + +def lesen(adresse: str, community: str) -> dict: + """{"ok", "system", "platten"} oder {"ok": False, "detail"} — ohne den Zugangsnamen.""" + try: + system = walk(adresse, community, SYS_DESCR, grenze=1) + platten = platten_aus_hd(walk(adresse, community, HD_TABELLE)) + if not platten: + platten = platten_aus_disk(walk(adresse, community, DISK_TABELLE)) + except SnmpFehler as exc: + if str(exc) == "keine Antwort": + return {"ok": False, "detail": f"Das NAS ({adresse}) antwortet nicht über SNMP. Ist SNMP v1/v2c an, und " + "stimmt der Zugangsname (Community)?"} + return {"ok": False, "detail": f"SNMP-Abfrage an {adresse} gescheitert: {exc}."} + return {"ok": True, "system": str(system[0][1]) if system else None, "platten": platten} + + +def stand() -> dict: + """Für Oberfläche und Wächter: höchstens alle CACHE_S neu gefragt. {"eingerichtet", "ok", "platten", "detail"}.""" + z = zugang() + if not z: + return {"eingerichtet": False, "ok": False, "platten": [], "detail": None} + adresse = z["adresse"] or nas_adresse() + if not adresse: + return {"eingerichtet": True, "ok": False, "platten": [], "detail": "Die Adresse des NAS ist unbekannt."} + jetzt = time.time() + with _lock: + if (eintrag := _cache.get(adresse)) and jetzt - eintrag[0] < CACHE_S: + return eintrag[1] + ergebnis = {"eingerichtet": True, **lesen(adresse, z["community"])} + ergebnis.setdefault("platten", []) + with _lock: + _cache[adresse] = (jetzt, ergebnis) + return ergebnis + + +def setzen(community: str, adresse: str | None) -> dict: + """POST /api/homelab/einstellungen/nas-snmp: erst das NAS fragen, dann speichern.""" + community, adresse = (community or "").strip(), (adresse or "").strip() or None + if not community or len(community) > 200 or (adresse and not re.fullmatch(r"[\w.:-]{1,253}", adresse)): + return {"ok": False, "detail": "Zugangsname (Community) eintragen, die Adresse nur, wenn sie abweicht. Nichts " + "gespeichert."} + ziel = adresse or nas_adresse() + if not ziel: + return {"ok": False, "detail": "Die Adresse des NAS ist unbekannt — bitte mit eintragen. Nichts gespeichert."} + ergebnis = lesen(ziel, community) + if not ergebnis["ok"]: + return {"ok": False, "detail": ergebnis["detail"] + " Nichts gespeichert."} + try: + zugang_speichern(community, adresse) + except OSError as exc: + return {"ok": False, "detail": f"Das NAS antwortet, aber der Zugang ließ sich nicht speichern " + f"({exc.__class__.__name__})."} + platten = ergebnis["platten"] + gesund = sum(1 for p in platten if p["gesund"]) + return {"ok": True, "text": f"Das NAS antwortet ({(ergebnis.get('system') or 'SNMP')[:80]}): " + + (f"{len(platten)} Platten, davon {gesund} gesund." if platten + else "Die Plattentabelle ist leer — die Firmware nennt sie vielleicht anders.")} diff --git a/backend/services/homelab/platten.py b/backend/services/homelab/platten.py new file mode 100644 index 0000000..1436cb7 --- /dev/null +++ b/backend/services/homelab/platten.py @@ -0,0 +1,46 @@ +"""Plattengesundheit im Homelab (Ausbauplan „Später“, Punkt 18, seit 26.09.2026): die Platten des Proxmox-Hosts +(Ausführer, stündlich im Bericht) und die des NAS (SNMP, services/homelab/nas_snmp.py), bewertet mit kern/platten.py. +Der Wächter meldet nur, was schlecht ist oder schlechter wird; „Zur Kenntnis genommen“ macht die heutigen +Fehlerzähler zur neuen Ausgangslage. +""" + +from kern import platten as kern_platten + +from services.homelab import kanal, nas_snmp + + +def host_platten() -> list[dict]: + host = ((kanal.bericht() or {}).get("bericht") or {}).get("host") or {} + return [kern_platten.aus_proxmox(e.get("disk") or {}, e.get("smart")) for e in host.get("platten") or [] + if isinstance(e, dict) and isinstance(e.get("disk"), dict)] + + +def lage() -> dict: + """Für GET /api/homelab/platten.""" + nas = nas_snmp.stand() + platten = kern_platten.bewertet(host_platten() + list(nas.get("platten") or [])) + return {"platten": platten, "nas": {"eingerichtet": nas["eingerichtet"], "ok": nas.get("ok", False), + "detail": nas.get("detail"), "system": nas.get("system")}} + + +def hinnehmen(pid: str) -> dict: + return kern_platten.hinnehmen(pid, host_platten() + list(nas_snmp.stand().get("platten") or [])) + + +def pruefe_platten_gesundheit() -> list: + """Für den Wächter (Rolle homelab).""" + from services.waechter import Befund, _aktion + + befunde = [] + for p in lage()["platten"]: + if p["stufe"] == "ok": + continue + fehler = any("→" in s for s in p["saetze"]) + befunde.append(Befund( + id=f"platte:{p['id']}", stufe=p["stufe"], titel=kern_platten.befund_titel(p), + text="; ".join(p["saetze"]) + ". Die Daten darauf sichern und die Platte bald ersetzen, wenn es weiter " + "schlechter wird.", + quelle=p["id"].split(":")[0] if p["id"].startswith("nas:") else "pve", + aktionen=[_aktion("hinnehmen", "Zur Kenntnis genommen", platte=p["id"])] if fehler else [], + sofort=True)) + return befunde diff --git a/backend/services/platten.py b/backend/services/platten.py new file mode 100644 index 0000000..2d3ec8b --- /dev/null +++ b/backend/services/platten.py @@ -0,0 +1,89 @@ +"""Plattengesundheit der KI-Box (Ausbauplan „Später“, Punkt 18, seit 26.09.2026): smartctl (Paket smartmontools, +seit 26.09.2026 auf der Box) je Platte aus lsblk, höchstens stündlich, bewertet mit kern/platten.py. smartctl braucht +root (sudo -n); fehlt es oder verweigert sudo, gibt es schlicht keine Werte — nie einen Absturz (Windows, Tests). +""" + +import json +import logging +import shutil +import subprocess +import threading +import time + +from kern import platten as kern_platten + +log = logging.getLogger(__name__) + +CACHE_S = 3600 +_lock = threading.Lock() +_cache: dict = {"zeit": 0.0, "platten": None} + + +def _laufen(befehl: list[str], zeitlimit: int = 30) -> tuple[int, str]: + try: + r = subprocess.run(befehl, capture_output=True, text=True, timeout=zeitlimit) + except (OSError, subprocess.SubprocessError): + return 127, "" + return r.returncode, r.stdout + + +def geraete() -> list[str]: + code, aus = _laufen(["lsblk", "-J", "-d", "-o", "NAME,TYPE"], 10) + try: + return [f"/dev/{d['name']}" for d in json.loads(aus).get("blockdevices") or [] if d.get("type") == "disk" + and not str(d.get("name", "")).startswith(("zram", "loop"))] if code == 0 else [] + except (ValueError, AttributeError): + return [] + + +def lesen() -> list[dict]: + if not shutil.which("sudo"): # Windows, Tests ohne sudo: keine Werte + return [] + ergebnis = [] + for geraet in geraete(): + _, aus = _laufen(["sudo", "-n", "smartctl", "-j", "-a", geraet]) + try: + daten = json.loads(aus) + except ValueError: + continue + # smartctl setzt Bits im Exit-Code auch für „Fehler im Protokoll“ — gelesen ist gelesen. + if not isinstance(daten, dict) or not (daten.get("model_name") or daten.get("nvme_smart_health_information_log")): + continue + ergebnis.append(kern_platten.aus_smartctl(daten, geraet, "KI-Box")) + return ergebnis + + +def platten() -> list[dict]: + with _lock: + if _cache["platten"] is not None and time.time() - _cache["zeit"] < CACHE_S: + return _cache["platten"] + werte = lesen() + with _lock: + _cache.update(zeit=time.time(), platten=werte) + return werte + + +def lage() -> dict: + """Für GET /api/platten.""" + return {"platten": kern_platten.bewertet(platten())} + + +def hinnehmen(pid: str) -> dict: + return kern_platten.hinnehmen(pid, platten()) + + +def pruefe_platten_gesundheit() -> list: + """Für den Wächter (Rolle box).""" + from services.waechter import Befund, _aktion + + befunde = [] + for p in lage()["platten"]: + if p["stufe"] == "ok": + continue + fehler = any("→" in s for s in p["saetze"]) + befunde.append(Befund( + id=f"platte:{p['id']}", stufe=p["stufe"], titel=kern_platten.befund_titel(p), + text="; ".join(p["saetze"]) + ". Wichtiges sichern; wird es schlechter, die Platte ersetzen.", + quelle="platte", aktionen=[_aktion("hinnehmen", "Zur Kenntnis genommen", platte=p["id"])] if fehler else [], + sofort=True)) + return befunde diff --git a/backend/services/waechter.py b/backend/services/waechter.py index 3aa07a9..6b6b522 100644 --- a/backend/services/waechter.py +++ b/backend/services/waechter.py @@ -640,6 +640,9 @@ PRUEFUNGEN += (__import__("services.homelab.speicher").homelab.speicher.pruefe_s PRUEFUNGEN += (__import__("services.homelab.zertifikate").homelab.zertifikate.pruefe_zertifikate,) if ROLLE == "homelab" else () # Docker-Dienste unter Arcane (seit 25.09.2026): gelb, wenn einer ungesund ist oder ständig neu startet. PRUEFUNGEN += (__import__("services.homelab.docker").homelab.docker.pruefe_docker,) if ROLLE == "homelab" else () +# Plattengesundheit (seit 26.09.2026): Host und NAS im Homelab, die NVMe der KI-Box auf der Box. +PRUEFUNGEN += ((__import__("services.homelab.platten").homelab.platten.pruefe_platten_gesundheit,) if ROLLE == "homelab" + else (__import__("services.platten").platten.pruefe_platten_gesundheit,)) # Neue Geräte im Heimnetz (seit 26.09.2026): gelb mit „Ist bekannt“, bis jemand ihn drückt. PRUEFUNGEN += (__import__("services.homelab.netzgeraete").homelab.netzgeraete.pruefe_netzgeraete,) \ if ROLLE == "homelab" else () @@ -923,6 +926,12 @@ def fuehre_aktion_aus(hinweis_id: str, aktion_id: str) -> dict: if not update_verlauf.freigeben(aktion["baustein"]): return {"ok": False, "detail": "Der Baustein war schon freigegeben."} return {"ok": True, "text": update_verlauf.FREIGEGEBEN_TEXT} + if aktion_id == "hinnehmen": # Plattenfehler zur Kenntnis genommen (seit 26.09.2026) + if ROLLE == "homelab": + from services.homelab import platten as homelab_platten + return homelab_platten.hinnehmen(str(aktion.get("platte") or "")) + from services import platten + return platten.hinnehmen(str(aktion.get("platte") or "")) if aktion_id == "bekannt": # neues Gerät im Heimnetz (seit 26.09.2026) from services.homelab import netzgeraete return netzgeraete.bestaetigen(str(aktion.get("mac") or "")) diff --git a/backend/tests/test_homelab_einstellungen.py b/backend/tests/test_homelab_einstellungen.py index 4133210..3e1d711 100644 --- a/backend/tests/test_homelab_einstellungen.py +++ b/backend/tests/test_homelab_einstellungen.py @@ -97,6 +97,7 @@ def test_stand_von_anfang_an(daten, monkeypatch): "arcane": {"url": "http://192.168.178.28:3552", "schluessel": "fehlt", "echt": False, "echt_quelle": "standard"}, "adguard": {"url": "http://192.168.178.100:8080", "zugang": "fehlt", "benutzer": None}, + "nas_snmp": {"zugang": "fehlt", "adresse": None}, "karenz_h": 48, "ausfuehrer": {"verbunden": True, "zuletzt": stand["ausfuehrer"]["zuletzt"], "nur_lesen": False, "sicherung_speicher": None}} diff --git a/backend/tests/test_partner.py b/backend/tests/test_partner.py index 0b3d342..9985ef1 100644 --- a/backend/tests/test_partner.py +++ b/backend/tests/test_partner.py @@ -222,7 +222,8 @@ print(json.dumps({"pruefungen": [p.__name__ for p in waechter.PRUEFUNGEN], "date """) assert ergebnis["pruefungen"] == ["pruefe_platte", "pruefe_partner", "pruefe_ausfuehrer", "pruefe_gaeste", "pruefe_gast_platten", "pruefe_paketlisten", "pruefe_host", "pruefe_speicher", - "pruefe_zertifikate", "pruefe_docker"] + "pruefe_zertifikate", "pruefe_docker", "pruefe_platten_gesundheit", + "pruefe_netzgeraete"] def test_homelab_rolle_hat_die_homelab_schnittstellen(tmp_path): diff --git a/backend/tests/test_platten.py b/backend/tests/test_platten.py new file mode 100644 index 0000000..a784201 --- /dev/null +++ b/backend/tests/test_platten.py @@ -0,0 +1,188 @@ +"""Plattengesundheit (Ausbauplan „Später“, Punkt 18, 26.09.2026): Proxmox-Host (pvesh), KI-Box (smartctl) und NAS +(SNMP) in einer Form, gemeldet wird nur, was schlecht ist oder schlechter wird. Die Werte stammen von den echten +Platten am 26.09. (PELADN 512GB im Host, YMTC PC41Q-2TB in der Box).""" + +import socket +import threading + +import pytest +from kern import einstellungen as einstellungen_mod +from kern import platten as kp +from services.homelab import nas_snmp + +NVME_TEXT = """ +SMART/Health Information (NVMe Log 0x02, NSID 0xffffffff) +Critical Warning: 0x00 +Temperature: 41 Celsius +Available Spare: 100% +Available Spare Threshold: 1% +Percentage Used: 2% +Power On Hours: 9,992 +Unsafe Shutdowns: 6 +Media and Data Integrity Errors: 0 +Error Information Log Entries: 0 +""" +HOST_DISK = {"devpath": "/dev/nvme0n1", "model": "PELADN 512GB", "serial": "2024110610000123", "type": "nvme", + "size": 512110190592, "health": "PASSED", "wearout": 98} +BOX_JSON = {"model_name": "YMTC PC41Q-2TB-B", "serial_number": "S1", "smart_status": {"passed": True}, + "user_capacity": {"bytes": 2048408248320}, "temperature": {"current": 35}, + "power_on_time": {"hours": 2380}, + "nvme_smart_health_information_log": {"critical_warning": 0, "temperature": 35, "available_spare": 100, + "available_spare_threshold": 10, "percentage_used": 0, + "media_errors": 0, "power_on_hours": 2380}} + + +@pytest.fixture +def daten(tmp_path, monkeypatch): + monkeypatch.setenv("MC_DATEN_DIR", str(tmp_path)) + einstellungen_mod.einstellungen.cache_clear() + yield tmp_path + einstellungen_mod.einstellungen.cache_clear() + + +def test_host_platte_aus_proxmox(): + p = kp.aus_proxmox(HOST_DISK, {"health": "PASSED", "type": "text", "text": NVME_TEXT}) + assert (p["id"], p["name"], p["wo"], p["typ"]) == ("pve:2024110610000123", "PELADN 512GB", "Proxmox-Host /dev/nvme0n1", + "nvme") + assert (p["gesund"], p["verbraucht"], p["temperatur"], p["reserve"], p["reserve_grenze"], p["stunden"]) == ( + True, 2, 41, 100, 1, 9992) + assert p["fehler"] == {"medien": 0} and kp.bewerten(p, None) == ("ok", []) + + +def test_sata_attribute(): + werte = kp.aus_ata_attributen([{"id": 5, "raw": "8"}, {"id": 197, "raw": "0"}, {"id": 194, "raw": "36 (Min/Max 20/45)"}, + {"id": "x", "raw": "1"}]) + assert werte == {"fehler": {"umgelagert": 8, "ausstehend": 0}, "temperatur": 36} + + +def test_box_platte_aus_smartctl(): + p = kp.aus_smartctl(BOX_JSON, "/dev/nvme0n1", "KI-Box") + assert (p["id"], p["wo"], p["typ"], p["verbraucht"], p["temperatur"], p["stunden"]) == ( + "KI-Box:S1", "KI-Box /dev/nvme0n1", "nvme", 0, 35, 2380) + + +@pytest.mark.parametrize("aenderung, stufe, satz", [ + ({"gesund": False}, "rot", "meldet sich selbst als defekt (SMART)"), + ({"warnung": 4}, "rot", "meldet eine kritische Warnung (0x04)"), + ({"reserve": 9, "reserve_grenze": 10}, "rot", "Ersatzblöcke fast aufgebraucht (9 %)"), + ({"verbraucht": 85}, "gelb", "zu 85 % verbraucht"), + ({"verbraucht": 93}, "rot", "zu 93 % verbraucht — Ersatz einplanen"), + ({"temperatur": 72}, "gelb", "72 °C warm (ab 70 °C zu heiß)"), + ({"fehler": {"medien": 3}}, "gelb", "Medienfehler: 0 → 3"), + ({"smart_warnung": True}, "gelb", "SMART meldet eine Warnung"), +]) +def test_bewerten(aenderung, stufe, satz): + p = {**kp.aus_smartctl(BOX_JSON, "/dev/nvme0n1", "KI-Box"), **aenderung} + assert kp.bewerten(p, {"medien": 0}) == (stufe, [satz]) + + +def test_nur_was_schlechter_wird(daten): + alt = {**kp.aus_smartctl(BOX_JSON, "/dev/nvme0n1", "KI-Box"), "fehler": {"medien": 5}} + assert kp.bewertet([alt])[0]["stufe"] == "ok" # beim ersten Blick schon da: Ausgangslage + schlechter = {**alt, "fehler": {"medien": 7}} + (p,) = kp.bewertet([schlechter]) + assert (p["stufe"], p["saetze"]) == ("gelb", ["Medienfehler: 5 → 7"]) + assert kp.befund_titel(p) == "Platte YMTC PC41Q-2TB-B (KI-Box /dev/nvme0n1): Medienfehler: 5 → 7" + assert kp.hinnehmen(p["id"], [schlechter])["ok"] + assert kp.bewertet([schlechter])[0]["stufe"] == "ok" + assert not kp.hinnehmen("gibt-es-nicht", [schlechter])["ok"] + + +# --- NAS über SNMP ---------------------------------------------------------------------------------------------- + +def _antwort_pdu(anfrage: bytes, zeilen: list[tuple[str, object]], community: str) -> bytes: + """Eine Response-PDU mit den Werten ab der erfragten OID (wie ein NAS, das GetBulk beantwortet).""" + _, nachricht, _ = nas_snmp._lies(anfrage, 0) + _, _, pos = nas_snmp._lies(nachricht, 0) + _, gemeinschaft, pos = nas_snmp._lies(nachricht, pos) + if gemeinschaft.decode() != community: + return b"" # falscher Zugangsname: SNMP schweigt + _, pdu, _ = nas_snmp._lies(nachricht, pos) + _, nr, p = nas_snmp._lies(pdu, 0) + for _ in range(2): + _, _, p = nas_snmp._lies(pdu, p) + _, bindungen, _ = nas_snmp._lies(pdu, p) + _, bindung, _ = nas_snmp._lies(bindungen, 0) + _, oid, _ = nas_snmp._lies(bindung, 0) + ab = nas_snmp._oid_text(oid) + + def schluessel(o: str) -> tuple: + return tuple(int(t) for t in o.split(".")) + folgende = sorted((z for z in zeilen if schluessel(z[0]) > schluessel(ab)), key=lambda z: schluessel(z[0]))[:25] + teile = b"" + for o, w in folgende: + wert = nas_snmp._tlv(0x04, w.encode()) if isinstance(w, str) else nas_snmp._int(int(w)) + teile += nas_snmp._tlv(0x30, nas_snmp._oid(o) + wert) + if len(folgende) < 25: + teile += nas_snmp._tlv(0x30, nas_snmp._oid(ab if not folgende else folgende[-1][0]) + b"\x82\x00") + antwort = nas_snmp._tlv(0xA2, nas_snmp._tlv(0x02, nr) + nas_snmp._int(0) + nas_snmp._int(0) + + nas_snmp._tlv(0x30, teile)) + return nas_snmp._tlv(0x30, nas_snmp._int(1) + nas_snmp._tlv(0x04, gemeinschaft) + antwort) + + +HD = nas_snmp.HD_TABELLE +QNAP = [(f"{nas_snmp.SYS_DESCR}.0", "Linux TS-453D 5.10.60-qnap"), + (f"{HD}.1.1", 1), (f"{HD}.1.2", 2), (f"{HD}.1.3", 3), + (f"{HD}.2.1", "HDD1"), (f"{HD}.2.2", "HDD2"), (f"{HD}.2.3", "HDD3"), + (f"{HD}.3.1", "34 C/93 F"), (f"{HD}.3.2", "36 C/96 F"), (f"{HD}.3.3", "--"), + (f"{HD}.4.1", 0), (f"{HD}.4.2", 0), (f"{HD}.4.3", -5), + (f"{HD}.5.1", "WDC WD40EFRX"), (f"{HD}.5.2", "ST4000VN008"), (f"{HD}.5.3", "--"), + (f"{HD}.7.1", "GOOD"), (f"{HD}.7.2", "Abnormal"), (f"{HD}.7.3", "--")] + + +@pytest.fixture +def nas(monkeypatch): + """Ein nachgestelltes NAS auf einem freien UDP-Port von 127.0.0.1.""" + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.bind(("127.0.0.1", 0)) + sock.settimeout(0.2) + laeuft = threading.Event() + laeuft.set() + + def dienen(): + while laeuft.is_set(): + try: + anfrage, absender = sock.recvfrom(65535) + except (TimeoutError, OSError): + continue + if antwort := _antwort_pdu(anfrage, QNAP, "geheim-lesen"): + sock.sendto(antwort, absender) + + faden = threading.Thread(target=dienen, daemon=True) + faden.start() + monkeypatch.setattr(nas_snmp, "PORT", sock.getsockname()[1]) + monkeypatch.setattr(nas_snmp, "ZEITLIMIT_S", 0.5) + yield + laeuft.clear() + faden.join(timeout=2) + sock.close() + + +def test_nas_platten_ueber_snmp(nas): + ergebnis = nas_snmp.lesen("127.0.0.1", "geheim-lesen") + assert ergebnis["ok"] and ergebnis["system"] == "Linux TS-453D 5.10.60-qnap" + platten = ergebnis["platten"] + assert [(p["name"], p["wo"], p["gesund"], p["temperatur"]) for p in platten] == [ + ("WDC WD40EFRX", "NAS HDD1", True, 34), ("ST4000VN008", "NAS HDD2", False, 36)] # leerer Schacht fällt weg + assert kp.bewerten(platten[1], None)[0] == "rot" + + +def test_nas_falscher_zugangsname_und_speichern(nas, daten, monkeypatch): + monkeypatch.setattr(nas_snmp, "nas_adresse", lambda: "127.0.0.1") + falsch = nas_snmp.setzen("public", "") + assert not falsch["ok"] and "antwortet nicht über SNMP" in falsch["detail"] and "Nichts gespeichert" in falsch["detail"] + assert nas_snmp.zugang() is None + richtig = nas_snmp.setzen("geheim-lesen", "") + assert richtig == {"ok": True, "text": "Das NAS antwortet (Linux TS-453D 5.10.60-qnap): 2 Platten, davon 1 gesund."} + assert nas_snmp.zugang() == {"community": "geheim-lesen", "adresse": None} + assert "geheim-lesen" not in str(nas_snmp.stand()) + assert nas_snmp.zugang_loeschen() and nas_snmp.stand() == {"eingerichtet": False, "ok": False, "platten": [], + "detail": None} + + +def test_disk_tabelle_der_neueren_firmware(): + d = nas_snmp.DISK_TABELLE + werte = [(f"{d}.1.1", 1), (f"{d}.2.1", "Disk 1"), (f"{d}.5.1", "GOOD"), (f"{d}.6.1", 33), + (f"{d}.8.1", "WDC WD40EFRX-68N32N0")] + (p,) = nas_snmp.platten_aus_disk(werte) + assert (p["name"], p["gesund"], p["temperatur"]) == ("WDC WD40EFRX-68N32N0", True, 33) diff --git a/deploy/homelab/ausfuehrer.py b/deploy/homelab/ausfuehrer.py index 0d64f13..dd1e067 100644 --- a/deploy/homelab/ausfuehrer.py +++ b/deploy/homelab/ausfuehrer.py @@ -1115,10 +1115,44 @@ def bericht() -> dict: host["netz"] = _netz_stand() except Exception as exc: host["netz_fehler"] = str(exc)[:200] + try: + host["platten"] = _platten_stand() + except Exception as exc: + host["platten_fehler"] = str(exc)[:200] return {"zeit": datetime.now(timezone.utc).isoformat(timespec="seconds"), "host": host, "gaeste": sorted(gaeste, key=lambda g: g["vmid"])} +# --- Plattengesundheit (seit 26.09.2026, nur lesend) ------------------------------------------------------ +# Was Proxmox selbst über seine Platten weiß (Rechenzentrum → Knoten → Disks): Liste mit Gesundheit und Verschleiß, +# dazu je Platte die SMART-Werte. Ausgewertet wird auf dem Server (backend/kern/platten.py); höchstens stündlich. + +PLATTEN_ALLE_S = 3600 +_platten: dict = {"zeit": 0.0, "stand": None} + + +def platten() -> list[dict]: + ergebnis = [] + for disk in _pvesh(f"/nodes/{NODE}/disks/list") or []: + if not isinstance(disk, dict) or not disk.get("devpath"): + continue + try: + smart = _pvesh(f"/nodes/{NODE}/disks/smart", "--disk", str(disk["devpath"])) + except Exception as exc: + smart = {"fehler": str(exc)[:200]} + ergebnis.append({"disk": {k: disk.get(k) for k in ("devpath", "model", "serial", "type", "size", "health", + "wearout", "rpm")}, + "smart": smart if isinstance(smart, dict) else None}) + return ergebnis + + +def _platten_stand() -> list[dict]: + if _platten["stand"] is None or time.time() - _platten["zeit"] >= PLATTEN_ALLE_S: + _platten["stand"] = platten() + _platten["zeit"] = time.time() + return _platten["stand"] + + # --- Geräte im Heimnetz (seit 26.09.2026, nur lesend) ---------------------------------------------------- # AdGuard sieht in diesem Netz fast nur die Fritzbox (sie reicht die Anfragen der meisten Geräte weiter). Wer im # Heimnetz ist, verrät deshalb die Nachbartabelle dieses Hosts: Alle NETZ_ALLE_S ein Ping an jede Adresse des Netzes diff --git a/docs/BEDIENUNG.md b/docs/BEDIENUNG.md index c4cae33..19f8d6b 100644 --- a/docs/BEDIENUNG.md +++ b/docs/BEDIENUNG.md @@ -149,6 +149,12 @@ Werte zu jedem Zeitpunkt; „Werte als Tabelle“ klappt die letzten Punkte als Anteil geblockter Anfragen, sobald unter Einstellungen ein Zugang eingetragen ist. - **Hinweise mit Ablauf:** „Gesehen“ nimmt einem Hinweis die Farbe, „24 h stumm“ schaltet Erinnerungen ab (wird er rot, meldet er sich trotzdem), „Wieder melden“ hebt das auf. Kurze Wackler lösen keinen Alarm mehr aus. +- **Plattengesundheit** (seit 26.09.): die Platte des Proxmox-Hosts und — sobald SNMP am NAS an ist — die Platten des + NAS: ob sie sich gesund meldet, wie viel verbraucht ist, wie warm sie ist. Gemeldet wird nur, was schlecht ist oder + schlechter wird (etwa neue Medienfehler); „Zur Kenntnis genommen“ macht den heutigen Stand zur neuen Ausgangslage. +- **Neue Geräte im Netz** (seit 26.09.): Der Proxmox-Host sieht alle 30 Minuten nach, wer im Heimnetz antwortet. + Taucht ein unbekanntes Gerät auf, kommt einmal eine Nachricht und ein gelber Hinweis mit „Ist bekannt“. Handys mit + wechselnder (zufälliger) MAC erkennt er am Namen wieder. ## Homelab · Updates @@ -228,7 +234,8 @@ Probleme oben. Je Dienst stehen da - **Läuft seit** mit der Uhrzeit des letzten Starts, und **Neustarts**: wie oft systemd den Dienst nach einem Absturz von selbst wieder gestartet hat (am Handy nur, wenn es welche gab). -„Protokoll" klappt unter der Zeile auf, was der Dienst zuletzt geschrieben hat, das Neueste unten. „Neu starten" +„Protokoll" klappt unter der Zeile auf, was der Dienst zuletzt geschrieben hat, das Neueste unten. +Im Cockpit der KI-Box steht seit 26.09. außerdem die **Plattengesundheit** ihrer NVMe (gesund, verbraucht, Wärme). „Neu starten" startet ihn neu, „Starten" einen gestoppten oder gescheiterten Dienst; „Wecken" weckt einen schlafenden bis zum nächsten Neustart der Box. Jeder dieser Knöpfe fragt vorher nach. Die Spracherkennung und die Konsole schlafen seit 24.09. mit Absicht; die Android-App wird sie später wieder brauchen. @@ -252,6 +259,9 @@ Eine eigene Seite mit fünf Karten: KI-Box, Homelab, Lucy, Meldungen, Software-S melden“, „Sicherheitsupdates automatisch“, „Alles automatisch im Fenster“) und je Gerät eine eigene. - **AdGuard Home (Homelab):** ein Zugang (am besten ein eigener Benutzer), mit dem die Kachel zeigt, wie viel AdGuard blockt. „Prüfen und speichern“ fragt AdGuard erst damit; das Passwort wird nie wieder angezeigt. +- **NAS-Platten (SNMP, Homelab):** Am QNAP unter Systemsteuerung → Netzwerk- und Dateidienste → SNMP den Dienst + einschalten (SNMP v1/v2) und einen Zugangsnamen („Community“) wählen, der nicht „public“ heißt; den hier eintragen. + „Verbindung testen und speichern“ fragt das NAS erst damit — antwortet es, erscheinen seine Platten im Cockpit. - **Arcane-API-Schlüssel (Homelab):** in Arcane unter Einstellungen → API-Schlüssel anlegen und hier einfügen. „Prüfen und speichern“ fragt Arcane zuerst, ob der Schlüssel gilt; erst dann wird er gespeichert — im Homelab-Teil, nicht diff --git a/docs/BETRIEB.md b/docs/BETRIEB.md index 86cab03..9754921 100644 --- a/docs/BETRIEB.md +++ b/docs/BETRIEB.md @@ -301,6 +301,19 @@ laufen lassen. Achtung: `ausfuehrer-einrichten.sh` schreibt `/etc/mc2-ausfuehrer gerade „Alle aktualisieren“ oder ein Update, wartet es eine Minute. Einstellungen: `/var/lib/mc2/homelab-wartung.json` (Oberfläche: Einstellungen → Homelab), Stand des letzten Fensters: `/var/lib/mc2/homelab-wartung-stand.json`. Die Läufe schreiben Oberfläche und Steward in dieselbe Datei — seit 26.09. unter `flock`. +- **Plattengesundheit (seit 26.09.):** Der Ausführer liest stündlich `pvesh get /nodes//disks/list` und je Platte + `disks/smart` (nur lesend) und schickt beides im Bericht (`host.platten`); ausgewertet wird in `backend/kern/platten.py` + (rot: SMART FAILED, kritische Warnung, Reserve aufgebraucht, ≥ 90 % verbraucht; gelb: ≥ 80 %, zu heiß, gewachsene + Fehlerzähler). Ausgangslage je Platte in `/var/lib/mc2/platten-basis.json` (Box: `/srv/models/platten-basis.json`), + „Zur Kenntnis genommen“ setzt sie neu. Das NAS über SNMP v2c (`services/homelab/nas_snmp.py`, eigener kleiner + GetBulk-Leser, UDP 161): QNAP NAS-MIB `hdTable`, sonst QTS-MIB `diskTable`; Zugang in `/var/lib/mc2/nas-snmp.json` + (0600), abgefragt höchstens alle 10 min. Die KI-Box liest ihre NVMe mit `sudo -n smartctl -j -a` (Paket + `smartmontools`, am 26.09. nachinstalliert — bei einem Neuaufbau `sudo apt install smartmontools`). +- **Geräte im Heimnetz (seit 26.09.):** AdGuard sieht in diesem Netz fast nur die Fritzbox (sie reicht die Anfragen + weiter), deshalb pingt der Ausführer alle 30 min jede Adresse des /24 an `vmbr0` an und liest `ip neigh` (MAC, IP, + Rückwärtsname; nur lesend, größer als /24 nie). Register `/var/lib/mc2/netz-bekannt.json`; der erste Abgleich nimmt + alles als bekannt, Gäste des Hosts und neue MACs mit bekanntem Namen ebenso. Neues: einmal eine Nachricht, dazu ein + gelber Hinweis mit „Ist bekannt“. Liste: `curl -s http://192.168.178.31:9001/api/homelab/netz | jq`. - **Wöchentliches Suchen:** Der Steward legt für jeden freigegebenen, laufenden Container, dessen Paketlisten älter als 7 Tage sind, den Auftrag `suchen` an (nur `apt-get update` bzw. `apk update` im Gast, es wird nichts installiert): nachts 02:00–05:00, höchstens einmal je Gast und Tag, nicht während eines Updates; war die Instanz nachts aus, gleich diff --git a/frontend/dist/assets/Auftraege-DLT4O34-.js b/frontend/dist/assets/Auftraege-Dwy9GTde.js similarity index 77% rename from frontend/dist/assets/Auftraege-DLT4O34-.js rename to frontend/dist/assets/Auftraege-Dwy9GTde.js index 54ef3dc..9cc6556 100644 --- a/frontend/dist/assets/Auftraege-DLT4O34-.js +++ b/frontend/dist/assets/Auftraege-Dwy9GTde.js @@ -1,2 +1,2 @@ -import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{A as a,Nt as o,_t as s,ht as c,j as l,k as u}from"./abfragen-pD_qBEtc.js";import{t as d}from"./button-BHVKhtQ6.js";import{H as f,h as p,m}from"./index-B_hvuxH0.js";var h=r();function g(e,t){if(e===`os`)return{laeuft:`Ubuntu`,neu:t.count?`${t.count} ${t.count===1?`Paket`:`Pakete`}`:null};if(e===`hermes`)return{laeuft:t.installed_version?`v${t.installed_version}`:`–`,neu:t.behind?`+${t.behind.toLocaleString(`de-DE`)} Änderungen`:null};let n=e===`engine`?`b`:`v`;return{laeuft:t.installed_build==null?`–`:`${n}${t.installed_build}`,neu:t.latest_build!=null&&t.installed_build!=null&&t.latest_build>t.installed_build?`${n}${t.latest_build}`:null}}function _(e,t){return!t||t.error?null:e===`os`?typeof t.count==`number`?t.count>0:null:e===`hermes`?typeof t.behind==`number`?t.behind>0:null:t.latest_build==null||t.installed_build==null?null:t.latest_build>t.installed_build}function v(e){let t=e.trim();return/timed out|timeout|zeitüberschreitung/i.test(t)?`Konnte nicht prüfen: Die Gegenstelle hat nicht rechtzeitig geantwortet. Später klappt es meist wieder.`:/name resolution|name or service not known|network is unreachable|connection (refused|reset)|nicht erreichbar/i.test(t)?`Konnte nicht prüfen: Die Box kommt gerade nicht ins Internet.`:`Konnte nicht prüfen: ${t.length>160?`${t.slice(0,157)}…`:t}`}var y=e=>e.group===`download`||/^download\s/i.test(e.label),b=e=>e.group===`pruefen`||e.label===`Nach Updates suchen`,x=e=>o(e)&&y(e),S=[[/^download\s+(.+)$/i,`Download $1`],[/^OS-Update \(apt\)$/,`Update Betriebssystem`],[/^Engine-Update \(llama\.cpp Vulkan\)$/,`Update Motor (llama.cpp)`],[/^Router-Update \(llama-swap\)$/,`Update llama-swap`],[/^Hermes-Agent-Update$/,`Update Hermes`]],C=[[`Engine (llama.cpp)`,`Motor`],[`Router (llama-swap)`,`llama-swap`],[`Hermes-Agent`,`Hermes`],[`OS (apt)`,`Betriebssystem`]];function w(e){for(let[t,n]of S)if(t.test(e.label))return e.label.replace(t,n);return e.label.startsWith(`Alle aktualisieren`)?C.reduce((e,[t,n])=>e.split(t).join(n),e.label):e.label}function T(e){if(e<60)return`noch unter einer Minute`;let t=Math.round(e/60);if(t<60)return`noch etwa ${t} min`;let n=Math.floor(t/60),r=t%60;return r?`noch etwa ${n} h ${r} min`:`noch etwa ${n} h`}function E(e,t=Date.now()/1e3){let n=Math.max(0,t-e.started_at),r=Math.floor(n/60),i=n<60?`ein paar Sekunden`:r<60?`${r} min`:`${Math.floor(r/60)} h ${r%60} min`;return`${e.state===`queued`?`Wartet`:`Läuft`} seit ${i}`}function D(e){if(e.progress==null)return null;let t=[`${Math.round(e.progress)} %`];return e.total_bytes&&t.push(`${s(e.done_bytes??0,1)} von ${s(e.total_bytes,1)}`),e.eta_s!=null&&o(e)&&t.push(T(e.eta_s)),t.join(` · `)}function O(e){for(let t=(e.log?.length??0)-1;t>=0;t--){let n=e.log[t].trim();if(n&&!n.startsWith(`$ `))return n}return null}function k(e,t=Date.now()/1e3){let n=e.filter(o).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!o(e)&&!e.quittiert&&t-(e.finished_at??e.started_at)<86400).sort((e,t)=>(t.finished_at??t.started_at)-(e.finished_at??e.started_at)).slice(0,3);return[...n,...r]}function A(e,t,n){if(!n)return`Nach dem Download übernimmt ${e} die Rolle „${t}“.`;let r=n.weitere.length?` Die Rolle${n.weitere.length===1?``:`n`} „${n.weitere.join(`“, „`)}“ behält es.`:``;return`Achtung: Nach dem Download übernimmt ${e} die Rolle „${t}“ und ersetzt damit ${n.name}. Das bisherige Modell bleibt auf der Platte.${r}`+(n.zwilling?` Bilder liest vorerst weiter sein Bild-Zwilling, also noch das bisherige Modell.`:``)}function j(e){return`Kurze Unterbrechung: Beim Eintragen lädt llama-swap sofort neu. Was Lucy oder OpenChamber gerade schreiben, bricht ab, und die Modelle werden neu geladen.`+(e?` Mit Rolle passiert das nach dem Download noch einmal.`:``)}var M=t(e(),1),N=n(),P={queued:{text:`Wartet`,art:`cyan`},running:{text:`Läuft`,art:`cyan`},done:{text:`Fertig`,art:`gruen`},failed:{text:`Fehler`,art:`rot`},canceled:{text:`Abgebrochen`,art:`grau`}},F={queued:`bg-cyan`,running:`bg-cyan`,done:`bg-gruen`,failed:`bg-rot`,canceled:`bg-text-3`},I=e=>c(new Date(e*1e3).toISOString());function L(e){let t=(0,h.c)(3),[n,r]=(0,M.useState)(R),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(!e)return;let t=window.setInterval(()=>r(Date.now()/1e3),3e4);return()=>window.clearInterval(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,M.useEffect)(i,a),n}function R(){return Date.now()/1e3}function z(e){let t=(0,h.c)(76),{job:n,onAbbrechen:r,onQuittieren:a,abbrechenGesperrt:s,ebene:c}=e,l=c===void 0?4:c,[u,m]=(0,M.useState)(!1),[g,_]=(0,M.useState)(!1),v;t[0]===n.state?v=t[1]:(v=P[n.state]??{text:n.state,art:`grau`},t[0]=n.state,t[1]=v);let b=v,S;t[2]===n?S=t[3]:(S=w(n),t[2]=n,t[3]=S);let C=S,T;t[4]===n?T=t[5]:(T=D(n),t[4]=n,t[5]=T);let k=T,A;t[6]===n?A=t[7]:(A=O(n),t[6]=n,t[7]=A);let j=A,R;t[8]===n?R=t[9]:(R=o(n),t[8]=n,t[9]=R);let z=R,B=L(z),V;t[10]!==n||t[11]!==r?(V=!!r&&x(n),t[10]=n,t[11]=r,t[12]=V):V=t[12];let H=V,U,W,G,K,q,J,Y,X;if(t[13]!==s||t[14]!==H||t[15]!==l||t[16]!==k||t[17]!==B||t[18]!==n||t[19]!==z||t[20]!==j||t[21]!==a||t[22]!==g||t[23]!==C||t[24]!==b.art||t[25]!==b.text){let e=(n.log??[]).slice(-12),r=l===3?`h3`:`h4`;Y=`Auftrag: ${C}`,X=`flex flex-col gap-2.5 flaeche-innen rounded-2xl p-3.5`;let o;t[34]!==r||t[35]!==C?(o=(0,N.jsx)(r,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:C}),t[34]=r,t[35]=C,t[36]=o):o=t[36];let c;t[37]!==b.art||t[38]!==b.text?(c=(0,N.jsx)(f,{art:b.art,children:b.text}),t[37]=b.art,t[38]=b.text,t[39]=c):c=t[39],t[40]!==o||t[41]!==c?(U=(0,N.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[o,c]}),t[40]=o,t[41]=c,t[42]=U):U=t[42],t[43]!==n.progress||t[44]!==n.state||t[45]!==C?(W=n.progress!=null&&(0,N.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${C}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(n.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,N.jsx)(`div`,{className:i(`h-full`,F[n.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,n.progress))}%`}})}),t[43]=n.progress,t[44]=n.state,t[45]=C,t[46]=W):W=t[46];let u;t[47]!==k||t[48]!==B||t[49]!==n||t[50]!==z||t[51]!==b.text?(u=z?k??E(n,B):`${b.text} · ${I(n.finished_at??n.started_at)}`,t[47]=k,t[48]=B,t[49]=n,t[50]=z,t[51]=b.text,t[52]=u):u=t[52],t[53]===u?G=t[54]:(G=(0,N.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:u}),t[53]=u,t[54]=G),t[55]!==n.progress||t[56]!==n.state||t[57]!==z||t[58]!==j?(K=j&&(n.state===`failed`||z&&n.progress==null)&&(0,N.jsx)(`p`,{className:n.state===`failed`?`m-0 text-sm break-words text-rot-text`:`ziffern m-0 line-clamp-2 text-xs break-all text-text-3`,children:n.state===`failed`?`Letzte Meldung: ${j}`:j}),t[55]=n.progress,t[56]=n.state,t[57]=z,t[58]=j,t[59]=K):K=t[59],q=(H||e.length>1||!z&&a)&&(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[H&&(0,N.jsx)(d,{variant:`outline`,size:`sm`,disabled:s,onClick:()=>m(!0),children:`Abbrechen`}),e.length>1&&(0,N.jsx)(d,{variant:`ghost`,size:`sm`,"aria-expanded":g,onClick:()=>_(!g),children:g?`Protokoll zu`:`Protokoll`}),!z&&a&&(0,N.jsx)(d,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:()=>a(n),children:`Ausblenden`})]}),J=g&&(0,N.jsx)(`pre`,{className:`ziffern m-0 max-h-56 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap break-all text-text-2`,children:e.join(` -`)}),t[13]=s,t[14]=H,t[15]=l,t[16]=k,t[17]=B,t[18]=n,t[19]=z,t[20]=j,t[21]=a,t[22]=g,t[23]=C,t[24]=b.art,t[25]=b.text,t[26]=U,t[27]=W,t[28]=G,t[29]=K,t[30]=q,t[31]=J,t[32]=Y,t[33]=X}else U=t[26],W=t[27],G=t[28],K=t[29],q=t[30],J=t[31],Y=t[32],X=t[33];let Z;t[60]!==H||t[61]!==u||t[62]!==n||t[63]!==r||t[64]!==C?(Z=H&&(0,N.jsx)(p,{offen:u,gefahr:!0,titel:`Auftrag abbrechen?`,text:y(n)?`Der ${C} stoppt. Du kannst ihn später über „Modelle selbst suchen“ neu starten.`:`„${C}“ wird abgebrochen.`,knopf:`Ja, abbrechen`,neinKnopf:`Weiterlaufen lassen`,onNein:()=>m(!1),onJa:()=>{u&&(m(!1),r?.(n))}}),t[60]=H,t[61]=u,t[62]=n,t[63]=r,t[64]=C,t[65]=Z):Z=t[65];let Q;return t[66]!==U||t[67]!==W||t[68]!==G||t[69]!==K||t[70]!==q||t[71]!==J||t[72]!==Z||t[73]!==Y||t[74]!==X?(Q=(0,N.jsxs)(`article`,{"aria-label":Y,className:X,children:[U,W,G,K,q,J,Z]}),t[66]=U,t[67]=W,t[68]=G,t[69]=K,t[70]=q,t[71]=J,t[72]=Z,t[73]=Y,t[74]=X,t[75]=Q):Q=t[75],Q}function B(e){let t=(0,h.c)(19),{alsPanel:n}=e,r=n!==void 0&&n,i=l(),o=u(),s=a(),c,d;if(t[0]!==o||t[1]!==r||t[2]!==i.data||t[3]!==i.error||t[4]!==i.isError||t[5]!==s){d=Symbol.for(`react.early_return_sentinel`);bb0:{let e=k(i.data?.jobs??[]);if(e.length>0){let n;t[8]!==o||t[9]!==r||t[10]!==s?(n=e=>(0,N.jsx)(z,{job:e,ebene:r?3:4,abbrechenGesperrt:o.isPending,onAbbrechen:e=>o.mutate({id:e.id,titel:w(e)}),onQuittieren:e=>s.mutate(e.id)},e.id),t[8]=o,t[9]=r,t[10]=s,t[11]=n):n=t[11],c=(0,N.jsx)(`div`,{className:`grid items-start gap-2.5 lg:grid-cols-2`,children:e.map(n)})}else if(i.isError&&!i.data){let e;t[12]===i.error.message?e=t[13]:(e=(0,N.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Aufträge lassen sich gerade nicht lesen: `,i.error.message]}),t[12]=i.error.message,t[13]=e),c=e}else{d=null;break bb0}}t[0]=o,t[1]=r,t[2]=i.data,t[3]=i.error,t[4]=i.isError,t[5]=s,t[6]=c,t[7]=d}else c=t[6],d=t[7];if(d!==Symbol.for(`react.early_return_sentinel`))return d;if(r){let e;return t[14]===c?e=t[15]:(e=(0,N.jsx)(m,{titel:`Aufträge`,children:c}),t[14]=c,t[15]=e),e}let f;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,N.jsx)(`h3`,{className:`etikett m-0 text-[11.5px] tracking-[0.16em] text-text-3`,children:`Aufträge`}),t[16]=f):f=t[16];let p;return t[17]===c?p=t[18]:(p=(0,N.jsxs)(`section`,{"aria-label":`Aufträge`,className:`flex flex-col gap-2.5`,children:[f,c]}),t[17]=c,t[18]=p),p}export{O as a,g as c,b as i,_ as n,v as o,j as r,A as s,B as t}; \ No newline at end of file +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{It as a,M as o,N as s,bt as c,j as l,vt as u}from"./abfragen-CDCgpAto.js";import{t as d}from"./button-BHVKhtQ6.js";import{H as f,h as p,m}from"./index-CuG_RlEw.js";var h=r();function g(e,t){if(e===`os`)return{laeuft:`Ubuntu`,neu:t.count?`${t.count} ${t.count===1?`Paket`:`Pakete`}`:null};if(e===`hermes`)return{laeuft:t.installed_version?`v${t.installed_version}`:`–`,neu:t.behind?`+${t.behind.toLocaleString(`de-DE`)} Änderungen`:null};let n=e===`engine`?`b`:`v`;return{laeuft:t.installed_build==null?`–`:`${n}${t.installed_build}`,neu:t.latest_build!=null&&t.installed_build!=null&&t.latest_build>t.installed_build?`${n}${t.latest_build}`:null}}function _(e,t){return!t||t.error?null:e===`os`?typeof t.count==`number`?t.count>0:null:e===`hermes`?typeof t.behind==`number`?t.behind>0:null:t.latest_build==null||t.installed_build==null?null:t.latest_build>t.installed_build}function v(e){let t=e.trim();return/timed out|timeout|zeitüberschreitung/i.test(t)?`Konnte nicht prüfen: Die Gegenstelle hat nicht rechtzeitig geantwortet. Später klappt es meist wieder.`:/name resolution|name or service not known|network is unreachable|connection (refused|reset)|nicht erreichbar/i.test(t)?`Konnte nicht prüfen: Die Box kommt gerade nicht ins Internet.`:`Konnte nicht prüfen: ${t.length>160?`${t.slice(0,157)}…`:t}`}var y=e=>e.group===`download`||/^download\s/i.test(e.label),b=e=>e.group===`pruefen`||e.label===`Nach Updates suchen`,x=e=>a(e)&&y(e),S=[[/^download\s+(.+)$/i,`Download $1`],[/^OS-Update \(apt\)$/,`Update Betriebssystem`],[/^Engine-Update \(llama\.cpp Vulkan\)$/,`Update Motor (llama.cpp)`],[/^Router-Update \(llama-swap\)$/,`Update llama-swap`],[/^Hermes-Agent-Update$/,`Update Hermes`]],C=[[`Engine (llama.cpp)`,`Motor`],[`Router (llama-swap)`,`llama-swap`],[`Hermes-Agent`,`Hermes`],[`OS (apt)`,`Betriebssystem`]];function w(e){for(let[t,n]of S)if(t.test(e.label))return e.label.replace(t,n);return e.label.startsWith(`Alle aktualisieren`)?C.reduce((e,[t,n])=>e.split(t).join(n),e.label):e.label}function T(e){if(e<60)return`noch unter einer Minute`;let t=Math.round(e/60);if(t<60)return`noch etwa ${t} min`;let n=Math.floor(t/60),r=t%60;return r?`noch etwa ${n} h ${r} min`:`noch etwa ${n} h`}function E(e,t=Date.now()/1e3){let n=Math.max(0,t-e.started_at),r=Math.floor(n/60),i=n<60?`ein paar Sekunden`:r<60?`${r} min`:`${Math.floor(r/60)} h ${r%60} min`;return`${e.state===`queued`?`Wartet`:`Läuft`} seit ${i}`}function D(e){if(e.progress==null)return null;let t=[`${Math.round(e.progress)} %`];return e.total_bytes&&t.push(`${c(e.done_bytes??0,1)} von ${c(e.total_bytes,1)}`),e.eta_s!=null&&a(e)&&t.push(T(e.eta_s)),t.join(` · `)}function O(e){for(let t=(e.log?.length??0)-1;t>=0;t--){let n=e.log[t].trim();if(n&&!n.startsWith(`$ `))return n}return null}function k(e,t=Date.now()/1e3){let n=e.filter(a).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!a(e)&&!e.quittiert&&t-(e.finished_at??e.started_at)<86400).sort((e,t)=>(t.finished_at??t.started_at)-(e.finished_at??e.started_at)).slice(0,3);return[...n,...r]}function A(e,t,n){if(!n)return`Nach dem Download übernimmt ${e} die Rolle „${t}“.`;let r=n.weitere.length?` Die Rolle${n.weitere.length===1?``:`n`} „${n.weitere.join(`“, „`)}“ behält es.`:``;return`Achtung: Nach dem Download übernimmt ${e} die Rolle „${t}“ und ersetzt damit ${n.name}. Das bisherige Modell bleibt auf der Platte.${r}`+(n.zwilling?` Bilder liest vorerst weiter sein Bild-Zwilling, also noch das bisherige Modell.`:``)}function j(e){return`Kurze Unterbrechung: Beim Eintragen lädt llama-swap sofort neu. Was Lucy oder OpenChamber gerade schreiben, bricht ab, und die Modelle werden neu geladen.`+(e?` Mit Rolle passiert das nach dem Download noch einmal.`:``)}var M=t(e(),1),N=n(),P={queued:{text:`Wartet`,art:`cyan`},running:{text:`Läuft`,art:`cyan`},done:{text:`Fertig`,art:`gruen`},failed:{text:`Fehler`,art:`rot`},canceled:{text:`Abgebrochen`,art:`grau`}},F={queued:`bg-cyan`,running:`bg-cyan`,done:`bg-gruen`,failed:`bg-rot`,canceled:`bg-text-3`},I=e=>u(new Date(e*1e3).toISOString());function L(e){let t=(0,h.c)(3),[n,r]=(0,M.useState)(R),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(!e)return;let t=window.setInterval(()=>r(Date.now()/1e3),3e4);return()=>window.clearInterval(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,M.useEffect)(i,a),n}function R(){return Date.now()/1e3}function z(e){let t=(0,h.c)(76),{job:n,onAbbrechen:r,onQuittieren:o,abbrechenGesperrt:s,ebene:c}=e,l=c===void 0?4:c,[u,m]=(0,M.useState)(!1),[g,_]=(0,M.useState)(!1),v;t[0]===n.state?v=t[1]:(v=P[n.state]??{text:n.state,art:`grau`},t[0]=n.state,t[1]=v);let b=v,S;t[2]===n?S=t[3]:(S=w(n),t[2]=n,t[3]=S);let C=S,T;t[4]===n?T=t[5]:(T=D(n),t[4]=n,t[5]=T);let k=T,A;t[6]===n?A=t[7]:(A=O(n),t[6]=n,t[7]=A);let j=A,R;t[8]===n?R=t[9]:(R=a(n),t[8]=n,t[9]=R);let z=R,B=L(z),V;t[10]!==n||t[11]!==r?(V=!!r&&x(n),t[10]=n,t[11]=r,t[12]=V):V=t[12];let H=V,U,W,G,K,q,J,Y,X;if(t[13]!==s||t[14]!==H||t[15]!==l||t[16]!==k||t[17]!==B||t[18]!==n||t[19]!==z||t[20]!==j||t[21]!==o||t[22]!==g||t[23]!==C||t[24]!==b.art||t[25]!==b.text){let e=(n.log??[]).slice(-12),r=l===3?`h3`:`h4`;Y=`Auftrag: ${C}`,X=`flex flex-col gap-2.5 flaeche-innen rounded-2xl p-3.5`;let a;t[34]!==r||t[35]!==C?(a=(0,N.jsx)(r,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:C}),t[34]=r,t[35]=C,t[36]=a):a=t[36];let c;t[37]!==b.art||t[38]!==b.text?(c=(0,N.jsx)(f,{art:b.art,children:b.text}),t[37]=b.art,t[38]=b.text,t[39]=c):c=t[39],t[40]!==a||t[41]!==c?(U=(0,N.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[a,c]}),t[40]=a,t[41]=c,t[42]=U):U=t[42],t[43]!==n.progress||t[44]!==n.state||t[45]!==C?(W=n.progress!=null&&(0,N.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${C}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(n.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,N.jsx)(`div`,{className:i(`h-full`,F[n.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,n.progress))}%`}})}),t[43]=n.progress,t[44]=n.state,t[45]=C,t[46]=W):W=t[46];let u;t[47]!==k||t[48]!==B||t[49]!==n||t[50]!==z||t[51]!==b.text?(u=z?k??E(n,B):`${b.text} · ${I(n.finished_at??n.started_at)}`,t[47]=k,t[48]=B,t[49]=n,t[50]=z,t[51]=b.text,t[52]=u):u=t[52],t[53]===u?G=t[54]:(G=(0,N.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:u}),t[53]=u,t[54]=G),t[55]!==n.progress||t[56]!==n.state||t[57]!==z||t[58]!==j?(K=j&&(n.state===`failed`||z&&n.progress==null)&&(0,N.jsx)(`p`,{className:n.state===`failed`?`m-0 text-sm break-words text-rot-text`:`ziffern m-0 line-clamp-2 text-xs break-all text-text-3`,children:n.state===`failed`?`Letzte Meldung: ${j}`:j}),t[55]=n.progress,t[56]=n.state,t[57]=z,t[58]=j,t[59]=K):K=t[59],q=(H||e.length>1||!z&&o)&&(0,N.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[H&&(0,N.jsx)(d,{variant:`outline`,size:`sm`,disabled:s,onClick:()=>m(!0),children:`Abbrechen`}),e.length>1&&(0,N.jsx)(d,{variant:`ghost`,size:`sm`,"aria-expanded":g,onClick:()=>_(!g),children:g?`Protokoll zu`:`Protokoll`}),!z&&o&&(0,N.jsx)(d,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:()=>o(n),children:`Ausblenden`})]}),J=g&&(0,N.jsx)(`pre`,{className:`ziffern m-0 max-h-56 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap break-all text-text-2`,children:e.join(` +`)}),t[13]=s,t[14]=H,t[15]=l,t[16]=k,t[17]=B,t[18]=n,t[19]=z,t[20]=j,t[21]=o,t[22]=g,t[23]=C,t[24]=b.art,t[25]=b.text,t[26]=U,t[27]=W,t[28]=G,t[29]=K,t[30]=q,t[31]=J,t[32]=Y,t[33]=X}else U=t[26],W=t[27],G=t[28],K=t[29],q=t[30],J=t[31],Y=t[32],X=t[33];let Z;t[60]!==H||t[61]!==u||t[62]!==n||t[63]!==r||t[64]!==C?(Z=H&&(0,N.jsx)(p,{offen:u,gefahr:!0,titel:`Auftrag abbrechen?`,text:y(n)?`Der ${C} stoppt. Du kannst ihn später über „Modelle selbst suchen“ neu starten.`:`„${C}“ wird abgebrochen.`,knopf:`Ja, abbrechen`,neinKnopf:`Weiterlaufen lassen`,onNein:()=>m(!1),onJa:()=>{u&&(m(!1),r?.(n))}}),t[60]=H,t[61]=u,t[62]=n,t[63]=r,t[64]=C,t[65]=Z):Z=t[65];let Q;return t[66]!==U||t[67]!==W||t[68]!==G||t[69]!==K||t[70]!==q||t[71]!==J||t[72]!==Z||t[73]!==Y||t[74]!==X?(Q=(0,N.jsxs)(`article`,{"aria-label":Y,className:X,children:[U,W,G,K,q,J,Z]}),t[66]=U,t[67]=W,t[68]=G,t[69]=K,t[70]=q,t[71]=J,t[72]=Z,t[73]=Y,t[74]=X,t[75]=Q):Q=t[75],Q}function B(e){let t=(0,h.c)(19),{alsPanel:n}=e,r=n!==void 0&&n,i=s(),a=l(),c=o(),u,d;if(t[0]!==a||t[1]!==r||t[2]!==i.data||t[3]!==i.error||t[4]!==i.isError||t[5]!==c){d=Symbol.for(`react.early_return_sentinel`);bb0:{let e=k(i.data?.jobs??[]);if(e.length>0){let n;t[8]!==a||t[9]!==r||t[10]!==c?(n=e=>(0,N.jsx)(z,{job:e,ebene:r?3:4,abbrechenGesperrt:a.isPending,onAbbrechen:e=>a.mutate({id:e.id,titel:w(e)}),onQuittieren:e=>c.mutate(e.id)},e.id),t[8]=a,t[9]=r,t[10]=c,t[11]=n):n=t[11],u=(0,N.jsx)(`div`,{className:`grid items-start gap-2.5 lg:grid-cols-2`,children:e.map(n)})}else if(i.isError&&!i.data){let e;t[12]===i.error.message?e=t[13]:(e=(0,N.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Aufträge lassen sich gerade nicht lesen: `,i.error.message]}),t[12]=i.error.message,t[13]=e),u=e}else{d=null;break bb0}}t[0]=a,t[1]=r,t[2]=i.data,t[3]=i.error,t[4]=i.isError,t[5]=c,t[6]=u,t[7]=d}else u=t[6],d=t[7];if(d!==Symbol.for(`react.early_return_sentinel`))return d;if(r){let e;return t[14]===u?e=t[15]:(e=(0,N.jsx)(m,{titel:`Aufträge`,children:u}),t[14]=u,t[15]=e),e}let f;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,N.jsx)(`h3`,{className:`etikett m-0 text-[11.5px] tracking-[0.16em] text-text-3`,children:`Aufträge`}),t[16]=f):f=t[16];let p;return t[17]===u?p=t[18]:(p=(0,N.jsxs)(`section`,{"aria-label":`Aufträge`,className:`flex flex-col gap-2.5`,children:[f,u]}),t[17]=u,t[18]=p),p}export{O as a,g as c,b as i,_ as n,v as o,j as r,A as s,B as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Befehlssuche-B-_a3tYu.js b/frontend/dist/assets/Befehlssuche-BqZBO0pG.js similarity index 95% rename from frontend/dist/assets/Befehlssuche-B-_a3tYu.js rename to frontend/dist/assets/Befehlssuche-BqZBO0pG.js index 71db0df..3622a19 100644 --- a/frontend/dist/assets/Befehlssuche-B-_a3tYu.js +++ b/frontend/dist/assets/Befehlssuche-BqZBO0pG.js @@ -1 +1 @@ -import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{B as a,D as o,g as s}from"./abfragen-pD_qBEtc.js";import{J as c,_ as l,b as u,bt as d,q as f,ut as p,v as m,y as h}from"./index-B_hvuxH0.js";var g=t(e(),1),_=r(),v={"proxmox-host":`host proxmox`,container:`lxc container ct`,vm:`vm qemu`},y={lxc:`container`,ct:`container`,container:`container`,vm:`vm`,qemu:`vm`,host:`proxmox-host`,pve:`proxmox-host`};function b(e){let t=c.map(e=>({id:`seite:${e.to}`,text:e.label,unter:f[e.ort],to:e.to,stichworte:e.to.replace(/\//g,` `)}));t.push({id:`lucy:freiheiten`,text:`Lucys Freiheiten`,unter:`Einstellungen → Lucy`,to:`/einstellungen`,hash:`lucy`,stichworte:`lucy autonomie selbst fragen`},{id:`lucy:rueckfragen`,text:`Rückfragen an dich`,unter:`Einstellungen → Lucy`,to:`/einstellungen`,hash:`lucy`,stichworte:`lucy ja nein telegram rueckfrage`},{id:`lucy:wochenbericht`,text:`Wochenbericht`,unter:`Einstellungen → Lucy`,to:`/einstellungen`,hash:`lucy`,stichworte:`lucy bericht sonntag`});for(let n of e){let e={geraet:{art:n.art,offen:n.offen},stichworte:`${v[n.art]??``} ${n.id}`};t.push({...e,id:`${n.id}:cockpit`,text:n.name,unter:`Gerät im Homelab-Cockpit`,to:`/homelab`,hash:`geraet-${n.id}`},{...e,id:`${n.id}:zeitleiste`,text:`${n.name} · Zeitleiste`,unter:`Was an diesem Gerät geschah`,to:`/homelab/protokoll`,hash:n.id},{...e,id:`${n.id}:monitoring`,text:`${n.name} · Monitoring`,unter:`CPU, Speicher, Platte, Netz`,to:`/homelab/monitoring`,hash:n.id}),n.art!==`proxmox-host`&&t.push({...e,id:`${n.id}:snapshot`,text:`${n.name} · Snapshots`,unter:`Snapshot anlegen, Rückweg testen`,to:`/homelab/snapshots`}),n.offen>0&&t.push({...e,id:`${n.id}:update`,text:`${n.name} · Update`,unter:`${n.offen} ${n.offen===1?`Update steht`:`Updates stehen`} an`,to:`/homelab/updates`})}return t}function x(e){let t=null,n=null,r=[];for(let i of e.toLowerCase().split(/\s+/).filter(Boolean)){let[e,a]=i.split(`:`,2);a!==void 0&&e===`typ`?t=y[a]??a:a!==void 0&&e===`update`?n=[`ja`,`j`,`1`,`true`].includes(a):r.push(i)}return{typ:t,update:n,woerter:r}}function S(e,t,n=12){let{typ:r,update:i,woerter:a}=x(t),o=e.filter(e=>{if((r||i!==null)&&!e.geraet||r&&e.geraet?.art!==r||i!==null&&e.geraet.offen>0!==i)return!1;let t=`${e.text} ${e.unter} ${e.stichworte??``}`.toLowerCase();return a.every(e=>t.includes(e))}),s=a[0],c=e=>(s&&e.text.toLowerCase().startsWith(s)?0:1)+(e.geraet?.5:0);return[...o].sort((e,t)=>c(e)-c(t)).slice(0,n)}var C=n();function w(e){let t=(0,_.c)(46),{onSchliessen:n}=e,r=d(),c=o(),f=a(),v=c.data?.rolle===`homelab`||!!(f.data?.eingerichtet&&f.data.erreichbar),y=s(v).data?.ziele,x;t[0]===y?x=t[1]:(x=y??[],t[0]=y,t[1]=x);let w;t[2]===x?w=t[3]:(w=b(x),t[2]=x,t[3]=w);let T=w,[E,D]=(0,g.useState)(``),[O,k]=(0,g.useState)(0),A;t[4]!==T||t[5]!==E?(A=S(T,E),t[4]=T,t[5]=E,t[6]=A):A=t[6];let j=A,M=Math.min(O,Math.max(0,j.length-1)),N;t[7]!==r||t[8]!==n||t[9]!==j?(N=function(e){let t=j[e];t&&(n(),r({to:t.to,hash:t.hash}))},t[7]=r,t[8]=n,t[9]=j,t[10]=N):N=t[10];let P=N,F;t[11]===n?F=t[12]:(F=e=>!e&&n(),t[11]=n,t[12]=F);let I,L;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,C.jsx)(u,{className:`sr-only`,children:`Suchen`}),L=(0,C.jsx)(h,{className:`sr-only`,children:`Geräte, Seiten und Aktionen finden. Filter: typ:lxc, typ:vm, typ:host, update:ja.`}),t[13]=I,t[14]=L):(I=t[13],L=t[14]);let R;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,C.jsx)(p,{className:`size-4 shrink-0 text-text-3`,"aria-hidden":!0}),t[15]=R):R=t[15];let z=j[M]?`befehl-${M}`:void 0,B;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(B=e=>{D(e.target.value),k(0)},t[16]=B):B=t[16];let V;t[17]!==M||t[18]!==P||t[19]!==j.length?(V=e=>{e.key===`ArrowDown`?(e.preventDefault(),k(Math.min(M+1,j.length-1))):e.key===`ArrowUp`?(e.preventDefault(),k(Math.max(M-1,0))):e.key===`Enter`&&(e.preventDefault(),P(M))},t[17]=M,t[18]=P,t[19]=j.length,t[20]=V):V=t[20];let H;t[21]!==E||t[22]!==V||t[23]!==z?(H=(0,C.jsx)(`input`,{autoFocus:!0,role:`combobox`,"aria-expanded":!0,"aria-controls":`befehle`,"aria-activedescendant":z,"aria-label":`Suchen`,value:E,placeholder:`Gerät, Seite oder Aktion — etwa „AdGuard Snapshot“ oder „typ:lxc update:ja“`,onChange:B,onKeyDown:V,className:`h-14 min-w-0 flex-1 bg-transparent text-[16px] outline-none placeholder:text-text-3`}),t[21]=E,t[22]=V,t[23]=z,t[24]=H):H=t[24];let U;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,C.jsx)(`kbd`,{className:`hidden rounded-md border border-white/10 px-1.5 py-0.5 text-[11px] text-text-3 sm:block`,children:`Esc`}),t[25]=U):U=t[25];let W;t[26]===H?W=t[27]:(W=(0,C.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-white/[0.08] px-4`,children:[R,H,U]}),t[26]=H,t[27]=W);let G;t[28]===j.length?G=t[29]:(G=j.length===0&&(0,C.jsx)(`li`,{className:`px-3 py-6 text-center text-sm text-text-3`,children:`Nichts gefunden.`}),t[28]=j.length,t[29]=G);let K;if(t[30]!==M||t[31]!==P||t[32]!==j){let e;t[34]!==M||t[35]!==P?(e=(e,t)=>(0,C.jsxs)(`li`,{id:`befehl-${t}`,role:`option`,"aria-selected":t===M,onMouseEnter:()=>k(t),onClick:()=>P(t),className:i(`flex cursor-pointer flex-col rounded-xl px-3 py-2.5`,t===M&&`bg-white/[0.07]`),children:[(0,C.jsx)(`span`,{className:`text-[15px] font-medium`,children:e.text}),(0,C.jsx)(`span`,{className:`text-[13px] text-text-3`,children:e.unter})]},e.id),t[34]=M,t[35]=P,t[36]=e):e=t[36],K=j.map(e),t[30]=M,t[31]=P,t[32]=j,t[33]=K}else K=t[33];let q;t[37]!==G||t[38]!==K?(q=(0,C.jsxs)(`ul`,{id:`befehle`,role:`listbox`,"aria-label":`Treffer`,className:`m-0 max-h-[60vh] list-none overflow-y-auto p-2`,children:[G,K]}),t[37]=G,t[38]=K,t[39]=q):q=t[39];let J;t[40]!==W||t[41]!==q?(J=(0,C.jsxs)(m,{className:`top-[12vh] translate-y-0 gap-0 border-white/10 bg-[#0e121a] p-0 sm:max-w-xl`,showCloseButton:!1,children:[I,L,W,q]}),t[40]=W,t[41]=q,t[42]=J):J=t[42];let Y;return t[43]!==J||t[44]!==F?(Y=(0,C.jsx)(l,{open:!0,onOpenChange:F,children:J}),t[43]=J,t[44]=F,t[45]=Y):Y=t[45],Y}export{w as Befehlssuche}; \ No newline at end of file +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{U as a,_ as o,k as s}from"./abfragen-CDCgpAto.js";import{J as c,_ as l,b as u,bt as d,q as f,ut as p,v as m,y as h}from"./index-CuG_RlEw.js";var g=t(e(),1),_=r(),v={"proxmox-host":`host proxmox`,container:`lxc container ct`,vm:`vm qemu`},y={lxc:`container`,ct:`container`,container:`container`,vm:`vm`,qemu:`vm`,host:`proxmox-host`,pve:`proxmox-host`};function b(e){let t=c.map(e=>({id:`seite:${e.to}`,text:e.label,unter:f[e.ort],to:e.to,stichworte:e.to.replace(/\//g,` `)}));t.push({id:`lucy:freiheiten`,text:`Lucys Freiheiten`,unter:`Einstellungen → Lucy`,to:`/einstellungen`,hash:`lucy`,stichworte:`lucy autonomie selbst fragen`},{id:`lucy:rueckfragen`,text:`Rückfragen an dich`,unter:`Einstellungen → Lucy`,to:`/einstellungen`,hash:`lucy`,stichworte:`lucy ja nein telegram rueckfrage`},{id:`lucy:wochenbericht`,text:`Wochenbericht`,unter:`Einstellungen → Lucy`,to:`/einstellungen`,hash:`lucy`,stichworte:`lucy bericht sonntag`});for(let n of e){let e={geraet:{art:n.art,offen:n.offen},stichworte:`${v[n.art]??``} ${n.id}`};t.push({...e,id:`${n.id}:cockpit`,text:n.name,unter:`Gerät im Homelab-Cockpit`,to:`/homelab`,hash:`geraet-${n.id}`},{...e,id:`${n.id}:zeitleiste`,text:`${n.name} · Zeitleiste`,unter:`Was an diesem Gerät geschah`,to:`/homelab/protokoll`,hash:n.id},{...e,id:`${n.id}:monitoring`,text:`${n.name} · Monitoring`,unter:`CPU, Speicher, Platte, Netz`,to:`/homelab/monitoring`,hash:n.id}),n.art!==`proxmox-host`&&t.push({...e,id:`${n.id}:snapshot`,text:`${n.name} · Snapshots`,unter:`Snapshot anlegen, Rückweg testen`,to:`/homelab/snapshots`}),n.offen>0&&t.push({...e,id:`${n.id}:update`,text:`${n.name} · Update`,unter:`${n.offen} ${n.offen===1?`Update steht`:`Updates stehen`} an`,to:`/homelab/updates`})}return t}function x(e){let t=null,n=null,r=[];for(let i of e.toLowerCase().split(/\s+/).filter(Boolean)){let[e,a]=i.split(`:`,2);a!==void 0&&e===`typ`?t=y[a]??a:a!==void 0&&e===`update`?n=[`ja`,`j`,`1`,`true`].includes(a):r.push(i)}return{typ:t,update:n,woerter:r}}function S(e,t,n=12){let{typ:r,update:i,woerter:a}=x(t),o=e.filter(e=>{if((r||i!==null)&&!e.geraet||r&&e.geraet?.art!==r||i!==null&&e.geraet.offen>0!==i)return!1;let t=`${e.text} ${e.unter} ${e.stichworte??``}`.toLowerCase();return a.every(e=>t.includes(e))}),s=a[0],c=e=>(s&&e.text.toLowerCase().startsWith(s)?0:1)+(e.geraet?.5:0);return[...o].sort((e,t)=>c(e)-c(t)).slice(0,n)}var C=n();function w(e){let t=(0,_.c)(46),{onSchliessen:n}=e,r=d(),c=s(),f=a(),v=c.data?.rolle===`homelab`||!!(f.data?.eingerichtet&&f.data.erreichbar),y=o(v).data?.ziele,x;t[0]===y?x=t[1]:(x=y??[],t[0]=y,t[1]=x);let w;t[2]===x?w=t[3]:(w=b(x),t[2]=x,t[3]=w);let T=w,[E,D]=(0,g.useState)(``),[O,k]=(0,g.useState)(0),A;t[4]!==T||t[5]!==E?(A=S(T,E),t[4]=T,t[5]=E,t[6]=A):A=t[6];let j=A,M=Math.min(O,Math.max(0,j.length-1)),N;t[7]!==r||t[8]!==n||t[9]!==j?(N=function(e){let t=j[e];t&&(n(),r({to:t.to,hash:t.hash}))},t[7]=r,t[8]=n,t[9]=j,t[10]=N):N=t[10];let P=N,F;t[11]===n?F=t[12]:(F=e=>!e&&n(),t[11]=n,t[12]=F);let I,L;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,C.jsx)(u,{className:`sr-only`,children:`Suchen`}),L=(0,C.jsx)(h,{className:`sr-only`,children:`Geräte, Seiten und Aktionen finden. Filter: typ:lxc, typ:vm, typ:host, update:ja.`}),t[13]=I,t[14]=L):(I=t[13],L=t[14]);let R;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,C.jsx)(p,{className:`size-4 shrink-0 text-text-3`,"aria-hidden":!0}),t[15]=R):R=t[15];let z=j[M]?`befehl-${M}`:void 0,B;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(B=e=>{D(e.target.value),k(0)},t[16]=B):B=t[16];let V;t[17]!==M||t[18]!==P||t[19]!==j.length?(V=e=>{e.key===`ArrowDown`?(e.preventDefault(),k(Math.min(M+1,j.length-1))):e.key===`ArrowUp`?(e.preventDefault(),k(Math.max(M-1,0))):e.key===`Enter`&&(e.preventDefault(),P(M))},t[17]=M,t[18]=P,t[19]=j.length,t[20]=V):V=t[20];let H;t[21]!==E||t[22]!==V||t[23]!==z?(H=(0,C.jsx)(`input`,{autoFocus:!0,role:`combobox`,"aria-expanded":!0,"aria-controls":`befehle`,"aria-activedescendant":z,"aria-label":`Suchen`,value:E,placeholder:`Gerät, Seite oder Aktion — etwa „AdGuard Snapshot“ oder „typ:lxc update:ja“`,onChange:B,onKeyDown:V,className:`h-14 min-w-0 flex-1 bg-transparent text-[16px] outline-none placeholder:text-text-3`}),t[21]=E,t[22]=V,t[23]=z,t[24]=H):H=t[24];let U;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,C.jsx)(`kbd`,{className:`hidden rounded-md border border-white/10 px-1.5 py-0.5 text-[11px] text-text-3 sm:block`,children:`Esc`}),t[25]=U):U=t[25];let W;t[26]===H?W=t[27]:(W=(0,C.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-white/[0.08] px-4`,children:[R,H,U]}),t[26]=H,t[27]=W);let G;t[28]===j.length?G=t[29]:(G=j.length===0&&(0,C.jsx)(`li`,{className:`px-3 py-6 text-center text-sm text-text-3`,children:`Nichts gefunden.`}),t[28]=j.length,t[29]=G);let K;if(t[30]!==M||t[31]!==P||t[32]!==j){let e;t[34]!==M||t[35]!==P?(e=(e,t)=>(0,C.jsxs)(`li`,{id:`befehl-${t}`,role:`option`,"aria-selected":t===M,onMouseEnter:()=>k(t),onClick:()=>P(t),className:i(`flex cursor-pointer flex-col rounded-xl px-3 py-2.5`,t===M&&`bg-white/[0.07]`),children:[(0,C.jsx)(`span`,{className:`text-[15px] font-medium`,children:e.text}),(0,C.jsx)(`span`,{className:`text-[13px] text-text-3`,children:e.unter})]},e.id),t[34]=M,t[35]=P,t[36]=e):e=t[36],K=j.map(e),t[30]=M,t[31]=P,t[32]=j,t[33]=K}else K=t[33];let q;t[37]!==G||t[38]!==K?(q=(0,C.jsxs)(`ul`,{id:`befehle`,role:`listbox`,"aria-label":`Treffer`,className:`m-0 max-h-[60vh] list-none overflow-y-auto p-2`,children:[G,K]}),t[37]=G,t[38]=K,t[39]=q):q=t[39];let J;t[40]!==W||t[41]!==q?(J=(0,C.jsxs)(m,{className:`top-[12vh] translate-y-0 gap-0 border-white/10 bg-[#0e121a] p-0 sm:max-w-xl`,showCloseButton:!1,children:[I,L,W,q]}),t[40]=W,t[41]=q,t[42]=J):J=t[42];let Y;return t[43]!==J||t[44]!==F?(Y=(0,C.jsx)(l,{open:!0,onOpenChange:F,children:J}),t[43]=J,t[44]=F,t[45]=Y):Y=t[45],Y}export{w as Befehlssuche}; \ No newline at end of file diff --git a/frontend/dist/assets/Dienste-BnFvX5-a.js b/frontend/dist/assets/Dienste-BnFvX5-a.js new file mode 100644 index 0000000..2ad8439 --- /dev/null +++ b/frontend/dist/assets/Dienste-BnFvX5-a.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Bt as a,Ct as o,Ht as s,Nt as c,W as l,bt as u,kt as d,on as f,p,t as m,vt as h}from"./abfragen-CDCgpAto.js";import{t as g}from"./button-BHVKhtQ6.js";import{B as _,H as v,M as y,R as b,U as x,h as S,m as C}from"./index-CuG_RlEw.js";var w=t(e(),1),T=r(),E=n(),D={ok:{wort:`pünktlich`,punkt:`bg-gruen`,text:`text-text-3`},ueberfaellig:{wort:`überfällig`,punkt:`bg-rot shadow-[0_0_8px_var(--rot)]`,text:`text-rot-text`},gestoppt:{wort:`läuft nicht`,punkt:`bg-rot shadow-[0_0_8px_var(--rot)]`,text:`text-rot-text`},aus:{wort:`abgeschaltet`,punkt:`bg-text-3`,text:`text-text-3`}},O=`md:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)_minmax(0,1fr)_110px]`,k=e=>h(new Date(e*1e3).toISOString());function A(e){let t=(0,T.c)(36),{a:n}=e,r=D[n.status]??D.ok,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=i(`grid grid-cols-2 gap-x-4 gap-y-1.5 border-t border-white/[0.06] py-3 md:items-center`,O),t[0]=a):a=t[0];let s;t[1]===r.punkt?s=t[2]:(s=i(`mt-1.5 size-2 shrink-0 rounded-full`,r.punkt),t[1]=r.punkt,t[2]=s);let c;t[3]===s?c=t[4]:(c=(0,E.jsx)(`span`,{"aria-hidden":!0,className:s}),t[3]=s,t[4]=c);let l;t[5]===n.name?l=t[6]:(l=(0,E.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[5]=n.name,t[6]=l);let u;t[7]===n.takt?u=t[8]:(u=(0,E.jsx)(`span`,{className:`text-[13px] text-text-3`,children:n.takt}),t[7]=n.takt,t[8]=u);let d;t[9]!==l||t[10]!==u?(d=(0,E.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[l,u]}),t[9]=l,t[10]=u,t[11]=d):d=t[11];let f;t[12]!==c||t[13]!==d?(f=(0,E.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-start gap-2.5 md:col-span-1`,children:[c,d]}),t[12]=c,t[13]=d,t[14]=f):f=t[14];let p;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,E.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Zuletzt `}),t[15]=p):p=t[15];let m;t[16]===n.letzter?m=t[17]:(m=(0,E.jsxs)(`span`,{role:`cell`,className:`text-sm text-text-2`,children:[p,n.letzter?(0,E.jsx)(`span`,{className:`ziffern`,children:o(n.letzter)}):(0,E.jsx)(`span`,{className:`text-text-3`,children:`–`})]}),t[16]=n.letzter,t[17]=m);let h;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,E.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Nächster `}),t[18]=h):h=t[18];let g;t[19]===n.naechster?g=t[20]:(g=(0,E.jsxs)(`span`,{role:`cell`,className:`text-sm text-text-2`,children:[h,n.naechster?(0,E.jsx)(`span`,{className:`ziffern`,children:k(n.naechster).toLowerCase()}):(0,E.jsx)(`span`,{className:`text-text-3`,children:`–`})]}),t[19]=n.naechster,t[20]=g);let _;t[21]===r.text?_=t[22]:(_=i(`etikett text-[10.5px] tracking-[0.12em]`,r.text),t[21]=r.text,t[22]=_);let v;t[23]!==r.wort||t[24]!==_?(v=(0,E.jsx)(`span`,{role:`cell`,className:_,children:r.wort}),t[23]=r.wort,t[24]=_,t[25]=v):v=t[25];let y;t[26]!==n.status||t[27]!==n.text||t[28]!==r.text?(y=n.text&&n.status!==`ok`&&(0,E.jsx)(`p`,{className:i(`col-span-2 m-0 text-sm md:col-span-4 md:pl-[18px]`,r.text),children:n.text}),t[26]=n.status,t[27]=n.text,t[28]=r.text,t[29]=y):y=t[29];let b;return t[30]!==g||t[31]!==v||t[32]!==y||t[33]!==f||t[34]!==m?(b=(0,E.jsxs)(`div`,{role:`row`,className:a,children:[f,m,g,v,y]}),t[30]=g,t[31]=v,t[32]=y,t[33]=f,t[34]=m,t[35]=b):b=t[35],b}function j(){let e=(0,T.c)(15),t=m(),n;e[0]===t.data?.ablaeufe?n=e[1]:(n=t.data?.ablaeufe??[],e[0]=t.data?.ablaeufe,e[1]=n);let r=n,a;e[2]===r?a=e[3]:(a=r.filter(N),e[2]=r,e[3]=a);let o=a.length,s;e[4]!==t.data||e[5]!==o?(s=t.data?(0,E.jsx)(v,{art:o?`rot`:`gruen`,children:o?`${o} überfällig`:`alle pünktlich`}):void 0,e[4]=t.data,e[5]=o,e[6]=s):s=e[6];let c;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,E.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Was die Box regelmäßig von selbst tut. Bleibt ein Lauf länger aus als erwartet, steht er hier oben und der Wächter meldet es — ein Stillstand wie im September fällt so am ersten Morgen auf.`}),e[7]=c):c=e[7];let l;e[8]!==t.error||e[9]!==t.isPending||e[10]!==r?(l=t.isPending?(0,E.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wird gelesen …`}):t.error?(0,E.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Zeitpläne lassen sich gerade nicht lesen: `,t.error.message]}):(0,E.jsxs)(`div`,{role:`table`,"aria-label":`Zeitpläne`,className:`flex flex-col`,children:[(0,E.jsxs)(`div`,{role:`row`,className:i(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,O),children:[(0,E.jsx)(`span`,{role:`columnheader`,children:`Ablauf`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Nächster`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Zustand`})]}),r.map(M)]}),e[8]=t.error,e[9]=t.isPending,e[10]=r,e[11]=l):l=e[11];let u;return e[12]!==s||e[13]!==l?(u=(0,E.jsxs)(C,{titel:`Zeitpläne`,rechts:s,children:[c,l]}),e[12]=s,e[13]=l,e[14]=u):u=e[14],u}function M(e){return(0,E.jsx)(A,{a:e},e.id)}function N(e){return e.status===`ueberfaellig`||e.status===`gestoppt`}var ee={laeuft:{wort:`läuft`,punkt:`bg-gruen`,text:`text-text-3`},startet:{wort:`startet`,punkt:`bg-bernstein`,text:`text-bernstein`},stoppt:{wort:`stoppt`,punkt:`bg-bernstein`,text:`text-bernstein`},antwortet_nicht:{wort:`antwortet nicht`,punkt:`bg-rot`,text:`text-rot-text`},gestoppt:{wort:`gestoppt`,punkt:`bg-rot`,text:`text-rot-text`},gescheitert:{wort:`gescheitert`,punkt:`bg-rot`,text:`text-rot-text`},schlaeft:{wort:`schläft`,punkt:`bg-text-3`,text:`text-text-3`}};function P(e){return e.zustand?e.zustand:e.ok?`laeuft`:e.schlaeft?`schlaeft`:`antwortet_nicht`}var F={gescheitert:0,gestoppt:0,antwortet_nicht:0,startet:1,stoppt:1,laeuft:3,schlaeft:4};function I(e){let t=P(e);return t===`laeuft`&&(e.neustarts??0)>0?2:F[t]}var te=e=>I(e)===0,L=e=>[...e].sort((e,t)=>I(e)-I(t)),R=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}),z=new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:1,maximumFractionDigits:1});function ne(e){if(e==null)return`–`;let t=e/1024**2;return t<1e3?`${R.format(t)} MB`:`${z.format(t/1024)} GB`}function re(e,t){return e.speicher_bytes==null||!t?null:(e.speicher_bytes+(e.grafik_bytes??0))/t*100}function ie(e){return e==null?`–`:e>0&&e<.05?`< 0,1 %`:e<10?`${z.format(e).replace(/,0$/,``)} %`:`${R.format(e)} %`}function ae(e){return e==null||e<0?`–`:e<60?`< 1 min`:y(e)}var B=`Europe/Berlin`,V=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:B}),H=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:B}),U=new Intl.DateTimeFormat(`en-CA`,{timeZone:B});function oe(e,t=Date.now()){let n=new Date(t-e*1e3),r=U.format(n);return r===U.format(new Date(t))?`heute ${V.format(n)}`:r===U.format(new Date(t-864e5))?`gestern ${V.format(n)}`:`${H.format(n)}, ${V.format(n)}`}function se(e,t=Date.now()){let n=P(e);return n===`schlaeft`?`mit Absicht aus`:(n===`gestoppt`||n===`gescheitert`)&&e.aus_seit_s!=null?`aus seit ${oe(e.aus_seit_s,t)}`:null}function W(e){let t=P(e);return t===`schlaeft`?`Wecken`:t===`gestoppt`||t===`gescheitert`?`Starten`:`Neu starten`}var G={"llama-swap":`Laufende Antworten brechen ab; die Modelle werden danach neu geladen.`,"mission-control-2":`Das ist diese Oberfläche selbst: Sie ist ein paar Sekunden nicht erreichbar.`,"hermes-gateway":`Lucy antwortet in der Zeit nicht.`};function K(e){let t=W(e);if(t===`Wecken`)return{titel:`${e.name} wecken?`,text:`Der Dienst startet und läuft bis zum nächsten Neustart der Box. Danach schläft er wieder.`,knopf:t};if(t===`Starten`)return{titel:`${e.name} starten?`,text:`Der Dienst wird gestartet. Scheitert er wieder, steht der Grund im Protokoll.`,knopf:t};let n=G[e.unit]?` ${G[e.unit]}`:``;return{titel:`${e.name} neu starten?`,text:`Der Dienst wird neu gestartet und ist dabei kurz nicht erreichbar.${n}`,knopf:t}}function q(e){let t=W(e);return`${e.name} ${t===`Wecken`?`wird geweckt`:t===`Starten`?`startet`:`startet neu`}.`}var ce={laeuft:`ok`,startet:`warn`,stoppt:`warn`,antwortet_nicht:`rot`,gestoppt:`rot`,gescheitert:`rot`,schlaeft:`aus`},le=`grid-cols-2 gap-x-4 sm:grid-cols-4 xl:gap-x-3 xl:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_9.5rem] min-[87.5rem]:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_17.5rem]`,J=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`});function ue(e){let t=(0,T.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,E.jsx)(`span`,{className:`block text-xs text-text-3 xl:hidden`,children:n}),t[0]=n,t[1]=r),r}function de(e){let t=(0,T.c)(7),{anteil:n,children:r}=e,i;t[0]===r?i=t[1]:(i=(0,E.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[0]=r,t[1]=i);let a;t[2]===n?a=t[3]:(a=n!==null&&(0,E.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,E.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.min(100,Math.max(2,n))}%`,background:`var(--reihe-1)`}})}),t[2]=n,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,E.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function fe(e){let t=(0,T.c)(9),{d:n,id:r}=e,i=l(n.unit),a=(0,w.useRef)(null),o;if(i.isPending)o=`Wird gelesen …`;else if(i.isError)o=`Das Protokoll lässt sich gerade nicht lesen: ${i.error.message}`;else if(i.data.ok===!1)o=i.data.err||i.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===i.data.text?e=t[1]:(e=i.data.text?.trim()||`Noch keine Einträge.`,t[0]=i.data.text,t[1]=e),o=e}let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{a.current&&(a.current.scrollTop=a.current.scrollHeight)},t[2]=s):s=t[2];let c;t[3]===o?c=t[4]:(c=[o],t[3]=o,t[4]=c),(0,w.useEffect)(s,c);let u=`Letzte Protokollzeilen von ${n.name}`,d;return t[5]!==r||t[6]!==u||t[7]!==o?(d=(0,E.jsx)(`pre`,{id:r,ref:a,tabIndex:0,"aria-label":u,className:`ziffern m-0 max-h-[50vh] w-full overflow-auto rounded-lg bg-black/30 ring-1 ring-white/[0.07] ring-inset p-3 text-xs leading-relaxed whitespace-pre-wrap break-words text-text-2`,children:o}),t[5]=r,t[6]=u,t[7]=o,t[8]=d):d=t[8],d}function Y(e){let t=(0,T.c)(113),{d:n,gesamt:r,offen:a,startet:o,onProtokoll:s,onFrage:c}=e,l=ee[P(n)],u;t[0]===n?u=t[1]:(u=se(n),t[0]=n,t[1]=u);let d=u,f,p,m,h,v,y,x,S,C,w,D;if(t[2]!==n||t[3]!==r||t[4]!==l.text||t[5]!==l.wort||t[6]!==d){let e=re(n,r);f=n.neustarts??0,p=`protokoll-${n.unit}`,S=`row`,t[18]===Symbol.for(`react.memo_cache_sentinel`)?(C=i(`grid gap-y-2.5 border-t border-white/[0.06] py-3 xl:items-center`,le),t[18]=C):C=t[18];let a;t[19]===n.unit?a=t[20]:(a=_(n.unit),t[19]=n.unit,t[20]=a);let o=ce[P(n)],s;t[21]!==a||t[22]!==o?(s=(0,E.jsx)(b,{bild:a,groesse:`sm`,punkt:o}),t[21]=a,t[22]=o,t[23]=s):s=t[23];let c;t[24]===n.name?c=t[25]:(c=(0,E.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[24]=n.name,t[25]=c);let u=n.scope===`system`?` · Systemdienst`:``,g;t[26]!==n.unit||t[27]!==u?(g=(0,E.jsxs)(`span`,{className:`ziffern text-xs break-words text-text-3`,children:[n.unit,u]}),t[26]=n.unit,t[27]=u,t[28]=g):g=t[28];let T;t[29]!==c||t[30]!==g?(T=(0,E.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[c,g]}),t[29]=c,t[30]=g,t[31]=T):T=t[31],t[32]!==s||t[33]!==T?(w=(0,E.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-3 xl:col-span-1`,children:[s,T]}),t[32]=s,t[33]=T,t[34]=w):w=t[34];let O;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,E.jsx)(ue,{children:`Zustand`}),t[35]=O):O=t[35];let k;t[36]===l.text?k=t[37]:(k=i(`etikett text-[10.5px] tracking-[0.12em]`,l.text),t[36]=l.text,t[37]=k);let A;t[38]!==k||t[39]!==l.wort?(A=(0,E.jsx)(`span`,{className:k,children:l.wort}),t[38]=k,t[39]=l.wort,t[40]=A):A=t[40];let j;t[41]===d?j=t[42]:(j=d&&(0,E.jsx)(`span`,{className:`text-xs text-text-3`,children:d}),t[41]=d,t[42]=j);let M;t[43]===f?M=t[44]:(M=f>0&&(0,E.jsx)(`span`,{className:`text-xs text-bernstein xl:hidden`,children:f===1?`1 Neustart`:`${f} Neustarts`}),t[43]=f,t[44]=M),t[45]!==A||t[46]!==j||t[47]!==M?(D=(0,E.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[O,A,j,M]}),t[45]=A,t[46]=j,t[47]=M,t[48]=D):D=t[48];let N;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,E.jsx)(ue,{children:`CPU`}),t[49]=N):N=t[49],t[50]===n.cpu_prozent?m=t[51]:(m=(0,E.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[N,n.cpu_prozent==null?(0,E.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,E.jsx)(de,{anteil:n.cpu_prozent,children:ie(n.cpu_prozent)})]}),t[50]=n.cpu_prozent,t[51]=m),h=`cell`,v=`min-w-0`,t[52]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,E.jsx)(ue,{children:`Speicher`}),t[52]=y):y=t[52],x=n.speicher_bytes==null?(0,E.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,E.jsxs)(de,{anteil:e,children:[ne(n.speicher_bytes+(n.grafik_bytes??0)),e!==null&&(0,E.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,ie(e)]})]}),t[2]=n,t[3]=r,t[4]=l.text,t[5]=l.wort,t[6]=d,t[7]=f,t[8]=p,t[9]=m,t[10]=h,t[11]=v,t[12]=y,t[13]=x,t[14]=S,t[15]=C,t[16]=w,t[17]=D}else f=t[7],p=t[8],m=t[9],h=t[10],v=t[11],y=t[12],x=t[13],S=t[14],C=t[15],w=t[16],D=t[17];let O;t[53]!==n.grafik_bytes||t[54]!==n.speicher_bytes?(O=n.speicher_bytes!=null&&!!n.grafik_bytes&&(0,E.jsxs)(`span`,{className:`mt-1 block text-xs text-text-3`,children:[`davon `,ne(n.grafik_bytes),` Modelle`]}),t[53]=n.grafik_bytes,t[54]=n.speicher_bytes,t[55]=O):O=t[55];let k;t[56]!==O||t[57]!==h||t[58]!==v||t[59]!==y||t[60]!==x?(k=(0,E.jsxs)(`span`,{role:h,className:v,children:[y,x,O]}),t[56]=O,t[57]=h,t[58]=v,t[59]=y,t[60]=x,t[61]=k):k=t[61];let A;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,E.jsx)(ue,{children:`Läuft seit`}),t[62]=A):A=t[62];let j;t[63]===n.laeuft_seit_s?j=t[64]:(j=ae(n.laeuft_seit_s),t[63]=n.laeuft_seit_s,t[64]=j);let M;t[65]===j?M=t[66]:(M=(0,E.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:j}),t[65]=j,t[66]=M);let N;t[67]===n.laeuft_seit_s?N=t[68]:(N=n.laeuft_seit_s!=null&&(0,E.jsxs)(`span`,{className:`text-xs text-text-3`,children:[`gestartet `,oe(n.laeuft_seit_s)]}),t[67]=n.laeuft_seit_s,t[68]=N);let F;t[69]!==M||t[70]!==N?(F=(0,E.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[A,M,N]}),t[69]=M,t[70]=N,t[71]=F):F=t[71];let I=f>0?`text-bernstein`:`text-text-3`,L;t[72]===I?L=t[73]:(L=i(`ziffern text-sm`,I),t[72]=I,t[73]=L);let R=n.neustarts??`–`,z;t[74]!==L||t[75]!==R?(z=(0,E.jsx)(`span`,{role:`cell`,className:`hidden min-w-0 xl:block`,children:(0,E.jsx)(`span`,{className:L,children:R})}),t[74]=L,t[75]=R,t[76]=z):z=t[76];let B=a?`info`:`ghost`,V=a?p:void 0,H=`Protokoll von ${n.name}`,U;t[77]!==a||t[78]!==s||t[79]!==B||t[80]!==V||t[81]!==H?(U=(0,E.jsx)(g,{variant:B,size:`sm`,"aria-expanded":a,"aria-controls":V,"aria-label":H,onClick:s,children:`Protokoll`}),t[77]=a,t[78]=s,t[79]=B,t[80]=V,t[81]=H,t[82]=U):U=t[82];let G=te(n)?`default`:`outline`,K=o!==null,q;t[83]!==n||t[84]!==o?(q=o===n.unit?`startet …`:W(n),t[83]=n,t[84]=o,t[85]=q):q=t[85];let J=`${n.name}: ${q}`,Y;t[86]!==n||t[87]!==o?(Y=o===n.unit?`Startet …`:W(n),t[86]=n,t[87]=o,t[88]=Y):Y=t[88];let X;t[89]!==c||t[90]!==G||t[91]!==K||t[92]!==J||t[93]!==Y?(X=(0,E.jsx)(g,{variant:G,size:`sm`,disabled:K,"aria-label":J,onClick:c,children:Y}),t[89]=c,t[90]=G,t[91]=K,t[92]=J,t[93]=Y,t[94]=X):X=t[94];let Z;t[95]!==U||t[96]!==X?(Z=(0,E.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex flex-wrap gap-2 sm:col-start-3 sm:row-start-1 sm:justify-end sm:self-start xl:col-span-1 xl:col-start-auto xl:row-start-auto xl:flex-col xl:items-stretch xl:self-center min-[87.5rem]:flex-row min-[87.5rem]:justify-end`,children:[U,X]}),t[95]=U,t[96]=X,t[97]=Z):Z=t[97];let Q;t[98]!==n||t[99]!==a||t[100]!==p?(Q=a&&(0,E.jsx)(`div`,{role:`cell`,className:`col-span-full`,children:(0,E.jsx)(fe,{d:n,id:p})}),t[98]=n,t[99]=a,t[100]=p,t[101]=Q):Q=t[101];let $;return t[102]!==m||t[103]!==k||t[104]!==F||t[105]!==z||t[106]!==Z||t[107]!==Q||t[108]!==S||t[109]!==C||t[110]!==w||t[111]!==D?($=(0,E.jsxs)(`div`,{role:S,className:C,children:[w,D,m,k,F,z,Z,Q]}),t[102]=m,t[103]=k,t[104]=F,t[105]=z,t[106]=Z,t[107]=Q,t[108]=S,t[109]=C,t[110]=w,t[111]=D,t[112]=$):$=t[112],$}function X(e){let t=(0,T.c)(16),{stand:n,gewaehlt:r,startet:a,onProtokoll:o,onFrage:s}=e,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,E.jsxs)(`div`,{role:`row`,className:i(`etikett hidden pb-2 text-[10.5px] tracking-[0.14em] text-text-3 xl:grid`,le),children:[(0,E.jsx)(`span`,{role:`columnheader`,children:`Dienst`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Zustand`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Neustarts`}),(0,E.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktionen`})]}),t[0]=c):c=t[0];let l;if(t[1]!==r||t[2]!==s||t[3]!==o||t[4]!==n.services||t[5]!==n.speicher_gesamt||t[6]!==a){let e;t[8]!==r||t[9]!==s||t[10]!==o||t[11]!==n.speicher_gesamt||t[12]!==a?(e=e=>(0,E.jsx)(Y,{d:e,gesamt:n.speicher_gesamt,offen:r===e.unit,startet:a,onProtokoll:()=>o(e.unit),onFrage:()=>s(e)},e.unit),t[8]=r,t[9]=s,t[10]=o,t[11]=n.speicher_gesamt,t[12]=a,t[13]=e):e=t[13],l=L(n.services).map(e),t[1]=r,t[2]=s,t[3]=o,t[4]=n.services,t[5]=n.speicher_gesamt,t[6]=a,t[7]=l}else l=t[7];let u;return t[14]===l?u=t[15]:(u=(0,E.jsxs)(`div`,{role:`table`,"aria-label":`Dienste der KI-Box`,className:`flex flex-col`,children:[c,l]}),t[14]=l,t[15]=u),u}function Z(e){let t=(0,T.c)(8),{dienste:n,stand:r}=e,i;t[0]===n?i=t[1]:(i=n.filter(te),t[0]=n,t[1]=i);let a=i.length,o;if(t[2]!==n||t[3]!==a||t[4]!==r){let e=n.filter($),i;t[6]===r?i=t[7]:(i=r>0&&(0,E.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,J.format(r)]}),t[6]=r,t[7]=i),o=(0,E.jsxs)(`span`,{className:`flex flex-wrap items-center gap-3`,children:[i,a>0?(0,E.jsx)(v,{art:`rot`,children:a===1?`1 Problem`:`${a} Probleme`}):e.length>0?(0,E.jsx)(v,{art:`bernstein`,children:e.some(Q)?`Startet gerade`:`Stoppt gerade`}):(0,E.jsx)(v,{art:`gruen`,children:`Alles in Ordnung`})]}),t[2]=n,t[3]=a,t[4]=r,t[5]=o}else o=t[5];return o}function Q(e){return P(e)===`startet`}function $(e){return I(e)===1}function pe(){let e=f(),t=p(),[n,r]=(0,w.useState)(null),[i,o]=(0,w.useState)(null),[l,m]=(0,w.useState)(!1),[h,g]=(0,w.useState)(null);async function _(t){if(!h){g(t.unit);try{let e=await s(`/api/maintenance/restart`,{service:t.unit});e.ok?d(`erfolg`,q(t)):d(`fehler`,`${t.name} ließ sich nicht starten: ${c(e)}`)}catch(e){t.unit===`mission-control-2`&&e instanceof a?d(`info`,`Der Box-Wart startet neu. Die Seite ist gleich wieder da.`):d(`fehler`,e.message)}finally{g(null),e.invalidateQueries({queryKey:[`dienste`]}),e.invalidateQueries({queryKey:[`protokoll`,t.unit]})}}}if(t.isPending)return(0,E.jsx)(x,{text:`Die Dienste werden gelesen …`});if(!t.data)return(0,E.jsx)(x,{fehler:!0,text:`Die Dienste lassen sich gerade nicht lesen: ${t.error?.message??`keine Daten`}`});let v=t.data,y=i?K(i):null,b=v.speicher_gesamt?`den ${u(v.speicher_gesamt)}`:`dem Arbeitsspeicher`,T=v.kerne?`allen ${v.kerne} Kernen`:`allen Kernen`;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(C,{titel:`Dienste`,rechts:(0,E.jsx)(Z,{dienste:v.services,stand:t.dataUpdatedAt}),children:[(0,E.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Die Dienste der KI-Box: ob sie laufen, was sie gerade an CPU und Speicher brauchen, seit wann sie laufen und was sie zuletzt ins Protokoll geschrieben haben. Probleme stehen oben.`}),v.services.length===0?(0,E.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}):(0,E.jsx)(X,{stand:v,gewaehlt:n,startet:h,onProtokoll:e=>r(n===e?null:e),onFrage:e=>{o(e),m(!0)}}),(0,E.jsxs)(`p`,{className:`m-0 text-xs leading-relaxed text-text-3`,children:[`CPU: Anteil an `,T,` der Box, gemessen zwischen zwei Abfragen (alle zehn Sekunden). Speicher: was systemd dem Dienst zurechnet; der Balken zeigt den Anteil an `,b,` der Box. Bei der Engine zählen die geladenen Modelle mit — sie liegen im Grafikspeicher, den systemd keinem Dienst zurechnet. Neustarts: wie oft systemd den Dienst nach einem Absturz von selbst wieder gestartet hat. „Schläft“ heißt: mit Absicht abgeschaltet, kein Fehler.`]}),(0,E.jsx)(S,{offen:l&&!!y,titel:y?.titel??``,text:y?.text??``,knopf:y?.knopf??``,gefahr:y?.knopf===`Neu starten`,gesperrt:h!==null,onJa:()=>{m(!1),i&&_(i)},onNein:()=>m(!1)})]}),(0,E.jsx)(j,{})]})}export{pe as DiensteSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Dienste-Yc2LKSv8.js b/frontend/dist/assets/Dienste-Yc2LKSv8.js deleted file mode 100644 index 042cac2..0000000 --- a/frontend/dist/assets/Dienste-Yc2LKSv8.js +++ /dev/null @@ -1 +0,0 @@ -import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{At as a,Et as o,Lt as s,V as c,_t as l,bt as u,f as d,ht as f,rn as p,t as m,zt as h}from"./abfragen-pD_qBEtc.js";import{t as g}from"./button-BHVKhtQ6.js";import{B as _,H as v,M as y,R as b,U as x,h as S,m as C}from"./index-B_hvuxH0.js";var w=t(e(),1),T=r(),E=n(),D={ok:{wort:`pünktlich`,punkt:`bg-gruen`,text:`text-text-3`},ueberfaellig:{wort:`überfällig`,punkt:`bg-rot shadow-[0_0_8px_var(--rot)]`,text:`text-rot-text`},gestoppt:{wort:`läuft nicht`,punkt:`bg-rot shadow-[0_0_8px_var(--rot)]`,text:`text-rot-text`},aus:{wort:`abgeschaltet`,punkt:`bg-text-3`,text:`text-text-3`}},O=`md:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)_minmax(0,1fr)_110px]`,k=e=>f(new Date(e*1e3).toISOString());function A(e){let t=(0,T.c)(36),{a:n}=e,r=D[n.status]??D.ok,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=i(`grid grid-cols-2 gap-x-4 gap-y-1.5 border-t border-white/[0.06] py-3 md:items-center`,O),t[0]=a):a=t[0];let o;t[1]===r.punkt?o=t[2]:(o=i(`mt-1.5 size-2 shrink-0 rounded-full`,r.punkt),t[1]=r.punkt,t[2]=o);let s;t[3]===o?s=t[4]:(s=(0,E.jsx)(`span`,{"aria-hidden":!0,className:o}),t[3]=o,t[4]=s);let c;t[5]===n.name?c=t[6]:(c=(0,E.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[5]=n.name,t[6]=c);let l;t[7]===n.takt?l=t[8]:(l=(0,E.jsx)(`span`,{className:`text-[13px] text-text-3`,children:n.takt}),t[7]=n.takt,t[8]=l);let d;t[9]!==c||t[10]!==l?(d=(0,E.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[c,l]}),t[9]=c,t[10]=l,t[11]=d):d=t[11];let f;t[12]!==s||t[13]!==d?(f=(0,E.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-start gap-2.5 md:col-span-1`,children:[s,d]}),t[12]=s,t[13]=d,t[14]=f):f=t[14];let p;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,E.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Zuletzt `}),t[15]=p):p=t[15];let m;t[16]===n.letzter?m=t[17]:(m=(0,E.jsxs)(`span`,{role:`cell`,className:`text-sm text-text-2`,children:[p,n.letzter?(0,E.jsx)(`span`,{className:`ziffern`,children:u(n.letzter)}):(0,E.jsx)(`span`,{className:`text-text-3`,children:`–`})]}),t[16]=n.letzter,t[17]=m);let h;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,E.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Nächster `}),t[18]=h):h=t[18];let g;t[19]===n.naechster?g=t[20]:(g=(0,E.jsxs)(`span`,{role:`cell`,className:`text-sm text-text-2`,children:[h,n.naechster?(0,E.jsx)(`span`,{className:`ziffern`,children:k(n.naechster).toLowerCase()}):(0,E.jsx)(`span`,{className:`text-text-3`,children:`–`})]}),t[19]=n.naechster,t[20]=g);let _;t[21]===r.text?_=t[22]:(_=i(`etikett text-[10.5px] tracking-[0.12em]`,r.text),t[21]=r.text,t[22]=_);let v;t[23]!==r.wort||t[24]!==_?(v=(0,E.jsx)(`span`,{role:`cell`,className:_,children:r.wort}),t[23]=r.wort,t[24]=_,t[25]=v):v=t[25];let y;t[26]!==n.status||t[27]!==n.text||t[28]!==r.text?(y=n.text&&n.status!==`ok`&&(0,E.jsx)(`p`,{className:i(`col-span-2 m-0 text-sm md:col-span-4 md:pl-[18px]`,r.text),children:n.text}),t[26]=n.status,t[27]=n.text,t[28]=r.text,t[29]=y):y=t[29];let b;return t[30]!==g||t[31]!==v||t[32]!==y||t[33]!==f||t[34]!==m?(b=(0,E.jsxs)(`div`,{role:`row`,className:a,children:[f,m,g,v,y]}),t[30]=g,t[31]=v,t[32]=y,t[33]=f,t[34]=m,t[35]=b):b=t[35],b}function j(){let e=(0,T.c)(15),t=m(),n;e[0]===t.data?.ablaeufe?n=e[1]:(n=t.data?.ablaeufe??[],e[0]=t.data?.ablaeufe,e[1]=n);let r=n,a;e[2]===r?a=e[3]:(a=r.filter(N),e[2]=r,e[3]=a);let o=a.length,s;e[4]!==t.data||e[5]!==o?(s=t.data?(0,E.jsx)(v,{art:o?`rot`:`gruen`,children:o?`${o} überfällig`:`alle pünktlich`}):void 0,e[4]=t.data,e[5]=o,e[6]=s):s=e[6];let c;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,E.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Was die Box regelmäßig von selbst tut. Bleibt ein Lauf länger aus als erwartet, steht er hier oben und der Wächter meldet es — ein Stillstand wie im September fällt so am ersten Morgen auf.`}),e[7]=c):c=e[7];let l;e[8]!==t.error||e[9]!==t.isPending||e[10]!==r?(l=t.isPending?(0,E.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wird gelesen …`}):t.error?(0,E.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Zeitpläne lassen sich gerade nicht lesen: `,t.error.message]}):(0,E.jsxs)(`div`,{role:`table`,"aria-label":`Zeitpläne`,className:`flex flex-col`,children:[(0,E.jsxs)(`div`,{role:`row`,className:i(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,O),children:[(0,E.jsx)(`span`,{role:`columnheader`,children:`Ablauf`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Nächster`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Zustand`})]}),r.map(M)]}),e[8]=t.error,e[9]=t.isPending,e[10]=r,e[11]=l):l=e[11];let u;return e[12]!==s||e[13]!==l?(u=(0,E.jsxs)(C,{titel:`Zeitpläne`,rechts:s,children:[c,l]}),e[12]=s,e[13]=l,e[14]=u):u=e[14],u}function M(e){return(0,E.jsx)(A,{a:e},e.id)}function N(e){return e.status===`ueberfaellig`||e.status===`gestoppt`}var ee={laeuft:{wort:`läuft`,punkt:`bg-gruen`,text:`text-text-3`},startet:{wort:`startet`,punkt:`bg-bernstein`,text:`text-bernstein`},stoppt:{wort:`stoppt`,punkt:`bg-bernstein`,text:`text-bernstein`},antwortet_nicht:{wort:`antwortet nicht`,punkt:`bg-rot`,text:`text-rot-text`},gestoppt:{wort:`gestoppt`,punkt:`bg-rot`,text:`text-rot-text`},gescheitert:{wort:`gescheitert`,punkt:`bg-rot`,text:`text-rot-text`},schlaeft:{wort:`schläft`,punkt:`bg-text-3`,text:`text-text-3`}};function P(e){return e.zustand?e.zustand:e.ok?`laeuft`:e.schlaeft?`schlaeft`:`antwortet_nicht`}var F={gescheitert:0,gestoppt:0,antwortet_nicht:0,startet:1,stoppt:1,laeuft:3,schlaeft:4};function I(e){let t=P(e);return t===`laeuft`&&(e.neustarts??0)>0?2:F[t]}var te=e=>I(e)===0,L=e=>[...e].sort((e,t)=>I(e)-I(t)),R=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}),z=new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:1,maximumFractionDigits:1});function ne(e){if(e==null)return`–`;let t=e/1024**2;return t<1e3?`${R.format(t)} MB`:`${z.format(t/1024)} GB`}function re(e,t){return e.speicher_bytes==null||!t?null:(e.speicher_bytes+(e.grafik_bytes??0))/t*100}function ie(e){return e==null?`–`:e>0&&e<.05?`< 0,1 %`:e<10?`${z.format(e).replace(/,0$/,``)} %`:`${R.format(e)} %`}function ae(e){return e==null||e<0?`–`:e<60?`< 1 min`:y(e)}var B=`Europe/Berlin`,V=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:B}),H=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:B}),U=new Intl.DateTimeFormat(`en-CA`,{timeZone:B});function oe(e,t=Date.now()){let n=new Date(t-e*1e3),r=U.format(n);return r===U.format(new Date(t))?`heute ${V.format(n)}`:r===U.format(new Date(t-864e5))?`gestern ${V.format(n)}`:`${H.format(n)}, ${V.format(n)}`}function se(e,t=Date.now()){let n=P(e);return n===`schlaeft`?`mit Absicht aus`:(n===`gestoppt`||n===`gescheitert`)&&e.aus_seit_s!=null?`aus seit ${oe(e.aus_seit_s,t)}`:null}function W(e){let t=P(e);return t===`schlaeft`?`Wecken`:t===`gestoppt`||t===`gescheitert`?`Starten`:`Neu starten`}var G={"llama-swap":`Laufende Antworten brechen ab; die Modelle werden danach neu geladen.`,"mission-control-2":`Das ist diese Oberfläche selbst: Sie ist ein paar Sekunden nicht erreichbar.`,"hermes-gateway":`Lucy antwortet in der Zeit nicht.`};function K(e){let t=W(e);if(t===`Wecken`)return{titel:`${e.name} wecken?`,text:`Der Dienst startet und läuft bis zum nächsten Neustart der Box. Danach schläft er wieder.`,knopf:t};if(t===`Starten`)return{titel:`${e.name} starten?`,text:`Der Dienst wird gestartet. Scheitert er wieder, steht der Grund im Protokoll.`,knopf:t};let n=G[e.unit]?` ${G[e.unit]}`:``;return{titel:`${e.name} neu starten?`,text:`Der Dienst wird neu gestartet und ist dabei kurz nicht erreichbar.${n}`,knopf:t}}function q(e){let t=W(e);return`${e.name} ${t===`Wecken`?`wird geweckt`:t===`Starten`?`startet`:`startet neu`}.`}var ce={laeuft:`ok`,startet:`warn`,stoppt:`warn`,antwortet_nicht:`rot`,gestoppt:`rot`,gescheitert:`rot`,schlaeft:`aus`},le=`grid-cols-2 gap-x-4 sm:grid-cols-4 xl:gap-x-3 xl:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_9.5rem] min-[87.5rem]:grid-cols-[minmax(0,1.7fr)_7rem_minmax(0,0.7fr)_minmax(0,1.2fr)_7.5rem_5rem_17.5rem]`,J=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`});function ue(e){let t=(0,T.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,E.jsx)(`span`,{className:`block text-xs text-text-3 xl:hidden`,children:n}),t[0]=n,t[1]=r),r}function de(e){let t=(0,T.c)(7),{anteil:n,children:r}=e,i;t[0]===r?i=t[1]:(i=(0,E.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[0]=r,t[1]=i);let a;t[2]===n?a=t[3]:(a=n!==null&&(0,E.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,E.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.min(100,Math.max(2,n))}%`,background:`var(--reihe-1)`}})}),t[2]=n,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,E.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function fe(e){let t=(0,T.c)(9),{d:n,id:r}=e,i=c(n.unit),a=(0,w.useRef)(null),o;if(i.isPending)o=`Wird gelesen …`;else if(i.isError)o=`Das Protokoll lässt sich gerade nicht lesen: ${i.error.message}`;else if(i.data.ok===!1)o=i.data.err||i.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===i.data.text?e=t[1]:(e=i.data.text?.trim()||`Noch keine Einträge.`,t[0]=i.data.text,t[1]=e),o=e}let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{a.current&&(a.current.scrollTop=a.current.scrollHeight)},t[2]=s):s=t[2];let l;t[3]===o?l=t[4]:(l=[o],t[3]=o,t[4]=l),(0,w.useEffect)(s,l);let u=`Letzte Protokollzeilen von ${n.name}`,d;return t[5]!==r||t[6]!==u||t[7]!==o?(d=(0,E.jsx)(`pre`,{id:r,ref:a,tabIndex:0,"aria-label":u,className:`ziffern m-0 max-h-[50vh] w-full overflow-auto rounded-lg bg-black/30 ring-1 ring-white/[0.07] ring-inset p-3 text-xs leading-relaxed whitespace-pre-wrap break-words text-text-2`,children:o}),t[5]=r,t[6]=u,t[7]=o,t[8]=d):d=t[8],d}function Y(e){let t=(0,T.c)(113),{d:n,gesamt:r,offen:a,startet:o,onProtokoll:s,onFrage:c}=e,l=ee[P(n)],u;t[0]===n?u=t[1]:(u=se(n),t[0]=n,t[1]=u);let d=u,f,p,m,h,v,y,x,S,C,w,D;if(t[2]!==n||t[3]!==r||t[4]!==l.text||t[5]!==l.wort||t[6]!==d){let e=re(n,r);f=n.neustarts??0,p=`protokoll-${n.unit}`,S=`row`,t[18]===Symbol.for(`react.memo_cache_sentinel`)?(C=i(`grid gap-y-2.5 border-t border-white/[0.06] py-3 xl:items-center`,le),t[18]=C):C=t[18];let a;t[19]===n.unit?a=t[20]:(a=_(n.unit),t[19]=n.unit,t[20]=a);let o=ce[P(n)],s;t[21]!==a||t[22]!==o?(s=(0,E.jsx)(b,{bild:a,groesse:`sm`,punkt:o}),t[21]=a,t[22]=o,t[23]=s):s=t[23];let c;t[24]===n.name?c=t[25]:(c=(0,E.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[24]=n.name,t[25]=c);let u=n.scope===`system`?` · Systemdienst`:``,g;t[26]!==n.unit||t[27]!==u?(g=(0,E.jsxs)(`span`,{className:`ziffern text-xs break-words text-text-3`,children:[n.unit,u]}),t[26]=n.unit,t[27]=u,t[28]=g):g=t[28];let T;t[29]!==c||t[30]!==g?(T=(0,E.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[c,g]}),t[29]=c,t[30]=g,t[31]=T):T=t[31],t[32]!==s||t[33]!==T?(w=(0,E.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-3 xl:col-span-1`,children:[s,T]}),t[32]=s,t[33]=T,t[34]=w):w=t[34];let O;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,E.jsx)(ue,{children:`Zustand`}),t[35]=O):O=t[35];let k;t[36]===l.text?k=t[37]:(k=i(`etikett text-[10.5px] tracking-[0.12em]`,l.text),t[36]=l.text,t[37]=k);let A;t[38]!==k||t[39]!==l.wort?(A=(0,E.jsx)(`span`,{className:k,children:l.wort}),t[38]=k,t[39]=l.wort,t[40]=A):A=t[40];let j;t[41]===d?j=t[42]:(j=d&&(0,E.jsx)(`span`,{className:`text-xs text-text-3`,children:d}),t[41]=d,t[42]=j);let M;t[43]===f?M=t[44]:(M=f>0&&(0,E.jsx)(`span`,{className:`text-xs text-bernstein xl:hidden`,children:f===1?`1 Neustart`:`${f} Neustarts`}),t[43]=f,t[44]=M),t[45]!==A||t[46]!==j||t[47]!==M?(D=(0,E.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[O,A,j,M]}),t[45]=A,t[46]=j,t[47]=M,t[48]=D):D=t[48];let N;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,E.jsx)(ue,{children:`CPU`}),t[49]=N):N=t[49],t[50]===n.cpu_prozent?m=t[51]:(m=(0,E.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[N,n.cpu_prozent==null?(0,E.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,E.jsx)(de,{anteil:n.cpu_prozent,children:ie(n.cpu_prozent)})]}),t[50]=n.cpu_prozent,t[51]=m),h=`cell`,v=`min-w-0`,t[52]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,E.jsx)(ue,{children:`Speicher`}),t[52]=y):y=t[52],x=n.speicher_bytes==null?(0,E.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}):(0,E.jsxs)(de,{anteil:e,children:[ne(n.speicher_bytes+(n.grafik_bytes??0)),e!==null&&(0,E.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,ie(e)]})]}),t[2]=n,t[3]=r,t[4]=l.text,t[5]=l.wort,t[6]=d,t[7]=f,t[8]=p,t[9]=m,t[10]=h,t[11]=v,t[12]=y,t[13]=x,t[14]=S,t[15]=C,t[16]=w,t[17]=D}else f=t[7],p=t[8],m=t[9],h=t[10],v=t[11],y=t[12],x=t[13],S=t[14],C=t[15],w=t[16],D=t[17];let O;t[53]!==n.grafik_bytes||t[54]!==n.speicher_bytes?(O=n.speicher_bytes!=null&&!!n.grafik_bytes&&(0,E.jsxs)(`span`,{className:`mt-1 block text-xs text-text-3`,children:[`davon `,ne(n.grafik_bytes),` Modelle`]}),t[53]=n.grafik_bytes,t[54]=n.speicher_bytes,t[55]=O):O=t[55];let k;t[56]!==O||t[57]!==h||t[58]!==v||t[59]!==y||t[60]!==x?(k=(0,E.jsxs)(`span`,{role:h,className:v,children:[y,x,O]}),t[56]=O,t[57]=h,t[58]=v,t[59]=y,t[60]=x,t[61]=k):k=t[61];let A;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,E.jsx)(ue,{children:`Läuft seit`}),t[62]=A):A=t[62];let j;t[63]===n.laeuft_seit_s?j=t[64]:(j=ae(n.laeuft_seit_s),t[63]=n.laeuft_seit_s,t[64]=j);let M;t[65]===j?M=t[66]:(M=(0,E.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:j}),t[65]=j,t[66]=M);let N;t[67]===n.laeuft_seit_s?N=t[68]:(N=n.laeuft_seit_s!=null&&(0,E.jsxs)(`span`,{className:`text-xs text-text-3`,children:[`gestartet `,oe(n.laeuft_seit_s)]}),t[67]=n.laeuft_seit_s,t[68]=N);let F;t[69]!==M||t[70]!==N?(F=(0,E.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[A,M,N]}),t[69]=M,t[70]=N,t[71]=F):F=t[71];let I=f>0?`text-bernstein`:`text-text-3`,L;t[72]===I?L=t[73]:(L=i(`ziffern text-sm`,I),t[72]=I,t[73]=L);let R=n.neustarts??`–`,z;t[74]!==L||t[75]!==R?(z=(0,E.jsx)(`span`,{role:`cell`,className:`hidden min-w-0 xl:block`,children:(0,E.jsx)(`span`,{className:L,children:R})}),t[74]=L,t[75]=R,t[76]=z):z=t[76];let B=a?`info`:`ghost`,V=a?p:void 0,H=`Protokoll von ${n.name}`,U;t[77]!==a||t[78]!==s||t[79]!==B||t[80]!==V||t[81]!==H?(U=(0,E.jsx)(g,{variant:B,size:`sm`,"aria-expanded":a,"aria-controls":V,"aria-label":H,onClick:s,children:`Protokoll`}),t[77]=a,t[78]=s,t[79]=B,t[80]=V,t[81]=H,t[82]=U):U=t[82];let G=te(n)?`default`:`outline`,K=o!==null,q;t[83]!==n||t[84]!==o?(q=o===n.unit?`startet …`:W(n),t[83]=n,t[84]=o,t[85]=q):q=t[85];let J=`${n.name}: ${q}`,Y;t[86]!==n||t[87]!==o?(Y=o===n.unit?`Startet …`:W(n),t[86]=n,t[87]=o,t[88]=Y):Y=t[88];let X;t[89]!==c||t[90]!==G||t[91]!==K||t[92]!==J||t[93]!==Y?(X=(0,E.jsx)(g,{variant:G,size:`sm`,disabled:K,"aria-label":J,onClick:c,children:Y}),t[89]=c,t[90]=G,t[91]=K,t[92]=J,t[93]=Y,t[94]=X):X=t[94];let Z;t[95]!==U||t[96]!==X?(Z=(0,E.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex flex-wrap gap-2 sm:col-start-3 sm:row-start-1 sm:justify-end sm:self-start xl:col-span-1 xl:col-start-auto xl:row-start-auto xl:flex-col xl:items-stretch xl:self-center min-[87.5rem]:flex-row min-[87.5rem]:justify-end`,children:[U,X]}),t[95]=U,t[96]=X,t[97]=Z):Z=t[97];let Q;t[98]!==n||t[99]!==a||t[100]!==p?(Q=a&&(0,E.jsx)(`div`,{role:`cell`,className:`col-span-full`,children:(0,E.jsx)(fe,{d:n,id:p})}),t[98]=n,t[99]=a,t[100]=p,t[101]=Q):Q=t[101];let $;return t[102]!==m||t[103]!==k||t[104]!==F||t[105]!==z||t[106]!==Z||t[107]!==Q||t[108]!==S||t[109]!==C||t[110]!==w||t[111]!==D?($=(0,E.jsxs)(`div`,{role:S,className:C,children:[w,D,m,k,F,z,Z,Q]}),t[102]=m,t[103]=k,t[104]=F,t[105]=z,t[106]=Z,t[107]=Q,t[108]=S,t[109]=C,t[110]=w,t[111]=D,t[112]=$):$=t[112],$}function X(e){let t=(0,T.c)(16),{stand:n,gewaehlt:r,startet:a,onProtokoll:o,onFrage:s}=e,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,E.jsxs)(`div`,{role:`row`,className:i(`etikett hidden pb-2 text-[10.5px] tracking-[0.14em] text-text-3 xl:grid`,le),children:[(0,E.jsx)(`span`,{role:`columnheader`,children:`Dienst`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Zustand`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`}),(0,E.jsx)(`span`,{role:`columnheader`,children:`Neustarts`}),(0,E.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktionen`})]}),t[0]=c):c=t[0];let l;if(t[1]!==r||t[2]!==s||t[3]!==o||t[4]!==n.services||t[5]!==n.speicher_gesamt||t[6]!==a){let e;t[8]!==r||t[9]!==s||t[10]!==o||t[11]!==n.speicher_gesamt||t[12]!==a?(e=e=>(0,E.jsx)(Y,{d:e,gesamt:n.speicher_gesamt,offen:r===e.unit,startet:a,onProtokoll:()=>o(e.unit),onFrage:()=>s(e)},e.unit),t[8]=r,t[9]=s,t[10]=o,t[11]=n.speicher_gesamt,t[12]=a,t[13]=e):e=t[13],l=L(n.services).map(e),t[1]=r,t[2]=s,t[3]=o,t[4]=n.services,t[5]=n.speicher_gesamt,t[6]=a,t[7]=l}else l=t[7];let u;return t[14]===l?u=t[15]:(u=(0,E.jsxs)(`div`,{role:`table`,"aria-label":`Dienste der KI-Box`,className:`flex flex-col`,children:[c,l]}),t[14]=l,t[15]=u),u}function Z(e){let t=(0,T.c)(8),{dienste:n,stand:r}=e,i;t[0]===n?i=t[1]:(i=n.filter(te),t[0]=n,t[1]=i);let a=i.length,o;if(t[2]!==n||t[3]!==a||t[4]!==r){let e=n.filter($),i;t[6]===r?i=t[7]:(i=r>0&&(0,E.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,J.format(r)]}),t[6]=r,t[7]=i),o=(0,E.jsxs)(`span`,{className:`flex flex-wrap items-center gap-3`,children:[i,a>0?(0,E.jsx)(v,{art:`rot`,children:a===1?`1 Problem`:`${a} Probleme`}):e.length>0?(0,E.jsx)(v,{art:`bernstein`,children:e.some(Q)?`Startet gerade`:`Stoppt gerade`}):(0,E.jsx)(v,{art:`gruen`,children:`Alles in Ordnung`})]}),t[2]=n,t[3]=a,t[4]=r,t[5]=o}else o=t[5];return o}function Q(e){return P(e)===`startet`}function $(e){return I(e)===1}function pe(){let e=p(),t=d(),[n,r]=(0,w.useState)(null),[i,c]=(0,w.useState)(null),[u,f]=(0,w.useState)(!1),[m,g]=(0,w.useState)(null);async function _(t){if(!m){g(t.unit);try{let e=await h(`/api/maintenance/restart`,{service:t.unit});e.ok?o(`erfolg`,q(t)):o(`fehler`,`${t.name} ließ sich nicht starten: ${a(e)}`)}catch(e){t.unit===`mission-control-2`&&e instanceof s?o(`info`,`Der Box-Wart startet neu. Die Seite ist gleich wieder da.`):o(`fehler`,e.message)}finally{g(null),e.invalidateQueries({queryKey:[`dienste`]}),e.invalidateQueries({queryKey:[`protokoll`,t.unit]})}}}if(t.isPending)return(0,E.jsx)(x,{text:`Die Dienste werden gelesen …`});if(!t.data)return(0,E.jsx)(x,{fehler:!0,text:`Die Dienste lassen sich gerade nicht lesen: ${t.error?.message??`keine Daten`}`});let v=t.data,y=i?K(i):null,b=v.speicher_gesamt?`den ${l(v.speicher_gesamt)}`:`dem Arbeitsspeicher`,T=v.kerne?`allen ${v.kerne} Kernen`:`allen Kernen`;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(C,{titel:`Dienste`,rechts:(0,E.jsx)(Z,{dienste:v.services,stand:t.dataUpdatedAt}),children:[(0,E.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Die Dienste der KI-Box: ob sie laufen, was sie gerade an CPU und Speicher brauchen, seit wann sie laufen und was sie zuletzt ins Protokoll geschrieben haben. Probleme stehen oben.`}),v.services.length===0?(0,E.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}):(0,E.jsx)(X,{stand:v,gewaehlt:n,startet:m,onProtokoll:e=>r(n===e?null:e),onFrage:e=>{c(e),f(!0)}}),(0,E.jsxs)(`p`,{className:`m-0 text-xs leading-relaxed text-text-3`,children:[`CPU: Anteil an `,T,` der Box, gemessen zwischen zwei Abfragen (alle zehn Sekunden). Speicher: was systemd dem Dienst zurechnet; der Balken zeigt den Anteil an `,b,` der Box. Bei der Engine zählen die geladenen Modelle mit — sie liegen im Grafikspeicher, den systemd keinem Dienst zurechnet. Neustarts: wie oft systemd den Dienst nach einem Absturz von selbst wieder gestartet hat. „Schläft“ heißt: mit Absicht abgeschaltet, kein Fehler.`]}),(0,E.jsx)(S,{offen:u&&!!y,titel:y?.titel??``,text:y?.text??``,knopf:y?.knopf??``,gefahr:y?.knopf===`Neu starten`,gesperrt:m!==null,onJa:()=>{f(!1),i&&_(i)},onNein:()=>f(!1)})]}),(0,E.jsx)(j,{})]})}export{pe as DiensteSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Einstellungen-CRRpjSwU.js b/frontend/dist/assets/Einstellungen-CRRpjSwU.js deleted file mode 100644 index 582d1eb..0000000 --- a/frontend/dist/assets/Einstellungen-CRRpjSwU.js +++ /dev/null @@ -1 +0,0 @@ -import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{B as o,Bt as s,D as c,Et as l,M as u,N as d,Rt as f,W as p,dt as m,ft as h,g,ht as _,lt as v,n as y,o as b,ot as x,p as S,rn as C,rt as w,s as T,tt as E,ut as D,v as O,zt as k}from"./abfragen-pD_qBEtc.js";import{t as A}from"./button-BHVKhtQ6.js";import{H as j,f as M,h as N,ht as P,p as F}from"./index-B_hvuxH0.js";var I={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};I.node;var L=r(I),R=i(),z=t(e(),1),B=n(),V=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],H={melden:`Nur melden`,sicherheit:`Sicherheitsupdates automatisch`,alles:`Alles automatisch im Fenster`},U=`h-10 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-lab/60`;function W(e){let t=(0,R.c)(11),{wert:n,onWahl:r,label:i,mitStandard:a}=e,o=n??``,s;t[0]===r?s=t[1]:(s=e=>r(e.target.value||null),t[0]=r,t[1]=s);let c;t[2]===a?c=t[3]:(c=a&&(0,B.jsxs)(`option`,{value:``,children:[`Wie Standard (`,a,`)`]}),t[2]=a,t[3]=c);let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=Object.keys(H),t[4]=l):l=t[4];let u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=l.map(G),t[5]=u):u=t[5];let d;return t[6]!==i||t[7]!==o||t[8]!==s||t[9]!==c?(d=(0,B.jsxs)(`select`,{"aria-label":i,value:o,onChange:s,className:`${U} min-w-0`,children:[c,u]}),t[6]=i,t[7]=o,t[8]=s,t[9]=c,t[10]=d):d=t[10],d}function G(e){return(0,B.jsx)(`option`,{value:e,children:H[e]},e)}function K(e){let t=(0,R.c)(61),{aktiv:n}=e,r=v(n),i=g(n).data?.ziele??[],a=D(),[o,s]=(0,z.useState)(null);if(!r.data){let e=r.isPending?`Wird gelesen …`:`Das Wartungsfenster lässt sich gerade nicht lesen.`,n;return t[0]===e?n=t[1]:(n=(0,B.jsx)(`p`,{className:`text-sm text-text-3`,children:e}),t[0]=e,t[1]=n),n}let c=o??r.data.fenster,l;t[2]!==o||t[3]!==r.data.fenster?(l=!!o&&JSON.stringify(o)!==JSON.stringify(r.data.fenster),t[2]=o,t[3]=r.data.fenster,t[4]=l):l=t[4];let u=l,d=r.data.stand,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,B.jsx)(`p`,{className:`m-0 text-sm text-text-2`,children:`Im Fenster spielt der Orchestrator ein, was die Regel des Geräts erlaubt — mit Snapshot vorher und Rückweg bei Rot. Einzelne Erfolge kommen gesammelt als eine Meldung, Fehler sofort. Den Proxmox-Host startet er nie von selbst neu.`}),t[5]=f):f=t[5];let p=c.tag,m;t[6]===c?m=t[7]:(m=e=>s({...c,tag:Number(e.target.value)}),t[6]=c,t[7]=m);let h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=V.map(q),t[8]=h):h=t[8];let y;t[9]!==c.tag||t[10]!==m?(y=(0,B.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`Tag`,(0,B.jsx)(`select`,{className:U,value:p,onChange:m,children:h})]}),t[9]=c.tag,t[10]=m,t[11]=y):y=t[11];let b;t[12]===c?b=t[13]:(b=e=>s({...c,von:e.target.value}),t[12]=c,t[13]=b);let x;t[14]!==c.von||t[15]!==b?(x=(0,B.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`von`,(0,B.jsx)(`input`,{type:`time`,className:U,value:c.von,onChange:b})]}),t[14]=c.von,t[15]=b,t[16]=x):x=t[16];let S;t[17]===c?S=t[18]:(S=e=>s({...c,bis:e.target.value}),t[17]=c,t[18]=S);let C;t[19]!==c.bis||t[20]!==S?(C=(0,B.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`bis`,(0,B.jsx)(`input`,{type:`time`,className:U,value:c.bis,onChange:S})]}),t[19]=c.bis,t[20]=S,t[21]=C):C=t[21];let w=!u||a.isPending,T;t[22]!==c||t[23]!==a?(T=()=>a.mutate({fenster:c},{onSuccess:()=>s(null)}),t[22]=c,t[23]=a,t[24]=T):T=t[24];let E;t[25]!==w||t[26]!==T?(E=(0,B.jsx)(`button`,{type:`button`,disabled:w,onClick:T,className:`h-10 rounded-xl bg-lab/20 px-4 text-sm font-medium text-lab-text ring-1 ring-lab/40 ring-inset disabled:opacity-40`,children:`Fenster speichern`}),t[25]=w,t[26]=T,t[27]=E):E=t[27];let O;t[28]!==C||t[29]!==E||t[30]!==y||t[31]!==x?(O=(0,B.jsxs)(`div`,{className:`flex flex-wrap items-end gap-2`,children:[y,x,C,E]}),t[28]=C,t[29]=E,t[30]=y,t[31]=x,t[32]=O):O=t[32];let k;t[33]===r.data.naechstes?k=t[34]:(k=_(new Date(r.data.naechstes*1e3).toISOString()).toLowerCase(),t[33]=r.data.naechstes,t[34]=k);let A;t[35]===d?A=t[36]:(A=d?` · zuletzt ${d.datum.split(`-`).reverse().join(`.`)}: ${d.status===`laeuft`?`läuft gerade`:`${d.schritte.length} Schritte`}`:``,t[35]=d,t[36]=A);let j;t[37]!==k||t[38]!==A?(j=(0,B.jsxs)(`p`,{className:`m-0 text-xs text-text-3`,children:[`Nächstes Fenster: `,k,A]}),t[37]=k,t[38]=A,t[39]=j):j=t[39];let M;t[40]===a?M=t[41]:(M=e=>e&&a.mutate({standard:e}),t[40]=a,t[41]=M);let N;t[42]!==M||t[43]!==r.data.standard?(N=(0,B.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`Standard für alle Geräte (auch neue)`,(0,B.jsx)(W,{label:`Standard-Regel`,wert:r.data.standard,onWahl:M})]}),t[42]=M,t[43]=r.data.standard,t[44]=N):N=t[44];let P;if(t[45]!==a||t[46]!==r.data.regeln||t[47]!==r.data.standard||t[48]!==i){let e;t[50]!==a||t[51]!==r.data.regeln||t[52]!==r.data.standard?(e=e=>(0,B.jsxs)(`div`,{role:`row`,className:`flex flex-wrap items-center justify-between gap-2 border-t border-white/[0.06] py-2`,children:[(0,B.jsx)(`span`,{role:`rowheader`,className:`text-[15px]`,children:e.name}),(0,B.jsx)(`span`,{role:`cell`,children:(0,B.jsx)(W,{label:`Regel für ${e.name}`,wert:r.data.regeln[e.id]??null,mitStandard:H[r.data.standard],onWahl:t=>a.mutate({regeln:{[e.id]:t}})})})]},e.id),t[50]=a,t[51]=r.data.regeln,t[52]=r.data.standard,t[53]=e):e=t[53],P=i.map(e),t[45]=a,t[46]=r.data.regeln,t[47]=r.data.standard,t[48]=i,t[49]=P}else P=t[49];let F;t[54]===P?F=t[55]:(F=(0,B.jsx)(`div`,{role:`table`,"aria-label":`Regel je Gerät`,className:`flex flex-col`,children:P}),t[54]=P,t[55]=F);let I;return t[56]!==O||t[57]!==j||t[58]!==N||t[59]!==F?(I=(0,B.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[f,O,j,N,F]}),t[56]=O,t[57]=j,t[58]=N,t[59]=F,t[60]=I):I=t[60],I}function q(e,t){return(0,B.jsx)(`option`,{value:t,children:e},e)}var J=[{id:`lesen`,kurz:`Nur lesen`},{id:`fragen`,kurz:`Erst fragen`},{id:`selbst`,kurz:`Selbst handeln`}],Y=`h-10 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-lab/60`;function ee(){let e=(0,R.c)(22),t=u(),n=d(),[r,i]=(0,z.useState)(null);if(!t.data){let n=t.isPending?`Wird gelesen …`:`Lucys Freiheiten lassen sich gerade nicht lesen.`,r;return e[0]===n?r=e[1]:(r=(0,B.jsx)(`p`,{className:`text-sm text-text-3`,children:n}),e[0]=n,e[1]=r),r}let o=te,s;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,B.jsx)(`p`,{className:`m-0 text-sm text-text-2`,children:`Bittest du Lucy ausdrücklich um etwas, tut sie es. Hier stellst du ein, was sie aus eigenem Antrieb darf: nur erklären, dich vorher fragen (in Telegram antwortest du mit „ja“ und der Nummer) oder selbst handeln — dann bekommst du danach eine Meldung.`}),e[2]=s):s=e[2];let c;if(e[3]!==t.data.arten||e[4]!==n){let r;e[6]===n?r=e[7]:(r=e=>(0,B.jsxs)(`div`,{role:`row`,className:`flex flex-col gap-2 border-t border-white/[0.06] py-3 first:border-t-0 sm:flex-row sm:items-center sm:justify-between`,children:[(0,B.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 flex-col gap-0.5`,children:[(0,B.jsx)(`span`,{className:`text-[15px]`,children:e.name}),(0,B.jsx)(`span`,{className:`text-xs text-text-3`,children:e.text})]}),(0,B.jsx)(`span`,{role:`cell`,className:`shrink-0`,children:(0,B.jsx)(`select`,{"aria-label":`Freiheit: ${e.name}`,value:e.stufe,disabled:n.isPending,className:a(Y,`min-w-44`,e.stufe!==e.standard&&`border-lab/50`),onChange:t=>{let r=t.target.value;o(r)>o(e.standard)&&r===`selbst`?i({id:e.id,name:e.name,stufe:r}):n.mutate({[e.id]:r})},children:J.map(t=>(0,B.jsxs)(`option`,{value:t.id,children:[t.kurz,t.id===e.standard?` (Start)`:``]},t.id))})})]},e.id),e[6]=n,e[7]=r),c=t.data.arten.map(r),e[3]=t.data.arten,e[4]=n,e[5]=c}else c=e[5];let l;e[8]===c?l=e[9]:(l=(0,B.jsx)(`div`,{role:`table`,"aria-label":`Lucys Freiheiten`,className:`flex flex-col`,children:c}),e[8]=c,e[9]=l);let f=!!r,p=r?`„${r.name}“: Lucy selbst handeln lassen?`:``,m;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>i(null),e[10]=m):m=e[10];let h;e[11]!==r||e[12]!==n?(h=()=>{r&&n.mutate({[r.id]:r.stufe}),i(null)},e[11]=r,e[12]=n,e[13]=h):h=e[13];let g;e[14]!==n.isPending||e[15]!==f||e[16]!==p||e[17]!==h?(g=(0,B.jsx)(N,{offen:f,titel:p,text:`Dann tut sie es aus eigenem Antrieb, ohne dich vorher zu fragen, und meldet es erst danach. Zurückstellen kannst du es hier jederzeit.`,knopf:`Selbst handeln lassen`,gesperrt:n.isPending,onNein:m,onJa:h}),e[14]=n.isPending,e[15]=f,e[16]=p,e[17]=h,e[18]=g):g=e[18];let _;return e[19]!==l||e[20]!==g?(_=(0,B.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[s,l,g]}),e[19]=l,e[20]=g,e[21]=_):_=e[21],_}function te(e){return J.findIndex(t=>t.id===e)}function ne(){let e=(0,R.c)(27),t=m(),n=h(),[r,i]=(0,z.useState)(!1),a=t.data?.zuletzt,o;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,B.jsx)(`p`,{className:`m-0 text-sm text-text-2`,children:`Sonntags um 07:30 schickt Lucy eine Nachricht statt vieler: was eingespielt wurde, was offen ist, Platten, Sicherungen, Zertifikate — und offene App-Updates zum Beantworten mit „ja“.`}),e[0]=o):o=e[0];let s;e[1]===n?s=e[2]:(s=()=>n.mutate(),e[1]=n,e[2]=s);let c=n.isPending?`Lucy schreibt …`:`Jetzt schicken`,l;e[3]!==n.isPending||e[4]!==s||e[5]!==c?(l=(0,B.jsx)(A,{size:`sm`,variant:`outline`,disabled:n.isPending,onClick:s,children:c}),e[3]=n.isPending,e[4]=s,e[5]=c,e[6]=l):l=e[6];let u;e[7]===t.data?u=e[8]:(u=t.data?`Nächster: ${_(new Date(t.data.naechster*1e3).toISOString()).toLowerCase()}`:``,e[7]=t.data,e[8]=u);let d;e[9]===a?d=e[10]:(d=a?` · zuletzt ${_(new Date(a.zeit*1e3).toISOString()).toLowerCase()}`:``,e[9]=a,e[10]=d);let f;e[11]!==u||e[12]!==d?(f=(0,B.jsxs)(`span`,{className:`text-xs text-text-3`,children:[u,d]}),e[11]=u,e[12]=d,e[13]=f):f=e[13];let p;e[14]!==r||e[15]!==a?(p=a&&(0,B.jsx)(`button`,{type:`button`,className:`text-xs text-cyan hover:underline`,onClick:()=>i(!r),children:r?`Letzten zuklappen`:`Letzten lesen`}),e[14]=r,e[15]=a,e[16]=p):p=e[16];let g;e[17]!==l||e[18]!==f||e[19]!==p?(g=(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[l,f,p]}),e[17]=l,e[18]=f,e[19]=p,e[20]=g):g=e[20];let v;e[21]!==r||e[22]!==a?(v=r&&a&&(0,B.jsx)(`pre`,{className:`flaeche-innen m-0 max-h-96 overflow-y-auto rounded-2xl p-4 font-sans text-sm whitespace-pre-wrap text-text-2`,children:a.text}),e[21]=r,e[22]=a,e[23]=v):v=e[23];let y;return e[24]!==g||e[25]!==v?(y=(0,B.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[o,g,v]}),e[24]=g,e[25]=v,e[26]=y):y=e[26],y}var X=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],re=Array.from({length:48},(e,t)=>`${String(Math.floor(t/2)).padStart(2,`0`)}:${t%2?`30`:`00`}`),ie=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function Z(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?ie.format(t):`–`}function ae(e,t){let n=Number(t.slice(0,2)),r=n*60+179,i=e;r>=1440&&(r-=1440,i=e%7+1);let a=e=>String(e).padStart(2,`0`),o=`${a(n)}:00`,s=`${a(Math.floor(r/60))}:${a(r%60)}`;return i===e?`${X[e-1]} ${o}–${s}`:`${X[e-1]} ${o} – ${X[i-1]} ${s}`}function Q(e){let t=(0,R.c)(6),{titel:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,B.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i||t[4]!==n?(a=(0,B.jsxs)(`section`,{"aria-label":n,className:`flex flex-col gap-3 border-t border-white/[0.06] pt-4 first:border-t-0 first:pt-0`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=n,t[5]=a):a=t[5],a}function $(e){let t=(0,R.c)(23),{titel:n,text:r,farbe:i,id:o,children:s}=e,c=i===`box`?`var(--box)`:i===`homelab`?`var(--lab)`:null,l=i===`box`?`text-box-text`:i===`homelab`?`text-lab-text`:`text-foreground`,u=i===`box`?`[--rand:color-mix(in_srgb,var(--box)_28%,transparent)]`:i===`homelab`?`[--rand:color-mix(in_srgb,var(--lab)_28%,transparent)]`:``,d;t[0]===u?d=t[1]:(d=a(`flaeche relative flex min-w-0 flex-col gap-4 overflow-hidden rounded-3xl p-5 sm:p-6`,u),t[0]=u,t[1]=d);let f;t[2]===c?f=t[3]:(f=c&&(0,B.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute -top-40 -left-32 size-[400px] rounded-full`,style:{background:`radial-gradient(closest-side, color-mix(in srgb, ${c} 16%, transparent), transparent)`}}),t[2]=c,t[3]=f);let p;t[4]===l?p=t[5]:(p=a(`text-[19px] leading-tight font-semibold`,l),t[4]=l,t[5]=p);let m;t[6]!==p||t[7]!==n?(m=(0,B.jsx)(`h2`,{className:p,children:n}),t[6]=p,t[7]=n,t[8]=m):m=t[8];let h;t[9]===r?h=t[10]:(h=(0,B.jsx)(`p`,{className:`text-sm text-text-3`,children:r}),t[9]=r,t[10]=h);let g;t[11]!==m||t[12]!==h?(g=(0,B.jsxs)(`div`,{className:`relative flex flex-col gap-1`,children:[m,h]}),t[11]=m,t[12]=h,t[13]=g):g=t[13];let _;t[14]===s?_=t[15]:(_=(0,B.jsx)(`div`,{className:`relative flex min-w-0 flex-col gap-4`,children:s}),t[14]=s,t[15]=_);let v;return t[16]!==o||t[17]!==d||t[18]!==f||t[19]!==g||t[20]!==_||t[21]!==n?(v=(0,B.jsxs)(`section`,{id:o,"aria-label":n,className:d,children:[f,g,_]}),t[16]=o,t[17]=d,t[18]=f,t[19]=g,t[20]=_,t[21]=n,t[22]=v):v=t[22],v}function oe(e){let t=(0,R.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,B.jsx)(`p`,{className:`text-sm text-bernstein`,children:n}),t[0]=n,t[1]=r),r}function se(e){let t=(0,R.c)(3),{laedt:n,fehler:r}=e;if(n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],e}let i=r?`: ${r}`:`.`,a;return t[1]===i?a=t[2]:(a=(0,B.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Lässt sich gerade nicht lesen`,i]}),t[1]=i,t[2]=a),a}function ce({offen:e}){let t=C(),n=s({queryKey:[`geheimnisse`],queryFn:()=>f(`/api/maintenance/geheimnisse`),enabled:e}),[r,i]=(0,z.useState)(``),[a,o]=(0,z.useState)(!1),[c,u]=(0,z.useState)(!1);async function d(e){if(!a){o(!0),u(!1);try{await k(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),l(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),i(``),t.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){l(`fehler`,e.message)}finally{o(!1)}}}let p=n.data,m;return m=n.isPending?`Wird gelesen …`:p?p.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${n.error?`: ${n.error.message}`:`.`}`,(0,B.jsxs)(Q,{titel:`Hugging-Face-Zugang`,children:[(0,B.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,B.jsx)(`span`,{className:!p&&!n.isPending?`text-rot-text`:void 0,children:m}),` Nötig für gesperrte Modelle und schnellere Downloads.`,p?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),p?.schreibbar===!1&&(0,B.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,B.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),r.trim()&&d(r.trim())},children:[(0,B.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,B.jsx)(`input`,{id:`hf-token`,type:`password`,autoComplete:`off`,value:r,onChange:e=>i(e.target.value),placeholder:`hf_…`,className:`h-11 min-w-0 flex-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-cyan/60 focus:bg-white/[0.06]`}),(0,B.jsx)(A,{type:`submit`,disabled:!r.trim()||p?.schreibbar===!1||a,children:a?`Speichert …`:`Speichern`})]}),p?.hf_token_gesetzt&&!p.hf_token_aus_env&&(c?(0,B.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(A,{variant:`gefahr`,size:`sm`,disabled:a,onClick:()=>d(null),children:`Wirklich löschen?`}),(0,B.jsx)(A,{variant:`ghost`,size:`sm`,onClick:()=>u(!1),children:`Nein`})]}):(0,B.jsx)(A,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:a,onClick:()=>u(!0),children:`Zugang löschen`}))]})}function le(e){let t=(0,R.c)(24),{ziel:n,name:r}=e,i=w(),a=i.data,o=null;if(i.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Sendet …`}),t[0]=e):e=t[0],o=e}else if(a?.gesendet){let e=a.weg===`hermes`?`über Hermes`:`direkt an die Telegram-Bot-API`,n=a.kennung?`, Kennung ${a.kennung}`:``,r;t[1]!==e||t[2]!==n?(r=(0,B.jsxs)(`p`,{role:`status`,className:`text-sm text-gruen`,children:[`Gesendet `,e,n,`. Schau in Telegram nach.`]}),t[1]=e,t[2]=n,t[3]=r):r=t[3],o=r}else if(a){let e=a.grund??a.detail??`ohne Angabe eines Grundes.`,n;t[4]===e?n=t[5]:(n=(0,B.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Nicht gesendet: `,e]}),t[4]=e,t[5]=n),o=n}else if(i.error){let e;t[6]===i.error.message?e=t[7]:(e=(0,B.jsx)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:i.error.message}),t[6]=i.error.message,t[7]=e),o=e}let s;t[8]===r?s=t[9]:(s=(0,B.jsx)(`span`,{className:`text-[15px]`,children:r}),t[8]=r,t[9]=s);let c;t[10]!==i||t[11]!==n?(c=()=>i.mutate(n),t[10]=i,t[11]=n,t[12]=c):c=t[12];let l=`Testmeldung von ${r} senden`,u=i.isPending?`Sendet …`:`Test senden`,d;t[13]!==c||t[14]!==l||t[15]!==u||t[16]!==i.isPending?(d=(0,B.jsx)(A,{variant:`outline`,size:`sm`,disabled:i.isPending,onClick:c,"aria-label":l,children:u}),t[13]=c,t[14]=l,t[15]=u,t[16]=i.isPending,t[17]=d):d=t[17];let f;t[18]!==s||t[19]!==d?(f=(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[18]=s,t[19]=d,t[20]=f):f=t[20];let p;return t[21]!==o||t[22]!==f?(p=(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[f,o]}),t[21]=o,t[22]=f,t[23]=p):p=t[23],p}function ue(){let e=(0,R.c)(10),t=c().data,n=t?.rolle??`box`,r=n===`box`?`homelab`:`box`,i=t?.instanz??(n===`box`?`Box-Wart`:`Homelab`),a;e[0]!==r||e[1]!==n||e[2]!==t||e[3]!==i?(a=[{ziel:n,name:i}],t?.partner.eingerichtet&&a.push({ziel:r,name:t.partner.name}),a.sort(fe),e[0]=r,e[1]=n,e[2]=t,e[3]=i,e[4]=a):a=e[4];let o,s,l;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Dringende Hinweise gehen zusätzlich per Telegram raus, alles andere bleibt hier; was nachts anfällt, kommt um 07:00 als eine Morgenmeldung. Einfache Probleme wie einen abgestürzten Dienst behebt der Wächter selbst und schreibt es in den Verlauf.`}),s=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Fragt Lucy vorher, antwortest du in Telegram mit „ja“ und der Nummer oder tippst auf die Antworttaste unter dem Eingabefeld — das löst genau die gefragte Aktion aus. Sonntags um 07:30 kommt ihr Wochenbericht.`}),l=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Test schickt eine kurze Meldung über den echten Meldeweg, als dringend, damit sie auch nachts sofort kommt.`}),e[5]=o,e[6]=s,e[7]=l):(o=e[5],s=e[6],l=e[7]);let u;return e[8]===a?u=e[9]:(u=(0,B.jsxs)(Q,{titel:`Telegram`,children:[o,s,l,a.map(de)]}),e[8]=a,e[9]=u),u}function de(e){return(0,B.jsx)(le,{ziel:e.ziel,name:e.name},e.ziel)}function fe(e,t){return Number(e.ziel!==`box`)-Number(t.ziel!==`box`)}function pe(e){let t=(0,R.c)(87),{e:n,laedt:r,fehler:i}=e,a=x(),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(!1);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,B.jsx)(Q,{titel:`Update-Zeitfenster`,children:(0,B.jsx)(se,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let u=n.update_fenster,d,f,p,m,h,g,_,v,y,b,S,C,w,T,E,D,O;if(t[3]!==n.schaltbar||t[4]!==o||t[5]!==u.naechster_lauf||t[6]!==u.neustart_fenster||t[7]!==u.tag||t[8]!==u.tag_name||t[9]!==u.timer_aktiv||t[10]!==u.uhrzeit||t[11]!==u.wirksam){O=o??{tag:u.tag,uhrzeit:u.uhrzeit},f=O.tag!==u.tag||O.uhrzeit!==u.uhrzeit;let e=re.includes(O.uhrzeit)?re:[...re,O.uhrzeit].sort();d=Q,h=`Update-Zeitfenster`;let r;t[29]===u.naechster_lauf?r=t[30]:(r=u.naechster_lauf?` (nächster Lauf ${Z(u.naechster_lauf)})`:``,t[29]=u.naechster_lauf,t[30]=r),t[31]!==u.neustart_fenster||t[32]!==u.tag_name||t[33]!==u.uhrzeit||t[34]!==r?(g=(0,B.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Die Box aktualisiert sich jeden `,u.tag_name,` um `,u.uhrzeit,` Uhr`,r,`. Neu gestartet wird sie danach nur`,` `,u.neustart_fenster,`.`]}),t[31]=u.neustart_fenster,t[32]=u.tag_name,t[33]=u.uhrzeit,t[34]=r,t[35]=g):g=t[35],t[36]!==n.schaltbar||t[37]!==u.timer_aktiv?(_=n.schaltbar&&!u.timer_aktiv&&(0,B.jsx)(oe,{children:`Der Update-Timer läuft gerade nicht; er übernimmt das Fenster beim nächsten Start.`}),t[36]=n.schaltbar,t[37]=u.timer_aktiv,t[38]=_):_=t[38],t[39]!==n.schaltbar||t[40]!==u.wirksam?(v=n.schaltbar&&!u.wirksam&&(0,B.jsx)(oe,{children:`Der Timer läuft noch nach einem anderen Plan als eingestellt. Einmal speichern gleicht es an.`}),t[39]=n.schaltbar,t[40]=u.wirksam,t[41]=v):v=t[41],D=`flex flex-wrap items-end gap-2`;let i=O.tag,a;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(a=X.map(he),t[42]=a):a=t[42],m=(0,B.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-text-3`,children:[`Tag`,(0,B.jsx)(`select`,{className:`h-11 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-cyan/60 focus:bg-white/[0.06]`,value:i,disabled:!n.schaltbar,"aria-label":`Wochentag`,onChange:e=>s({...O,tag:Number(e.target.value)}),children:a})]}),T=`flex flex-col gap-1 text-xs text-text-3`,E=`Uhrzeit`,p=`h-11 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-cyan/60 focus:bg-white/[0.06]`,y=O.uhrzeit,b=!n.schaltbar,S=`Uhrzeit`,C=e=>s({...O,uhrzeit:e.target.value}),w=e.map(me),t[3]=n.schaltbar,t[4]=o,t[5]=u.naechster_lauf,t[6]=u.neustart_fenster,t[7]=u.tag,t[8]=u.tag_name,t[9]=u.timer_aktiv,t[10]=u.uhrzeit,t[11]=u.wirksam,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=y,t[21]=b,t[22]=S,t[23]=C,t[24]=w,t[25]=T,t[26]=E,t[27]=D,t[28]=O}else d=t[12],f=t[13],p=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],y=t[20],b=t[21],S=t[22],C=t[23],w=t[24],T=t[25],E=t[26],D=t[27],O=t[28];let k;t[43]!==p||t[44]!==y||t[45]!==b||t[46]!==S||t[47]!==C||t[48]!==w?(k=(0,B.jsx)(`select`,{className:p,value:y,disabled:b,"aria-label":S,onChange:C,children:w}),t[43]=p,t[44]=y,t[45]=b,t[46]=S,t[47]=C,t[48]=w,t[49]=k):k=t[49];let j;t[50]!==k||t[51]!==T||t[52]!==E?(j=(0,B.jsxs)(`label`,{className:T,children:[E,k]}),t[50]=k,t[51]=T,t[52]=E,t[53]=j):j=t[53];let M=!n.schaltbar||a.isPending||!f&&u.wirksam,P;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(P=()=>l(!0),t[54]=P):P=t[54];let F=a.isPending?`Speichert …`:`Speichern`,I;t[55]!==M||t[56]!==F?(I=(0,B.jsx)(A,{disabled:M,onClick:P,children:F}),t[55]=M,t[56]=F,t[57]=I):I=t[57];let L;t[58]!==m||t[59]!==j||t[60]!==I||t[61]!==D?(L=(0,B.jsxs)(`div`,{className:D,children:[m,j,I]}),t[58]=m,t[59]=j,t[60]=I,t[61]=D,t[62]=L):L=t[62];let V=n.schaltbar?``:` Einstellen lässt es sich nur auf der Box.`,H;t[63]===V?H=t[64]:(H=(0,B.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Am besten nachts nach der Sicherung (03:30) und vor der Morgenmeldung (07:00).`,V]}),t[63]=V,t[64]=H);let U;t[65]!==O.tag||t[66]!==O.uhrzeit?(U=ae(O.tag,O.uhrzeit),t[65]=O.tag,t[66]=O.uhrzeit,t[67]=U):U=t[67];let W=`Der Update-Lauf startet ab jetzt jeden ${X[O.tag-1]} um ${O.uhrzeit} Uhr. Neu gestartet wird die Box nur ${U}. Ein Termin, der dadurch schon vorbei ist, wird nicht nachgeholt: Der erste Lauf ist der nächste reguläre.`,G;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>l(!1),t[68]=G):G=t[68];let K;t[69]!==c||t[70]!==a||t[71]!==O?(K=()=>{c&&(a.mutate(O,{onSuccess:()=>s(null)}),l(!1))},t[69]=c,t[70]=a,t[71]=O,t[72]=K):K=t[72];let q;t[73]!==c||t[74]!==a.isPending||t[75]!==W||t[76]!==K?(q=(0,B.jsx)(N,{offen:c,titel:`Update-Zeitfenster ändern?`,text:W,knopf:`Speichern`,gesperrt:a.isPending,onNein:G,onJa:K}),t[73]=c,t[74]=a.isPending,t[75]=W,t[76]=K,t[77]=q):q=t[77];let J;return t[78]!==d||t[79]!==h||t[80]!==g||t[81]!==_||t[82]!==v||t[83]!==L||t[84]!==H||t[85]!==q?(J=(0,B.jsxs)(d,{titel:h,children:[g,_,v,L,H,q]}),t[78]=d,t[79]=h,t[80]=g,t[81]=_,t[82]=v,t[83]=L,t[84]=H,t[85]=q,t[86]=J):J=t[86],J}function me(e){return(0,B.jsx)(`option`,{value:e,children:e},e)}function he(e,t){return(0,B.jsx)(`option`,{value:t+1,children:e},e)}function ge(e){let t=(0,R.c)(37),{e:n,laedt:r,fehler:i}=e,a=p(),[o,s]=(0,z.useState)(null);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,B.jsx)(Q,{titel:`Modell-Radar`,children:(0,B.jsx)(se,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let c=n.radar,l=c.zustand===`an`||c.zustand===`unbekannt`&&c.an,u;t[3]===c.naechster_lauf?u=t[4]:(u=c.naechster_lauf?` (nächster Lauf ${Z(c.naechster_lauf)})`:``,t[3]=c.naechster_lauf,t[4]=u);let d=`An. Es sucht jede Nacht ab 00:30 nach besseren Modellen${u}.`,f=c.an?`Eingeschaltet.`:`Ausgeschaltet.`,m;t[5]!==d||t[6]!==f?(m={an:d,schlaeft:`Schläft. Es sucht und testet keine Modelle, bis du es wieder einschaltest.`,aus:`Gestoppt, steht aber noch im Autostart: Nach einem Neustart der Box liefe es wieder.`,unbekannt:f},t[5]=d,t[6]=f,t[7]=m):m=t[7];let h=m[c.zustand],g;t[8]===h?g=t[9]:(g=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:h}),t[8]=h,t[9]=g);let _;t[10]!==n.schaltbar||t[11]!==c.an||t[12]!==c.wirksam?(_=n.schaltbar&&!c.wirksam&&(0,B.jsxs)(oe,{children:[`Eingestellt ist „`,c.an?`an`:`aus`,`“, systemd zeigt etwas anderes. Noch einmal schalten gleicht es an.`]}),t[10]=n.schaltbar,t[11]=c.an,t[12]=c.wirksam,t[13]=_):_=t[13];let v=l?`outline`:`default`,y=!n.schaltbar||a.isPending,b;t[14]===l?b=t[15]:(b=()=>s(!l),t[14]=l,t[15]=b);let x=a.isPending?`Schaltet …`:l?`Ausschalten`:`Einschalten`,S;t[16]!==b||t[17]!==x||t[18]!==v||t[19]!==y?(S=(0,B.jsx)(A,{variant:v,size:`sm`,className:`self-start`,disabled:y,onClick:b,children:x}),t[16]=b,t[17]=x,t[18]=v,t[19]=y,t[20]=S):S=t[20];let C=o!==null,w=o?`Modell-Radar einschalten?`:`Modell-Radar ausschalten?`,T=o?`Das Radar sucht ab heute Nacht um 00:30 wieder nach besseren Modellen und testet höchstens eines pro Woche. Ein verpasster Lauf wird nicht nachgeholt, tagsüber lädt es also nichts.`:`Das Radar sucht und testet dann keine neuen Modelle mehr, bis du es wieder einschaltest. Ein Nachttest, der gerade läuft, endet noch. Auch ein Deploy schaltet es nicht wieder ein.`,E=o?`Einschalten`:`Ausschalten`,D;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(D=()=>s(null),t[21]=D):D=t[21];let O;t[22]!==o||t[23]!==a?(O=()=>{o!==null&&(a.mutate(o),s(null))},t[22]=o,t[23]=a,t[24]=O):O=t[24];let k;t[25]!==a.isPending||t[26]!==C||t[27]!==w||t[28]!==T||t[29]!==E||t[30]!==O?(k=(0,B.jsx)(N,{offen:C,titel:w,text:T,knopf:E,gesperrt:a.isPending,onNein:D,onJa:O}),t[25]=a.isPending,t[26]=C,t[27]=w,t[28]=T,t[29]=E,t[30]=O,t[31]=k):k=t[31];let j;return t[32]!==S||t[33]!==k||t[34]!==g||t[35]!==_?(j=(0,B.jsxs)(Q,{titel:`Modell-Radar`,children:[g,_,S,k]}),t[32]=S,t[33]=k,t[34]=g,t[35]=_,t[36]=j):j=t[36],j}function _e(e){let t=(0,R.c)(25),{name:n,stand:r,laedt:i,fehler:a}=e,o;if(i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`span`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],o=e}else if(a){let e;t[1]===a?e=t[2]:(e=(0,B.jsxs)(`span`,{className:`text-sm text-rot-text`,children:[`Nicht lesbar: `,a]}),t[1]=a,t[2]=e),o=e}else if(r?.commit){let e;t[4]===r.commit?e=t[5]:(e=(0,B.jsx)(`span`,{className:`ziffern text-foreground`,children:r.commit}),t[4]=r.commit,t[5]=e);let n=r.betreff?` · ${r.betreff}`:``,i;t[6]!==e||t[7]!==n?(i=(0,B.jsxs)(`span`,{className:`text-sm text-text-2`,children:[e,n]}),t[6]=e,t[7]=n,t[8]=i):i=t[8];let a;t[9]!==r.deploy_zeit||t[10]!==r.quelle?(a=r.quelle===`deploy`?`Live seit ${Z(r.deploy_zeit)}`:`Aus git gelesen, ohne Deploy`,t[9]=r.deploy_zeit,t[10]=r.quelle,t[11]=a):a=t[11];let s;t[12]===r.commit_datum?s=t[13]:(s=r.commit_datum?` · Commit vom ${Z(r.commit_datum)}`:``,t[12]=r.commit_datum,t[13]=s);let c;t[14]!==a||t[15]!==s?(c=(0,B.jsxs)(`span`,{className:`text-xs text-text-3`,children:[a,s]}),t[14]=a,t[15]=s,t[16]=c):c=t[16];let l;t[17]!==i||t[18]!==c?(l=(0,B.jsxs)(B.Fragment,{children:[i,c]}),t[17]=i,t[18]=c,t[19]=l):l=t[19],o=l}else{let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(`span`,{className:`text-sm text-text-2`,children:`Unbekannt: keine Stand-Datei und kein git.`}),t[3]=e):e=t[3],o=e}let s;t[20]===n?s=t[21]:(s=(0,B.jsx)(`span`,{className:`text-[15px]`,children:n}),t[20]=n,t[21]=s);let c;return t[22]!==o||t[23]!==s?(c=(0,B.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[s,o]}),t[22]=o,t[23]=s,t[24]=c):c=t[24],c}function ve(e,t){return!e||!t?null:e.startsWith(t)||t.startsWith(e)}function ye(e){let t=(0,R.c)(21),{offen:n}=e,r=c().data,i=!!r?.partner.eingerichtet,[a,o]=E(n,i),s=a.data?.stand?.commit,l=o.data?.stand?.commit,u;t[0]!==s||t[1]!==l?(u=ve(s,l),t[0]=s,t[1]=l,t[2]=u):u=t[2];let d=u,f=a.data?.instanz??r?.instanz??`Diese Instanz`,p=a.data?.stand,m=a.error?.message,h;t[3]!==a.isPending||t[4]!==f||t[5]!==p||t[6]!==m?(h=(0,B.jsx)(_e,{name:f,stand:p,laedt:a.isPending,fehler:m}),t[3]=a.isPending,t[4]=f,t[5]=p,t[6]=m,t[7]=h):h=t[7];let g;t[8]!==r?.partner||t[9]!==o.data?.instanz||t[10]!==o.data?.stand||t[11]!==o.error?.message||t[12]!==o.isPending||t[13]!==i?(g=i&&(0,B.jsx)(_e,{name:o.data?.instanz??r?.partner.name??`Partner`,stand:o.data?.stand,laedt:o.isPending,fehler:o.error?.message}),t[8]=r?.partner,t[9]=o.data?.instanz,t[10]=o.data?.stand,t[11]=o.error?.message,t[12]=o.isPending,t[13]=i,t[14]=g):g=t[14];let _;t[15]===d?_=t[16]:(_=d===!1&&(0,B.jsx)(oe,{children:`Die beiden Instanzen laufen mit verschiedenen Ständen. Der nächste Deploy der Box zieht den Homelab-Teil mit.`}),t[15]=d,t[16]=_);let v;return t[17]!==h||t[18]!==g||t[19]!==_?(v=(0,B.jsxs)(Q,{titel:`Instanzen`,children:[h,g,_]}),t[17]=h,t[18]=g,t[19]=_,t[20]=v):v=t[20],v}function be(e){let t=(0,R.c)(52),{h:n}=e,r=T(),i=b(),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(!1),[l,u]=(0,z.useState)(null),d=n.arcane,f;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(f={hinterlegt:(0,B.jsx)(j,{art:`gruen`,children:`hinterlegt`}),umgebung:(0,B.jsx)(j,{art:`gruen`,children:`aus der Dienst-Einstellung`}),fehlt:(0,B.jsx)(j,{art:`bernstein`,children:`fehlt`})},t[0]=f):f=t[0];let p=f[d.schluessel],m;t[1]===d.url?m=t[2]:(m=d.url&&(0,B.jsxs)(`a`,{href:d.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`Arcane öffnen `,(0,B.jsx)(P,{className:`size-3.5`,"aria-hidden":!0})]}),t[1]=d.url,t[2]=m);let h;t[3]!==p||t[4]!==m?(h=(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`API-Schlüssel `,p,m]}),t[3]=p,t[4]=m,t[5]=h):h=t[5];let g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit Schlüssel sieht der Orchestrator, welche Docker-Images neuer sind. Anlegen in Arcane unter Einstellungen → API-Schlüssel; Lesen reicht, solange Docker-Updates nur als Probelauf laufen.`}),t[6]=g):g=t[6];let _;t[7]!==d.schluessel||t[8]!==r||t[9]!==a?(_=d.schluessel!==`umgebung`&&(0,B.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),a.trim()&&r.mutate(a.trim(),{onSuccess:()=>o(``)})},children:[(0,B.jsx)(`label`,{htmlFor:`arcane-schluessel`,className:`sr-only`,children:`Arcane-API-Schlüssel`}),(0,B.jsxs)(`span`,{className:`relative min-w-0 flex-1`,children:[(0,B.jsx)(L,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-text-3`,"aria-hidden":!0}),(0,B.jsx)(`input`,{id:`arcane-schluessel`,type:`password`,autoComplete:`off`,value:a,onChange:e=>o(e.target.value),placeholder:d.schluessel===`hinterlegt`?`Neuen Schlüssel eintragen …`:`Schlüssel aus Arcane einfügen …`,className:`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] pr-3 pl-9 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`})]}),(0,B.jsx)(A,{type:`submit`,disabled:!a.trim()||r.isPending,children:r.isPending?`Prüft …`:`Prüfen und speichern`})]}),t[7]=d.schluessel,t[8]=r,t[9]=a,t[10]=_):_=t[10];let v;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,B.jsx)(`p`,{className:`text-xs text-text-3`,children:`Der Schlüssel wird vor dem Speichern an Arcane geprüft und nie wieder angezeigt. Er liegt nur im Homelab-Teil.`}),t[11]=v):v=t[11];let y;t[12]!==d.schluessel||t[13]!==s||t[14]!==r?(y=d.schluessel===`hinterlegt`&&(s?(0,B.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(A,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),c(!1)},children:`Wirklich entfernen?`}),(0,B.jsx)(A,{variant:`ghost`,size:`sm`,onClick:()=>c(!1),children:`Nein`})]}):(0,B.jsx)(A,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>c(!0),children:`Schlüssel entfernen`})),t[12]=d.schluessel,t[13]=s,t[14]=r,t[15]=y):y=t[15];let x;t[16]!==h||t[17]!==_||t[18]!==y?(x=(0,B.jsxs)(Q,{titel:`Arcane (Docker)`,children:[h,g,_,v,y]}),t[16]=h,t[17]=_,t[18]=y,t[19]=x):x=t[19];let S=d.echt?`Echt: „Jetzt updaten“ bei Arcane zieht neue Images und startet die Container neu.`:`Probelauf: Arcane zeigt nur, was es tun würde — kein Container wird angefasst.`,C=d.echt_quelle===`umgebung`?` Festgelegt in der Dienst-Einstellung (MC_ARCANE_ECHT).`:``,w;t[20]!==S||t[21]!==C?(w=(0,B.jsxs)(`p`,{className:`text-sm text-text-2`,children:[S,C]}),t[20]=S,t[21]=C,t[22]=w):w=t[22];let E=d.echt?`outline`:`default`,D=d.echt_quelle===`umgebung`||i.isPending||d.schluessel===`fehlt`,O;t[23]===d.echt?O=t[24]:(O=()=>u(!d.echt),t[23]=d.echt,t[24]=O);let k=i.isPending?`Schaltet …`:d.echt?`Zurück auf Probelauf`:`Echt schalten`,M;t[25]!==E||t[26]!==D||t[27]!==O||t[28]!==k?(M=(0,B.jsx)(A,{variant:E,size:`sm`,className:`self-start`,disabled:D,onClick:O,children:k}),t[25]=E,t[26]=D,t[27]=O,t[28]=k,t[29]=M):M=t[29];let F;t[30]===d.schluessel?F=t[31]:(F=d.schluessel===`fehlt`&&(0,B.jsx)(`p`,{className:`text-xs text-text-3`,children:`Erst den Schlüssel eintragen.`}),t[30]=d.schluessel,t[31]=F);let I=l!==null,V=l?`Docker-Updates echt ausführen?`:`Zurück auf Probelauf?`,H=l?`Ab jetzt zieht „Jetzt updaten“ bei Arcane neue Images und startet die betroffenen Container neu. Vorher wird ein Snapshot der VM angelegt, soweit möglich. Das lässt sich hier jederzeit zurückschalten.`:`Docker-Updates zeigen dann wieder nur, was Arcane tun würde.`,U=l?`Echt schalten`:`Probelauf`,W=!!l,G;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>u(null),t[32]=G):G=t[32];let K;t[33]!==i||t[34]!==l?(K=()=>{l!==null&&(i.mutate(l),u(null))},t[33]=i,t[34]=l,t[35]=K):K=t[35];let q;t[36]!==i.isPending||t[37]!==I||t[38]!==V||t[39]!==H||t[40]!==U||t[41]!==W||t[42]!==K?(q=(0,B.jsx)(N,{offen:I,titel:V,text:H,knopf:U,gefahr:W,gesperrt:i.isPending,onNein:G,onJa:K}),t[36]=i.isPending,t[37]=I,t[38]=V,t[39]=H,t[40]=U,t[41]=W,t[42]=K,t[43]=q):q=t[43];let J;t[44]!==w||t[45]!==M||t[46]!==F||t[47]!==q?(J=(0,B.jsxs)(Q,{titel:`Docker-Updates`,children:[w,M,F,q]}),t[44]=w,t[45]=M,t[46]=F,t[47]=q,t[48]=J):J=t[48];let Y;return t[49]!==J||t[50]!==x?(Y=(0,B.jsxs)(B.Fragment,{children:[x,J]}),t[49]=J,t[50]=x,t[51]=Y):Y=t[51],Y}function xe(e){let t=(0,R.c)(44),{h:n}=e,r=y(),[i,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(!1),d=n.adguard;if(!d)return null;let f;t[0]!==d.benutzer||t[1]!==d.zugang?(f=d.zugang===`hinterlegt`?(0,B.jsxs)(j,{art:`gruen`,children:[`hinterlegt`,d.benutzer?` · ${d.benutzer}`:``]}):(0,B.jsx)(j,{art:`grau`,children:`keiner`}),t[0]=d.benutzer,t[1]=d.zugang,t[2]=f):f=t[2];let p;t[3]===d.url?p=t[4]:(p=d.url&&(0,B.jsxs)(`a`,{href:d.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`AdGuard öffnen `,(0,B.jsx)(P,{className:`size-3.5`,"aria-hidden":!0})]}),t[3]=d.url,t[4]=p);let m;t[5]!==f||t[6]!==p?(m=(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`Zugang `,f,p]}),t[5]=f,t[6]=p,t[7]=m):m=t[7];let h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit einem Zugang zeigt die Kachel von AdGuard, wie viele Anfragen es blockt. Er wird nur zum Lesen der Statistik benutzt — am besten ein eigener Benutzer dafür.`}),t[8]=h):h=t[8];let g;t[9]!==i||t[10]!==s||t[11]!==r?(g=e=>{e.preventDefault(),i.trim()&&s&&r.mutate({benutzer:i.trim(),passwort:s},{onSuccess:()=>{c(``),o(``)}})},t[9]=i,t[10]=s,t[11]=r,t[12]=g):g=t[12];let _;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,B.jsx)(`label`,{htmlFor:`adguard-benutzer`,className:`sr-only`,children:`AdGuard-Benutzer`}),t[13]=_):_=t[13];let v;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(v=e=>o(e.target.value),t[14]=v):v=t[14];let b;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(b=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-40`),t[15]=b):b=t[15];let x;t[16]===i?x=t[17]:(x=(0,B.jsx)(`input`,{id:`adguard-benutzer`,autoComplete:`off`,value:i,onChange:v,placeholder:`Benutzer`,className:b}),t[16]=i,t[17]=x);let S;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,B.jsx)(`label`,{htmlFor:`adguard-passwort`,className:`sr-only`,children:`AdGuard-Passwort`}),t[18]=S):S=t[18];let C;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(C=e=>c(e.target.value),t[19]=C):C=t[19];let w;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(w=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-40`),t[20]=w):w=t[20];let T;t[21]===s?T=t[22]:(T=(0,B.jsx)(`input`,{id:`adguard-passwort`,type:`password`,autoComplete:`new-password`,value:s,onChange:C,placeholder:`Passwort`,className:w}),t[21]=s,t[22]=T);let E;t[23]!==i||t[24]!==s||t[25]!==r.isPending?(E=!i.trim()||!s||r.isPending,t[23]=i,t[24]=s,t[25]=r.isPending,t[26]=E):E=t[26];let D=r.isPending?`Prüft …`:`Prüfen und speichern`,O;t[27]!==E||t[28]!==D?(O=(0,B.jsx)(A,{type:`submit`,disabled:E,children:D}),t[27]=E,t[28]=D,t[29]=O):O=t[29];let k;t[30]!==T||t[31]!==O||t[32]!==g||t[33]!==x?(k=(0,B.jsxs)(`form`,{className:`flex flex-wrap gap-2`,onSubmit:g,children:[_,x,S,T,O]}),t[30]=T,t[31]=O,t[32]=g,t[33]=x,t[34]=k):k=t[34];let M;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,B.jsx)(`p`,{className:`text-xs text-text-3`,children:`Vor dem Speichern fragt der Homelab-Teil AdGuard einmal damit. Das Passwort wird nie wieder angezeigt und liegt nur im Homelab-Teil.`}),t[35]=M):M=t[35];let N;t[36]!==d.zugang||t[37]!==l||t[38]!==r?(N=d.zugang===`hinterlegt`&&(l?(0,B.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(A,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),u(!1)},children:`Wirklich entfernen?`}),(0,B.jsx)(A,{variant:`ghost`,size:`sm`,onClick:()=>u(!1),children:`Nein`})]}):(0,B.jsx)(A,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>u(!0),children:`Zugang entfernen`})),t[36]=d.zugang,t[37]=l,t[38]=r,t[39]=N):N=t[39];let F;return t[40]!==k||t[41]!==N||t[42]!==m?(F=(0,B.jsxs)(Q,{titel:`AdGuard Home`,children:[m,h,k,M,N]}),t[40]=k,t[41]=N,t[42]=m,t[43]=F):F=t[43],F}function Se(e){let t=(0,R.c)(21),{h:n}=e,r=n.ausfuehrer,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,B.jsx)(`dt`,{className:`text-text-3`,children:`Ausführer`}),t[0]=i):i=t[0];let a=r.verbunden?`text-gruen-text`:`text-rot-text`,o=r.verbunden?`verbunden`:`meldet sich nicht`,s;t[1]===r.zuletzt?s=t[2]:(s=r.zuletzt?` · zuletzt ${_(new Date(r.zuletzt*1e3).toISOString()).toLowerCase()}`:``,t[1]=r.zuletzt,t[2]=s);let c;t[3]!==a||t[4]!==o||t[5]!==s?(c=(0,B.jsxs)(`dd`,{className:a,children:[o,s]}),t[3]=a,t[4]=o,t[5]=s,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsx)(`dt`,{className:`text-text-3`,children:`Modus`}),t[7]=l):l=t[7];let u=r.nur_lesen?`nur lesen — Updates sind gesperrt`:`voll: Snapshots, Sicherungen und Updates`,d;t[8]===u?d=t[9]:(d=(0,B.jsx)(`dd`,{className:`text-text-2`,children:u}),t[8]=u,t[9]=d);let f;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,B.jsx)(`dt`,{className:`text-text-3`,children:`Sicherungen`}),t[10]=f):f=t[10];let p=r.sicherung_speicher?`auf „${r.sicherung_speicher}“ (wo kein Snapshot geht)`:`kein Speicher gefunden`,m;t[11]===p?m=t[12]:(m=(0,B.jsx)(`dd`,{className:`text-text-2`,children:p}),t[11]=p,t[12]=m);let h;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,B.jsx)(`dt`,{className:`text-text-3`,children:`Wartezeit`}),t[13]=h):h=t[13];let g=n.karenz_h>0?`${n.karenz_h} Stunden nach einer Änderung am Update-Skript einer App`:`aus`,v;t[14]===g?v=t[15]:(v=(0,B.jsx)(`dd`,{className:`text-text-2`,children:g}),t[14]=g,t[15]=v);let y;return t[16]!==m||t[17]!==v||t[18]!==c||t[19]!==d?(y=(0,B.jsx)(Q,{titel:`Ausführer und Updates`,children:(0,B.jsxs)(`dl`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm`,children:[i,c,l,d,f,m,h,v]})}),t[16]=m,t[17]=v,t[18]=c,t[19]=d,t[20]=y):y=t[20],y}function Ce(){let e=(0,R.c)(18),t=c().data,n=o().data,r=t?.rolle===`homelab`||!!(n?.eingerichtet&&n.erreichbar),i=O(r),a;if(!r){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,B.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht.`}),e[0]=t):t=e[0],a=t}else if(i.data){let t,n;e[4]===i.data?(t=e[5],n=e[6]):(t=(0,B.jsx)(be,{h:i.data}),n=(0,B.jsx)(xe,{h:i.data}),e[4]=i.data,e[5]=t,e[6]=n);let o;e[7]===r?o=e[8]:(o=(0,B.jsx)(Q,{titel:`Wartungsfenster und Regel je Gerät`,children:(0,B.jsx)(K,{aktiv:r})}),e[7]=r,e[8]=o);let s;e[9]===i.data?s=e[10]:(s=(0,B.jsx)(Se,{h:i.data}),e[9]=i.data,e[10]=s);let c;e[11]!==t||e[12]!==n||e[13]!==o||e[14]!==s?(c=(0,B.jsxs)(B.Fragment,{children:[t,n,o,s]}),e[11]=t,e[12]=n,e[13]=o,e[14]=s,e[15]=c):c=e[15],a=c}else{let t=i.error?.message,n;e[1]!==i.isPending||e[2]!==t?(n=(0,B.jsx)(se,{laedt:i.isPending,fehler:t}),e[1]=i.isPending,e[2]=t,e[3]=n):n=e[3],a=n}let s;return e[16]===a?s=e[17]:(s=(0,B.jsx)($,{titel:`Homelab`,farbe:`homelab`,text:`Arcane und Docker, AdGuard, der Ausführer auf dem Proxmox-Host, Rückwege.`,children:a}),e[16]=a,e[17]=s),s}function we(){let e=(0,R.c)(4),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,B.jsx)(Q,{titel:`Wie selbstständig Lucy handelt`,children:(0,B.jsx)(ee,{})}),e[0]=t):t=e[0];let n;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,B.jsx)(Q,{titel:`Offene Rückfragen`,children:(0,B.jsx)(M,{leerText:`Gerade wartet keine Rückfrage auf dich.`})}),e[1]=n):n=e[1];let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,B.jsx)(Q,{titel:`Zuletzt beantwortet`,children:(0,B.jsx)(F,{})}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,B.jsxs)($,{id:`lucy`,titel:`Lucy`,text:`Was sie aus eigenem Antrieb darf, ihre Rückfragen an dich und der Wochenbericht.`,children:[t,n,r,(0,B.jsx)(Q,{titel:`Wochenbericht`,children:(0,B.jsx)(ne,{})})]}),e[3]=i):i=e[3],i}function Te(){let e=(0,R.c)(20),t=S(!0),n=t.error?.message,r;e[0]!==t.data||e[1]!==t.isPending||e[2]!==n?(r={e:t.data,laedt:t.isPending,fehler:n},e[0]=t.data,e[1]=t.isPending,e[2]=n,e[3]=r):r=e[3];let i=r,a;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(a=[],e[4]=a):a=e[4],(0,z.useEffect)(Ee,a);let o,s;e[5]===i?(o=e[6],s=e[7]):(o=(0,B.jsx)(pe,{...i}),s=(0,B.jsx)(ge,{...i}),e[5]=i,e[6]=o,e[7]=s);let c;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,B.jsx)(ce,{offen:!0}),e[8]=c):c=e[8];let l;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsxs)(Q,{titel:`Hermes`,children:[(0,B.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-xl border border-white/12 bg-white/[0.04] px-4 text-[15px] font-semibold hover:border-white/20 hover:bg-white/[0.08]`,children:[(0,B.jsx)(P,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,B.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat, Sitzungen und Cron-Jobs verwaltet Hermes selbst. Es fragt nach seiner eigenen Anmeldung.`})]}),e[9]=l):l=e[9];let u;e[10]!==o||e[11]!==s?(u=(0,B.jsxs)($,{titel:`KI-Box`,farbe:`box`,text:`Wann sie sich aktualisiert, das Modell-Radar und Zugänge.`,children:[o,s,c,l]}),e[10]=o,e[11]=s,e[12]=u):u=e[12];let d,f;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,B.jsx)(Ce,{}),f=(0,B.jsx)(we,{}),e[13]=d,e[14]=f):(d=e[13],f=e[14]);let p;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,B.jsx)($,{titel:`Meldungen`,text:`Telegram, Morgenmeldung und was sofort kommt.`,children:(0,B.jsx)(ue,{})}),e[15]=p):p=e[15];let m;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,B.jsx)($,{titel:`Software-Stand`,text:`Welcher Stand auf beiden Instanzen läuft.`,children:(0,B.jsx)(ye,{offen:!0})}),e[16]=m):m=e[16];let h;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,B.jsxs)(`p`,{className:`text-xs text-text-3 xl:col-span-2`,children:[`Logos der Dienste: `,(0,B.jsx)(`a`,{href:`https://selfh.st/icons`,target:`_blank`,rel:`noopener`,className:`underline-offset-4 hover:underline`,children:`selfh.st/icons`}),`, Lizenz CC BY 4.0. Die Marken gehören ihren Inhabern und dienen hier nur dem Wiedererkennen.`]}),e[17]=h):h=e[17];let g;return e[18]===u?g=e[19]:(g=(0,B.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[u,d,f,p,m,h]}),e[18]=u,e[19]=g),g}function Ee(){if(window.location.hash!==`#lucy`)return;let e=Oe;e();let t=[700,1800].map(t=>window.setTimeout(e,t));return()=>t.forEach(De)}function De(e){return window.clearTimeout(e)}function Oe(){return document.getElementById(`lucy`)?.scrollIntoView({block:`start`})}export{Te as EinstellungenSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Einstellungen-DaFSM6VU.js b/frontend/dist/assets/Einstellungen-DaFSM6VU.js new file mode 100644 index 0000000..8f77ac3 --- /dev/null +++ b/frontend/dist/assets/Einstellungen-DaFSM6VU.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{F as o,Ht as s,P as c,R as l,U as u,Ut as d,Vt as f,_ as p,ft as m,ht as h,it as g,k as _,kt as v,lt as y,m as b,mt as x,n as S,o as C,on as w,ot as T,pt as E,q as D,s as O,vt as k,y as A}from"./abfragen-CDCgpAto.js";import{t as j}from"./button-BHVKhtQ6.js";import{H as M,f as N,h as P,ht as F,p as I}from"./index-CuG_RlEw.js";var L={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};L.node;var R=r(L),z=i(),B=t(e(),1),V=n(),H=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],U={melden:`Nur melden`,sicherheit:`Sicherheitsupdates automatisch`,alles:`Alles automatisch im Fenster`},W=`h-10 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-lab/60`;function G(e){let t=(0,z.c)(11),{wert:n,onWahl:r,label:i,mitStandard:a}=e,o=n??``,s;t[0]===r?s=t[1]:(s=e=>r(e.target.value||null),t[0]=r,t[1]=s);let c;t[2]===a?c=t[3]:(c=a&&(0,V.jsxs)(`option`,{value:``,children:[`Wie Standard (`,a,`)`]}),t[2]=a,t[3]=c);let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=Object.keys(U),t[4]=l):l=t[4];let u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=l.map(K),t[5]=u):u=t[5];let d;return t[6]!==i||t[7]!==o||t[8]!==s||t[9]!==c?(d=(0,V.jsxs)(`select`,{"aria-label":i,value:o,onChange:s,className:`${W} min-w-0`,children:[c,u]}),t[6]=i,t[7]=o,t[8]=s,t[9]=c,t[10]=d):d=t[10],d}function K(e){return(0,V.jsx)(`option`,{value:e,children:U[e]},e)}function q(e){let t=(0,z.c)(61),{aktiv:n}=e,r=m(n),i=p(n).data?.ziele??[],a=E(),[o,s]=(0,B.useState)(null);if(!r.data){let e=r.isPending?`Wird gelesen …`:`Das Wartungsfenster lässt sich gerade nicht lesen.`,n;return t[0]===e?n=t[1]:(n=(0,V.jsx)(`p`,{className:`text-sm text-text-3`,children:e}),t[0]=e,t[1]=n),n}let c=o??r.data.fenster,l;t[2]!==o||t[3]!==r.data.fenster?(l=!!o&&JSON.stringify(o)!==JSON.stringify(r.data.fenster),t[2]=o,t[3]=r.data.fenster,t[4]=l):l=t[4];let u=l,d=r.data.stand,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,V.jsx)(`p`,{className:`m-0 text-sm text-text-2`,children:`Im Fenster spielt der Orchestrator ein, was die Regel des Geräts erlaubt — mit Snapshot vorher und Rückweg bei Rot. Einzelne Erfolge kommen gesammelt als eine Meldung, Fehler sofort. Den Proxmox-Host startet er nie von selbst neu.`}),t[5]=f):f=t[5];let h=c.tag,g;t[6]===c?g=t[7]:(g=e=>s({...c,tag:Number(e.target.value)}),t[6]=c,t[7]=g);let _;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(_=H.map(J),t[8]=_):_=t[8];let v;t[9]!==c.tag||t[10]!==g?(v=(0,V.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`Tag`,(0,V.jsx)(`select`,{className:W,value:h,onChange:g,children:_})]}),t[9]=c.tag,t[10]=g,t[11]=v):v=t[11];let y;t[12]===c?y=t[13]:(y=e=>s({...c,von:e.target.value}),t[12]=c,t[13]=y);let b;t[14]!==c.von||t[15]!==y?(b=(0,V.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`von`,(0,V.jsx)(`input`,{type:`time`,className:W,value:c.von,onChange:y})]}),t[14]=c.von,t[15]=y,t[16]=b):b=t[16];let x;t[17]===c?x=t[18]:(x=e=>s({...c,bis:e.target.value}),t[17]=c,t[18]=x);let S;t[19]!==c.bis||t[20]!==x?(S=(0,V.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`bis`,(0,V.jsx)(`input`,{type:`time`,className:W,value:c.bis,onChange:x})]}),t[19]=c.bis,t[20]=x,t[21]=S):S=t[21];let C=!u||a.isPending,w;t[22]!==c||t[23]!==a?(w=()=>a.mutate({fenster:c},{onSuccess:()=>s(null)}),t[22]=c,t[23]=a,t[24]=w):w=t[24];let T;t[25]!==C||t[26]!==w?(T=(0,V.jsx)(`button`,{type:`button`,disabled:C,onClick:w,className:`h-10 rounded-xl bg-lab/20 px-4 text-sm font-medium text-lab-text ring-1 ring-lab/40 ring-inset disabled:opacity-40`,children:`Fenster speichern`}),t[25]=C,t[26]=w,t[27]=T):T=t[27];let D;t[28]!==S||t[29]!==T||t[30]!==v||t[31]!==b?(D=(0,V.jsxs)(`div`,{className:`flex flex-wrap items-end gap-2`,children:[v,b,S,T]}),t[28]=S,t[29]=T,t[30]=v,t[31]=b,t[32]=D):D=t[32];let O;t[33]===r.data.naechstes?O=t[34]:(O=k(new Date(r.data.naechstes*1e3).toISOString()).toLowerCase(),t[33]=r.data.naechstes,t[34]=O);let A;t[35]===d?A=t[36]:(A=d?` · zuletzt ${d.datum.split(`-`).reverse().join(`.`)}: ${d.status===`laeuft`?`läuft gerade`:`${d.schritte.length} Schritte`}`:``,t[35]=d,t[36]=A);let j;t[37]!==O||t[38]!==A?(j=(0,V.jsxs)(`p`,{className:`m-0 text-xs text-text-3`,children:[`Nächstes Fenster: `,O,A]}),t[37]=O,t[38]=A,t[39]=j):j=t[39];let M;t[40]===a?M=t[41]:(M=e=>e&&a.mutate({standard:e}),t[40]=a,t[41]=M);let N;t[42]!==M||t[43]!==r.data.standard?(N=(0,V.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm text-text-2`,children:[`Standard für alle Geräte (auch neue)`,(0,V.jsx)(G,{label:`Standard-Regel`,wert:r.data.standard,onWahl:M})]}),t[42]=M,t[43]=r.data.standard,t[44]=N):N=t[44];let P;if(t[45]!==a||t[46]!==r.data.regeln||t[47]!==r.data.standard||t[48]!==i){let e;t[50]!==a||t[51]!==r.data.regeln||t[52]!==r.data.standard?(e=e=>(0,V.jsxs)(`div`,{role:`row`,className:`flex flex-wrap items-center justify-between gap-2 border-t border-white/[0.06] py-2`,children:[(0,V.jsx)(`span`,{role:`rowheader`,className:`text-[15px]`,children:e.name}),(0,V.jsx)(`span`,{role:`cell`,children:(0,V.jsx)(G,{label:`Regel für ${e.name}`,wert:r.data.regeln[e.id]??null,mitStandard:U[r.data.standard],onWahl:t=>a.mutate({regeln:{[e.id]:t}})})})]},e.id),t[50]=a,t[51]=r.data.regeln,t[52]=r.data.standard,t[53]=e):e=t[53],P=i.map(e),t[45]=a,t[46]=r.data.regeln,t[47]=r.data.standard,t[48]=i,t[49]=P}else P=t[49];let F;t[54]===P?F=t[55]:(F=(0,V.jsx)(`div`,{role:`table`,"aria-label":`Regel je Gerät`,className:`flex flex-col`,children:P}),t[54]=P,t[55]=F);let I;return t[56]!==D||t[57]!==j||t[58]!==N||t[59]!==F?(I=(0,V.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[f,D,j,N,F]}),t[56]=D,t[57]=j,t[58]=N,t[59]=F,t[60]=I):I=t[60],I}function J(e,t){return(0,V.jsx)(`option`,{value:t,children:e},e)}var Y=[{id:`lesen`,kurz:`Nur lesen`},{id:`fragen`,kurz:`Erst fragen`},{id:`selbst`,kurz:`Selbst handeln`}],ee=`h-10 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-lab/60`;function te(){let e=(0,z.c)(22),t=c(),n=o(),[r,i]=(0,B.useState)(null);if(!t.data){let n=t.isPending?`Wird gelesen …`:`Lucys Freiheiten lassen sich gerade nicht lesen.`,r;return e[0]===n?r=e[1]:(r=(0,V.jsx)(`p`,{className:`text-sm text-text-3`,children:n}),e[0]=n,e[1]=r),r}let s=ne,l;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,V.jsx)(`p`,{className:`m-0 text-sm text-text-2`,children:`Bittest du Lucy ausdrücklich um etwas, tut sie es. Hier stellst du ein, was sie aus eigenem Antrieb darf: nur erklären, dich vorher fragen (in Telegram antwortest du mit „ja“ und der Nummer) oder selbst handeln — dann bekommst du danach eine Meldung.`}),e[2]=l):l=e[2];let u;if(e[3]!==t.data.arten||e[4]!==n){let r;e[6]===n?r=e[7]:(r=e=>(0,V.jsxs)(`div`,{role:`row`,className:`flex flex-col gap-2 border-t border-white/[0.06] py-3 first:border-t-0 sm:flex-row sm:items-center sm:justify-between`,children:[(0,V.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 flex-col gap-0.5`,children:[(0,V.jsx)(`span`,{className:`text-[15px]`,children:e.name}),(0,V.jsx)(`span`,{className:`text-xs text-text-3`,children:e.text})]}),(0,V.jsx)(`span`,{role:`cell`,className:`shrink-0`,children:(0,V.jsx)(`select`,{"aria-label":`Freiheit: ${e.name}`,value:e.stufe,disabled:n.isPending,className:a(ee,`min-w-44`,e.stufe!==e.standard&&`border-lab/50`),onChange:t=>{let r=t.target.value;s(r)>s(e.standard)&&r===`selbst`?i({id:e.id,name:e.name,stufe:r}):n.mutate({[e.id]:r})},children:Y.map(t=>(0,V.jsxs)(`option`,{value:t.id,children:[t.kurz,t.id===e.standard?` (Start)`:``]},t.id))})})]},e.id),e[6]=n,e[7]=r),u=t.data.arten.map(r),e[3]=t.data.arten,e[4]=n,e[5]=u}else u=e[5];let d;e[8]===u?d=e[9]:(d=(0,V.jsx)(`div`,{role:`table`,"aria-label":`Lucys Freiheiten`,className:`flex flex-col`,children:u}),e[8]=u,e[9]=d);let f=!!r,p=r?`„${r.name}“: Lucy selbst handeln lassen?`:``,m;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>i(null),e[10]=m):m=e[10];let h;e[11]!==r||e[12]!==n?(h=()=>{r&&n.mutate({[r.id]:r.stufe}),i(null)},e[11]=r,e[12]=n,e[13]=h):h=e[13];let g;e[14]!==n.isPending||e[15]!==f||e[16]!==p||e[17]!==h?(g=(0,V.jsx)(P,{offen:f,titel:p,text:`Dann tut sie es aus eigenem Antrieb, ohne dich vorher zu fragen, und meldet es erst danach. Zurückstellen kannst du es hier jederzeit.`,knopf:`Selbst handeln lassen`,gesperrt:n.isPending,onNein:m,onJa:h}),e[14]=n.isPending,e[15]=f,e[16]=p,e[17]=h,e[18]=g):g=e[18];let _;return e[19]!==d||e[20]!==g?(_=(0,V.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[l,d,g]}),e[19]=d,e[20]=g,e[21]=_):_=e[21],_}function ne(e){return Y.findIndex(t=>t.id===e)}function re(){let e=(0,z.c)(27),t=x(),n=h(),[r,i]=(0,B.useState)(!1),a=t.data?.zuletzt,o;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,V.jsx)(`p`,{className:`m-0 text-sm text-text-2`,children:`Sonntags um 07:30 schickt Lucy eine Nachricht statt vieler: was eingespielt wurde, was offen ist, Platten, Sicherungen, Zertifikate — und offene App-Updates zum Beantworten mit „ja“.`}),e[0]=o):o=e[0];let s;e[1]===n?s=e[2]:(s=()=>n.mutate(),e[1]=n,e[2]=s);let c=n.isPending?`Lucy schreibt …`:`Jetzt schicken`,l;e[3]!==n.isPending||e[4]!==s||e[5]!==c?(l=(0,V.jsx)(j,{size:`sm`,variant:`outline`,disabled:n.isPending,onClick:s,children:c}),e[3]=n.isPending,e[4]=s,e[5]=c,e[6]=l):l=e[6];let u;e[7]===t.data?u=e[8]:(u=t.data?`Nächster: ${k(new Date(t.data.naechster*1e3).toISOString()).toLowerCase()}`:``,e[7]=t.data,e[8]=u);let d;e[9]===a?d=e[10]:(d=a?` · zuletzt ${k(new Date(a.zeit*1e3).toISOString()).toLowerCase()}`:``,e[9]=a,e[10]=d);let f;e[11]!==u||e[12]!==d?(f=(0,V.jsxs)(`span`,{className:`text-xs text-text-3`,children:[u,d]}),e[11]=u,e[12]=d,e[13]=f):f=e[13];let p;e[14]!==r||e[15]!==a?(p=a&&(0,V.jsx)(`button`,{type:`button`,className:`text-xs text-cyan hover:underline`,onClick:()=>i(!r),children:r?`Letzten zuklappen`:`Letzten lesen`}),e[14]=r,e[15]=a,e[16]=p):p=e[16];let m;e[17]!==l||e[18]!==f||e[19]!==p?(m=(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[l,f,p]}),e[17]=l,e[18]=f,e[19]=p,e[20]=m):m=e[20];let g;e[21]!==r||e[22]!==a?(g=r&&a&&(0,V.jsx)(`pre`,{className:`flaeche-innen m-0 max-h-96 overflow-y-auto rounded-2xl p-4 font-sans text-sm whitespace-pre-wrap text-text-2`,children:a.text}),e[21]=r,e[22]=a,e[23]=g):g=e[23];let _;return e[24]!==m||e[25]!==g?(_=(0,V.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[o,m,g]}),e[24]=m,e[25]=g,e[26]=_):_=e[26],_}var X=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],ie=Array.from({length:48},(e,t)=>`${String(Math.floor(t/2)).padStart(2,`0`)}:${t%2?`30`:`00`}`),ae=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function Z(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?ae.format(t):`–`}function oe(e,t){let n=Number(t.slice(0,2)),r=n*60+179,i=e;r>=1440&&(r-=1440,i=e%7+1);let a=e=>String(e).padStart(2,`0`),o=`${a(n)}:00`,s=`${a(Math.floor(r/60))}:${a(r%60)}`;return i===e?`${X[e-1]} ${o}–${s}`:`${X[e-1]} ${o} – ${X[i-1]} ${s}`}function Q(e){let t=(0,z.c)(6),{titel:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,V.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i||t[4]!==n?(a=(0,V.jsxs)(`section`,{"aria-label":n,className:`flex flex-col gap-3 border-t border-white/[0.06] pt-4 first:border-t-0 first:pt-0`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=n,t[5]=a):a=t[5],a}function $(e){let t=(0,z.c)(23),{titel:n,text:r,farbe:i,id:o,children:s}=e,c=i===`box`?`var(--box)`:i===`homelab`?`var(--lab)`:null,l=i===`box`?`text-box-text`:i===`homelab`?`text-lab-text`:`text-foreground`,u=i===`box`?`[--rand:color-mix(in_srgb,var(--box)_28%,transparent)]`:i===`homelab`?`[--rand:color-mix(in_srgb,var(--lab)_28%,transparent)]`:``,d;t[0]===u?d=t[1]:(d=a(`flaeche relative flex min-w-0 flex-col gap-4 overflow-hidden rounded-3xl p-5 sm:p-6`,u),t[0]=u,t[1]=d);let f;t[2]===c?f=t[3]:(f=c&&(0,V.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute -top-40 -left-32 size-[400px] rounded-full`,style:{background:`radial-gradient(closest-side, color-mix(in srgb, ${c} 16%, transparent), transparent)`}}),t[2]=c,t[3]=f);let p;t[4]===l?p=t[5]:(p=a(`text-[19px] leading-tight font-semibold`,l),t[4]=l,t[5]=p);let m;t[6]!==p||t[7]!==n?(m=(0,V.jsx)(`h2`,{className:p,children:n}),t[6]=p,t[7]=n,t[8]=m):m=t[8];let h;t[9]===r?h=t[10]:(h=(0,V.jsx)(`p`,{className:`text-sm text-text-3`,children:r}),t[9]=r,t[10]=h);let g;t[11]!==m||t[12]!==h?(g=(0,V.jsxs)(`div`,{className:`relative flex flex-col gap-1`,children:[m,h]}),t[11]=m,t[12]=h,t[13]=g):g=t[13];let _;t[14]===s?_=t[15]:(_=(0,V.jsx)(`div`,{className:`relative flex min-w-0 flex-col gap-4`,children:s}),t[14]=s,t[15]=_);let v;return t[16]!==o||t[17]!==d||t[18]!==f||t[19]!==g||t[20]!==_||t[21]!==n?(v=(0,V.jsxs)(`section`,{id:o,"aria-label":n,className:d,children:[f,g,_]}),t[16]=o,t[17]=d,t[18]=f,t[19]=g,t[20]=_,t[21]=n,t[22]=v):v=t[22],v}function se(e){let t=(0,z.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,V.jsx)(`p`,{className:`text-sm text-bernstein`,children:n}),t[0]=n,t[1]=r),r}function ce(e){let t=(0,z.c)(3),{laedt:n,fehler:r}=e;if(n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],e}let i=r?`: ${r}`:`.`,a;return t[1]===i?a=t[2]:(a=(0,V.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Lässt sich gerade nicht lesen`,i]}),t[1]=i,t[2]=a),a}function le({offen:e}){let t=w(),n=d({queryKey:[`geheimnisse`],queryFn:()=>f(`/api/maintenance/geheimnisse`),enabled:e}),[r,i]=(0,B.useState)(``),[a,o]=(0,B.useState)(!1),[c,l]=(0,B.useState)(!1);async function u(e){if(!a){o(!0),l(!1);try{await s(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),v(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),i(``),t.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){v(`fehler`,e.message)}finally{o(!1)}}}let p=n.data,m;return m=n.isPending?`Wird gelesen …`:p?p.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${n.error?`: ${n.error.message}`:`.`}`,(0,V.jsxs)(Q,{titel:`Hugging-Face-Zugang`,children:[(0,V.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,V.jsx)(`span`,{className:!p&&!n.isPending?`text-rot-text`:void 0,children:m}),` Nötig für gesperrte Modelle und schnellere Downloads.`,p?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),p?.schreibbar===!1&&(0,V.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,V.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),r.trim()&&u(r.trim())},children:[(0,V.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,V.jsx)(`input`,{id:`hf-token`,type:`password`,autoComplete:`off`,value:r,onChange:e=>i(e.target.value),placeholder:`hf_…`,className:`h-11 min-w-0 flex-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-cyan/60 focus:bg-white/[0.06]`}),(0,V.jsx)(j,{type:`submit`,disabled:!r.trim()||p?.schreibbar===!1||a,children:a?`Speichert …`:`Speichern`})]}),p?.hf_token_gesetzt&&!p.hf_token_aus_env&&(c?(0,V.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(j,{variant:`gefahr`,size:`sm`,disabled:a,onClick:()=>u(null),children:`Wirklich löschen?`}),(0,V.jsx)(j,{variant:`ghost`,size:`sm`,onClick:()=>l(!1),children:`Nein`})]}):(0,V.jsx)(j,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:a,onClick:()=>l(!0),children:`Zugang löschen`}))]})}function ue(e){let t=(0,z.c)(24),{ziel:n,name:r}=e,i=T(),a=i.data,o=null;if(i.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,V.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Sendet …`}),t[0]=e):e=t[0],o=e}else if(a?.gesendet){let e=a.weg===`hermes`?`über Hermes`:`direkt an die Telegram-Bot-API`,n=a.kennung?`, Kennung ${a.kennung}`:``,r;t[1]!==e||t[2]!==n?(r=(0,V.jsxs)(`p`,{role:`status`,className:`text-sm text-gruen`,children:[`Gesendet `,e,n,`. Schau in Telegram nach.`]}),t[1]=e,t[2]=n,t[3]=r):r=t[3],o=r}else if(a){let e=a.grund??a.detail??`ohne Angabe eines Grundes.`,n;t[4]===e?n=t[5]:(n=(0,V.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Nicht gesendet: `,e]}),t[4]=e,t[5]=n),o=n}else if(i.error){let e;t[6]===i.error.message?e=t[7]:(e=(0,V.jsx)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:i.error.message}),t[6]=i.error.message,t[7]=e),o=e}let s;t[8]===r?s=t[9]:(s=(0,V.jsx)(`span`,{className:`text-[15px]`,children:r}),t[8]=r,t[9]=s);let c;t[10]!==i||t[11]!==n?(c=()=>i.mutate(n),t[10]=i,t[11]=n,t[12]=c):c=t[12];let l=`Testmeldung von ${r} senden`,u=i.isPending?`Sendet …`:`Test senden`,d;t[13]!==c||t[14]!==l||t[15]!==u||t[16]!==i.isPending?(d=(0,V.jsx)(j,{variant:`outline`,size:`sm`,disabled:i.isPending,onClick:c,"aria-label":l,children:u}),t[13]=c,t[14]=l,t[15]=u,t[16]=i.isPending,t[17]=d):d=t[17];let f;t[18]!==s||t[19]!==d?(f=(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[18]=s,t[19]=d,t[20]=f):f=t[20];let p;return t[21]!==o||t[22]!==f?(p=(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[f,o]}),t[21]=o,t[22]=f,t[23]=p):p=t[23],p}function de(){let e=(0,z.c)(10),t=_().data,n=t?.rolle??`box`,r=n===`box`?`homelab`:`box`,i=t?.instanz??(n===`box`?`Box-Wart`:`Homelab`),a;e[0]!==r||e[1]!==n||e[2]!==t||e[3]!==i?(a=[{ziel:n,name:i}],t?.partner.eingerichtet&&a.push({ziel:r,name:t.partner.name}),a.sort(pe),e[0]=r,e[1]=n,e[2]=t,e[3]=i,e[4]=a):a=e[4];let o,s,c;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Dringende Hinweise gehen zusätzlich per Telegram raus, alles andere bleibt hier; was nachts anfällt, kommt um 07:00 als eine Morgenmeldung. Einfache Probleme wie einen abgestürzten Dienst behebt der Wächter selbst und schreibt es in den Verlauf.`}),s=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Fragt Lucy vorher, antwortest du in Telegram mit „ja“ und der Nummer oder tippst auf die Antworttaste unter dem Eingabefeld — das löst genau die gefragte Aktion aus. Sonntags um 07:30 kommt ihr Wochenbericht.`}),c=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Test schickt eine kurze Meldung über den echten Meldeweg, als dringend, damit sie auch nachts sofort kommt.`}),e[5]=o,e[6]=s,e[7]=c):(o=e[5],s=e[6],c=e[7]);let l;return e[8]===a?l=e[9]:(l=(0,V.jsxs)(Q,{titel:`Telegram`,children:[o,s,c,a.map(fe)]}),e[8]=a,e[9]=l),l}function fe(e){return(0,V.jsx)(ue,{ziel:e.ziel,name:e.name},e.ziel)}function pe(e,t){return Number(e.ziel!==`box`)-Number(t.ziel!==`box`)}function me(e){let t=(0,z.c)(87),{e:n,laedt:r,fehler:i}=e,a=y(),[o,s]=(0,B.useState)(null),[c,l]=(0,B.useState)(!1);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,V.jsx)(Q,{titel:`Update-Zeitfenster`,children:(0,V.jsx)(ce,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let u=n.update_fenster,d,f,p,m,h,g,_,v,b,x,S,C,w,T,E,D,O;if(t[3]!==n.schaltbar||t[4]!==o||t[5]!==u.naechster_lauf||t[6]!==u.neustart_fenster||t[7]!==u.tag||t[8]!==u.tag_name||t[9]!==u.timer_aktiv||t[10]!==u.uhrzeit||t[11]!==u.wirksam){O=o??{tag:u.tag,uhrzeit:u.uhrzeit},f=O.tag!==u.tag||O.uhrzeit!==u.uhrzeit;let e=ie.includes(O.uhrzeit)?ie:[...ie,O.uhrzeit].sort();d=Q,h=`Update-Zeitfenster`;let r;t[29]===u.naechster_lauf?r=t[30]:(r=u.naechster_lauf?` (nächster Lauf ${Z(u.naechster_lauf)})`:``,t[29]=u.naechster_lauf,t[30]=r),t[31]!==u.neustart_fenster||t[32]!==u.tag_name||t[33]!==u.uhrzeit||t[34]!==r?(g=(0,V.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Die Box aktualisiert sich jeden `,u.tag_name,` um `,u.uhrzeit,` Uhr`,r,`. Neu gestartet wird sie danach nur`,` `,u.neustart_fenster,`.`]}),t[31]=u.neustart_fenster,t[32]=u.tag_name,t[33]=u.uhrzeit,t[34]=r,t[35]=g):g=t[35],t[36]!==n.schaltbar||t[37]!==u.timer_aktiv?(_=n.schaltbar&&!u.timer_aktiv&&(0,V.jsx)(se,{children:`Der Update-Timer läuft gerade nicht; er übernimmt das Fenster beim nächsten Start.`}),t[36]=n.schaltbar,t[37]=u.timer_aktiv,t[38]=_):_=t[38],t[39]!==n.schaltbar||t[40]!==u.wirksam?(v=n.schaltbar&&!u.wirksam&&(0,V.jsx)(se,{children:`Der Timer läuft noch nach einem anderen Plan als eingestellt. Einmal speichern gleicht es an.`}),t[39]=n.schaltbar,t[40]=u.wirksam,t[41]=v):v=t[41],D=`flex flex-wrap items-end gap-2`;let i=O.tag,a;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(a=X.map(ge),t[42]=a):a=t[42],m=(0,V.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-text-3`,children:[`Tag`,(0,V.jsx)(`select`,{className:`h-11 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-cyan/60 focus:bg-white/[0.06]`,value:i,disabled:!n.schaltbar,"aria-label":`Wochentag`,onChange:e=>s({...O,tag:Number(e.target.value)}),children:a})]}),T=`flex flex-col gap-1 text-xs text-text-3`,E=`Uhrzeit`,p=`h-11 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-cyan/60 focus:bg-white/[0.06]`,b=O.uhrzeit,x=!n.schaltbar,S=`Uhrzeit`,C=e=>s({...O,uhrzeit:e.target.value}),w=e.map(he),t[3]=n.schaltbar,t[4]=o,t[5]=u.naechster_lauf,t[6]=u.neustart_fenster,t[7]=u.tag,t[8]=u.tag_name,t[9]=u.timer_aktiv,t[10]=u.uhrzeit,t[11]=u.wirksam,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=b,t[21]=x,t[22]=S,t[23]=C,t[24]=w,t[25]=T,t[26]=E,t[27]=D,t[28]=O}else d=t[12],f=t[13],p=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],b=t[20],x=t[21],S=t[22],C=t[23],w=t[24],T=t[25],E=t[26],D=t[27],O=t[28];let k;t[43]!==p||t[44]!==b||t[45]!==x||t[46]!==S||t[47]!==C||t[48]!==w?(k=(0,V.jsx)(`select`,{className:p,value:b,disabled:x,"aria-label":S,onChange:C,children:w}),t[43]=p,t[44]=b,t[45]=x,t[46]=S,t[47]=C,t[48]=w,t[49]=k):k=t[49];let A;t[50]!==k||t[51]!==T||t[52]!==E?(A=(0,V.jsxs)(`label`,{className:T,children:[E,k]}),t[50]=k,t[51]=T,t[52]=E,t[53]=A):A=t[53];let M=!n.schaltbar||a.isPending||!f&&u.wirksam,N;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(N=()=>l(!0),t[54]=N):N=t[54];let F=a.isPending?`Speichert …`:`Speichern`,I;t[55]!==M||t[56]!==F?(I=(0,V.jsx)(j,{disabled:M,onClick:N,children:F}),t[55]=M,t[56]=F,t[57]=I):I=t[57];let L;t[58]!==m||t[59]!==A||t[60]!==I||t[61]!==D?(L=(0,V.jsxs)(`div`,{className:D,children:[m,A,I]}),t[58]=m,t[59]=A,t[60]=I,t[61]=D,t[62]=L):L=t[62];let R=n.schaltbar?``:` Einstellen lässt es sich nur auf der Box.`,H;t[63]===R?H=t[64]:(H=(0,V.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Am besten nachts nach der Sicherung (03:30) und vor der Morgenmeldung (07:00).`,R]}),t[63]=R,t[64]=H);let U;t[65]!==O.tag||t[66]!==O.uhrzeit?(U=oe(O.tag,O.uhrzeit),t[65]=O.tag,t[66]=O.uhrzeit,t[67]=U):U=t[67];let W=`Der Update-Lauf startet ab jetzt jeden ${X[O.tag-1]} um ${O.uhrzeit} Uhr. Neu gestartet wird die Box nur ${U}. Ein Termin, der dadurch schon vorbei ist, wird nicht nachgeholt: Der erste Lauf ist der nächste reguläre.`,G;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>l(!1),t[68]=G):G=t[68];let K;t[69]!==c||t[70]!==a||t[71]!==O?(K=()=>{c&&(a.mutate(O,{onSuccess:()=>s(null)}),l(!1))},t[69]=c,t[70]=a,t[71]=O,t[72]=K):K=t[72];let q;t[73]!==c||t[74]!==a.isPending||t[75]!==W||t[76]!==K?(q=(0,V.jsx)(P,{offen:c,titel:`Update-Zeitfenster ändern?`,text:W,knopf:`Speichern`,gesperrt:a.isPending,onNein:G,onJa:K}),t[73]=c,t[74]=a.isPending,t[75]=W,t[76]=K,t[77]=q):q=t[77];let J;return t[78]!==d||t[79]!==h||t[80]!==g||t[81]!==_||t[82]!==v||t[83]!==L||t[84]!==H||t[85]!==q?(J=(0,V.jsxs)(d,{titel:h,children:[g,_,v,L,H,q]}),t[78]=d,t[79]=h,t[80]=g,t[81]=_,t[82]=v,t[83]=L,t[84]=H,t[85]=q,t[86]=J):J=t[86],J}function he(e){return(0,V.jsx)(`option`,{value:e,children:e},e)}function ge(e,t){return(0,V.jsx)(`option`,{value:t+1,children:e},e)}function _e(e){let t=(0,z.c)(37),{e:n,laedt:r,fehler:i}=e,a=D(),[o,s]=(0,B.useState)(null);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,V.jsx)(Q,{titel:`Modell-Radar`,children:(0,V.jsx)(ce,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let c=n.radar,l=c.zustand===`an`||c.zustand===`unbekannt`&&c.an,u;t[3]===c.naechster_lauf?u=t[4]:(u=c.naechster_lauf?` (nächster Lauf ${Z(c.naechster_lauf)})`:``,t[3]=c.naechster_lauf,t[4]=u);let d=`An. Es sucht jede Nacht ab 00:30 nach besseren Modellen${u}.`,f=c.an?`Eingeschaltet.`:`Ausgeschaltet.`,p;t[5]!==d||t[6]!==f?(p={an:d,schlaeft:`Schläft. Es sucht und testet keine Modelle, bis du es wieder einschaltest.`,aus:`Gestoppt, steht aber noch im Autostart: Nach einem Neustart der Box liefe es wieder.`,unbekannt:f},t[5]=d,t[6]=f,t[7]=p):p=t[7];let m=p[c.zustand],h;t[8]===m?h=t[9]:(h=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:m}),t[8]=m,t[9]=h);let g;t[10]!==n.schaltbar||t[11]!==c.an||t[12]!==c.wirksam?(g=n.schaltbar&&!c.wirksam&&(0,V.jsxs)(se,{children:[`Eingestellt ist „`,c.an?`an`:`aus`,`“, systemd zeigt etwas anderes. Noch einmal schalten gleicht es an.`]}),t[10]=n.schaltbar,t[11]=c.an,t[12]=c.wirksam,t[13]=g):g=t[13];let _=l?`outline`:`default`,v=!n.schaltbar||a.isPending,y;t[14]===l?y=t[15]:(y=()=>s(!l),t[14]=l,t[15]=y);let b=a.isPending?`Schaltet …`:l?`Ausschalten`:`Einschalten`,x;t[16]!==y||t[17]!==b||t[18]!==_||t[19]!==v?(x=(0,V.jsx)(j,{variant:_,size:`sm`,className:`self-start`,disabled:v,onClick:y,children:b}),t[16]=y,t[17]=b,t[18]=_,t[19]=v,t[20]=x):x=t[20];let S=o!==null,C=o?`Modell-Radar einschalten?`:`Modell-Radar ausschalten?`,w=o?`Das Radar sucht ab heute Nacht um 00:30 wieder nach besseren Modellen und testet höchstens eines pro Woche. Ein verpasster Lauf wird nicht nachgeholt, tagsüber lädt es also nichts.`:`Das Radar sucht und testet dann keine neuen Modelle mehr, bis du es wieder einschaltest. Ein Nachttest, der gerade läuft, endet noch. Auch ein Deploy schaltet es nicht wieder ein.`,T=o?`Einschalten`:`Ausschalten`,E;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>s(null),t[21]=E):E=t[21];let O;t[22]!==o||t[23]!==a?(O=()=>{o!==null&&(a.mutate(o),s(null))},t[22]=o,t[23]=a,t[24]=O):O=t[24];let k;t[25]!==a.isPending||t[26]!==S||t[27]!==C||t[28]!==w||t[29]!==T||t[30]!==O?(k=(0,V.jsx)(P,{offen:S,titel:C,text:w,knopf:T,gesperrt:a.isPending,onNein:E,onJa:O}),t[25]=a.isPending,t[26]=S,t[27]=C,t[28]=w,t[29]=T,t[30]=O,t[31]=k):k=t[31];let A;return t[32]!==x||t[33]!==k||t[34]!==h||t[35]!==g?(A=(0,V.jsxs)(Q,{titel:`Modell-Radar`,children:[h,g,x,k]}),t[32]=x,t[33]=k,t[34]=h,t[35]=g,t[36]=A):A=t[36],A}function ve(e){let t=(0,z.c)(25),{name:n,stand:r,laedt:i,fehler:a}=e,o;if(i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,V.jsx)(`span`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],o=e}else if(a){let e;t[1]===a?e=t[2]:(e=(0,V.jsxs)(`span`,{className:`text-sm text-rot-text`,children:[`Nicht lesbar: `,a]}),t[1]=a,t[2]=e),o=e}else if(r?.commit){let e;t[4]===r.commit?e=t[5]:(e=(0,V.jsx)(`span`,{className:`ziffern text-foreground`,children:r.commit}),t[4]=r.commit,t[5]=e);let n=r.betreff?` · ${r.betreff}`:``,i;t[6]!==e||t[7]!==n?(i=(0,V.jsxs)(`span`,{className:`text-sm text-text-2`,children:[e,n]}),t[6]=e,t[7]=n,t[8]=i):i=t[8];let a;t[9]!==r.deploy_zeit||t[10]!==r.quelle?(a=r.quelle===`deploy`?`Live seit ${Z(r.deploy_zeit)}`:`Aus git gelesen, ohne Deploy`,t[9]=r.deploy_zeit,t[10]=r.quelle,t[11]=a):a=t[11];let s;t[12]===r.commit_datum?s=t[13]:(s=r.commit_datum?` · Commit vom ${Z(r.commit_datum)}`:``,t[12]=r.commit_datum,t[13]=s);let c;t[14]!==a||t[15]!==s?(c=(0,V.jsxs)(`span`,{className:`text-xs text-text-3`,children:[a,s]}),t[14]=a,t[15]=s,t[16]=c):c=t[16];let l;t[17]!==i||t[18]!==c?(l=(0,V.jsxs)(V.Fragment,{children:[i,c]}),t[17]=i,t[18]=c,t[19]=l):l=t[19],o=l}else{let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,V.jsx)(`span`,{className:`text-sm text-text-2`,children:`Unbekannt: keine Stand-Datei und kein git.`}),t[3]=e):e=t[3],o=e}let s;t[20]===n?s=t[21]:(s=(0,V.jsx)(`span`,{className:`text-[15px]`,children:n}),t[20]=n,t[21]=s);let c;return t[22]!==o||t[23]!==s?(c=(0,V.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[s,o]}),t[22]=o,t[23]=s,t[24]=c):c=t[24],c}function ye(e,t){return!e||!t?null:e.startsWith(t)||t.startsWith(e)}function be(e){let t=(0,z.c)(21),{offen:n}=e,r=_().data,i=!!r?.partner.eingerichtet,[a,o]=g(n,i),s=a.data?.stand?.commit,c=o.data?.stand?.commit,l;t[0]!==s||t[1]!==c?(l=ye(s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let u=l,d=a.data?.instanz??r?.instanz??`Diese Instanz`,f=a.data?.stand,p=a.error?.message,m;t[3]!==a.isPending||t[4]!==d||t[5]!==f||t[6]!==p?(m=(0,V.jsx)(ve,{name:d,stand:f,laedt:a.isPending,fehler:p}),t[3]=a.isPending,t[4]=d,t[5]=f,t[6]=p,t[7]=m):m=t[7];let h;t[8]!==r?.partner||t[9]!==o.data?.instanz||t[10]!==o.data?.stand||t[11]!==o.error?.message||t[12]!==o.isPending||t[13]!==i?(h=i&&(0,V.jsx)(ve,{name:o.data?.instanz??r?.partner.name??`Partner`,stand:o.data?.stand,laedt:o.isPending,fehler:o.error?.message}),t[8]=r?.partner,t[9]=o.data?.instanz,t[10]=o.data?.stand,t[11]=o.error?.message,t[12]=o.isPending,t[13]=i,t[14]=h):h=t[14];let v;t[15]===u?v=t[16]:(v=u===!1&&(0,V.jsx)(se,{children:`Die beiden Instanzen laufen mit verschiedenen Ständen. Der nächste Deploy der Box zieht den Homelab-Teil mit.`}),t[15]=u,t[16]=v);let y;return t[17]!==m||t[18]!==h||t[19]!==v?(y=(0,V.jsxs)(Q,{titel:`Instanzen`,children:[m,h,v]}),t[17]=m,t[18]=h,t[19]=v,t[20]=y):y=t[20],y}function xe(e){let t=(0,z.c)(52),{h:n}=e,r=O(),i=C(),[a,o]=(0,B.useState)(``),[s,c]=(0,B.useState)(!1),[l,u]=(0,B.useState)(null),d=n.arcane,f;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(f={hinterlegt:(0,V.jsx)(M,{art:`gruen`,children:`hinterlegt`}),umgebung:(0,V.jsx)(M,{art:`gruen`,children:`aus der Dienst-Einstellung`}),fehlt:(0,V.jsx)(M,{art:`bernstein`,children:`fehlt`})},t[0]=f):f=t[0];let p=f[d.schluessel],m;t[1]===d.url?m=t[2]:(m=d.url&&(0,V.jsxs)(`a`,{href:d.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`Arcane öffnen `,(0,V.jsx)(F,{className:`size-3.5`,"aria-hidden":!0})]}),t[1]=d.url,t[2]=m);let h;t[3]!==p||t[4]!==m?(h=(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`API-Schlüssel `,p,m]}),t[3]=p,t[4]=m,t[5]=h):h=t[5];let g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit Schlüssel sieht der Orchestrator, welche Docker-Images neuer sind. Anlegen in Arcane unter Einstellungen → API-Schlüssel; Lesen reicht, solange Docker-Updates nur als Probelauf laufen.`}),t[6]=g):g=t[6];let _;t[7]!==d.schluessel||t[8]!==r||t[9]!==a?(_=d.schluessel!==`umgebung`&&(0,V.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),a.trim()&&r.mutate(a.trim(),{onSuccess:()=>o(``)})},children:[(0,V.jsx)(`label`,{htmlFor:`arcane-schluessel`,className:`sr-only`,children:`Arcane-API-Schlüssel`}),(0,V.jsxs)(`span`,{className:`relative min-w-0 flex-1`,children:[(0,V.jsx)(R,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-text-3`,"aria-hidden":!0}),(0,V.jsx)(`input`,{id:`arcane-schluessel`,type:`password`,autoComplete:`off`,value:a,onChange:e=>o(e.target.value),placeholder:d.schluessel===`hinterlegt`?`Neuen Schlüssel eintragen …`:`Schlüssel aus Arcane einfügen …`,className:`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] pr-3 pl-9 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`})]}),(0,V.jsx)(j,{type:`submit`,disabled:!a.trim()||r.isPending,children:r.isPending?`Prüft …`:`Prüfen und speichern`})]}),t[7]=d.schluessel,t[8]=r,t[9]=a,t[10]=_):_=t[10];let v;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,V.jsx)(`p`,{className:`text-xs text-text-3`,children:`Der Schlüssel wird vor dem Speichern an Arcane geprüft und nie wieder angezeigt. Er liegt nur im Homelab-Teil.`}),t[11]=v):v=t[11];let y;t[12]!==d.schluessel||t[13]!==s||t[14]!==r?(y=d.schluessel===`hinterlegt`&&(s?(0,V.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(j,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),c(!1)},children:`Wirklich entfernen?`}),(0,V.jsx)(j,{variant:`ghost`,size:`sm`,onClick:()=>c(!1),children:`Nein`})]}):(0,V.jsx)(j,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>c(!0),children:`Schlüssel entfernen`})),t[12]=d.schluessel,t[13]=s,t[14]=r,t[15]=y):y=t[15];let b;t[16]!==h||t[17]!==_||t[18]!==y?(b=(0,V.jsxs)(Q,{titel:`Arcane (Docker)`,children:[h,g,_,v,y]}),t[16]=h,t[17]=_,t[18]=y,t[19]=b):b=t[19];let x=d.echt?`Echt: „Jetzt updaten“ bei Arcane zieht neue Images und startet die Container neu.`:`Probelauf: Arcane zeigt nur, was es tun würde — kein Container wird angefasst.`,S=d.echt_quelle===`umgebung`?` Festgelegt in der Dienst-Einstellung (MC_ARCANE_ECHT).`:``,w;t[20]!==x||t[21]!==S?(w=(0,V.jsxs)(`p`,{className:`text-sm text-text-2`,children:[x,S]}),t[20]=x,t[21]=S,t[22]=w):w=t[22];let T=d.echt?`outline`:`default`,E=d.echt_quelle===`umgebung`||i.isPending||d.schluessel===`fehlt`,D;t[23]===d.echt?D=t[24]:(D=()=>u(!d.echt),t[23]=d.echt,t[24]=D);let k=i.isPending?`Schaltet …`:d.echt?`Zurück auf Probelauf`:`Echt schalten`,A;t[25]!==T||t[26]!==E||t[27]!==D||t[28]!==k?(A=(0,V.jsx)(j,{variant:T,size:`sm`,className:`self-start`,disabled:E,onClick:D,children:k}),t[25]=T,t[26]=E,t[27]=D,t[28]=k,t[29]=A):A=t[29];let N;t[30]===d.schluessel?N=t[31]:(N=d.schluessel===`fehlt`&&(0,V.jsx)(`p`,{className:`text-xs text-text-3`,children:`Erst den Schlüssel eintragen.`}),t[30]=d.schluessel,t[31]=N);let I=l!==null,L=l?`Docker-Updates echt ausführen?`:`Zurück auf Probelauf?`,H=l?`Ab jetzt zieht „Jetzt updaten“ bei Arcane neue Images und startet die betroffenen Container neu. Vorher wird ein Snapshot der VM angelegt, soweit möglich. Das lässt sich hier jederzeit zurückschalten.`:`Docker-Updates zeigen dann wieder nur, was Arcane tun würde.`,U=l?`Echt schalten`:`Probelauf`,W=!!l,G;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>u(null),t[32]=G):G=t[32];let K;t[33]!==i||t[34]!==l?(K=()=>{l!==null&&(i.mutate(l),u(null))},t[33]=i,t[34]=l,t[35]=K):K=t[35];let q;t[36]!==i.isPending||t[37]!==I||t[38]!==L||t[39]!==H||t[40]!==U||t[41]!==W||t[42]!==K?(q=(0,V.jsx)(P,{offen:I,titel:L,text:H,knopf:U,gefahr:W,gesperrt:i.isPending,onNein:G,onJa:K}),t[36]=i.isPending,t[37]=I,t[38]=L,t[39]=H,t[40]=U,t[41]=W,t[42]=K,t[43]=q):q=t[43];let J;t[44]!==w||t[45]!==A||t[46]!==N||t[47]!==q?(J=(0,V.jsxs)(Q,{titel:`Docker-Updates`,children:[w,A,N,q]}),t[44]=w,t[45]=A,t[46]=N,t[47]=q,t[48]=J):J=t[48];let Y;return t[49]!==J||t[50]!==b?(Y=(0,V.jsxs)(V.Fragment,{children:[b,J]}),t[49]=J,t[50]=b,t[51]=Y):Y=t[51],Y}function Se(e){let t=(0,z.c)(44),{h:n}=e,r=S(),[i,o]=(0,B.useState)(``),[s,c]=(0,B.useState)(``),[l,u]=(0,B.useState)(!1),d=n.adguard;if(!d)return null;let f;t[0]!==d.benutzer||t[1]!==d.zugang?(f=d.zugang===`hinterlegt`?(0,V.jsxs)(M,{art:`gruen`,children:[`hinterlegt`,d.benutzer?` · ${d.benutzer}`:``]}):(0,V.jsx)(M,{art:`grau`,children:`keiner`}),t[0]=d.benutzer,t[1]=d.zugang,t[2]=f):f=t[2];let p;t[3]===d.url?p=t[4]:(p=d.url&&(0,V.jsxs)(`a`,{href:d.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`AdGuard öffnen `,(0,V.jsx)(F,{className:`size-3.5`,"aria-hidden":!0})]}),t[3]=d.url,t[4]=p);let m;t[5]!==f||t[6]!==p?(m=(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`Zugang `,f,p]}),t[5]=f,t[6]=p,t[7]=m):m=t[7];let h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit einem Zugang zeigt die Kachel von AdGuard, wie viele Anfragen es blockt. Er wird nur zum Lesen der Statistik benutzt — am besten ein eigener Benutzer dafür.`}),t[8]=h):h=t[8];let g;t[9]!==i||t[10]!==s||t[11]!==r?(g=e=>{e.preventDefault(),i.trim()&&s&&r.mutate({benutzer:i.trim(),passwort:s},{onSuccess:()=>{c(``),o(``)}})},t[9]=i,t[10]=s,t[11]=r,t[12]=g):g=t[12];let _;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,V.jsx)(`label`,{htmlFor:`adguard-benutzer`,className:`sr-only`,children:`AdGuard-Benutzer`}),t[13]=_):_=t[13];let v;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(v=e=>o(e.target.value),t[14]=v):v=t[14];let y;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(y=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-40`),t[15]=y):y=t[15];let b;t[16]===i?b=t[17]:(b=(0,V.jsx)(`input`,{id:`adguard-benutzer`,autoComplete:`off`,value:i,onChange:v,placeholder:`Benutzer`,className:y}),t[16]=i,t[17]=b);let x;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,V.jsx)(`label`,{htmlFor:`adguard-passwort`,className:`sr-only`,children:`AdGuard-Passwort`}),t[18]=x):x=t[18];let C;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(C=e=>c(e.target.value),t[19]=C):C=t[19];let w;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(w=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-40`),t[20]=w):w=t[20];let T;t[21]===s?T=t[22]:(T=(0,V.jsx)(`input`,{id:`adguard-passwort`,type:`password`,autoComplete:`new-password`,value:s,onChange:C,placeholder:`Passwort`,className:w}),t[21]=s,t[22]=T);let E;t[23]!==i||t[24]!==s||t[25]!==r.isPending?(E=!i.trim()||!s||r.isPending,t[23]=i,t[24]=s,t[25]=r.isPending,t[26]=E):E=t[26];let D=r.isPending?`Prüft …`:`Prüfen und speichern`,O;t[27]!==E||t[28]!==D?(O=(0,V.jsx)(j,{type:`submit`,disabled:E,children:D}),t[27]=E,t[28]=D,t[29]=O):O=t[29];let k;t[30]!==T||t[31]!==O||t[32]!==g||t[33]!==b?(k=(0,V.jsxs)(`form`,{className:`flex flex-wrap gap-2`,onSubmit:g,children:[_,b,x,T,O]}),t[30]=T,t[31]=O,t[32]=g,t[33]=b,t[34]=k):k=t[34];let A;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,V.jsx)(`p`,{className:`text-xs text-text-3`,children:`Vor dem Speichern fragt der Homelab-Teil AdGuard einmal damit. Das Passwort wird nie wieder angezeigt und liegt nur im Homelab-Teil.`}),t[35]=A):A=t[35];let N;t[36]!==d.zugang||t[37]!==l||t[38]!==r?(N=d.zugang===`hinterlegt`&&(l?(0,V.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(j,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),u(!1)},children:`Wirklich entfernen?`}),(0,V.jsx)(j,{variant:`ghost`,size:`sm`,onClick:()=>u(!1),children:`Nein`})]}):(0,V.jsx)(j,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>u(!0),children:`Zugang entfernen`})),t[36]=d.zugang,t[37]=l,t[38]=r,t[39]=N):N=t[39];let P;return t[40]!==k||t[41]!==N||t[42]!==m?(P=(0,V.jsxs)(Q,{titel:`AdGuard Home`,children:[m,h,k,A,N]}),t[40]=k,t[41]=N,t[42]=m,t[43]=P):P=t[43],P}function Ce(e){let t=(0,z.c)(43),{h:n}=e,r=l(),[i,o]=(0,B.useState)(``),[s,c]=(0,B.useState)(``),[u,d]=(0,B.useState)(!1),f=n.nas_snmp;if(!f)return null;let p;t[0]===f.zugang?p=t[1]:(p=f.zugang===`hinterlegt`?(0,V.jsx)(M,{art:`gruen`,children:`hinterlegt`}):(0,V.jsx)(M,{art:`grau`,children:`keiner`}),t[0]=f.zugang,t[1]=p);let m;t[2]===f.adresse?m=t[3]:(m=f.adresse&&(0,V.jsxs)(`span`,{className:`text-text-3`,children:[`NAS `,f.adresse]}),t[2]=f.adresse,t[3]=m);let h;t[4]!==p||t[5]!==m?(h=(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`Zugang `,p,m]}),t[4]=p,t[5]=m,t[6]=h):h=t[6];let g;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Damit meldet der Orchestrator, wenn eine Platte im NAS kränkelt. Am QNAP: Systemsteuerung → Netzwerk- und Dateidienste → SNMP → „SNMP-Dienst aktivieren“, Version SNMP v1/v2, einen Zugangsnamen („Community“) wählen, der nicht „public“ heißt — und ihn hier eintragen.`}),t[7]=g):g=t[7];let _;t[8]!==s||t[9]!==i||t[10]!==r?(_=e=>{e.preventDefault(),i.trim()&&r.mutate({community:i.trim(),adresse:s.trim()},{onSuccess:()=>{o(``),c(``)}})},t[8]=s,t[9]=i,t[10]=r,t[11]=_):_=t[11];let v;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,V.jsx)(`label`,{htmlFor:`nas-community`,className:`sr-only`,children:`Zugangsname (Community)`}),t[12]=v):v=t[12];let y;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(y=e=>o(e.target.value),t[13]=y):y=t[13];let b;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(b=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-48`),t[14]=b):b=t[14];let x;t[15]===i?x=t[16]:(x=(0,V.jsx)(`input`,{id:`nas-community`,type:`password`,autoComplete:`new-password`,value:i,onChange:y,placeholder:`Zugangsname (Community)`,className:b}),t[15]=i,t[16]=x);let S;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,V.jsx)(`label`,{htmlFor:`nas-adresse`,className:`sr-only`,children:`Adresse des NAS`}),t[17]=S):S=t[17];let C;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(C=e=>c(e.target.value),t[18]=C):C=t[18];let w=f.adresse?`Adresse (${f.adresse})`:`Adresse des NAS`,T;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(T=a(`h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]`,`min-w-0 flex-1 basis-40`),t[19]=T):T=t[19];let E;t[20]!==s||t[21]!==w?(E=(0,V.jsx)(`input`,{id:`nas-adresse`,autoComplete:`off`,value:s,onChange:C,placeholder:w,className:T}),t[20]=s,t[21]=w,t[22]=E):E=t[22];let D;t[23]!==i||t[24]!==r.isPending?(D=!i.trim()||r.isPending,t[23]=i,t[24]=r.isPending,t[25]=D):D=t[25];let O=r.isPending?`Prüft …`:`Verbindung testen und speichern`,k;t[26]!==D||t[27]!==O?(k=(0,V.jsx)(j,{type:`submit`,disabled:D,children:O}),t[26]=D,t[27]=O,t[28]=k):k=t[28];let A;t[29]!==E||t[30]!==k||t[31]!==_||t[32]!==x?(A=(0,V.jsxs)(`form`,{className:`flex flex-wrap gap-2`,onSubmit:_,children:[v,x,S,E,k]}),t[29]=E,t[30]=k,t[31]=_,t[32]=x,t[33]=A):A=t[33];let N;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,V.jsx)(`p`,{className:`text-xs text-text-3`,children:`Vor dem Speichern fragt der Homelab-Teil das NAS damit. Antwortet es nicht, wird nichts gespeichert. Der Zugangsname wird nie wieder angezeigt; die Adresse nur ändern, wenn sie von der angezeigten abweicht.`}),t[34]=N):N=t[34];let P;t[35]!==u||t[36]!==f.zugang||t[37]!==r?(P=f.zugang===`hinterlegt`&&(u?(0,V.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(j,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),d(!1)},children:`Wirklich entfernen?`}),(0,V.jsx)(j,{variant:`ghost`,size:`sm`,onClick:()=>d(!1),children:`Nein`})]}):(0,V.jsx)(j,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>d(!0),children:`Zugang entfernen`})),t[35]=u,t[36]=f.zugang,t[37]=r,t[38]=P):P=t[38];let F;return t[39]!==A||t[40]!==P||t[41]!==h?(F=(0,V.jsxs)(Q,{titel:`NAS-Platten (SNMP)`,children:[h,g,A,N,P]}),t[39]=A,t[40]=P,t[41]=h,t[42]=F):F=t[42],F}function we(e){let t=(0,z.c)(21),{h:n}=e,r=n.ausfuehrer,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,V.jsx)(`dt`,{className:`text-text-3`,children:`Ausführer`}),t[0]=i):i=t[0];let a=r.verbunden?`text-gruen-text`:`text-rot-text`,o=r.verbunden?`verbunden`:`meldet sich nicht`,s;t[1]===r.zuletzt?s=t[2]:(s=r.zuletzt?` · zuletzt ${k(new Date(r.zuletzt*1e3).toISOString()).toLowerCase()}`:``,t[1]=r.zuletzt,t[2]=s);let c;t[3]!==a||t[4]!==o||t[5]!==s?(c=(0,V.jsxs)(`dd`,{className:a,children:[o,s]}),t[3]=a,t[4]=o,t[5]=s,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,V.jsx)(`dt`,{className:`text-text-3`,children:`Modus`}),t[7]=l):l=t[7];let u=r.nur_lesen?`nur lesen — Updates sind gesperrt`:`voll: Snapshots, Sicherungen und Updates`,d;t[8]===u?d=t[9]:(d=(0,V.jsx)(`dd`,{className:`text-text-2`,children:u}),t[8]=u,t[9]=d);let f;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,V.jsx)(`dt`,{className:`text-text-3`,children:`Sicherungen`}),t[10]=f):f=t[10];let p=r.sicherung_speicher?`auf „${r.sicherung_speicher}“ (wo kein Snapshot geht)`:`kein Speicher gefunden`,m;t[11]===p?m=t[12]:(m=(0,V.jsx)(`dd`,{className:`text-text-2`,children:p}),t[11]=p,t[12]=m);let h;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,V.jsx)(`dt`,{className:`text-text-3`,children:`Wartezeit`}),t[13]=h):h=t[13];let g=n.karenz_h>0?`${n.karenz_h} Stunden nach einer Änderung am Update-Skript einer App`:`aus`,_;t[14]===g?_=t[15]:(_=(0,V.jsx)(`dd`,{className:`text-text-2`,children:g}),t[14]=g,t[15]=_);let v;return t[16]!==m||t[17]!==_||t[18]!==c||t[19]!==d?(v=(0,V.jsx)(Q,{titel:`Ausführer und Updates`,children:(0,V.jsxs)(`dl`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm`,children:[i,c,l,d,f,m,h,_]})}),t[16]=m,t[17]=_,t[18]=c,t[19]=d,t[20]=v):v=t[20],v}function Te(){let e=(0,z.c)(20),t=_().data,n=u().data,r=t?.rolle===`homelab`||!!(n?.eingerichtet&&n.erreichbar),i=A(r),a;if(!r){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,V.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht.`}),e[0]=t):t=e[0],a=t}else if(i.data){let t,n,o;e[4]===i.data?(t=e[5],n=e[6],o=e[7]):(t=(0,V.jsx)(xe,{h:i.data}),n=(0,V.jsx)(Se,{h:i.data}),o=(0,V.jsx)(Ce,{h:i.data}),e[4]=i.data,e[5]=t,e[6]=n,e[7]=o);let s;e[8]===r?s=e[9]:(s=(0,V.jsx)(Q,{titel:`Wartungsfenster und Regel je Gerät`,children:(0,V.jsx)(q,{aktiv:r})}),e[8]=r,e[9]=s);let c;e[10]===i.data?c=e[11]:(c=(0,V.jsx)(we,{h:i.data}),e[10]=i.data,e[11]=c);let l;e[12]!==t||e[13]!==n||e[14]!==o||e[15]!==s||e[16]!==c?(l=(0,V.jsxs)(V.Fragment,{children:[t,n,o,s,c]}),e[12]=t,e[13]=n,e[14]=o,e[15]=s,e[16]=c,e[17]=l):l=e[17],a=l}else{let t=i.error?.message,n;e[1]!==i.isPending||e[2]!==t?(n=(0,V.jsx)(ce,{laedt:i.isPending,fehler:t}),e[1]=i.isPending,e[2]=t,e[3]=n):n=e[3],a=n}let o;return e[18]===a?o=e[19]:(o=(0,V.jsx)($,{titel:`Homelab`,farbe:`homelab`,text:`Arcane und Docker, AdGuard, der Ausführer auf dem Proxmox-Host, Rückwege.`,children:a}),e[18]=a,e[19]=o),o}function Ee(){let e=(0,z.c)(4),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,V.jsx)(Q,{titel:`Wie selbstständig Lucy handelt`,children:(0,V.jsx)(te,{})}),e[0]=t):t=e[0];let n;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,V.jsx)(Q,{titel:`Offene Rückfragen`,children:(0,V.jsx)(N,{leerText:`Gerade wartet keine Rückfrage auf dich.`})}),e[1]=n):n=e[1];let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,V.jsx)(Q,{titel:`Zuletzt beantwortet`,children:(0,V.jsx)(I,{})}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,V.jsxs)($,{id:`lucy`,titel:`Lucy`,text:`Was sie aus eigenem Antrieb darf, ihre Rückfragen an dich und der Wochenbericht.`,children:[t,n,r,(0,V.jsx)(Q,{titel:`Wochenbericht`,children:(0,V.jsx)(re,{})})]}),e[3]=i):i=e[3],i}function De(){let e=(0,z.c)(20),t=b(!0),n=t.error?.message,r;e[0]!==t.data||e[1]!==t.isPending||e[2]!==n?(r={e:t.data,laedt:t.isPending,fehler:n},e[0]=t.data,e[1]=t.isPending,e[2]=n,e[3]=r):r=e[3];let i=r,a;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(a=[],e[4]=a):a=e[4],(0,B.useEffect)(Oe,a);let o,s;e[5]===i?(o=e[6],s=e[7]):(o=(0,V.jsx)(me,{...i}),s=(0,V.jsx)(_e,{...i}),e[5]=i,e[6]=o,e[7]=s);let c;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,V.jsx)(le,{offen:!0}),e[8]=c):c=e[8];let l;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,V.jsxs)(Q,{titel:`Hermes`,children:[(0,V.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-xl border border-white/12 bg-white/[0.04] px-4 text-[15px] font-semibold hover:border-white/20 hover:bg-white/[0.08]`,children:[(0,V.jsx)(F,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,V.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat, Sitzungen und Cron-Jobs verwaltet Hermes selbst. Es fragt nach seiner eigenen Anmeldung.`})]}),e[9]=l):l=e[9];let u;e[10]!==o||e[11]!==s?(u=(0,V.jsxs)($,{titel:`KI-Box`,farbe:`box`,text:`Wann sie sich aktualisiert, das Modell-Radar und Zugänge.`,children:[o,s,c,l]}),e[10]=o,e[11]=s,e[12]=u):u=e[12];let d,f;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,V.jsx)(Te,{}),f=(0,V.jsx)(Ee,{}),e[13]=d,e[14]=f):(d=e[13],f=e[14]);let p;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,V.jsx)($,{titel:`Meldungen`,text:`Telegram, Morgenmeldung und was sofort kommt.`,children:(0,V.jsx)(de,{})}),e[15]=p):p=e[15];let m;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,V.jsx)($,{titel:`Software-Stand`,text:`Welcher Stand auf beiden Instanzen läuft.`,children:(0,V.jsx)(be,{offen:!0})}),e[16]=m):m=e[16];let h;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,V.jsxs)(`p`,{className:`text-xs text-text-3 xl:col-span-2`,children:[`Logos der Dienste: `,(0,V.jsx)(`a`,{href:`https://selfh.st/icons`,target:`_blank`,rel:`noopener`,className:`underline-offset-4 hover:underline`,children:`selfh.st/icons`}),`, Lizenz CC BY 4.0. Die Marken gehören ihren Inhabern und dienen hier nur dem Wiedererkennen.`]}),e[17]=h):h=e[17];let g;return e[18]===u?g=e[19]:(g=(0,V.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[u,d,f,p,m,h]}),e[18]=u,e[19]=g),g}function Oe(){if(window.location.hash!==`#lucy`)return;let e=Ae;e();let t=[700,1800].map(t=>window.setTimeout(e,t));return()=>t.forEach(ke)}function ke(e){return window.clearTimeout(e)}function Ae(){return document.getElementById(`lucy`)?.scrollIntoView({block:`start`})}export{De as EinstellungenSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Handy-DAtqWcjC.js b/frontend/dist/assets/Handy-DBkH-dQc.js similarity index 97% rename from frontend/dist/assets/Handy-DAtqWcjC.js rename to frontend/dist/assets/Handy-DBkH-dQc.js index d5b06e3..ce11801 100644 --- a/frontend/dist/assets/Handy-DAtqWcjC.js +++ b/frontend/dist/assets/Handy-DBkH-dQc.js @@ -1 +1 @@ -import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{J as o,g as s,nt as c,y as l}from"./abfragen-pD_qBEtc.js";import{t as u}from"./button-BHVKhtQ6.js";import{Y as d,_t as f,f as p,ft as m,gt as h,lt as g,mt as _,pt as v,t as y,yt as b}from"./index-B_hvuxH0.js";var x={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};x.node;var S=r(x),C={name:`sparkles`,size:24,node:[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]],aliases:[`stars`]};C.node;var w=r(C),T={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};T.node;var E=r(T),D=i(),O=t(e(),1),k=n(),A={ok:{kreis:`bg-gruen/15 text-gruen ring-gruen/40`,titel:`text-foreground`,Zeichen:h},info:{kreis:`bg-gruen/15 text-gruen ring-gruen/40`,titel:`text-foreground`,Zeichen:h},wartung:{kreis:`bg-cyan/15 text-cyan ring-cyan/40`,titel:`text-foreground`,Zeichen:E},gelb:{kreis:`bg-bernstein/15 text-bernstein ring-bernstein/45`,titel:`text-bernstein`,Zeichen:f},rot:{kreis:`bg-rot/15 text-rot ring-rot/50`,titel:`text-rot-text`,Zeichen:g}};function j(){let e=(0,D.c)(5),[t,n]=(0,O.useState)(null),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=e=>{e.preventDefault(),n(e)},t=()=>n(null);return window.addEventListener(`beforeinstallprompt`,e),window.addEventListener(`appinstalled`,t),()=>{window.removeEventListener(`beforeinstallprompt`,e),window.removeEventListener(`appinstalled`,t)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,O.useEffect)(r,i);let a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>n(null),e[2]=a):a=e[2];let o;return e[3]===t?o=e[4]:(o=[t,a],e[3]=t,e[4]=o),o}var M={rot:`bg-rot`,gelb:`bg-bernstein`,info:`bg-cyan`};function N(e,t,n){return e.filter(e=>e.zustand!==`stumm`).map(e=>({id:`${t}:${e.id}`,stufe:e.stufe===`rot`?`rot`:`gelb`,titel:e.titel,text:n,to:t}))}function P(){let e=(0,D.c)(49),t=d(),n=c(),r=t.homelab.verbindung===`online`,i=s(r),f=l(r),h=o().data?.offen.length??0,[g,x]=j(),C,T,E,O,M,P,U;if(e[0]!==i.data?.wartung||e[1]!==i.data?.ziele||e[2]!==f.data?.hinweise||e[3]!==h||e[4]!==t.box.updates||e[5]!==t.box.verbindung||e[6]!==t.homelab.updates||e[7]!==t.homelab.verbindung||e[8]!==n.data?.hinweise||e[9]!==n.isError){let r=[...t.box.verbindung===`getrennt`&&n.isError?[`Die KI-Box`]:[],...t.homelab.verbindung===`getrennt`?[`Der Homelab-Teil`]:[]],o=(i.data?.ziele??[]).filter(H),s=new Set,c=[...N(n.data?.hinweise??[],`/box`,`KI-Box`),...N(f.data?.hinweise??[],`/homelab`,`Homelab`),...o.map(V)].filter(e=>!s.has(e.titel)&&s.add(e.titel)).sort(B),l=t.box.updates+t.homelab.updates;t.box.updates&&c.push({id:`upd:box`,stufe:`info`,titel:`${t.box.updates} ${t.box.updates===1?`Update`:`Updates`} bereit`,text:`KI-Box`,to:`/box/updates`}),t.homelab.updates&&c.push({id:`upd:lab`,stufe:`info`,titel:`${t.homelab.updates} ${t.homelab.updates===1?`Update`:`Updates`} bereit`,text:`Homelab`,to:`/homelab/updates`});let u=c.filter(z),d=y({getrennt:r,stumm:o.map(R),hinweiseRot:u.filter(L).length,hinweise:u.length,updates:l}),m=i.data?.wartung,g=m?.laeuft&&d.stufe!==`rot`?`wartung`:d.stufe,_=A[g],v=g===`wartung`?`Wartung läuft`:h&&d.stufe!==`rot`?`Lucy wartet auf dich`:d.titel,b=g===`wartung`?`Fenster ${m?.fenster??``} — Meldung am Ende.`:h?`${h===1?`Eine Rückfrage`:`${h} Rückfragen`}. ${d.text}`:d.text;M=`mx-auto flex w-full max-w-xl flex-col gap-4`;let x;e[17]===_.kreis?x=e[18]:(x=a(`flex size-20 shrink-0 items-center justify-center rounded-full ring-2 ring-inset`,_.kreis),e[17]=_.kreis,e[18]=x);let S;e[19]===_.Zeichen?S=e[20]:(S=(0,k.jsx)(_.Zeichen,{className:`size-9`,strokeWidth:1.8}),e[19]=_.Zeichen,e[20]=S);let w;e[21]!==x||e[22]!==S?(w=(0,k.jsx)(`span`,{"aria-hidden":!0,className:x,children:S}),e[21]=x,e[22]=S,e[23]=w):w=e[23];let D;e[24]===_.titel?D=e[25]:(D=a(`text-[26px] leading-tight font-semibold`,_.titel),e[24]=_.titel,e[25]=D);let j=(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,k.jsx)(`h2`,{className:D,children:v}),(0,k.jsx)(`p`,{className:`m-0 text-[15px] text-text-2`,children:b})]});e[26]!==j||e[27]!==w?(P=(0,k.jsxs)(`section`,{"aria-label":`Ampel`,className:`flaeche flex items-center gap-5 rounded-3xl p-5`,children:[w,j]}),e[26]=j,e[27]=w,e[28]=P):P=e[28],e[29]===h?U=e[30]:(U=h>0&&(0,k.jsxs)(`section`,{"aria-label":`Rückfragen`,id:`rueckfragen`,className:`flaeche flex flex-col gap-3 rounded-3xl p-5`,children:[(0,k.jsx)(`h2`,{className:`text-[17px] font-semibold`,children:h===1?`Eine Rückfrage an dich`:`${h} Rückfragen an dich`}),(0,k.jsx)(p,{})]}),e[29]=h,e[30]=U),C=`Braucht Aufmerksamkeit`,T=`flaeche flex flex-col gap-3 rounded-3xl p-5`,e[31]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,k.jsx)(`h2`,{className:`text-[17px] font-semibold`,children:`Braucht Aufmerksamkeit`}),e[31]=E):E=e[31],O=c.length===0?(0,k.jsx)(`p`,{className:`m-0 text-[15px] text-text-2`,children:`Nichts — alles läuft, und nichts wartet auf dich.`}):(0,k.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:c.map(I)}),e[0]=i.data?.wartung,e[1]=i.data?.ziele,e[2]=f.data?.hinweise,e[3]=h,e[4]=t.box.updates,e[5]=t.box.verbindung,e[6]=t.homelab.updates,e[7]=t.homelab.verbindung,e[8]=n.data?.hinweise,e[9]=n.isError,e[10]=C,e[11]=T,e[12]=E,e[13]=O,e[14]=M,e[15]=P,e[16]=U}else C=e[10],T=e[11],E=e[12],O=e[13],M=e[14],P=e[15],U=e[16];let W;e[32]!==C||e[33]!==T||e[34]!==E||e[35]!==O?(W=(0,k.jsxs)(`section`,{"aria-label":C,className:T,children:[E,O]}),e[32]=C,e[33]=T,e[34]=E,e[35]=O,e[36]=W):W=e[36];let G;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(G=[{to:`/`,label:`Übersicht`,Zeichen:v},{to:`/box`,label:`KI-Box`,Zeichen:_},{to:`/homelab`,label:`Homelab`,Zeichen:_},{to:`/homelab/updates`,label:`Updates`,Zeichen:m}],e[37]=G):G=e[37];let K;e[38]===Symbol.for(`react.memo_cache_sentinel`)?(K=G.map(F),e[38]=K):K=e[38];let q;e[39]===Symbol.for(`react.memo_cache_sentinel`)?(q=(0,k.jsxs)(`nav`,{"aria-label":`Weiter`,className:`grid grid-cols-2 gap-2`,children:[K,(0,k.jsxs)(b,{to:`/einstellungen`,hash:`lucy`,className:`flaeche-innen col-span-2 flex h-14 items-center gap-2.5 rounded-2xl px-4 text-[15px] font-medium`,children:[(0,k.jsx)(w,{className:`size-[18px] text-text-3`,"aria-hidden":!0}),`Lucys Freiheiten und Wochenbericht`]})]}),e[39]=q):q=e[39];let J;e[40]!==g||e[41]!==x?(J=g&&(0,k.jsxs)(u,{variant:`outline`,className:`self-start`,onClick:()=>{g.prompt(),x()},children:[(0,k.jsx)(S,{className:`size-4`,"aria-hidden":!0}),` Als App auf dieses Gerät legen`]}),e[40]=g,e[41]=x,e[42]=J):J=e[42];let Y;return e[43]!==J||e[44]!==M||e[45]!==P||e[46]!==U||e[47]!==W?(Y=(0,k.jsxs)(`div`,{className:M,children:[P,U,W,q,J]}),e[43]=J,e[44]=M,e[45]=P,e[46]=U,e[47]=W,e[48]=Y):Y=e[48],Y}function F(e){return(0,k.jsxs)(b,{to:e.to,className:`flaeche-innen flex h-14 items-center gap-2.5 rounded-2xl px-4 text-[15px] font-medium`,children:[(0,k.jsx)(e.Zeichen,{className:`size-[18px] text-text-3`,"aria-hidden":!0}),e.label]},e.to)}function I(e){return(0,k.jsx)(`li`,{className:`border-t border-white/[0.06] first:border-t-0`,children:(0,k.jsxs)(b,{to:e.to,className:`flex items-center gap-3 py-3`,children:[(0,k.jsx)(`span`,{"aria-hidden":!0,className:a(`size-2.5 shrink-0 rounded-full`,M[e.stufe])}),(0,k.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,k.jsx)(`span`,{className:`text-[15px] break-words`,children:e.titel}),e.text&&(0,k.jsx)(`span`,{className:`text-xs text-text-3`,children:e.text})]})]})},e.id)}function L(e){return e.stufe===`rot`}function R(e){return e.name}function z(e){return e.stufe!==`info`}function B(e,t){return(e.stufe===`rot`?0:1)-(t.stufe===`rot`?0:1)}function V(e){return{id:`stumm:${e.id}`,stufe:`rot`,titel:`${e.name} antwortet nicht`,text:`Homelab`,to:`/homelab`}}function H(e){return e.erreichbar===!1}export{P as HandySeite}; \ No newline at end of file +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{Z as o,_ as s,at as c,b as l}from"./abfragen-CDCgpAto.js";import{t as u}from"./button-BHVKhtQ6.js";import{Y as d,_t as f,f as p,ft as m,gt as h,lt as g,mt as _,pt as v,t as y,yt as b}from"./index-CuG_RlEw.js";var x={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};x.node;var S=r(x),C={name:`sparkles`,size:24,node:[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]],aliases:[`stars`]};C.node;var w=r(C),T={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};T.node;var E=r(T),D=i(),O=t(e(),1),k=n(),A={ok:{kreis:`bg-gruen/15 text-gruen ring-gruen/40`,titel:`text-foreground`,Zeichen:h},info:{kreis:`bg-gruen/15 text-gruen ring-gruen/40`,titel:`text-foreground`,Zeichen:h},wartung:{kreis:`bg-cyan/15 text-cyan ring-cyan/40`,titel:`text-foreground`,Zeichen:E},gelb:{kreis:`bg-bernstein/15 text-bernstein ring-bernstein/45`,titel:`text-bernstein`,Zeichen:f},rot:{kreis:`bg-rot/15 text-rot ring-rot/50`,titel:`text-rot-text`,Zeichen:g}};function j(){let e=(0,D.c)(5),[t,n]=(0,O.useState)(null),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=e=>{e.preventDefault(),n(e)},t=()=>n(null);return window.addEventListener(`beforeinstallprompt`,e),window.addEventListener(`appinstalled`,t),()=>{window.removeEventListener(`beforeinstallprompt`,e),window.removeEventListener(`appinstalled`,t)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,O.useEffect)(r,i);let a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>n(null),e[2]=a):a=e[2];let o;return e[3]===t?o=e[4]:(o=[t,a],e[3]=t,e[4]=o),o}var M={rot:`bg-rot`,gelb:`bg-bernstein`,info:`bg-cyan`};function N(e,t,n){return e.filter(e=>e.zustand!==`stumm`).map(e=>({id:`${t}:${e.id}`,stufe:e.stufe===`rot`?`rot`:`gelb`,titel:e.titel,text:n,to:t}))}function P(){let e=(0,D.c)(49),t=d(),n=c(),r=t.homelab.verbindung===`online`,i=s(r),f=l(r),h=o().data?.offen.length??0,[g,x]=j(),C,T,E,O,M,P,U;if(e[0]!==i.data?.wartung||e[1]!==i.data?.ziele||e[2]!==f.data?.hinweise||e[3]!==h||e[4]!==t.box.updates||e[5]!==t.box.verbindung||e[6]!==t.homelab.updates||e[7]!==t.homelab.verbindung||e[8]!==n.data?.hinweise||e[9]!==n.isError){let r=[...t.box.verbindung===`getrennt`&&n.isError?[`Die KI-Box`]:[],...t.homelab.verbindung===`getrennt`?[`Der Homelab-Teil`]:[]],o=(i.data?.ziele??[]).filter(H),s=new Set,c=[...N(n.data?.hinweise??[],`/box`,`KI-Box`),...N(f.data?.hinweise??[],`/homelab`,`Homelab`),...o.map(V)].filter(e=>!s.has(e.titel)&&s.add(e.titel)).sort(B),l=t.box.updates+t.homelab.updates;t.box.updates&&c.push({id:`upd:box`,stufe:`info`,titel:`${t.box.updates} ${t.box.updates===1?`Update`:`Updates`} bereit`,text:`KI-Box`,to:`/box/updates`}),t.homelab.updates&&c.push({id:`upd:lab`,stufe:`info`,titel:`${t.homelab.updates} ${t.homelab.updates===1?`Update`:`Updates`} bereit`,text:`Homelab`,to:`/homelab/updates`});let u=c.filter(z),d=y({getrennt:r,stumm:o.map(R),hinweiseRot:u.filter(L).length,hinweise:u.length,updates:l}),m=i.data?.wartung,g=m?.laeuft&&d.stufe!==`rot`?`wartung`:d.stufe,_=A[g],v=g===`wartung`?`Wartung läuft`:h&&d.stufe!==`rot`?`Lucy wartet auf dich`:d.titel,b=g===`wartung`?`Fenster ${m?.fenster??``} — Meldung am Ende.`:h?`${h===1?`Eine Rückfrage`:`${h} Rückfragen`}. ${d.text}`:d.text;M=`mx-auto flex w-full max-w-xl flex-col gap-4`;let x;e[17]===_.kreis?x=e[18]:(x=a(`flex size-20 shrink-0 items-center justify-center rounded-full ring-2 ring-inset`,_.kreis),e[17]=_.kreis,e[18]=x);let S;e[19]===_.Zeichen?S=e[20]:(S=(0,k.jsx)(_.Zeichen,{className:`size-9`,strokeWidth:1.8}),e[19]=_.Zeichen,e[20]=S);let w;e[21]!==x||e[22]!==S?(w=(0,k.jsx)(`span`,{"aria-hidden":!0,className:x,children:S}),e[21]=x,e[22]=S,e[23]=w):w=e[23];let D;e[24]===_.titel?D=e[25]:(D=a(`text-[26px] leading-tight font-semibold`,_.titel),e[24]=_.titel,e[25]=D);let j=(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,k.jsx)(`h2`,{className:D,children:v}),(0,k.jsx)(`p`,{className:`m-0 text-[15px] text-text-2`,children:b})]});e[26]!==j||e[27]!==w?(P=(0,k.jsxs)(`section`,{"aria-label":`Ampel`,className:`flaeche flex items-center gap-5 rounded-3xl p-5`,children:[w,j]}),e[26]=j,e[27]=w,e[28]=P):P=e[28],e[29]===h?U=e[30]:(U=h>0&&(0,k.jsxs)(`section`,{"aria-label":`Rückfragen`,id:`rueckfragen`,className:`flaeche flex flex-col gap-3 rounded-3xl p-5`,children:[(0,k.jsx)(`h2`,{className:`text-[17px] font-semibold`,children:h===1?`Eine Rückfrage an dich`:`${h} Rückfragen an dich`}),(0,k.jsx)(p,{})]}),e[29]=h,e[30]=U),C=`Braucht Aufmerksamkeit`,T=`flaeche flex flex-col gap-3 rounded-3xl p-5`,e[31]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,k.jsx)(`h2`,{className:`text-[17px] font-semibold`,children:`Braucht Aufmerksamkeit`}),e[31]=E):E=e[31],O=c.length===0?(0,k.jsx)(`p`,{className:`m-0 text-[15px] text-text-2`,children:`Nichts — alles läuft, und nichts wartet auf dich.`}):(0,k.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:c.map(I)}),e[0]=i.data?.wartung,e[1]=i.data?.ziele,e[2]=f.data?.hinweise,e[3]=h,e[4]=t.box.updates,e[5]=t.box.verbindung,e[6]=t.homelab.updates,e[7]=t.homelab.verbindung,e[8]=n.data?.hinweise,e[9]=n.isError,e[10]=C,e[11]=T,e[12]=E,e[13]=O,e[14]=M,e[15]=P,e[16]=U}else C=e[10],T=e[11],E=e[12],O=e[13],M=e[14],P=e[15],U=e[16];let W;e[32]!==C||e[33]!==T||e[34]!==E||e[35]!==O?(W=(0,k.jsxs)(`section`,{"aria-label":C,className:T,children:[E,O]}),e[32]=C,e[33]=T,e[34]=E,e[35]=O,e[36]=W):W=e[36];let G;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(G=[{to:`/`,label:`Übersicht`,Zeichen:v},{to:`/box`,label:`KI-Box`,Zeichen:_},{to:`/homelab`,label:`Homelab`,Zeichen:_},{to:`/homelab/updates`,label:`Updates`,Zeichen:m}],e[37]=G):G=e[37];let K;e[38]===Symbol.for(`react.memo_cache_sentinel`)?(K=G.map(F),e[38]=K):K=e[38];let q;e[39]===Symbol.for(`react.memo_cache_sentinel`)?(q=(0,k.jsxs)(`nav`,{"aria-label":`Weiter`,className:`grid grid-cols-2 gap-2`,children:[K,(0,k.jsxs)(b,{to:`/einstellungen`,hash:`lucy`,className:`flaeche-innen col-span-2 flex h-14 items-center gap-2.5 rounded-2xl px-4 text-[15px] font-medium`,children:[(0,k.jsx)(w,{className:`size-[18px] text-text-3`,"aria-hidden":!0}),`Lucys Freiheiten und Wochenbericht`]})]}),e[39]=q):q=e[39];let J;e[40]!==g||e[41]!==x?(J=g&&(0,k.jsxs)(u,{variant:`outline`,className:`self-start`,onClick:()=>{g.prompt(),x()},children:[(0,k.jsx)(S,{className:`size-4`,"aria-hidden":!0}),` Als App auf dieses Gerät legen`]}),e[40]=g,e[41]=x,e[42]=J):J=e[42];let Y;return e[43]!==J||e[44]!==M||e[45]!==P||e[46]!==U||e[47]!==W?(Y=(0,k.jsxs)(`div`,{className:M,children:[P,U,W,q,J]}),e[43]=J,e[44]=M,e[45]=P,e[46]=U,e[47]=W,e[48]=Y):Y=e[48],Y}function F(e){return(0,k.jsxs)(b,{to:e.to,className:`flaeche-innen flex h-14 items-center gap-2.5 rounded-2xl px-4 text-[15px] font-medium`,children:[(0,k.jsx)(e.Zeichen,{className:`size-[18px] text-text-3`,"aria-hidden":!0}),e.label]},e.to)}function I(e){return(0,k.jsx)(`li`,{className:`border-t border-white/[0.06] first:border-t-0`,children:(0,k.jsxs)(b,{to:e.to,className:`flex items-center gap-3 py-3`,children:[(0,k.jsx)(`span`,{"aria-hidden":!0,className:a(`size-2.5 shrink-0 rounded-full`,M[e.stufe])}),(0,k.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,k.jsx)(`span`,{className:`text-[15px] break-words`,children:e.titel}),e.text&&(0,k.jsx)(`span`,{className:`text-xs text-text-3`,children:e.text})]})]})},e.id)}function L(e){return e.stufe===`rot`}function R(e){return e.name}function z(e){return e.stufe!==`info`}function B(e,t){return(e.stufe===`rot`?0:1)-(t.stufe===`rot`?0:1)}function V(e){return{id:`stumm:${e.id}`,stufe:`rot`,titel:`${e.name} antwortet nicht`,text:`Homelab`,to:`/homelab`}}function H(e){return e.erreichbar===!1}export{P as HandySeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Homelab-B_yJb4MW.js b/frontend/dist/assets/Homelab-B_yJb4MW.js new file mode 100644 index 0000000..72dffa0 --- /dev/null +++ b/frontend/dist/assets/Homelab-B_yJb4MW.js @@ -0,0 +1 @@ +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{$ as o,B as s,C as c,Ct as l,D as u,E as d,Q as f,S as p,U as m,V as h,_ as g,b as _,et as v,gt as y,k as b,nt as x,r as S,st as C,v as w,vt as T,x as E,z as D}from"./abfragen-CDCgpAto.js";import{t as O}from"./chevron-right-DF8ikrVh.js";import{n as k,t as A}from"./undo-2-B8COJmAr.js";import{t as j}from"./button-BHVKhtQ6.js";import{$ as M,A as N,D as P,H as F,M as I,O as L,Q as R,R as z,U as B,V,X as H,Z as U,at as W,bt as ee,c as G,ct as K,et as te,gt as q,h as J,ht as Y,i as X,it as ne,j as re,k as ie,m as Z,n as ae,nt as oe,ot as se,r as ce,rt as le,st as ue,tt as de,ut as fe,vt as pe,yt as me}from"./index-CuG_RlEw.js";import{i as he,n as ge,r as _e,t as ve}from"./Plattenliste-g8leg5Tm.js";var ye={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};ye.node;var be=r(ye),xe={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};xe.node;var Se=r(xe),Ce={name:`skip-forward`,size:24,node:[[`path`,{d:`M21 4v16`,key:`7j8fe9`}],[`path`,{d:`M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z`,key:`zs4d6`}]]};Ce.node;var we=r(Ce),Q=i(),$=n(),Te={neu:{text:`Update verfügbar`,klasse:`text-cyan-text`},lokal:{text:`lokal gebaut`,klasse:`text-text-3`},aktuell:{text:`aktuell`,klasse:`text-text-3`},unbekannt:{text:`Update-Stand unklar`,klasse:`text-bernstein`}};function Ee(e){return e.zustand===`restarting`||e.gesund===!1?`rot`:e.zustand===`running`?`ok`:`aus`}function De(e){return e.gesund===!1?`ungesund`:e.zustand===`restarting`?`startet immer wieder neu`:e.zustand===`running`?e.gesund?`läuft, gesund`:`läuft`:e.zustand===`exited`?`beendet`:e.zustand===`paused`?`angehalten`:e.zustand}var Oe=e=>(e??``).split(`/`).at(-1)?.split(`:`)[0]??``;function ke(e){let t=e.luecken;return!t||!t.kritisch&&!t.hoch?null:`${[t.kritisch?`${t.kritisch} kritische`:null,t.hoch?`${t.hoch} hohe`:null].filter(Boolean).join(`, `)} Lücken`}function Ae(e){let t=(0,Q.c)(42),{c:n}=e,r=Te[n.update]??Te.unbekannt,i;t[0]===n?i=t[1]:(i=ke(n),t[0]=n,t[1]=i);let o=i,s;t[2]!==n.dienst||t[3]!==n.image?(s=V({art:`container`,name:n.dienst??Oe(n.image)}),t[2]=n.dienst,t[3]=n.image,t[4]=s):s=t[4];let c;t[5]===n?c=t[6]:(c=Ee(n),t[5]=n,t[6]=c);let l;t[7]!==s||t[8]!==c?(l=(0,$.jsx)(z,{bild:s,groesse:`sm`,punkt:c}),t[7]=s,t[8]=c,t[9]=l):l=t[9];let u;t[10]===n.name?u=t[11]:(u=(0,$.jsx)(`span`,{className:`truncate text-[14.5px] font-medium`,children:n.name}),t[10]=n.name,t[11]=u);let d;t[12]===n.image?d=t[13]:(d=(0,$.jsx)(`span`,{className:`truncate text-[12.5px] text-text-3`,children:n.image}),t[12]=n.image,t[13]=d);let f;t[14]!==n.luecken?.kritisch||t[15]!==o?(f=o&&(0,$.jsx)(`span`,{className:a(`truncate text-[12.5px]`,n.luecken?.kritisch?`text-rot-text`:`text-bernstein`),children:o}),t[14]=n.luecken?.kritisch,t[15]=o,t[16]=f):f=t[16];let p;t[17]!==u||t[18]!==d||t[19]!==f?(p=(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[u,d,f]}),t[17]=u,t[18]=d,t[19]=f,t[20]=p):p=t[20];let m;t[21]===n?m=t[22]:(m=Ee(n)===`rot`?`text-rot-text`:`text-text-2`,t[21]=n,t[22]=m);let h;t[23]===m?h=t[24]:(h=a(`text-[13px]`,m),t[23]=m,t[24]=h);let g;t[25]===n?g=t[26]:(g=De(n),t[25]=n,t[26]=g);let _;t[27]!==h||t[28]!==g?(_=(0,$.jsx)(`span`,{className:h,children:g}),t[27]=h,t[28]=g,t[29]=_):_=t[29];let v;t[30]===r.klasse?v=t[31]:(v=a(`text-[12px]`,r.klasse),t[30]=r.klasse,t[31]=v);let y;t[32]!==v||t[33]!==r.text?(y=(0,$.jsx)(`span`,{className:v,children:r.text}),t[32]=v,t[33]=r.text,t[34]=y):y=t[34];let b;t[35]!==_||t[36]!==y?(b=(0,$.jsxs)(`span`,{className:`flex shrink-0 flex-col items-end text-right`,children:[_,y]}),t[35]=_,t[36]=y,t[37]=b):b=t[37];let x;return t[38]!==b||t[39]!==l||t[40]!==p?(x=(0,$.jsxs)(`li`,{className:`flex min-w-0 items-center gap-3 border-t border-white/[0.06] py-2.5 first:border-t-0`,children:[l,p,b]}),t[38]=b,t[39]=l,t[40]=p,t[41]=x):x=t[41],x}function je(e){let t=(0,Q.c)(4),{lage:n}=e;if(!n.verfuegbar||n.stacks.length===0)return null;let r;t[0]===n.stacks?r=t[1]:(r=n.stacks.map(Me),t[0]=n.stacks,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,$.jsx)(`div`,{className:`grid gap-3 md:grid-cols-2 2xl:grid-cols-3`,children:r}),t[2]=r,t[3]=i),i}function Me(e){let t=e.container.filter(Fe).length,n=e.container.filter(Pe).length;return(0,$.jsxs)(`section`,{"aria-label":`Stack ${e.name}`,className:`flaeche-innen flex min-w-0 flex-col rounded-2xl px-4 py-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 pb-1`,children:[(0,$.jsx)(`h3`,{className:`m-0 truncate text-[15px] font-semibold`,children:e.name}),(0,$.jsxs)(`span`,{className:`shrink-0 text-[12.5px] text-text-3`,children:[t,` von `,e.container.length,` laufen`,n?` · ${n} mit Update`:``]})]}),(0,$.jsx)(`ul`,{className:`m-0 list-none p-0`,children:e.container.map(Ne)})]},e.name)}function Ne(e){return(0,$.jsx)(Ae,{c:e},e.id)}function Pe(e){return e.update===`neu`}function Fe(e){return e.zustand===`running`}var Ie=`md:grid-cols-[minmax(0,1.35fr)_110px_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,1fr)_90px]`,Le=e=>(e/1e9).toFixed(1).replace(`.`,`,`);function Re(e){let t=(0,Q.c)(20),{wert:n,gelb:r,rot:i,zusatz:o,unter:s}=e;if(n==null){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let c=n>=i?`var(--rot)`:n>=r?`var(--bernstein)`:`color-mix(in srgb, var(--lab) 80%, transparent)`,l=n>=i?`text-rot-text`:n>=r?`text-bernstein`:`text-text-2`,u;t[1]===l?u=t[2]:(u=a(`ziffern text-sm`,l),t[1]=l,t[2]=u);let d;t[3]===n?d=t[4]:(d=Math.round(n),t[3]=n,t[4]=d);let f;t[5]===o?f=t[6]:(f=o&&(0,$.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,o]}),t[5]=o,t[6]=f);let p;t[7]!==u||t[8]!==d||t[9]!==f?(p=(0,$.jsxs)(`span`,{className:u,children:[d,` %`,f]}),t[7]=u,t[8]=d,t[9]=f,t[10]=p):p=t[10];let m=`${Math.min(100,Math.max(2,n))}%`,h;t[11]!==c||t[12]!==m?(h=(0,$.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,$.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:m,background:c}})}),t[11]=c,t[12]=m,t[13]=h):h=t[13];let g;t[14]===s?g=t[15]:(g=s&&(0,$.jsx)(`span`,{className:a(`text-xs`,P[s.stufe]),children:s.text}),t[14]=s,t[15]=g);let _;return t[16]!==p||t[17]!==h||t[18]!==g?(_=(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1.5`,children:[p,h,g]}),t[16]=p,t[17]=h,t[18]=g,t[19]=_):_=t[19],_}function ze(e){if(e.erreichbar===!1)return 0;let t=ne(e);return t!==null&&t>=.8?1:e.art===`proxmox-host`?2:3}function Be(e){let t=(0,Q.c)(4),{ziele:n,messwerte:r}=e,i;if(t[0]!==r||t[1]!==n){let e=new Map((r??[]).map(Ue)),o=new Map((r??[]).map(He)),s=[...n].sort(Ve),c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,$.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,Ie),children:[(0,$.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Netz`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Platte`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`})]}),t[3]=c):c=t[3],i=(0,$.jsxs)(`div`,{role:`table`,"aria-label":`Zustand der Geräte`,className:`flex flex-col`,children:[c,s.map(t=>{let n=e.get(t.id),r=n?.platte??(ne(t)===null?null:ne(t)*100),i=n?.ram_used&&n.ram_total?`${Le(n.ram_used)} / ${Le(n.ram_total)} GB`:void 0;return(0,$.jsxs)(`div`,{id:`geraet-${t.id}`,role:`row`,className:a(`grid scroll-mt-24 grid-cols-2 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3 md:items-center`,Ie),children:[(0,$.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-3 md:col-span-1`,children:[(0,$.jsx)(z,{bild:V(t),groesse:`sm`,punkt:t.erreichbar===!1?`rot`:t.erreichbar?`ok`:null}),(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(me,{to:`/homelab/monitoring`,hash:t.id,className:`text-[15px] font-semibold break-words hover:text-lab-text`,children:t.name}),(0,$.jsxs)(`span`,{className:`flex flex-wrap gap-x-2 text-[13px] text-text-3`,children:[U(t)!==t.name&&(0,$.jsx)(`span`,{children:U(t)}),(0,$.jsx)(me,{to:`/homelab/protokoll`,hash:t.id,className:`text-lab-text hover:underline`,children:`Zeitleiste`})]})]})]}),(0,$.jsxs)(`span`,{role:`cell`,className:a(`flex items-center gap-1.5 text-[13px]`,t.erreichbar===!1?`text-rot-text`:`text-text-3`),children:[t.erreichbar!==null&&(0,$.jsx)(`span`,{"aria-hidden":!0,className:a(`size-1.5 rounded-full`,t.erreichbar?`bg-gruen`:`bg-rot`)}),t.erreichbar===null?`–`:t.erreichbar?`erreichbar`:`antwortet nicht`]}),(0,$.jsxs)(`span`,{role:`cell`,children:[(0,$.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`CPU `}),(0,$.jsx)(Re,{wert:n?.cpu,gelb:85,rot:95})]}),(0,$.jsxs)(`span`,{role:`cell`,children:[(0,$.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Speicher `}),(0,$.jsx)(Re,{wert:n?.ram,gelb:85,rot:95,zusatz:i})]}),(0,$.jsxs)(`span`,{role:`cell`,children:[(0,$.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Platte `}),(0,$.jsx)(Re,{wert:r,gelb:80,rot:90,unter:L(o.get(t.id))})]}),(0,$.jsxs)(`span`,{role:`cell`,className:`ziffern text-sm text-text-2`,children:[(0,$.jsx)(`span`,{className:`font-sans text-xs text-text-3 md:hidden`,children:`Läuft seit `}),I(n?.uptime_s)]})]},t.id)})]}),t[0]=r,t[1]=n,t[2]=i}else i=t[2];return i}function Ve(e,t){return ze(e)-ze(t)}function He(e){return[e.id,e.prognose?.platte]}function Ue(e){return[e.id,e.aktuell]}function We(e){let t=(0,Q.c)(15),{lage:n,ziele:r,imUpdate:i,onAnsehen:a,onGeraet:o}=e,s=n.art,c=n.oben,l=n.mitte,u=n.unten,d=n.ziel!==null,f;if(t[0]!==i||t[1]!==o||t[2]!==r){let e;t[4]!==i||t[5]!==o?(e=e=>{let t=de(e,i.has(e.id)),n=R(e.kennzahl);return(0,$.jsx)(ge,{bild:V(e),name:M(e),wert:t.wert,zustand:t.zustand,zahl:n?{text:n,stufe:e.kennzahl?.stufe}:null,onClick:()=>o(e,t.zustand===`info`)},e.id)},t[4]=i,t[5]=o,t[6]=e):e=t[6],f=r.map(e),t[0]=i,t[1]=o,t[2]=r,t[3]=f}else f=t[3];let p;return t[7]!==n.art||t[8]!==n.mitte||t[9]!==n.oben||t[10]!==n.unten||t[11]!==a||t[12]!==d||t[13]!==f?(p=(0,$.jsx)(_e,{art:s,oben:c,mitte:l,unten:u,aktiv:d,onAnsehen:a,label:`Lage im Homelab`,children:f}),t[7]=n.art,t[8]=n.mitte,t[9]=n.oben,t[10]=n.unten,t[11]=a,t[12]=d,t[13]=f,t[14]=p):p=t[14],p}var Ge=t(e(),1),Ke={skript:`Updates über das Community-Script`,"eigene-oberflaeche":`Updates über die eigene Oberfläche der App`,pakete:`Updates über die Pakete im Gast`};function qe(e){let t=(0,Q.c)(60),{g:n,gesperrt:r,onWahl:i}=e,a=n.app?.kennung??n.hostname??n.name,o;t[0]!==n.art||t[1]!==a?(o=V({art:n.art,name:a}),t[0]=n.art,t[1]=a,t[2]=o):o=t[2];let s=o,c=n.app?`${n.app.name}${n.app.quelle?` (GitHub ${n.app.quelle})`:``}`:`App unbekannt`,l=n.app?Ke[n.app.weg]??n.app.weg:null,u=n.app?.adresse?`Weboberfläche ${n.app.adresse} wird geprüft`:n.app?`Weboberfläche nicht gefunden, keine Webprüfung`:null,d;t[3]!==c||t[4]!==l||t[5]!==u?(d=[c,l,u].filter(Boolean),t[3]=c,t[4]=l,t[5]=u,t[6]=d):d=t[6];let f=d,p=n.status===`running`?`ok`:`aus`,m;t[7]!==s||t[8]!==p?(m=(0,$.jsx)(z,{bild:s,groesse:`md`,punkt:p}),t[7]=s,t[8]=p,t[9]=m):m=t[9];let h;t[10]===n.name?h=t[11]:(h=(0,$.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[10]=n.name,t[11]=h);let g=n.art===`container`?`Container`:`VM`,_=n.hostname&&n.hostname!==n.name?` · „${n.hostname}“`:``,v;t[12]===n.erstmals?v=t[13]:(v=n.erstmals?` · entdeckt ${T(new Date(n.erstmals*1e3).toISOString()).toLowerCase()}`:``,t[12]=n.erstmals,t[13]=v);let y;t[14]!==n.vmid||t[15]!==g||t[16]!==_||t[17]!==v?(y=(0,$.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[g,` `,n.vmid,_,v]}),t[14]=n.vmid,t[15]=g,t[16]=_,t[17]=v,t[18]=y):y=t[18];let b;t[19]!==y||t[20]!==h?(b=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[h,y]}),t[19]=y,t[20]=h,t[21]=b):b=t[21];let x;t[22]!==b||t[23]!==m?(x=(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[m,b]}),t[22]=b,t[23]=m,t[24]=x):x=t[24];let S;t[25]===f?S=t[26]:(S=f.map(Je),t[25]=f,t[26]=S);let C;t[27]!==n.community_script||t[28]!==n.freigegeben?(C=n.freigegeben&&(0,$.jsxs)(`li`,{children:[`Schon freigegeben (Etikett `,n.community_script?`community-script`:`watcher`,`).`]}),t[27]=n.community_script,t[28]=n.freigegeben,t[29]=C):C=t[29];let w;t[30]===n.ohne_sicherung?w=t[31]:(w=n.ohne_sicherung&&(0,$.jsx)(`li`,{className:`text-bernstein`,children:`In keinem Sicherungsauftrag — in Proxmox: Rechenzentrum → Backup → den Auftrag bearbeiten.`}),t[30]=n.ohne_sicherung,t[31]=w);let E;t[32]!==S||t[33]!==C||t[34]!==w?(E=(0,$.jsxs)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 text-sm text-text-2`,children:[S,C,w]}),t[32]=S,t[33]=C,t[34]=w,t[35]=E):E=t[35];let D;t[36]!==n.ausgeschlossen||t[37]!==n.freigegeben||t[38]!==r||t[39]!==i?(D=!n.freigegeben&&!n.ausgeschlossen&&(0,$.jsx)(j,{size:`sm`,disabled:r,onClick:()=>i(`freigeben`),children:`Für Updates freigeben`}),t[36]=n.ausgeschlossen,t[37]=n.freigegeben,t[38]=r,t[39]=i,t[40]=D):D=t[40];let O=n.freigegeben?`default`:`outline`,k;t[41]===i?k=t[42]:(k=()=>i(`beobachten`),t[41]=i,t[42]=k);let A=n.freigegeben?`Übernehmen`:`Nur beobachten`,M;t[43]!==r||t[44]!==O||t[45]!==k||t[46]!==A?(M=(0,$.jsx)(j,{variant:O,size:`sm`,disabled:r,onClick:k,children:A}),t[43]=r,t[44]=O,t[45]=k,t[46]=A,t[47]=M):M=t[47];let N;t[48]!==n.ausgeschlossen||t[49]!==r||t[50]!==i?(N=!n.ausgeschlossen&&(0,$.jsx)(j,{variant:`ghost`,size:`sm`,disabled:r,onClick:()=>i(`ausschliessen`),children:`Nicht anfassen`}),t[48]=n.ausgeschlossen,t[49]=r,t[50]=i,t[51]=N):N=t[51];let P;t[52]!==D||t[53]!==M||t[54]!==N?(P=(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[D,M,N]}),t[52]=D,t[53]=M,t[54]=N,t[55]=P):P=t[55];let F;return t[56]!==x||t[57]!==E||t[58]!==P?(F=(0,$.jsxs)(`li`,{className:`flaeche-innen flex flex-col gap-3 rounded-2xl p-4`,children:[x,E,P]}),t[56]=x,t[57]=E,t[58]=P,t[59]=F):F=t[59],F}function Je(e){return(0,$.jsx)(`li`,{children:e},e)}var Ye={freigeben:{titel:`Für Updates freigeben?`,text:`Der Orchestrator setzt in Proxmox das Etikett „watcher“. Danach darf er dort Snapshots anlegen und Updates einspielen — immer erst nach deinem Klick, mit Snapshot vorher und Rückweg bei Rot.`,knopf:`Freigeben`},beobachten:{titel:`Nur beobachten?`,text:``,knopf:`Übernehmen`},ausschliessen:{titel:`Nicht anfassen?`,text:`Der Orchestrator setzt in Proxmox das Etikett „watcher-aus“ und lässt das Gerät dann auch bei „Alle aktualisieren“ aus.`,knopf:`Nicht anfassen`}};function Xe(e){let t=(0,Q.c)(29),{s:n,gesperrt:r,onWahl:i}=e,a;t[0]===n.name?a=t[1]:(a=V({art:`container`,name:n.name}),t[0]=n.name,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,$.jsx)(z,{bild:a,groesse:`md`,punkt:`ok`}),t[2]=a,t[3]=o);let s;t[4]===n.name?s=t[5]:(s=(0,$.jsxs)(`span`,{className:`text-[15px] font-semibold break-words`,children:[`Docker-Stack `,n.name]}),t[4]=n.name,t[5]=s);let c;t[6]===n.erstmals?c=t[7]:(c=n.erstmals?` · entdeckt ${T(new Date(n.erstmals*1e3).toISOString()).toLowerCase()}`:``,t[6]=n.erstmals,t[7]=c);let l;t[8]===c?l=t[9]:(l=(0,$.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[`unter Arcane`,c]}),t[8]=c,t[9]=l);let u;t[10]!==s||t[11]!==l?(u=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[s,l]}),t[10]=s,t[11]=l,t[12]=u):u=t[12];let d;t[13]!==o||t[14]!==u?(d=(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[o,u]}),t[13]=o,t[14]=u,t[15]=d):d=t[15];let f;t[16]===n.container?f=t[17]:(f=n.container.join(`, `)||`–`,t[16]=n.container,t[17]=f);let p;t[18]===f?p=t[19]:(p=(0,$.jsxs)(`p`,{className:`m-0 text-sm break-words text-text-2`,children:[`Container: `,f]}),t[18]=f,t[19]=p);let m;t[20]===i?m=t[21]:(m=()=>i(`beobachten`),t[20]=i,t[21]=m);let h;t[22]!==r||t[23]!==m?(h=(0,$.jsx)(j,{size:`sm`,className:`self-start`,disabled:r,onClick:m,children:`Übernehmen`}),t[22]=r,t[23]=m,t[24]=h):h=t[24];let g;return t[25]!==h||t[26]!==d||t[27]!==p?(g=(0,$.jsxs)(`li`,{className:`flaeche-innen flex flex-col gap-3 rounded-2xl p-4`,children:[d,p,h]}),t[25]=h,t[26]=d,t[27]=p,t[28]=g):g=t[28],g}function Ze(e){let t=(0,Q.c)(38),{geraete:n,stacks:r,gesperrt:i,onWahl:o}=e,s;t[0]===r?s=t[1]:(s=r===void 0?[]:r,t[0]=r,t[1]=s);let c=s,[l,u]=(0,Ge.useState)(null),d=n.length+c.length;if(d===0)return null;let f;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(f=a(`-mt-2 text-[15px] text-text-2`),t[2]=f):f=t[2];let p=d===1?`Eins kennt`:`${d} kennt`,m=d===1?` es`:` sie`,h;t[3]!==p||t[4]!==m?(h=(0,$.jsxs)(`p`,{className:f,children:[p,` der Orchestrator noch nicht. Entscheide, ob er`,m,` nur beobachtet oder auch aktualisieren darf.`]}),t[3]=p,t[4]=m,t[5]=h):h=t[5];let g;if(t[6]!==n||t[7]!==i||t[8]!==o){let e;t[10]!==i||t[11]!==o?(e=e=>(0,$.jsx)(qe,{g:e,gesperrt:i,onWahl:t=>t===`beobachten`?o(e.id,t):u({g:e,wahl:t})},e.id),t[10]=i,t[11]=o,t[12]=e):e=t[12],g=n.map(e),t[6]=n,t[7]=i,t[8]=o,t[9]=g}else g=t[9];let _;if(t[13]!==i||t[14]!==o||t[15]!==c){let e;t[17]!==i||t[18]!==o?(e=e=>(0,$.jsx)(Xe,{s:e,gesperrt:i,onWahl:t=>o(e.id,t)},e.id),t[17]=i,t[18]=o,t[19]=e):e=t[19],_=c.map(e),t[13]=i,t[14]=o,t[15]=c,t[16]=_}else _=t[16];let v;t[20]!==g||t[21]!==_?(v=(0,$.jsxs)(`ul`,{className:`m-0 grid list-none gap-3 p-0 md:grid-cols-2`,children:[g,_]}),t[20]=g,t[21]=_,t[22]=v):v=t[22];let y=!!l,b=l?`${l.g.name}: ${Ye[l.wahl].titel}`:``,x=l?Ye[l.wahl].text:``,S=l?Ye[l.wahl].knopf:``,C;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(C=()=>u(null),t[23]=C):C=t[23];let w;t[24]!==l||t[25]!==o?(w=()=>{l&&o(l.g.id,l.wahl),u(null)},t[24]=l,t[25]=o,t[26]=w):w=t[26];let T;t[27]!==i||t[28]!==y||t[29]!==b||t[30]!==x||t[31]!==S||t[32]!==w?(T=(0,$.jsx)(J,{offen:y,titel:b,text:x,knopf:S,gesperrt:i,onNein:C,onJa:w}),t[27]=i,t[28]=y,t[29]=b,t[30]=x,t[31]=S,t[32]=w,t[33]=T):T=t[33];let E;return t[34]!==T||t[35]!==h||t[36]!==v?(E=(0,$.jsxs)(Z,{titel:`Neu entdeckt`,id:`neu`,children:[h,v,T]}),t[34]=T,t[35]=h,t[36]=v,t[37]=E):E=t[37],E}var Qe=`md:grid-cols-[minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,1.1fr)_minmax(0,1.1fr)]`,$e=e=>T(new Date(e*1e3).toISOString()).toLowerCase();function et(e){let t=(0,Q.c)(8),{titel:n,children:r,className:i}=e,o;t[0]===i?o=t[1]:(o=a(`text-sm text-text-2`,i),t[0]=i,t[1]=o);let s;t[2]===n?s=t[3]:(s=(0,$.jsxs)(`span`,{className:`text-xs text-text-3 md:hidden`,children:[n,` `]}),t[2]=n,t[3]=s);let c;return t[4]!==r||t[5]!==o||t[6]!==s?(c=(0,$.jsxs)(`span`,{role:`cell`,className:o,children:[s,r]}),t[4]=r,t[5]=o,t[6]=s,t[7]=c):c=t[7],c}function tt(e){let t=(0,Q.c)(39),{g:n}=e,r=n.geprueft?.zustand===`failed`,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=a(`grid grid-cols-2 gap-x-4 gap-y-1.5 border-t border-white/[0.06] py-3 md:items-start`,Qe),t[0]=i):i=t[0];let o;t[1]===n.name?o=t[2]:(o=(0,$.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[1]=n.name,t[2]=o);let s;t[3]===n.auftrag?s=t[4]:(s=!n.auftrag&&(0,$.jsx)(`span`,{className:`text-[13px] text-bernstein`,children:`in keinem Sicherungsauftrag`}),t[3]=n.auftrag,t[4]=s);let c;t[5]!==o||t[6]!==s?(c=(0,$.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 flex-col md:col-span-1`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7];let u=n.auftrag&&!n.frisch&&`text-bernstein`,d;t[8]===u?d=t[9]:(d=a(u),t[8]=u,t[9]=d);let f;t[10]===n.zuletzt?f=t[11]:(f=n.zuletzt?(0,$.jsx)(`span`,{className:`ziffern`,children:l(n.zuletzt)}):`noch nie`,t[10]=n.zuletzt,t[11]=f);let p;t[12]!==d||t[13]!==f?(p=(0,$.jsx)(et,{titel:`Gesichert`,className:d,children:f}),t[12]=d,t[13]=f,t[14]=p):p=t[14];let m=r&&`text-rot-text`,h;t[15]===m?h=t[16]:(h=a(m),t[15]=m,t[16]=h);let g;t[17]!==r||t[18]!==n.geprueft?(g=n.geprueft?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`ziffern`,children:$e(n.geprueft.zeit)}),r?` · beschädigt`:` · in Ordnung`]}):(0,$.jsx)(`span`,{className:`text-text-3`,children:`noch nicht`}),t[17]=r,t[18]=n.geprueft,t[19]=g):g=t[19];let _;t[20]!==r||t[21]!==n.defekt.length?(_=n.defekt.length>0&&!r&&(0,$.jsx)(`span`,{className:`block text-xs text-bernstein`,children:n.defekt.length===1?`eine ältere Sicherung beschädigt`:`${n.defekt.length} ältere Sicherungen beschädigt`}),t[20]=r,t[21]=n.defekt.length,t[22]=_):_=t[22];let v;t[23]!==h||t[24]!==g||t[25]!==_?(v=(0,$.jsxs)(et,{titel:`Vom PBS geprüft`,className:h,children:[g,_]}),t[23]=h,t[24]=g,t[25]=_,t[26]=v):v=t[26];let y=n.probe&&!n.probe.ok&&`text-rot-text`,b;t[27]===y?b=t[28]:(b=a(y),t[27]=y,t[28]=b);let x;t[29]===n.probe?x=t[30]:(x=n.probe?(0,$.jsxs)($.Fragment,{children:[n.probe.ok?`gelungen`:`gescheitert`,` `,(0,$.jsx)(`span`,{className:`ziffern`,children:l(n.probe.zeit)}),n.probe.fehler&&(0,$.jsx)(`span`,{className:`block text-xs break-words`,children:n.probe.fehler})]}):(0,$.jsx)(`span`,{className:`text-text-3`,children:`noch keine`}),t[29]=n.probe,t[30]=x);let S;t[31]!==b||t[32]!==x?(S=(0,$.jsx)(et,{titel:`Probe`,className:b,children:x}),t[31]=b,t[32]=x,t[33]=S):S=t[33];let C;return t[34]!==v||t[35]!==S||t[36]!==c||t[37]!==p?(C=(0,$.jsxs)(`div`,{role:`row`,className:i,children:[c,p,v,S]}),t[34]=v,t[35]=S,t[36]=c,t[37]=p,t[38]=C):C=t[38],C}function nt(e,t){let n=t.filter(e=>!e.auftrag).length,r=[n?`${n} ohne Auftrag`:`alle ${t.length} in einem Auftrag`],i=t.filter(e=>e.probe&&!e.probe.ok).length;return i?r.push(`Probe bei ${i} gescheitert`):e.probe?.zeit&&r.push(`Probe ${l(e.probe.zeit)}`),r.join(` · `)}function rt(e){let t=(0,Q.c)(27),{s:n,onProbe:r,probeGesperrt:i}=e,o=i!==void 0&&i,s;t[0]===n.geraete?s=t[1]:(s=n.geraete??[],t[0]=n.geraete,t[1]=s);let c=s;if(c.length===0)return null;let l;t[2]===c?l=t[3]:(l=c.some(at),t[2]=c,t[3]=l);let u=l,d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,$.jsx)(O,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Sicherungen je Gerät`]}),t[4]=d):d=t[4];let f=u?`text-bernstein`:`text-text-2`,p;t[5]===f?p=t[6]:(p=a(`text-right text-sm`,f),t[5]=f,t[6]=p);let m;t[7]!==c||t[8]!==n?(m=nt(n,c),t[7]=c,t[8]=n,t[9]=m):m=t[9];let h;t[10]!==p||t[11]!==m?(h=(0,$.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[d,(0,$.jsx)(`span`,{className:p,children:m})]}),t[10]=p,t[11]=m,t[12]=h):h=t[12];let g;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,$.jsx)(`p`,{className:`m-0 pb-1 text-sm text-text-2`,children:`Der PBS prüft die Sicherungen selbst (Prüfauftrag im PBS). Die Probe öffnet einmal die Woche die jüngste Sicherung jedes Geräts, nur lesend: Die Konfiguration muss sich daraus lesen lassen, bei Containern auch der Dateibaum.`}),t[13]=g):g=t[13];let _;t[14]!==r||t[15]!==o?(_=r&&(0,$.jsx)(j,{variant:`outline`,size:`sm`,className:`my-2`,disabled:o,onClick:r,children:`Jetzt prüfen`}),t[14]=r,t[15]=o,t[16]=_):_=t[16];let v;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,$.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pt-1 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,Qe),children:[(0,$.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Gesichert`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Vom PBS geprüft`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Probe`})]}),t[17]=v):v=t[17];let y;t[18]===c?y=t[19]:(y=c.map(it),t[18]=c,t[19]=y);let b;t[20]===y?b=t[21]:(b=(0,$.jsxs)(`div`,{role:`table`,"aria-label":`Sicherungen je Gerät`,className:`flex flex-col`,children:[v,y]}),t[20]=y,t[21]=b);let x;return t[22]!==u||t[23]!==_||t[24]!==b||t[25]!==h?(x=(0,$.jsxs)(`details`,{open:u,className:`flaeche-innen group rounded-2xl px-4 open:pb-3`,children:[h,g,_,b]}),t[22]=u,t[23]=_,t[24]=b,t[25]=h,t[26]=x):x=t[26],x}function it(e){return(0,$.jsx)(tt,{g:e},e.ziel)}function at(e){return!e.auftrag||e.defekt.length>0||e.probe&&!e.probe.ok}var ot={ok:`gruen`,gelb:`bernstein`,rot:`rot`,keine:`grau`},st={ok:`color-mix(in srgb, var(--lab) 80%, transparent)`,gelb:`var(--bernstein)`,rot:`var(--rot)`},ct=e=>T(new Date(e*1e3).toISOString());function lt(e){let t=(0,Q.c)(11),{anteil:n,stufe:r,name:i}=e,a;t[0]===n?a=t[1]:(a=Math.round(n*100),t[0]=n,t[1]=a);let o=a,s=`${i}: ${o} % belegt`,c=`${Math.min(100,Math.max(2,o))}%`,l=st[r],u;t[2]!==c||t[3]!==l?(u=(0,$.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:c,background:l}}),t[2]=c,t[3]=l,t[4]=u):u=t[4];let d,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[80%] w-px bg-bernstein/70`}),f=(0,$.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[90%] w-px bg-rot/80`}),t[5]=d,t[6]=f):(d=t[5],f=t[6]);let p;return t[7]!==o||t[8]!==s||t[9]!==u?(p=(0,$.jsxs)(`div`,{role:`meter`,"aria-label":s,"aria-valuenow":o,"aria-valuemin":0,"aria-valuemax":100,className:`relative h-2 w-full overflow-hidden rounded-full bg-white/[0.07]`,children:[u,d,f]}),t[7]=o,t[8]=s,t[9]=u,t[10]=p):p=t[10],p}function ut(e){let t=(0,Q.c)(11),{v:n}=e;if(n?.grund===`gleich`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`p`,{className:`text-xs text-text-3`,children:`Belegung gleichbleibend`}),t[0]=e):e=t[0],e}let r;t[1]===n?r=t[2]:(r=N(n),t[1]=n,t[2]=r);let i=r;if(!i)return null;let o=P[re(n)],s;t[3]===o?s=t[4]:(s=a(`ziffern text-xs`,o),t[3]=o,t[4]=s);let c;t[5]===n?c=t[6]:(c=ie(n),t[5]=n,t[6]=c);let l;return t[7]!==s||t[8]!==c||t[9]!==i?(l=(0,$.jsxs)(`p`,{className:s,children:[c,` · `,i]}),t[7]=s,t[8]=c,t[9]=i,t[10]=l):l=t[10],l}function dt(e){let t=(0,Q.c)(16),{titel:n,unter:r,chip:i,chipText:a,children:o}=e,s;t[0]===n?s=t[1]:(s=(0,$.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n}),t[0]=n,t[1]=s);let c;t[2]===r?c=t[3]:(c=r&&(0,$.jsx)(`span`,{className:`text-sm break-words text-text-3`,children:r}),t[2]=r,t[3]=c);let l;t[4]!==s||t[5]!==c?(l=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[s,c]}),t[4]=s,t[5]=c,t[6]=l):l=t[6];let u;t[7]!==i||t[8]!==a?(u=(0,$.jsx)(F,{art:i,children:a}),t[7]=i,t[8]=a,t[9]=u):u=t[9];let d;t[10]!==l||t[11]!==u?(d=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==o||t[14]!==d?(f=(0,$.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col gap-3 rounded-2xl p-4`,children:[d,o]}),t[13]=o,t[14]=d,t[15]=f):f=t[15],f}function ft(e){let t=(0,Q.c)(34),{p:n}=e,r;t[0]===n.anteil?r=t[1]:(r=Math.round(n.anteil*100),t[0]=n.anteil,t[1]=r);let i=r,o=`Speicherpool ${n.speicher}`,s=ot[n.stufe],c=ae[n.stufe],l=Math.max(n.anteil,n.meta_anteil??0),u=`Speicherpool ${n.speicher}`,d;t[2]!==n.stufe||t[3]!==l||t[4]!==u?(d=(0,$.jsx)(lt,{anteil:l,stufe:n.stufe,name:u}),t[2]=n.stufe,t[3]=l,t[4]=u,t[5]=d):d=t[5];let f;t[6]===n.belegt?f=t[7]:(f=X(n.belegt),t[6]=n.belegt,t[7]=f);let p;t[8]===n.gesamt?p=t[9]:(p=X(n.gesamt),t[8]=n.gesamt,t[9]=p);let m=n.stufe!==`ok`&&`text-foreground`,h;t[10]===m?h=t[11]:(h=a(m),t[10]=m,t[11]=h);let g;t[12]===n.frei?g=t[13]:(g=X(n.frei),t[12]=n.frei,t[13]=g);let _;t[14]!==h||t[15]!==g?(_=(0,$.jsxs)(`span`,{className:h,children:[g,` frei`]}),t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==i||t[18]!==_||t[19]!==f||t[20]!==p?(v=(0,$.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[i,` % · `,f,` von `,p,` · `,_]}),t[17]=i,t[18]=_,t[19]=f,t[20]=p,t[21]=v):v=t[21];let y;t[22]===n.meta_anteil?y=t[23]:(y=n.meta_anteil!==null&&(0,$.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Metadaten `,Math.round(n.meta_anteil*100),` % belegt`]}),t[22]=n.meta_anteil,t[23]=y);let b;t[24]===n.vorhersage?b=t[25]:(b=(0,$.jsx)(ut,{v:n.vorhersage}),t[24]=n.vorhersage,t[25]=b);let x;return t[26]!==v||t[27]!==y||t[28]!==b||t[29]!==o||t[30]!==s||t[31]!==c||t[32]!==d?(x=(0,$.jsxs)(dt,{titel:o,unter:`Platten der Container und VMs`,chip:s,chipText:c,children:[d,v,y,b]}),t[26]=v,t[27]=y,t[28]=b,t[29]=o,t[30]=s,t[31]=c,t[32]=d,t[33]=x):x=t[33],x}function pt(e){let t=(0,Q.c)(24),{s:n}=e,r=ot[n.stufe],i=ae[n.stufe],a;t[0]!==n.anteil||t[1]!==n.stufe?(a=(0,$.jsx)(lt,{anteil:n.anteil,stufe:n.stufe,name:`Systemplatte des Proxmox-Hosts`}),t[0]=n.anteil,t[1]=n.stufe,t[2]=a):a=t[2];let o;t[3]===n.anteil?o=t[4]:(o=Math.round(n.anteil*100),t[3]=n.anteil,t[4]=o);let s;t[5]===n.belegt?s=t[6]:(s=X(n.belegt),t[5]=n.belegt,t[6]=s);let c;t[7]===n.gesamt?c=t[8]:(c=X(n.gesamt),t[7]=n.gesamt,t[8]=c);let l;t[9]===n.frei?l=t[10]:(l=X(n.frei),t[9]=n.frei,t[10]=l);let u;t[11]!==o||t[12]!==s||t[13]!==c||t[14]!==l?(u=(0,$.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[o,` % · `,s,` von `,c,` · `,l,` frei`]}),t[11]=o,t[12]=s,t[13]=c,t[14]=l,t[15]=u):u=t[15];let d;t[16]===n.vorhersage?d=t[17]:(d=(0,$.jsx)(ut,{v:n.vorhersage}),t[16]=n.vorhersage,t[17]=d);let f;return t[18]!==r||t[19]!==i||t[20]!==a||t[21]!==u||t[22]!==d?(f=(0,$.jsxs)(dt,{titel:`Systemplatte`,unter:`Proxmox-Host: Kernel, Sicherungen vor Updates`,chip:r,chipText:i,children:[a,u,d]}),t[18]=r,t[19]=i,t[20]=a,t[21]=u,t[22]=d,t[23]=f):f=t[23],f}function mt(e){let t=(0,Q.c)(22),{n}=e,r=n.problem?n.stufe===`rot`?`gestört`:`unklar`:ae[n.stufe],i=`NAS ${n.server??``}`,o;t[0]===i?o=t[1]:(o=i.trim(),t[0]=i,t[1]=o);let s;t[2]===n.art?s=t[3]:(s=n.art.toUpperCase(),t[2]=n.art,t[3]=s);let c=`${s} · ${n.quelle??`?`} → ${n.ziel}`,l=ot[n.stufe],u;t[4]!==n.anteil||t[5]!==n.belegt||t[6]!==n.gesamt||t[7]!==n.problem||t[8]!==n.server||t[9]!==n.stufe||t[10]!==n.vorhersage?(u=n.problem?(0,$.jsx)(`p`,{className:a(`text-sm`,n.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:n.problem}):n.anteil!==null&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(lt,{anteil:n.anteil,stufe:n.stufe,name:`NAS ${n.server??``}`}),(0,$.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[Math.round(n.anteil*100),` % · `,X(n.belegt),` von `,X(n.gesamt),` · `,X((n.gesamt??0)-(n.belegt??0)),` frei`]}),(0,$.jsx)(ut,{v:n.vorhersage})]}),t[4]=n.anteil,t[5]=n.belegt,t[6]=n.gesamt,t[7]=n.problem,t[8]=n.server,t[9]=n.stufe,t[10]=n.vorhersage,t[11]=u):u=t[11];let d=n.erreichbar===!1?`antwortet nicht`:`antwortet`,f=n.eingebunden?`auf dem Proxmox-Host eingebunden`:`nicht eingebunden`,p;t[12]!==d||t[13]!==f?(p=(0,$.jsxs)(`p`,{className:`text-xs text-text-3`,children:[d,` · `,f]}),t[12]=d,t[13]=f,t[14]=p):p=t[14];let m;return t[15]!==r||t[16]!==o||t[17]!==c||t[18]!==l||t[19]!==u||t[20]!==p?(m=(0,$.jsxs)(dt,{titel:o,unter:c,chip:l,chipText:r,children:[u,p]}),t[15]=r,t[16]=o,t[17]=c,t[18]=l,t[19]=u,t[20]=p,t[21]=m):m=t[21],m}function ht(e){let t=(0,Q.c)(25),{s:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={ok:`aktuell`,gelb:`Lücke`,rot:`gestört`,keine:`kein Auftrag`},t[0]=r):r=t[0];let i=r[n.stufe],a;t[1]===n?a=t[2]:(a=ce(n),t[1]=n,t[2]=a);let o=ot[n.stufe],s;t[3]===n.probleme?s=t[4]:(s=n.probleme.map(bt),t[3]=n.probleme,t[4]=s);let c;t[5]!==n.erfasst||t[6]!==n.stufe||t[7]!==n.stufe_frische||t[8]!==n.zuletzt?(c=(n.stufe_frische??n.stufe)===`ok`&&(0,$.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Alle `,n.erfasst,` Geräte gesichert`,n.zuletzt?(0,$.jsxs)($.Fragment,{children:[`, zuletzt `,(0,$.jsx)(`span`,{className:`ziffern`,children:ct(n.zuletzt)})]}):null,`.`]}),t[5]=n.erfasst,t[6]=n.stufe,t[7]=n.stufe_frische,t[8]=n.zuletzt,t[9]=c):c=t[9];let l;t[10]===n.ohne_auftrag?l=t[11]:(l=(n.ohne_auftrag?.length??0)>0&&(0,$.jsxs)(`p`,{className:`text-sm text-bernstein`,children:[`In keinem Sicherungsauftrag: `,n.ohne_auftrag.map(yt).join(`, `)]}),t[10]=n.ohne_auftrag,t[11]=l);let u;t[12]===n.fehlend?u=t[13]:(u=n.fehlend.length>0&&(0,$.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:n.fehlend.map(vt)}),t[12]=n.fehlend,t[13]=u);let d;t[14]===n.ziele?d=t[15]:(d=n.ziele.filter(_t).map(gt),t[14]=n.ziele,t[15]=d);let f;return t[16]!==i||t[17]!==a||t[18]!==o||t[19]!==s||t[20]!==c||t[21]!==l||t[22]!==u||t[23]!==d?(f=(0,$.jsxs)(dt,{titel:`Sicherungen`,unter:a,chip:o,chipText:i,children:[s,c,l,u,d]}),t[16]=i,t[17]=a,t[18]=o,t[19]=s,t[20]=c,t[21]=l,t[22]=u,t[23]=d,t[24]=f):f=t[24],f}function gt(e){let t=N(e.vorhersage);return(0,$.jsxs)(`p`,{className:a(`ziffern text-xs`,t?P[re(e.vorhersage)]:`text-text-3`),children:[`Ziel `,e.speicher,`: `,Math.round((e.belegt??0)/(e.gesamt??1)*100),` % belegt`,t?` · ${t}`:e.vorhersage?.grund===`gleich`?` · gleichbleibend`:``,e.vorhersage?.quelle===`pbs`&&(t||e.vorhersage.grund===`gleich`)?` (Schätzung des PBS)`:``]},e.speicher)}function _t(e){return e.gesamt}function vt(e){return(0,$.jsxs)(`li`,{className:`text-bernstein`,children:[e.name,`: `,e.zuletzt?(0,$.jsxs)($.Fragment,{children:[`zuletzt `,(0,$.jsx)(`span`,{className:`ziffern`,children:ct(e.zuletzt)})]}):`noch nie gesichert`]},e.ziel)}function yt(e){return e.name}function bt(e){return(0,$.jsx)(`p`,{className:`text-sm text-rot-text`,children:e},e)}function xt(e){let t=(0,Q.c)(53),{daten:n,laeuft:r,gesperrt:i,onAktion:a,snapshotsLink:o,onProbe:s,probeGesperrt:c}=e,l=r===void 0?null:r,u=i!==void 0&&i,[d,f]=(0,Ge.useState)(null),p;t[0]!==n.pools||t[1]!==n.systemplatte?.stufe?(p=n.pools.some(Tt)||(n.systemplatte?.stufe??`ok`)!==`ok`,t[0]=n.pools,t[1]=n.systemplatte?.stufe,t[2]=p):p=t[2];let m=p,h,g,_,v;if(t[3]!==n.empfehlungen||t[4]!==n.nas||t[5]!==n.pools||t[6]!==n.sicherungen||t[7]!==n.systemplatte||t[8]!==u||t[9]!==m||t[10]!==l||t[11]!==a||t[12]!==s||t[13]!==c||t[14]!==o){let e=n.empfehlungen.reduce(wt,0);h=`flex flex-col gap-4`;let r;t[19]===n.pools?r=t[20]:(r=n.pools.map(Ct),t[19]=n.pools,t[20]=r);let i;t[21]===n.systemplatte?i=t[22]:(i=n.systemplatte&&(0,$.jsx)(pt,{s:n.systemplatte}),t[21]=n.systemplatte,t[22]=i);let d;t[23]===n.nas?d=t[24]:(d=n.nas.length>0?n.nas.map(St):(0,$.jsx)(dt,{titel:`NAS`,chip:`grau`,chipText:`keins`,children:(0,$.jsx)(`p`,{className:`text-sm text-text-3`,children:`Auf dem Proxmox-Host ist kein Netzlaufwerk eingebunden.`})}),t[23]=n.nas,t[24]=d);let p;t[25]===n.sicherungen?p=t[26]:(p=(0,$.jsx)(ht,{s:n.sicherungen}),t[25]=n.sicherungen,t[26]=p),t[27]!==d||t[28]!==p||t[29]!==r||t[30]!==i?(g=(0,$.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 2xl:grid-cols-4`,children:[r,i,d,p]}),t[27]=d,t[28]=p,t[29]=r,t[30]=i,t[31]=g):g=t[31],t[32]!==n.sicherungen||t[33]!==s||t[34]!==c?(_=(0,$.jsx)(rt,{s:n.sicherungen,onProbe:s,probeGesperrt:c}),t[32]=n.sicherungen,t[33]=s,t[34]=c,t[35]=_):_=t[35],v=n.empfehlungen.length>0&&(0,$.jsxs)(`details`,{open:m,className:`flaeche-innen group rounded-2xl px-4 open:pb-3`,children:[(0,$.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[(0,$.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,$.jsx)(O,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Was Platz bringt`]}),(0,$.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[n.empfehlungen.length,` `,n.empfehlungen.length===1?`Vorschlag`:`Vorschläge`,e>0&&` · bis zu ${X(e)}`]})]}),(0,$.jsx)(`ol`,{className:`flex flex-col`,children:n.empfehlungen.map(e=>(0,$.jsx)(Ot,{e,laeuft:l,gesperrt:u||!a,onFrage:f,verweis:e.art===`snapshot`?o:null},e.titel))})]}),t[3]=n.empfehlungen,t[4]=n.nas,t[5]=n.pools,t[6]=n.sicherungen,t[7]=n.systemplatte,t[8]=u,t[9]=m,t[10]=l,t[11]=a,t[12]=s,t[13]=c,t[14]=o,t[15]=h,t[16]=g,t[17]=_,t[18]=v}else h=t[15],g=t[16],_=t[17],v=t[18];let y=!!d,b=d?`Proxmox-Host: ${d.label}`:``,x=d?.frage??``,S=d?.label??``,C;t[36]!==d||t[37]!==a?(C=()=>{d&&a&&a(d),f(null)},t[36]=d,t[37]=a,t[38]=C):C=t[38];let w;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(w=()=>f(null),t[39]=w):w=t[39];let T;t[40]!==u||t[41]!==x||t[42]!==S||t[43]!==C||t[44]!==y||t[45]!==b?(T=(0,$.jsx)(J,{offen:y,titel:b,text:x,knopf:S,gesperrt:u,onJa:C,onNein:w}),t[40]=u,t[41]=x,t[42]=S,t[43]=C,t[44]=y,t[45]=b,t[46]=T):T=t[46];let E;return t[47]!==T||t[48]!==h||t[49]!==g||t[50]!==_||t[51]!==v?(E=(0,$.jsxs)(`div`,{className:h,children:[g,_,v,T]}),t[47]=T,t[48]=h,t[49]=g,t[50]=_,t[51]=v,t[52]=E):E=t[52],E}function St(e){return(0,$.jsx)(mt,{n:e},e.ziel)}function Ct(e){return(0,$.jsx)(ft,{p:e},e.speicher)}function wt(e,t){return e+(t.platz??0)}function Tt(e){return e.stufe!==`ok`}var Et={pool:`Speicherpool`,systemplatte:`Systemplatte des Hosts`};function Dt({text:e}){return e.split(/`([^`]+)`/).map((e,t)=>t%2==1?(0,$.jsx)(`code`,{className:`rounded-md bg-white/[0.07] px-1 font-mono text-[13px] text-foreground [font-variant-ligatures:none]`,children:e},t):e)}function Ot(e){let t=(0,Q.c)(24),{e:n,laeuft:r,gesperrt:i,onFrage:a,verweis:o}=e,s;t[0]===n.titel?s=t[1]:(s=(0,$.jsx)(`span`,{className:`text-[15px] font-medium break-words`,children:n.titel}),t[0]=n.titel,t[1]=s);let c;t[2]===n.platz?c=t[3]:(c=n.platz?`≈ ${X(n.platz)}`:`Größe unbekannt`,t[2]=n.platz,t[3]=c);let l;t[4]===c?l=t[5]:(l=(0,$.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:c}),t[4]=c,t[5]=l);let u;t[6]!==s||t[7]!==l?(u=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[s,l]}),t[6]=s,t[7]=l,t[8]=u):u=t[8];let d;t[9]===n.ort?d=t[10]:(d=n.ort&&(0,$.jsx)(`span`,{className:`etikett text-[10.5px] tracking-[0.14em] text-text-3`,children:Et[n.ort]??n.ort}),t[9]=n.ort,t[10]=d);let f;t[11]===n.text?f=t[12]:(f=(0,$.jsx)(`p`,{className:`text-sm break-words text-text-2`,children:(0,$.jsx)(Dt,{text:n.text})}),t[11]=n.text,t[12]=f);let p;t[13]!==n.aktion||t[14]!==i||t[15]!==r||t[16]!==a?(p=n.aktion&&(r?(0,$.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,r]}):(0,$.jsx)(j,{variant:`outline`,size:`sm`,className:`mt-1 self-start`,disabled:i,onClick:()=>a(n.aktion),children:n.aktion.label})),t[13]=n.aktion,t[14]=i,t[15]=r,t[16]=a,t[17]=p):p=t[17];let m;return t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p||t[22]!==o?(m=(0,$.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-white/[0.06] py-3 first:border-t-0 first:pt-1`,children:[u,d,f,o,p]}),t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=o,t[23]=m):m=t[23],m}var kt={snapshot:`Snapshot`,sicherung:`Sicherung`,keiner:`kein Rückweg`};function At(e){let t=(0,Q.c)(24),{anzahl:n,gesperrt:r}=e,[i,a]=(0,Ge.useState)(!1),o=f(i),s=S(),c;t[0]===o.data?.schritte?c=t[1]:(c=o.data?.schritte??[],t[0]=o.data?.schritte,t[1]=c);let l=c,u=r||n===0||s.isPending,d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(!0),t[2]=d):d=t[2];let p=n>0?` (${n})`:``,m;t[3]!==u||t[4]!==p?(m=(0,$.jsxs)(j,{disabled:u,onClick:d,children:[`Alle aktualisieren`,p]}),t[3]=u,t[4]=p,t[5]=m):m=t[5];let h=l.length?`${l.length} Updates starten`:`Starten`,g=s.isPending||o.isPending||l.length===0,_;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>a(!1),t[6]=_):_=t[6];let v;t[7]!==i||t[8]!==s?(v=()=>{i&&(s.mutate(void 0),a(!1))},t[7]=i,t[8]=s,t[9]=v):v=t[9];let y;t[10]!==o.data||t[11]!==o.error||t[12]!==o.isPending||t[13]!==l?(y=o.isPending?(0,$.jsx)(`p`,{className:`text-sm text-text-2`,children:`Die Reihenfolge wird gelesen …`}):o.error?(0,$.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Der Plan lässt sich nicht lesen: `,o.error.message]}):(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1`,children:[(0,$.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:l.map(jt)}),o.data?.hinweis&&(0,$.jsx)(`p`,{className:`text-xs text-bernstein`,children:o.data.hinweis})]}),t[10]=o.data,t[11]=o.error,t[12]=o.isPending,t[13]=l,t[14]=y):y=t[14];let b;t[15]!==i||t[16]!==y||t[17]!==h||t[18]!==g||t[19]!==v?(b=(0,$.jsx)(J,{offen:i,titel:`Alle Homelab-Updates einspielen?`,text:`Die Updates laufen nacheinander, jedes mit Rückweg und Prüfung. Ist eine Prüfung rot, geht dieser Schritt von selbst zurück und der Rest bleibt stehen. AdGuard und NPMplus kommen zuletzt, der Proxmox-Host ganz am Ende; neu gestartet wird er nicht.`,knopf:h,gesperrt:g,onNein:_,onJa:v,children:y}),t[15]=i,t[16]=y,t[17]=h,t[18]=g,t[19]=v,t[20]=b):b=t[20];let x;return t[21]!==b||t[22]!==m?(x=(0,$.jsxs)($.Fragment,{children:[m,b]}),t[21]=b,t[22]=m,t[23]=x):x=t[23],x}function jt(e,t){return(0,$.jsxs)(`li`,{className:`grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-baseline gap-2 text-sm`,children:[(0,$.jsxs)(`span`,{className:`ziffern text-text-3`,children:[t+1,`.`]}),(0,$.jsxs)(`span`,{className:`min-w-0`,children:[(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),` `,(0,$.jsxs)(`span`,{className:`text-text-2`,children:[`· `,e.was]})]}),(0,$.jsx)(`span`,{className:a(`text-xs`,e.rueckweg_art===`keiner`?`text-bernstein`:`text-text-3`),children:kt[e.rueckweg_art]})]},`${e.ziel}-${e.baustein}`)}var Mt={wartet:{Symbol:be,farbe:`text-text-3`,text:`wartet`},laeuft:{Symbol:Se,farbe:`text-cyan-text`,text:`läuft`},eingespielt:{Symbol:q,farbe:`text-gruen`,text:`eingespielt`},zurueckgerollt:{Symbol:A,farbe:`text-bernstein`,text:`zurückgerollt`},fehler:{Symbol:k,farbe:`text-rot`,text:`Fehler`},uebersprungen:{Symbol:we,farbe:`text-text-3`,text:`übersprungen`}},Nt={laeuft:{art:`cyan`,text:`läuft`},fertig:{art:`gruen`,text:`fertig`},abgebrochen:{art:`bernstein`,text:`abgebrochen`}};function Pt(e){let t=(0,Q.c)(33),{lauf:n,onQuittieren:r}=e,i;t[0]===n.schritte?i=t[1]:(i=n.schritte.filter(It),t[0]=n.schritte,t[1]=i);let a=i.length,o=Nt[n.status],s;t[2]!==a||t[3]!==n.schritte.length?(s=(0,$.jsxs)(`span`,{className:`text-[15px] font-semibold text-cyan-text`,children:[`Alle aktualisieren · `,a,` von `,n.schritte.length]}),t[2]=a,t[3]=n.schritte.length,t[4]=s):s=t[4];let c;t[5]===n.start?c=t[6]:(c=T(new Date(n.start*1e3).toISOString()),t[5]=n.start,t[6]=c);let l;t[7]===c?l=t[8]:(l=(0,$.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:c}),t[7]=c,t[8]=l);let u;t[9]!==o.art||t[10]!==o.text?(u=(0,$.jsx)(F,{art:o.art,children:o.text}),t[9]=o.art,t[10]=o.text,t[11]=u):u=t[11];let d;t[12]!==l||t[13]!==u?(d=(0,$.jsxs)(`span`,{className:`flex items-center gap-2`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=d):d=t[14];let f;t[15]!==s||t[16]!==d?(f=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[15]=s,t[16]=d,t[17]=f):f=t[17];let p=`${a/Math.max(1,n.schritte.length)*100}%`,m;t[18]===p?m=t[19]:(m=(0,$.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,$.jsx)(`div`,{className:`h-full rounded-full bg-cyan shadow-[0_0_10px_var(--cyan)] transition-all`,style:{width:p}})}),t[18]=p,t[19]=m);let h;t[20]===n.schritte?h=t[21]:(h=n.schritte.map(Ft),t[20]=n.schritte,t[21]=h);let g;t[22]===h?g=t[23]:(g=(0,$.jsx)(`ol`,{className:`m-0 grid list-none gap-x-6 gap-y-1.5 p-0 sm:grid-cols-2`,children:h}),t[22]=h,t[23]=g);let _;t[24]!==n.status||t[25]!==n.text||t[26]!==r?(_=(n.text||n.status!==`laeuft`&&r)&&(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n.text&&(0,$.jsx)(`p`,{className:`text-sm text-text-2`,children:n.text}),n.status!==`laeuft`&&r&&(0,$.jsx)(j,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:r,children:`Ausblenden`})]}),t[24]=n.status,t[25]=n.text,t[26]=r,t[27]=_):_=t[27];let v;return t[28]!==g||t[29]!==_||t[30]!==f||t[31]!==m?(v=(0,$.jsxs)(`section`,{"aria-label":`Alle aktualisieren`,className:`flex flex-col gap-3 rounded-2xl bg-cyan/[0.06] p-4 ring-1 ring-cyan/30 ring-inset`,children:[f,m,g,_]}),t[28]=g,t[29]=_,t[30]=f,t[31]=m,t[32]=v):v=t[32],v}function Ft(e){let t=Mt[e.status];return(0,$.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,$.jsx)(t.Symbol,{className:a(`mt-0.5 size-4 shrink-0`,t.farbe,e.status===`laeuft`&&`motion-safe:animate-spin`),"aria-hidden":!0}),(0,$.jsxs)(`span`,{className:`min-w-0`,children:[(0,$.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,$.jsxs)(`span`,{className:`text-text-3`,children:[`· `,e.was,` · `,t.text]}),e.text&&e.status!==`eingespielt`&&(0,$.jsx)(`span`,{className:`block text-xs text-text-3`,children:e.text})]})]},`${e.ziel}-${e.baustein}`)}function It(e){return![`wartet`,`laeuft`].includes(e.status)}function Lt(e){let t=(0,Q.c)(9),{d:n}=e,r=n.zusammenfassung;if(!r){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`p`,{className:`m-0 text-sm text-text-3`,children:`Lucy konnte gerade keine Kurzfassung schreiben; die Quellen stehen unten.`}),t[0]=e):e=t[0],e}let i;t[1]!==r.aktion||t[2]!==r.aktion_text?(i=r.aktion?(0,$.jsxs)(`p`,{className:`m-0 rounded-xl bg-bernstein/10 px-3 py-2 text-sm text-bernstein ring-1 ring-bernstein/30 ring-inset`,children:[`⚠ Handarbeit: `,r.aktion_text||`Lies die Hinweise unten, bevor du updatest.`]}):r.aktion===!1&&(0,$.jsx)(`p`,{className:`m-0 text-sm text-gruen-text`,children:`Du musst dafür nichts selbst tun.`}),t[1]=r.aktion,t[2]=r.aktion_text,t[3]=i):i=t[3];let a;t[4]===r.punkte?a=t[5]:(a=r.punkte.length>0&&(0,$.jsx)(`ul`,{className:`m-0 flex list-disc flex-col gap-1 pl-5 text-sm text-text-2`,children:r.punkte.map(Rt)}),t[4]=r.punkte,t[5]=a);let o;return t[6]!==i||t[7]!==a?(o=(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[i,a]}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function Rt(e){return(0,$.jsx)(`li`,{children:e},e)}function zt(e){let t=(0,Q.c)(16),{d:n}=e,r;t[0]===n.versionen?r=t[1]:(r=n.versionen??[],t[0]=n.versionen,t[1]=r);let i=r,a;t[2]===n.pakete?a=t[3]:(a=n.pakete??[],t[2]=n.pakete,t[3]=a);let o=a;if(i.length===0&&o.length===0)return null;let s=i.length?`Release Notes (${i.length} ${i.length===1?`Version`:`Versionen`})`:`Änderungslisten (${o.length} Pakete${n.weitere?`, ${n.weitere} weitere ohne Liste`:``})`,c;t[4]===s?c=t[5]:(c=(0,$.jsx)(`summary`,{className:`cursor-pointer text-text-3 hover:text-text-2`,children:s}),t[4]=s,t[5]=c);let l;t[6]===i?l=t[7]:(l=i.map(Vt),t[6]=i,t[7]=l);let u;t[8]===o?u=t[9]:(u=o.map(Bt),t[8]=o,t[9]=u);let d;t[10]!==l||t[11]!==u?(d=(0,$.jsxs)(`div`,{className:`mt-2 flex max-h-80 flex-col gap-3 overflow-y-auto pr-1`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==c||t[14]!==d?(f=(0,$.jsxs)(`details`,{className:`group text-sm`,children:[c,d]}),t[13]=c,t[14]=d,t[15]=f):f=t[15],f}function Bt(e){return(0,$.jsxs)(`section`,{className:`flex flex-col gap-1`,children:[(0,$.jsx)(`span`,{className:`font-mono text-[13px] font-medium`,children:e.name}),(0,$.jsx)(`pre`,{className:`m-0 font-mono text-[12px] break-words whitespace-pre-wrap text-text-3`,children:e.text})]},e.name)}function Vt(e){return(0,$.jsxs)(`section`,{className:`flex flex-col gap-1`,children:[(0,$.jsxs)(`span`,{className:`flex items-baseline justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`font-medium`,children:e.titel}),e.url&&(0,$.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener`,className:`inline-flex shrink-0 items-center gap-1 text-cyan hover:underline`,children:[`GitHub `,(0,$.jsx)(Y,{className:`size-3`,"aria-hidden":!0})]})]}),(0,$.jsx)(`pre`,{className:`m-0 font-sans text-[13px] break-words whitespace-pre-wrap text-text-3`,children:e.text||`–`})]},e.version)}function Ht(e){let t=(0,Q.c)(21),{zid:n,baustein:r,kompakt:i,className:o}=e,s=i!==void 0&&i,c=h(n,r,!0),l;if(c.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`p`,{className:`m-0 text-sm text-text-3`,role:`status`,children:`Lucy liest, was neu ist …`}),t[0]=e):e=t[0],l=e}else if(c.error){let e;t[1]===c.error.message?e=t[2]:(e=(0,$.jsxs)(`p`,{className:`m-0 text-sm text-text-3`,children:[`Ließ sich gerade nicht lesen: `,c.error.message]}),t[1]=c.error.message,t[2]=e),l=e}else if(c.data?.verfuegbar){let e;t[8]===c.data?e=t[9]:(e=(0,$.jsx)(Lt,{d:c.data}),t[8]=c.data,t[9]=e);let n;t[10]!==s||t[11]!==c.data?(n=!s&&(0,$.jsx)(zt,{d:c.data}),t[10]=s,t[11]=c.data,t[12]=n):n=t[12];let r;t[13]!==e||t[14]!==n?(r=(0,$.jsxs)($.Fragment,{children:[e,n]}),t[13]=e,t[14]=n,t[15]=r):r=t[15],l=r}else{let e=c.data?.grund??`Keine Angaben.`,n;t[3]===c.data?n=t[4]:(n=c.data?.quelle_url&&(0,$.jsxs)($.Fragment,{children:[` `,(0,$.jsx)(`a`,{href:c.data.quelle_url,target:`_blank`,rel:`noopener`,className:`text-cyan hover:underline`,children:`Zu den Releases`})]}),t[3]=c.data,t[4]=n);let r;t[5]!==e||t[6]!==n?(r=(0,$.jsxs)(`p`,{className:`m-0 text-sm text-text-3`,children:[e,n]}),t[5]=e,t[6]=n,t[7]=r):r=t[7],l=r}let u;t[16]===o?u=t[17]:(u=a(`flex flex-col gap-2`,o),t[16]=o,t[17]=u);let d;return t[18]!==l||t[19]!==u?(d=(0,$.jsx)(`div`,{className:u,children:l}),t[18]=l,t[19]=u,t[20]=d):d=t[20],d}var Ut=`md:grid-cols-[minmax(0,1.1fr)_minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,0.9fr)_11.5rem]`;function Wt(e){let t=(0,Q.c)(16),{ziel:n,b:r}=e,i=C();if(r.uebersprungen){let e;t[0]!==i||t[1]!==n.id?(e=()=>i.mutate({zid:n.id,version:null}),t[0]=i,t[1]=n.id,t[2]=e):e=t[2];let a;t[3]!==e||t[4]!==i.isPending?(a=(0,$.jsx)(`button`,{type:`button`,className:`text-cyan hover:underline`,disabled:i.isPending,onClick:e,children:`wieder anbieten`}),t[3]=e,t[4]=i.isPending,t[5]=a):a=t[5];let o;return t[6]!==r.uebersprungen||t[7]!==a?(o=(0,$.jsxs)(`span`,{className:`text-xs text-text-3`,children:[r.uebersprungen,` übersprungen ·`,` `,a]}),t[6]=r.uebersprungen,t[7]=a,t[8]=o):o=t[8],o}if(r.zustand!==`neu`||!r.verfuegbar)return null;let a;t[9]!==r.verfuegbar||t[10]!==i||t[11]!==n.id?(a=()=>i.mutate({zid:n.id,version:r.verfuegbar}),t[9]=r.verfuegbar,t[10]=i,t[11]=n.id,t[12]=a):a=t[12];let o;return t[13]!==a||t[14]!==i.isPending?(o=(0,$.jsx)(`button`,{type:`button`,className:`self-start text-xs text-text-3 hover:text-foreground hover:underline`,disabled:i.isPending,onClick:a,children:`Version überspringen`}),t[13]=a,t[14]=i.isPending,t[15]=o):o=t[15],o}function Gt(e){let t=(0,Q.c)(30),{ziel:n,b:r}=e;if(!r){let e=n.art===`proxmox-host`?se(n)?.installiert:null,r;return t[0]===e?r=t[1]:(r=e?(0,$.jsxs)(`span`,{className:`ziffern text-sm`,children:[`PVE `,e]}):(0,$.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e,t[1]=r),r}let i;t[2]===r.installiert?i=t[3]:(i=r.installiert?K(r.installiert):`–`,t[2]=r.installiert,t[3]=i);let a=i,o=r.zustand===`aktuell`?`text-foreground`:`text-text-2`,s;t[4]!==a||t[5]!==o?(s=(0,$.jsx)(`span`,{className:o,children:a}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;t[7]!==r.verfuegbar||t[8]!==r.zustand?(c=r.zustand===`neu`&&r.verfuegbar&&(0,$.jsxs)(`span`,{className:`text-cyan-text`,children:[`→ `,r.verfuegbar]}),t[7]=r.verfuegbar,t[8]=r.zustand,t[9]=c):c=t[9];let l;t[10]===r.zustand?l=t[11]:(l=r.zustand===`aktuell`&&(0,$.jsx)(`span`,{className:`font-sans text-xs text-gruen-text`,children:`aktuell`}),t[10]=r.zustand,t[11]=l);let u;t[12]===r.zustand?u=t[13]:(u=r.zustand===`unbekannt`&&(0,$.jsx)(`span`,{className:`font-sans text-xs text-text-3`,children:`unklar`}),t[12]=r.zustand,t[13]=u);let d;t[14]!==s||t[15]!==c||t[16]!==l||t[17]!==u?(d=(0,$.jsxs)(`span`,{className:`ziffern flex flex-wrap items-baseline gap-x-2 text-sm`,children:[s,c,l,u]}),t[14]=s,t[15]=c,t[16]=l,t[17]=u,t[18]=d):d=t[18];let f;t[19]!==r.aktion||t[20]!==r.grund||t[21]!==r.zustand?(f=r.zustand===`neu`&&!r.aktion&&r.grund&&(0,$.jsx)(`span`,{className:`text-xs text-text-3`,children:r.grund}),t[19]=r.aktion,t[20]=r.grund,t[21]=r.zustand,t[22]=f):f=t[22];let p;t[23]!==r||t[24]!==n?(p=n.art!==`proxmox-host`&&(0,$.jsx)(Wt,{ziel:n,b:r}),t[23]=r,t[24]=n,t[25]=p):p=t[25];let m;return t[26]!==d||t[27]!==f||t[28]!==p?(m=(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[d,f,p]}),t[26]=d,t[27]=f,t[28]=p,t[29]=m):m=t[29],m}function Kt(e){let t=(0,Q.c)(25),{b:n,onSuchen:r,gesperrt:i}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let a=n.id===`docker`,o;if(n.zustand===`neu`){let e=n.kurz||`Update bereit`,r;t[1]===n.sicherheit?r=t[2]:(r=!!n.sicherheit&&(0,$.jsxs)(`span`,{className:`text-rot-text`,children:[` · `,n.sicherheit,` Sicherheit`]}),t[1]=n.sicherheit,t[2]=r);let i;t[3]!==e||t[4]!==r?(i=(0,$.jsxs)(`span`,{className:`text-cyan-text`,children:[e,r]}),t[3]=e,t[4]=r,t[5]=i):i=t[5],o=i}else if(n.zustand===`aktuell`){let e=a?`Images aktuell`:`aktuell`,n;t[6]===e?n=t[7]:(n=(0,$.jsx)(`span`,{className:`text-gruen-text`,children:e}),t[6]=e,t[7]=n),o=n}else{let e;t[8]===n.grund?e=t[9]:(e=oe(n.grund),t[8]=n.grund,t[9]=e);let r=e,i=n.grund??void 0,s=a?`Images unklar`:`unklar`,c;t[10]===r?c=t[11]:(c=r&&(0,$.jsxs)(`span`,{className:`text-text-3`,children:[` · Listen vom `,r]}),t[10]=r,t[11]=c);let l;t[12]!==i||t[13]!==s||t[14]!==c?(l=(0,$.jsxs)(`span`,{className:`text-text-2`,title:i,children:[s,c]}),t[12]=i,t[13]=s,t[14]=c,t[15]=l):l=t[15],o=l}let s=n.zustand===`unbekannt`?n.aktion:null,c;t[16]===o?c=t[17]:(c=(0,$.jsx)(`span`,{className:`min-w-0`,children:o}),t[16]=o,t[17]=c);let l;t[18]!==i||t[19]!==r||t[20]!==s?(l=s&&(0,$.jsx)(j,{variant:`ghost`,size:`icon-sm`,className:`-my-2 shrink-0`,"aria-label":s.label,title:s.label,disabled:i,onClick:()=>r(s),children:(0,$.jsx)(fe,{})}),t[18]=i,t[19]=r,t[20]=s,t[21]=l):l=t[21];let u;return t[22]!==c||t[23]!==l?(u=(0,$.jsxs)(`span`,{className:`flex items-center gap-1 text-sm`,children:[c,l]}),t[22]=c,t[23]=l,t[24]=u):u=t[24],u}var qt={app:`App updaten`,os:`Pakete einspielen`,pakete:`Pakete einspielen`};function Jt(e,t){return!t||t.zustand!==`neu`?!1:t.id===`app`&&!!t.verfuegbar||e.art===`proxmox-host`&&t.id===`pakete`}function Yt(e){let t=(0,Q.c)(52),{ziel:n,laeuft:r,gesperrt:i,onFrage:o}=e,s;t[0]===n?s=t[1]:(s=H(n),t[0]=n,t[1]=s);let c=s,l;t[2]===n?l=t[3]:(l=se(n),t[2]=n,t[3]=l);let u=l,d=n.bausteine.filter(Xt),f=ue(n)>=2,p;t[4]===n?p=t[5]:(p=n.bausteine.find(e=>Jt(n,e)),t[4]=n,t[5]=p);let m=p,[h,g]=(0,Ge.useState)(!1),_=f&&`opacity-75`,v;t[6]===_?v=t[7]:(v=a(`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3.5 md:items-center`,Ut,_),t[6]=_,t[7]=v);let y;t[8]===n?y=t[9]:(y=V(n),t[8]=n,t[9]=y);let b=d.length?`info`:null,x;t[10]!==y||t[11]!==b?(x=(0,$.jsx)(z,{bild:y,groesse:`sm`,punkt:b}),t[10]=y,t[11]=b,t[12]=x):x=t[12];let S;t[13]===n.name?S=t[14]:(S=(0,$.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[13]=n.name,t[14]=S);let C;t[15]===n?C=t[16]:(C=U(n)!==n.name&&(0,$.jsx)(`span`,{className:`text-[13px] text-text-3`,children:U(n)}),t[15]=n,t[16]=C);let w;t[17]!==S||t[18]!==C?(w=(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[S,C]}),t[17]=S,t[18]=C,t[19]=w):w=t[19];let T;t[20]!==w||t[21]!==x?(T=(0,$.jsxs)(`div`,{role:`rowheader`,className:`flex min-w-0 items-center gap-3`,children:[x,w]}),t[20]=w,t[21]=x,t[22]=T):T=t[22];let E;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`App `}),t[23]=E):E=t[23];let D;t[24]!==c||t[25]!==n?(D=(0,$.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[E,(0,$.jsx)(Gt,{ziel:n,b:c})]}),t[24]=c,t[25]=n,t[26]=D):D=t[26];let k;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,$.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Pakete `}),t[27]=k):k=t[27];let A=i||!!r,M;t[28]!==o||t[29]!==n?(M=e=>o({ziel:n,aktion:e}),t[28]=o,t[29]=n,t[30]=M):M=t[30];let N;t[31]!==u||t[32]!==A||t[33]!==M?(N=(0,$.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[k,(0,$.jsx)(Kt,{b:u,gesperrt:A,onSuchen:M})]}),t[31]=u,t[32]=A,t[33]=M,t[34]=N):N=t[34];let P=d.length?W(n):``,F;t[35]===P?F=t[36]:(F=(0,$.jsx)(`span`,{role:`cell`,className:`text-sm text-text-3`,children:P}),t[35]=P,t[36]=F);let I=r?(0,$.jsxs)(`span`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,r]}):d.map(e=>(0,$.jsx)(j,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>e.aktion&&o({ziel:n,aktion:e.aktion}),children:qt[e.id]??e.aktion?.label??`Updaten`},e.id)),L;t[37]===I?L=t[38]:(L=(0,$.jsx)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-stretch`,children:I}),t[37]=I,t[38]=L);let R;t[39]!==m||t[40]!==h||t[41]!==g||t[42]!==n.id?(R=m&&(0,$.jsxs)(`div`,{className:`col-span-full flex flex-col gap-2`,children:[(0,$.jsxs)(`button`,{type:`button`,"aria-expanded":h,onClick:()=>g(!h),className:`inline-flex min-h-9 items-center gap-1.5 self-start text-sm text-cyan-text hover:underline`,children:[(0,$.jsx)(O,{className:a(`size-4 transition-transform`,h&&`rotate-90`),"aria-hidden":!0}),`Was ist neu?`]}),h&&(0,$.jsx)(Ht,{zid:n.id,baustein:m.id,className:`flaeche-innen rounded-xl p-3`})]}),t[39]=m,t[40]=h,t[41]=g,t[42]=n.id,t[43]=R):R=t[43];let B;return t[44]!==T||t[45]!==D||t[46]!==N||t[47]!==F||t[48]!==L||t[49]!==R||t[50]!==v?(B=(0,$.jsxs)(`div`,{role:`row`,className:v,children:[T,D,N,F,L,R]}),t[44]=T,t[45]=D,t[46]=N,t[47]=F,t[48]=L,t[49]=R,t[50]=v,t[51]=B):B=t[51],B}function Xt(e){return e.zustand===`neu`&&e.aktion}function Zt(e){let t=(0,Q.c)(48),{ziele:n,laufend:r,gesperrt:i,onAktion:o}=e,[s,c]=(0,Ge.useState)(null),l;t[0]===s?l=t[1]:(l=s?s.ziel.bausteine.find(e=>e.aktion?.pfad===s.aktion.pfad&&Jt(s.ziel,e)):void 0,t[0]=s,t[1]=l);let u=l,d,f,p,m,h,g;if(t[2]!==i||t[3]!==r||t[4]!==n){let e=[...n].sort($t),o;t[11]===n?o=t[12]:(o=n.filter(Qt),t[11]=n,t[12]=o),d=o.length,f=`table`,p=`Updates je Gerät`,m=`flex flex-col`,t[13]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,Ut),children:[(0,$.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`App`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Pakete`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Rückweg`}),(0,$.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),t[13]=h):h=t[13];let s;t[14]!==i||t[15]!==r?(s=e=>(0,$.jsx)(Yt,{ziel:e,laeuft:r.get(e.id)??null,gesperrt:i||r.has(e.id),onFrage:c},e.id),t[14]=i,t[15]=r,t[16]=s):s=t[16],g=e.map(s),t[2]=i,t[3]=r,t[4]=n,t[5]=d,t[6]=f,t[7]=p,t[8]=m,t[9]=h,t[10]=g}else d=t[5],f=t[6],p=t[7],m=t[8],h=t[9],g=t[10];let _;t[17]!==f||t[18]!==p||t[19]!==m||t[20]!==h||t[21]!==g?(_=(0,$.jsxs)(`div`,{role:f,"aria-label":p,className:m,children:[h,g]}),t[17]=f,t[18]=p,t[19]=m,t[20]=h,t[21]=g,t[22]=_):_=t[22];let v;t[23]!==d||t[24]!==n.length?(v=d>0&&d===n.length&&(0,$.jsx)(F,{art:`gruen`,children:`Alles aktuell`}),t[23]=d,t[24]=n.length,t[25]=v):v=t[25];let y=!!s,b=s?`${s.ziel.name}: ${s.aktion.label}`:``,x=s?.aktion.frage??``,S=s?.aktion.label??``,C;t[26]===s?.aktion.pfad?C=t[27]:(C=s?.aktion.pfad.endsWith(`/neustart`),t[26]=s?.aktion.pfad,t[27]=C);let w=!!C,T;t[28]!==s||t[29]!==o?(T=()=>{s&&o(s.aktion),c(null)},t[28]=s,t[29]=o,t[30]=T):T=t[30];let E;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>c(null),t[31]=E):E=t[31];let D;t[32]!==s||t[33]!==u?(D=u&&s&&(0,$.jsx)(Ht,{zid:s.ziel.id,baustein:u.id,kompakt:!0}),t[32]=s,t[33]=u,t[34]=D):D=t[34];let O;t[35]!==i||t[36]!==b||t[37]!==x||t[38]!==S||t[39]!==w||t[40]!==T||t[41]!==D||t[42]!==y?(O=(0,$.jsx)(J,{offen:y,titel:b,text:x,knopf:S,gefahr:w,gesperrt:i,onJa:T,onNein:E,children:D}),t[35]=i,t[36]=b,t[37]=x,t[38]=S,t[39]=w,t[40]=T,t[41]=D,t[42]=y,t[43]=O):O=t[43];let k;return t[44]!==O||t[45]!==_||t[46]!==v?(k=(0,$.jsxs)($.Fragment,{children:[_,v,O]}),t[44]=O,t[45]=_,t[46]=v,t[47]=k):k=t[47],k}function Qt(e){return ue(e)===3}function $t(e,t){return ue(e)-ue(t)}var en=`md:grid-cols-[minmax(0,1.6fr)_minmax(0,1fr)_minmax(0,1.4fr)]`,tn={ok:`bg-gruen`,gelb:`bg-bernstein`,rot:`bg-rot shadow-[0_0_8px_var(--rot)]`},nn={ok:`text-text-3`,gelb:`text-bernstein`,rot:`text-rot-text`},rn=e=>T(new Date(e*1e3).toISOString()).toLowerCase();function an(e){if(e<=0)return`abgelaufen`;if(e<86400)return`noch ${Math.max(1,Math.round(e/3600))} Std.`;let t=Math.round(e/86400);return t<60?`noch ${t} ${t===1?`Tag`:`Tage`}`:t<730?`noch ${Math.round(t/30)} Monate`:`noch ${Math.round(t/365)} Jahre`}function on(e){let t=(0,Q.c)(40),{z:n}=e,r=n.namen.length>1?` und ${n.namen.length-1} weitere`:``,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=a(`grid grid-cols-2 gap-x-4 gap-y-1 border-t border-white/[0.06] py-3 md:items-center`,en),t[0]=i):i=t[0];let o=tn[n.stufe],s;t[1]===o?s=t[2]:(s=a(`mt-1.5 size-2 shrink-0 rounded-full`,o),t[1]=o,t[2]=s);let c;t[3]===s?c=t[4]:(c=(0,$.jsx)(`span`,{"aria-hidden":!0,className:s}),t[3]=s,t[4]=c);let l;t[5]!==r||t[6]!==n.name?(l=(0,$.jsxs)(`span`,{className:`text-[15px] font-semibold break-all`,children:[n.name,r]}),t[5]=r,t[6]=n.name,t[7]=l):l=t[7];let u;t[8]!==n.aussteller||t[9]!==n.wo?(u=[n.wo,n.aussteller].filter(Boolean),t[8]=n.aussteller,t[9]=n.wo,t[10]=u):u=t[10];let d=u.join(` · `),f;t[11]===d?f=t[12]:(f=(0,$.jsx)(`span`,{className:`text-[13px] text-text-3`,children:d}),t[11]=d,t[12]=f);let p;t[13]!==l||t[14]!==f?(p=(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[l,f]}),t[13]=l,t[14]=f,t[15]=p):p=t[15];let m;t[16]!==c||t[17]!==p?(m=(0,$.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-start gap-2.5 md:col-span-1`,children:[c,p]}),t[16]=c,t[17]=p,t[18]=m):m=t[18];let h;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Gültig bis `}),t[19]=h):h=t[19];let g;t[20]===n.bis?g=t[21]:(g=rn(n.bis),t[20]=n.bis,t[21]=g);let _;t[22]===g?_=t[23]:(_=(0,$.jsx)(`span`,{className:`ziffern`,children:g}),t[22]=g,t[23]=_);let v;t[24]===n.rest_s?v=t[25]:(v=an(n.rest_s),t[24]=n.rest_s,t[25]=v);let y;t[26]===v?y=t[27]:(y=(0,$.jsx)(`span`,{className:`block text-xs text-text-3`,children:v}),t[26]=v,t[27]=y);let b;t[28]!==_||t[29]!==y?(b=(0,$.jsxs)(`span`,{role:`cell`,className:`text-sm text-text-2`,children:[h,_,y]}),t[28]=_,t[29]=y,t[30]=b):b=t[30];let x=nn[n.stufe],S;t[31]===x?S=t[32]:(S=a(`text-sm`,x),t[31]=x,t[32]=S);let C=n.problem??`in Ordnung`,w;t[33]!==S||t[34]!==C?(w=(0,$.jsx)(`span`,{role:`cell`,className:S,children:C}),t[33]=S,t[34]=C,t[35]=w):w=t[35];let T;return t[36]!==m||t[37]!==b||t[38]!==w?(T=(0,$.jsxs)(`div`,{role:`row`,className:i,children:[m,b,w]}),t[36]=m,t[37]=b,t[38]=w,t[39]=T):T=t[39],T}function sn(e){let t=(0,Q.c)(37),{daten:n}=e,r=n.zertifikate;if(!n.gelesen||r.length===0)return null;let i,o,s,c,l,u,d,f,p;if(t[0]!==r){o=r.filter(dn),i=r.some(un),f=o.length>0,p=`flaeche-innen group rounded-2xl px-4 open:pb-3`,u=`flex min-h-12 cursor-pointer list-none flex-wrap items-center justify-between gap-x-3 gap-y-1 py-2 [&::-webkit-details-marker]:hidden`;let e;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(O,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[10]=e):e=t[10],t[11]===r.length?d=t[12]:(d=(0,$.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[e,r.length,` Zertifikate`]}),t[11]=r.length,t[12]=d),s=a,c=`text-sm`,l=o.length?nn[o.some(ln)?`rot`:`gelb`]:`text-text-2`,t[0]=r,t[1]=i,t[2]=o,t[3]=s,t[4]=c,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=p}else i=t[1],o=t[2],s=t[3],c=t[4],l=t[5],u=t[6],d=t[7],f=t[8],p=t[9];let m;t[13]!==s||t[14]!==c||t[15]!==l?(m=s(c,l),t[13]=s,t[14]=c,t[15]=l,t[16]=m):m=t[16];let h=o.length?`${o.length} mit Problem`:`alle gültig`,g;t[17]!==m||t[18]!==h?(g=(0,$.jsx)(`span`,{className:m,children:h}),t[17]=m,t[18]=h,t[19]=g):g=t[19];let _;t[20]!==g||t[21]!==u||t[22]!==d?(_=(0,$.jsxs)(`summary`,{className:u,children:[d,g]}),t[20]=g,t[21]=u,t[22]=d,t[23]=_):_=t[23];let v;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,$.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pt-1 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,en),children:[(0,$.jsx)(`span`,{role:`columnheader`,children:`Für`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Gültig bis`}),(0,$.jsx)(`span`,{role:`columnheader`,children:`Zustand`})]}),t[24]=v):v=t[24];let y;t[25]===r?y=t[26]:(y=r.map(cn),t[25]=r,t[26]=y);let b;t[27]===y?b=t[28]:(b=(0,$.jsxs)(`div`,{role:`table`,"aria-label":`Zertifikate`,className:`flex flex-col`,children:[v,y]}),t[27]=y,t[28]=b);let x;t[29]===i?x=t[30]:(x=i&&(0,$.jsx)(`p`,{className:`m-0 border-t border-white/[0.06] pt-3 text-sm text-text-3`,children:`Die Zertifikate von NPMplus gelten nur knapp eine Woche und werden laufend erneuert — gemeldet wird erst, wenn eine Erneuerung ausbleibt.`}),t[29]=i,t[30]=x);let S;return t[31]!==_||t[32]!==b||t[33]!==x||t[34]!==f||t[35]!==p?(S=(0,$.jsxs)(`details`,{open:f,className:p,children:[_,b,x]}),t[31]=_,t[32]=b,t[33]=x,t[34]=f,t[35]=p,t[36]=S):S=t[36],S}function cn(e){return(0,$.jsx)(on,{z:e},`${e.quelle}-${e.datei}-${e.name}`)}function ln(e){return e.stufe===`rot`}function un(e){return e.quelle===`npm`&&e.laufzeit_s!==null&&e.laufzeit_s<2592e3}function dn(e){return e.stufe!==`ok`}var fn=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`],pn={eingespielt:{art:`gruen`,text:`eingespielt`},zurueckgerollt:{art:`bernstein`,text:`zurückgerollt`},fehler:{art:`rot`,text:`Fehler`},neustart:{art:`cyan`,text:`Neustart`},aufgeraeumt:{art:`gruen`,text:`aufgeräumt`},offen:{art:`cyan`,text:`Probelauf`}},mn=e=>T(new Date(e*1e3).toISOString());function hn(){let e=(0,Q.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,$.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, erscheinen hier alle Geräte mit ihren offenen Updates. Ein Update startest du mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,$.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsxs)($.Fragment,{children:[t,n,(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,$.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:fn.map(gn)})]}),(0,$.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function gn(e){return(0,$.jsx)(`li`,{children:(0,$.jsx)(F,{children:e})},e)}function _n(e){let t=(0,Q.c)(9),{partner:n}=e,r;t[0]===n.eingerichtet?r=t[1]:(r=n.eingerichtet?(0,$.jsx)(F,{art:`rot`,children:`Antwortet nicht`}):(0,$.jsx)(F,{children:`Noch nicht eingerichtet`}),t[0]=n.eingerichtet,t[1]=r);let i=r,a;t[2]!==n.eingerichtet||t[3]!==n.fehler||t[4]!==n.url?(a=n.eingerichtet?(0,$.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,n.fehler??`nicht erreichbar`,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}):(0,$.jsx)(hn,{}),t[2]=n.eingerichtet,t[3]=n.fehler,t[4]=n.url,t[5]=a):a=t[5];let o;return t[6]!==i||t[7]!==a?(o=(0,$.jsx)(Z,{titel:`Homelab`,rechts:i,children:a}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function vn(e){let t=(0,Q.c)(12),{hinweise:n}=e,r,i;t[0]===n?(r=t[1],i=t[2]):(r=n.filter(bn),i=r.some(yn),t[0]=n,t[1]=r,t[2]=i);let a=i?`rot`:r.length?`bernstein`:`grau`,o=r.length?`${r.length} offen`:`alle stumm`,s;t[3]!==a||t[4]!==o?(s=(0,$.jsx)(F,{art:a,children:o}),t[3]=a,t[4]=o,t[5]=s):s=t[5];let c;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(c=[],t[6]=c):c=t[6];let l;t[7]===n?l=t[8]:(l=(0,$.jsx)(he,{hinweise:n,verlauf:c,basis:`/api/homelab/hinweise`}),t[7]=n,t[8]=l);let u;return t[9]!==s||t[10]!==l?(u=(0,$.jsx)(Z,{titel:`Hinweise`,id:`hinweise`,rechts:s,children:l}),t[9]=s,t[10]=l,t[11]=u):u=t[11],u}function yn(e){return e.stufe===`rot`}function bn(e){return e.zustand!==`stumm`}function xn(e){let t=(0,Q.c)(8),{laeufe:n}=e,r,i,a;if(t[0]!==n){a=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(Cn).slice(0,12);if(e.length===0){let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch kein Update im Homelab eingespielt.`}),t[4]=e):e=t[4],a=e;break bb0}r=`@container m-0 flex list-none flex-col p-0`,i=e.map(Sn)}t[0]=n,t[1]=r,t[2]=i,t[3]=a}else r=t[1],i=t[2],a=t[3];if(a!==Symbol.for(`react.early_return_sentinel`))return a;let o;return t[5]!==r||t[6]!==i?(o=(0,$.jsx)(`ol`,{className:r,children:i}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function Sn(e){let t=e.ergebnis?pn[e.ergebnis]??{art:`grau`,text:e.ergebnis}:{art:`grau`,text:`unterbrochen`};return(0,$.jsxs)(`li`,{className:`flex flex-col gap-1.5 border-t border-white/[0.06] py-3 first:border-t-0 first:pt-0`,children:[(0,$.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,$.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:mn(e.start)}),(0,$.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:e.name}),(0,$.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,$.jsx)(F,{art:t.art,children:t.text})})]}),e.text&&(0,$.jsx)(`p`,{className:`m-0 text-sm text-text-2 @sm:pl-[124px]`,children:e.text})]},e.id)}function Cn(e){return e.status!==`laeuft`&&!G(e)}function wn(e){let t=(0,Q.c)(9),{stand:n}=e;if(!n.ausfuehrer.verbunden){let e;t[0]===n.ausfuehrer.zuletzt?e=t[1]:(e=n.ausfuehrer.zuletzt?` (zuletzt ${mn(n.ausfuehrer.zuletzt)})`:``,t[0]=n.ausfuehrer.zuletzt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,$.jsxs)(`p`,{role:`alert`,className:`rounded-2xl bg-bernstein/[0.08] px-4 py-3 text-[15px] text-bernstein ring-1 ring-bernstein/35 ring-inset`,children:[`Der Ausführer auf dem Proxmox-Host meldet sich nicht`,e,`. Die Geräte zeigen den letzten bekannten Stand; Updates starten erst, wenn er wieder da ist.`]}),t[2]=e,t[3]=r),r}if(!n.bericht){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),t[4]=e):e=t[4],e}if(n.bericht.veraltet){let e;t[5]===n.bericht.empfangen?e=t[6]:(e=mn(n.bericht.empfangen),t[5]=n.bericht.empfangen,t[6]=e);let r;return t[7]===e?r=t[8]:(r=(0,$.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,e,`; die Angaben können veraltet sein.`]}),t[7]=e,t[8]=r),r}return null}function Tn(){let e=(0,Q.c)(20),t=b(),n=m(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=g(r),a=E(r),o=_(r),s=y(),c=null;if(t.isPending||n.isPending){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(B,{text:`Wird gelesen …`}),e[0]=t):t=e[0],c=t}else if(!r){let t;e[1]!==n.data||e[2]!==n.error?.message?(t=n.data?(0,$.jsx)(_n,{partner:n.data}):(0,$.jsx)(B,{fehler:!0,text:`Der Partner lässt sich nicht abfragen: ${n.error?.message??`keine Daten`}`}),e[1]=n.data,e[2]=n.error?.message,e[3]=t):t=e[3],c=t}else if(i.isPending){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(B,{text:`Der Homelab-Teil meldet sich gleich …`}),e[4]=t):t=e[4],c=t}else if(!i.data){let t=`Der Homelab-Teil antwortet nicht: ${i.error?.message??`keine Daten`}`,n;e[5]===t?n=e[6]:(n=(0,$.jsx)(B,{fehler:!0,text:t}),e[5]=t,e[6]=n),c=n}let l;if(e[7]!==a.data?.laeufe){l=new Map;for(let e of a.data?.laeufe??[])e.status===`laeuft`&&l.set(e.ziel,e.schritte.at(-1)??`startet …`);e[7]=a.data?.laeufe,e[8]=l}else l=e[8];let u;e[9]===a.data?.laeufe?u=e[10]:(u=a.data?.laeufe??[],e[9]=a.data?.laeufe,e[10]=u);let d;e[11]===o.data?.hinweise?d=e[12]:(d=o.data?.hinweise??[],e[11]=o.data?.hinweise,e[12]=d);let f;return e[13]!==s||e[14]!==c||e[15]!==i.data||e[16]!==l||e[17]!==u||e[18]!==d?(f={ersatz:c,stand:i.data,laufend:l,laeufe:u,hinweise:d,aktion:s},e[13]=s,e[14]=c,e[15]=i.data,e[16]=l,e[17]=u,e[18]=d,e[19]=f):f=e[19],f}function En(){let e=(0,Q.c)(70),t=ee(),{ersatz:n,stand:r,laufend:i,laeufe:a,hinweise:o,aktion:l}=Tn(),f=p(`1h`,!!r),m=d(!!r),h=u(!!r),g=c(!!r),_=x(),v=D(!!r),y=w(!!r),b=s();if(n||!r)return n;let S,C,T;if(e[0]!==o||e[1]!==a||e[2]!==r){S=r.bericht?mn(r.bericht.empfangen):null;let t;e[6]===a?t=e[7]:(t=new Set(a.filter(On).map(Dn)),e[6]=a,e[7]=t),C=t,T=te(r,o,C.size,S),e[0]=o,e[1]=a,e[2]=r,e[3]=S,e[4]=C,e[5]=T}else S=e[3],C=e[4],T=e[5];let E=T,O;e[8]!==E.ziel||e[9]!==t?(O=()=>{E.ziel===`updates`?t({to:`/homelab/updates`}):E.ziel&&document.getElementById(E.ziel)?.scrollIntoView({behavior:`smooth`,block:`start`})},e[8]=E.ziel,e[9]=t,e[10]=O):O=e[10];let k;e[11]===t?k=e[12]:(k=(e,n)=>{n?t({to:`/homelab/updates`}):document.getElementById(`geraet-${e.id}`)?.scrollIntoView({behavior:`smooth`,block:`center`})},e[11]=t,e[12]=k);let A;e[13]!==C||e[14]!==E||e[15]!==r.ziele||e[16]!==O||e[17]!==k?(A=(0,$.jsx)(We,{lage:E,ziele:r.ziele,imUpdate:C,onAnsehen:O,onGeraet:k}),e[13]=C,e[14]=E,e[15]=r.ziele,e[16]=O,e[17]=k,e[18]=A):A=e[18];let j;e[19]===r?j=e[20]:(j=(0,$.jsx)(wn,{stand:r}),e[19]=r,e[20]=j);let M;e[21]===o?M=e[22]:(M=o.length>0&&(0,$.jsx)(vn,{hinweise:o}),e[21]=o,e[22]=M);let N;e[23]===v.data?.geraete?N=e[24]:(N=v.data?.geraete??[],e[23]=v.data?.geraete,e[24]=N);let P;e[25]===v.data?.docker?P=e[26]:(P=v.data?.docker??[],e[25]=v.data?.docker,e[26]=P);let F=b.isPending||!r.ausfuehrer.verbunden,I;e[27]===b?I=e[28]:(I=(e,t)=>b.mutate({id:e,wahl:t}),e[27]=b,e[28]=I);let L;e[29]!==N||e[30]!==P||e[31]!==F||e[32]!==I?(L=(0,$.jsx)(Ze,{geraete:N,stacks:P,gesperrt:F,onWahl:I}),e[29]=N,e[30]=P,e[31]=F,e[32]=I,e[33]=L):L=e[33];let R;e[34]===S?R=e[35]:(R=S&&(0,$.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,S]}),e[34]=S,e[35]=R);let z;e[36]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,$.jsxs)(me,{to:`/homelab/monitoring`,className:`inline-flex items-center gap-1 text-sm text-lab-text hover:underline`,children:[`Monitoring `,(0,$.jsx)(pe,{className:`size-3.5`,"aria-hidden":!0})]}),e[36]=z):z=e[36];let B;e[37]===R?B=e[38]:(B=(0,$.jsxs)(`span`,{className:`flex items-center gap-3`,children:[R,z]}),e[37]=R,e[38]=B);let V=f.data?.geraete,H;e[39]!==r.ziele||e[40]!==V?(H=(0,$.jsx)(Be,{ziele:r.ziele,messwerte:V}),e[39]=r.ziele,e[40]=V,e[41]=H):H=e[41];let U;e[42]===f.isError?U=e[43]:(U=f.isError&&(0,$.jsx)(`p`,{className:`text-xs text-text-3`,children:`CPU und Speicher erscheinen, sobald der Ausführer Messwerte schickt.`}),e[42]=f.isError,e[43]=U);let W;e[44]!==B||e[45]!==H||e[46]!==U?(W=(0,$.jsxs)(Z,{titel:`Geräte`,id:`geraete`,rechts:B,children:[H,U]}),e[44]=B,e[45]=H,e[46]=U,e[47]=W):W=e[47];let G;e[48]===y.data?G=e[49]:(G=y.data?.verfuegbar&&y.data.stacks.length>0&&(0,$.jsx)(Z,{titel:`Docker-Dienste`,id:`docker`,children:(0,$.jsx)(je,{lage:y.data})}),e[48]=y.data,e[49]=G);let K;e[50]!==l||e[51]!==i||e[52]!==_||e[53]!==m.data||e[54]!==r.ausfuehrer?(K=m.data?.bericht&&(0,$.jsx)(Z,{titel:`Speicher und Sicherungen`,id:`speicher`,children:(0,$.jsx)(xt,{daten:m.data,laeuft:i.get(`pve`)??null,gesperrt:l.isPending||i.has(`pve`)||!r.ausfuehrer.verbunden,onAktion:e=>l.mutate(e),onProbe:()=>_.mutate(void 0),probeGesperrt:_.isPending||!r.ausfuehrer.verbunden,snapshotsLink:(0,$.jsxs)(me,{to:`/homelab/snapshots`,className:`inline-flex min-h-10 items-center gap-1 self-start text-sm text-lab-text hover:underline`,children:[`Zu den Snapshots `,(0,$.jsx)(pe,{className:`size-3.5`,"aria-hidden":!0})]})})}),e[50]=l,e[51]=i,e[52]=_,e[53]=m.data,e[54]=r.ausfuehrer,e[55]=K):K=e[55];let q;e[56]===g.data?q=e[57]:(q=g.data&&(g.data.platten.length>0||g.data.nas.eingerichtet)&&(0,$.jsxs)(Z,{titel:`Plattengesundheit`,id:`platten`,children:[(0,$.jsx)(ve,{platten:g.data.platten}),g.data.nas.eingerichtet&&!g.data.nas.ok&&g.data.nas.detail&&(0,$.jsx)(`p`,{className:`text-sm text-bernstein`,children:g.data.nas.detail}),!g.data.nas.eingerichtet&&(0,$.jsx)(`p`,{className:`text-xs text-text-3`,children:`Die Platten des NAS erscheinen, sobald am QNAP SNMP an ist und der Zugangsname unter Einstellungen → Homelab steht.`})]}),e[56]=g.data,e[57]=q);let J;e[58]===h.data?J=e[59]:(J=h.data?.gelesen&&h.data.zertifikate.length>0&&(0,$.jsx)(Z,{titel:`Zertifikate`,id:`zertifikate`,children:(0,$.jsx)(sn,{daten:h.data})}),e[58]=h.data,e[59]=J);let Y;return e[60]!==L||e[61]!==W||e[62]!==G||e[63]!==K||e[64]!==q||e[65]!==J||e[66]!==A||e[67]!==j||e[68]!==M?(Y=(0,$.jsxs)($.Fragment,{children:[A,j,M,L,W,G,K,q,J]}),e[60]=L,e[61]=W,e[62]=G,e[63]=K,e[64]=q,e[65]=J,e[66]=A,e[67]=j,e[68]=M,e[69]=Y):Y=e[69],Y}function Dn(e){return e.ziel}function On(e){return e.status===`laeuft`&&!G(e)}function kn(){let e=(0,Q.c)(30),{ersatz:t,stand:n,laufend:r,laeufe:i,aktion:a}=Tn(),s=o(!!n),c=v();if(t||!n)return t;let l=s.data?.sammellauf??null,u=l?.status===`laeuft`,d;e[0]===n.ziele?d=e[1]:(d=le(n.ziele).filter(An),e[0]=n.ziele,e[1]=d);let f=d.length,p=a.isPending||u||!n.ausfuehrer.verbunden,m;e[2]!==f||e[3]!==p?(m=(0,$.jsx)(At,{anzahl:f,gesperrt:p}),e[2]=f,e[3]=p,e[4]=m):m=e[4];let h;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Je Gerät, was läuft und was neu ist. Du startest jedes Update selbst — einzeln oder alle nacheinander. Vorher wird gesichert, danach geprüft; ist die Prüfung rot, geht es von selbst zurück.`}),e[5]=h):h=e[5];let g;e[6]===n?g=e[7]:(g=(0,$.jsx)(wn,{stand:n}),e[6]=n,e[7]=g);let _;e[8]!==l||e[9]!==c||e[10]!==u||e[11]!==n.bericht?.empfangen?(_=l&&(u||l.ende&&(n.bericht?.empfangen??0)-l.ende<21600)&&(0,$.jsx)(Pt,{lauf:l,onQuittieren:()=>c.mutate(l.id)}),e[8]=l,e[9]=c,e[10]=u,e[11]=n.bericht?.empfangen,e[12]=_):_=e[12];let y=a.isPending||u||!n.ausfuehrer.verbunden,b;e[13]===a?b=e[14]:(b=e=>a.mutate(e),e[13]=a,e[14]=b);let x;e[15]!==r||e[16]!==n.ziele||e[17]!==y||e[18]!==b?(x=(0,$.jsx)(Zt,{ziele:n.ziele,laufend:r,gesperrt:y,onAktion:b}),e[15]=r,e[16]=n.ziele,e[17]=y,e[18]=b,e[19]=x):x=e[19];let S;e[20]!==m||e[21]!==g||e[22]!==_||e[23]!==x?(S=(0,$.jsxs)(Z,{titel:`Updates`,rechts:m,children:[h,g,_,x]}),e[20]=m,e[21]=g,e[22]=_,e[23]=x,e[24]=S):S=e[24];let C;e[25]===i?C=e[26]:(C=(0,$.jsx)(Z,{titel:`Verlauf`,children:(0,$.jsx)(xn,{laeufe:i})}),e[25]=i,e[26]=C);let w;return e[27]!==C||e[28]!==S?(w=(0,$.jsxs)($.Fragment,{children:[S,C]}),e[27]=C,e[28]=S,e[29]=w):w=e[29],w}function An(e){return e.baustein.aktion}export{En as HomelabSeite,kn as HomelabUpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Homelab-CbrbD7vJ.js b/frontend/dist/assets/Homelab-CbrbD7vJ.js deleted file mode 100644 index bd59fab..0000000 --- a/frontend/dist/assets/Homelab-CbrbD7vJ.js +++ /dev/null @@ -1 +0,0 @@ -import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{$ as o,B as s,D as c,I as l,L as u,R as d,T as f,X as p,Y as m,Z as h,_ as g,b as _,bt as v,g as y,ht as b,it as x,pt as S,r as C,w,x as T,y as E}from"./abfragen-pD_qBEtc.js";import{t as D}from"./chevron-right-DF8ikrVh.js";import{n as O,t as k}from"./undo-2-B8COJmAr.js";import{t as A}from"./button-BHVKhtQ6.js";import{$ as j,A as M,D as N,H as P,M as F,O as I,Q as L,R,U as z,V as B,X as V,Z as H,at as U,bt as W,c as G,ct as K,et as ee,gt as q,h as te,ht as ne,i as J,it as re,j as ie,k as ae,m as Y,n as oe,nt as se,ot as ce,r as le,rt as ue,st as de,tt as fe,ut as pe,vt as me,yt as he}from"./index-B_hvuxH0.js";import{n as ge,r as _e,t as ve}from"./Lagekopf-Cap3dqRY.js";var ye={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};ye.node;var be=r(ye),xe={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};xe.node;var Se=r(xe),Ce={name:`skip-forward`,size:24,node:[[`path`,{d:`M21 4v16`,key:`7j8fe9`}],[`path`,{d:`M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z`,key:`zs4d6`}]]};Ce.node;var we=r(Ce),X=i(),Z=n(),Te={neu:{text:`Update verfügbar`,klasse:`text-cyan-text`},lokal:{text:`lokal gebaut`,klasse:`text-text-3`},aktuell:{text:`aktuell`,klasse:`text-text-3`},unbekannt:{text:`Update-Stand unklar`,klasse:`text-bernstein`}};function Ee(e){return e.zustand===`restarting`||e.gesund===!1?`rot`:e.zustand===`running`?`ok`:`aus`}function De(e){return e.gesund===!1?`ungesund`:e.zustand===`restarting`?`startet immer wieder neu`:e.zustand===`running`?e.gesund?`läuft, gesund`:`läuft`:e.zustand===`exited`?`beendet`:e.zustand===`paused`?`angehalten`:e.zustand}var Oe=e=>(e??``).split(`/`).at(-1)?.split(`:`)[0]??``;function ke(e){let t=e.luecken;return!t||!t.kritisch&&!t.hoch?null:`${[t.kritisch?`${t.kritisch} kritische`:null,t.hoch?`${t.hoch} hohe`:null].filter(Boolean).join(`, `)} Lücken`}function Ae(e){let t=(0,X.c)(42),{c:n}=e,r=Te[n.update]??Te.unbekannt,i;t[0]===n?i=t[1]:(i=ke(n),t[0]=n,t[1]=i);let o=i,s;t[2]!==n.dienst||t[3]!==n.image?(s=B({art:`container`,name:n.dienst??Oe(n.image)}),t[2]=n.dienst,t[3]=n.image,t[4]=s):s=t[4];let c;t[5]===n?c=t[6]:(c=Ee(n),t[5]=n,t[6]=c);let l;t[7]!==s||t[8]!==c?(l=(0,Z.jsx)(R,{bild:s,groesse:`sm`,punkt:c}),t[7]=s,t[8]=c,t[9]=l):l=t[9];let u;t[10]===n.name?u=t[11]:(u=(0,Z.jsx)(`span`,{className:`truncate text-[14.5px] font-medium`,children:n.name}),t[10]=n.name,t[11]=u);let d;t[12]===n.image?d=t[13]:(d=(0,Z.jsx)(`span`,{className:`truncate text-[12.5px] text-text-3`,children:n.image}),t[12]=n.image,t[13]=d);let f;t[14]!==n.luecken?.kritisch||t[15]!==o?(f=o&&(0,Z.jsx)(`span`,{className:a(`truncate text-[12.5px]`,n.luecken?.kritisch?`text-rot-text`:`text-bernstein`),children:o}),t[14]=n.luecken?.kritisch,t[15]=o,t[16]=f):f=t[16];let p;t[17]!==u||t[18]!==d||t[19]!==f?(p=(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[u,d,f]}),t[17]=u,t[18]=d,t[19]=f,t[20]=p):p=t[20];let m;t[21]===n?m=t[22]:(m=Ee(n)===`rot`?`text-rot-text`:`text-text-2`,t[21]=n,t[22]=m);let h;t[23]===m?h=t[24]:(h=a(`text-[13px]`,m),t[23]=m,t[24]=h);let g;t[25]===n?g=t[26]:(g=De(n),t[25]=n,t[26]=g);let _;t[27]!==h||t[28]!==g?(_=(0,Z.jsx)(`span`,{className:h,children:g}),t[27]=h,t[28]=g,t[29]=_):_=t[29];let v;t[30]===r.klasse?v=t[31]:(v=a(`text-[12px]`,r.klasse),t[30]=r.klasse,t[31]=v);let y;t[32]!==v||t[33]!==r.text?(y=(0,Z.jsx)(`span`,{className:v,children:r.text}),t[32]=v,t[33]=r.text,t[34]=y):y=t[34];let b;t[35]!==_||t[36]!==y?(b=(0,Z.jsxs)(`span`,{className:`flex shrink-0 flex-col items-end text-right`,children:[_,y]}),t[35]=_,t[36]=y,t[37]=b):b=t[37];let x;return t[38]!==b||t[39]!==l||t[40]!==p?(x=(0,Z.jsxs)(`li`,{className:`flex min-w-0 items-center gap-3 border-t border-white/[0.06] py-2.5 first:border-t-0`,children:[l,p,b]}),t[38]=b,t[39]=l,t[40]=p,t[41]=x):x=t[41],x}function je(e){let t=(0,X.c)(4),{lage:n}=e;if(!n.verfuegbar||n.stacks.length===0)return null;let r;t[0]===n.stacks?r=t[1]:(r=n.stacks.map(Me),t[0]=n.stacks,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,Z.jsx)(`div`,{className:`grid gap-3 md:grid-cols-2 2xl:grid-cols-3`,children:r}),t[2]=r,t[3]=i),i}function Me(e){let t=e.container.filter(Fe).length,n=e.container.filter(Pe).length;return(0,Z.jsxs)(`section`,{"aria-label":`Stack ${e.name}`,className:`flaeche-innen flex min-w-0 flex-col rounded-2xl px-4 py-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 pb-1`,children:[(0,Z.jsx)(`h3`,{className:`m-0 truncate text-[15px] font-semibold`,children:e.name}),(0,Z.jsxs)(`span`,{className:`shrink-0 text-[12.5px] text-text-3`,children:[t,` von `,e.container.length,` laufen`,n?` · ${n} mit Update`:``]})]}),(0,Z.jsx)(`ul`,{className:`m-0 list-none p-0`,children:e.container.map(Ne)})]},e.name)}function Ne(e){return(0,Z.jsx)(Ae,{c:e},e.id)}function Pe(e){return e.update===`neu`}function Fe(e){return e.zustand===`running`}var Ie=`md:grid-cols-[minmax(0,1.35fr)_110px_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,1fr)_90px]`,Le=e=>(e/1e9).toFixed(1).replace(`.`,`,`);function Re(e){let t=(0,X.c)(20),{wert:n,gelb:r,rot:i,zusatz:o,unter:s}=e;if(n==null){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let c=n>=i?`var(--rot)`:n>=r?`var(--bernstein)`:`color-mix(in srgb, var(--lab) 80%, transparent)`,l=n>=i?`text-rot-text`:n>=r?`text-bernstein`:`text-text-2`,u;t[1]===l?u=t[2]:(u=a(`ziffern text-sm`,l),t[1]=l,t[2]=u);let d;t[3]===n?d=t[4]:(d=Math.round(n),t[3]=n,t[4]=d);let f;t[5]===o?f=t[6]:(f=o&&(0,Z.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,o]}),t[5]=o,t[6]=f);let p;t[7]!==u||t[8]!==d||t[9]!==f?(p=(0,Z.jsxs)(`span`,{className:u,children:[d,` %`,f]}),t[7]=u,t[8]=d,t[9]=f,t[10]=p):p=t[10];let m=`${Math.min(100,Math.max(2,n))}%`,h;t[11]!==c||t[12]!==m?(h=(0,Z.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,Z.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:m,background:c}})}),t[11]=c,t[12]=m,t[13]=h):h=t[13];let g;t[14]===s?g=t[15]:(g=s&&(0,Z.jsx)(`span`,{className:a(`text-xs`,N[s.stufe]),children:s.text}),t[14]=s,t[15]=g);let _;return t[16]!==p||t[17]!==h||t[18]!==g?(_=(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1.5`,children:[p,h,g]}),t[16]=p,t[17]=h,t[18]=g,t[19]=_):_=t[19],_}function ze(e){if(e.erreichbar===!1)return 0;let t=re(e);return t!==null&&t>=.8?1:e.art===`proxmox-host`?2:3}function Be(e){let t=(0,X.c)(4),{ziele:n,messwerte:r}=e,i;if(t[0]!==r||t[1]!==n){let e=new Map((r??[]).map(Ue)),o=new Map((r??[]).map(He)),s=[...n].sort(Ve),c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,Ie),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Netz`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Platte`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`})]}),t[3]=c):c=t[3],i=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Zustand der Geräte`,className:`flex flex-col`,children:[c,s.map(t=>{let n=e.get(t.id),r=n?.platte??(re(t)===null?null:re(t)*100),i=n?.ram_used&&n.ram_total?`${Le(n.ram_used)} / ${Le(n.ram_total)} GB`:void 0;return(0,Z.jsxs)(`div`,{id:`geraet-${t.id}`,role:`row`,className:a(`grid scroll-mt-24 grid-cols-2 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3 md:items-center`,Ie),children:[(0,Z.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-3 md:col-span-1`,children:[(0,Z.jsx)(R,{bild:B(t),groesse:`sm`,punkt:t.erreichbar===!1?`rot`:t.erreichbar?`ok`:null}),(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,Z.jsx)(he,{to:`/homelab/monitoring`,hash:t.id,className:`text-[15px] font-semibold break-words hover:text-lab-text`,children:t.name}),(0,Z.jsxs)(`span`,{className:`flex flex-wrap gap-x-2 text-[13px] text-text-3`,children:[H(t)!==t.name&&(0,Z.jsx)(`span`,{children:H(t)}),(0,Z.jsx)(he,{to:`/homelab/protokoll`,hash:t.id,className:`text-lab-text hover:underline`,children:`Zeitleiste`})]})]})]}),(0,Z.jsxs)(`span`,{role:`cell`,className:a(`flex items-center gap-1.5 text-[13px]`,t.erreichbar===!1?`text-rot-text`:`text-text-3`),children:[t.erreichbar!==null&&(0,Z.jsx)(`span`,{"aria-hidden":!0,className:a(`size-1.5 rounded-full`,t.erreichbar?`bg-gruen`:`bg-rot`)}),t.erreichbar===null?`–`:t.erreichbar?`erreichbar`:`antwortet nicht`]}),(0,Z.jsxs)(`span`,{role:`cell`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`CPU `}),(0,Z.jsx)(Re,{wert:n?.cpu,gelb:85,rot:95})]}),(0,Z.jsxs)(`span`,{role:`cell`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Speicher `}),(0,Z.jsx)(Re,{wert:n?.ram,gelb:85,rot:95,zusatz:i})]}),(0,Z.jsxs)(`span`,{role:`cell`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Platte `}),(0,Z.jsx)(Re,{wert:r,gelb:80,rot:90,unter:I(o.get(t.id))})]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern text-sm text-text-2`,children:[(0,Z.jsx)(`span`,{className:`font-sans text-xs text-text-3 md:hidden`,children:`Läuft seit `}),F(n?.uptime_s)]})]},t.id)})]}),t[0]=r,t[1]=n,t[2]=i}else i=t[2];return i}function Ve(e,t){return ze(e)-ze(t)}function He(e){return[e.id,e.prognose?.platte]}function Ue(e){return[e.id,e.aktuell]}function We(e){let t=(0,X.c)(15),{lage:n,ziele:r,imUpdate:i,onAnsehen:a,onGeraet:o}=e,s=n.art,c=n.oben,l=n.mitte,u=n.unten,d=n.ziel!==null,f;if(t[0]!==i||t[1]!==o||t[2]!==r){let e;t[4]!==i||t[5]!==o?(e=e=>{let t=fe(e,i.has(e.id)),n=L(e.kennzahl);return(0,Z.jsx)(ve,{bild:B(e),name:j(e),wert:t.wert,zustand:t.zustand,zahl:n?{text:n,stufe:e.kennzahl?.stufe}:null,onClick:()=>o(e,t.zustand===`info`)},e.id)},t[4]=i,t[5]=o,t[6]=e):e=t[6],f=r.map(e),t[0]=i,t[1]=o,t[2]=r,t[3]=f}else f=t[3];let p;return t[7]!==n.art||t[8]!==n.mitte||t[9]!==n.oben||t[10]!==n.unten||t[11]!==a||t[12]!==d||t[13]!==f?(p=(0,Z.jsx)(ge,{art:s,oben:c,mitte:l,unten:u,aktiv:d,onAnsehen:a,label:`Lage im Homelab`,children:f}),t[7]=n.art,t[8]=n.mitte,t[9]=n.oben,t[10]=n.unten,t[11]=a,t[12]=d,t[13]=f,t[14]=p):p=t[14],p}var Q=t(e(),1),Ge={skript:`Updates über das Community-Script`,"eigene-oberflaeche":`Updates über die eigene Oberfläche der App`,pakete:`Updates über die Pakete im Gast`};function Ke(e){let t=(0,X.c)(60),{g:n,gesperrt:r,onWahl:i}=e,a=n.app?.kennung??n.hostname??n.name,o;t[0]!==n.art||t[1]!==a?(o=B({art:n.art,name:a}),t[0]=n.art,t[1]=a,t[2]=o):o=t[2];let s=o,c=n.app?`${n.app.name}${n.app.quelle?` (GitHub ${n.app.quelle})`:``}`:`App unbekannt`,l=n.app?Ge[n.app.weg]??n.app.weg:null,u=n.app?.adresse?`Weboberfläche ${n.app.adresse} wird geprüft`:n.app?`Weboberfläche nicht gefunden, keine Webprüfung`:null,d;t[3]!==c||t[4]!==l||t[5]!==u?(d=[c,l,u].filter(Boolean),t[3]=c,t[4]=l,t[5]=u,t[6]=d):d=t[6];let f=d,p=n.status===`running`?`ok`:`aus`,m;t[7]!==s||t[8]!==p?(m=(0,Z.jsx)(R,{bild:s,groesse:`md`,punkt:p}),t[7]=s,t[8]=p,t[9]=m):m=t[9];let h;t[10]===n.name?h=t[11]:(h=(0,Z.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[10]=n.name,t[11]=h);let g=n.art===`container`?`Container`:`VM`,_=n.hostname&&n.hostname!==n.name?` · „${n.hostname}“`:``,v;t[12]===n.erstmals?v=t[13]:(v=n.erstmals?` · entdeckt ${b(new Date(n.erstmals*1e3).toISOString()).toLowerCase()}`:``,t[12]=n.erstmals,t[13]=v);let y;t[14]!==n.vmid||t[15]!==g||t[16]!==_||t[17]!==v?(y=(0,Z.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[g,` `,n.vmid,_,v]}),t[14]=n.vmid,t[15]=g,t[16]=_,t[17]=v,t[18]=y):y=t[18];let x;t[19]!==y||t[20]!==h?(x=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[h,y]}),t[19]=y,t[20]=h,t[21]=x):x=t[21];let S;t[22]!==x||t[23]!==m?(S=(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[m,x]}),t[22]=x,t[23]=m,t[24]=S):S=t[24];let C;t[25]===f?C=t[26]:(C=f.map(qe),t[25]=f,t[26]=C);let w;t[27]!==n.community_script||t[28]!==n.freigegeben?(w=n.freigegeben&&(0,Z.jsxs)(`li`,{children:[`Schon freigegeben (Etikett `,n.community_script?`community-script`:`watcher`,`).`]}),t[27]=n.community_script,t[28]=n.freigegeben,t[29]=w):w=t[29];let T;t[30]===n.ohne_sicherung?T=t[31]:(T=n.ohne_sicherung&&(0,Z.jsx)(`li`,{className:`text-bernstein`,children:`In keinem Sicherungsauftrag — in Proxmox: Rechenzentrum → Backup → den Auftrag bearbeiten.`}),t[30]=n.ohne_sicherung,t[31]=T);let E;t[32]!==C||t[33]!==w||t[34]!==T?(E=(0,Z.jsxs)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 text-sm text-text-2`,children:[C,w,T]}),t[32]=C,t[33]=w,t[34]=T,t[35]=E):E=t[35];let D;t[36]!==n.ausgeschlossen||t[37]!==n.freigegeben||t[38]!==r||t[39]!==i?(D=!n.freigegeben&&!n.ausgeschlossen&&(0,Z.jsx)(A,{size:`sm`,disabled:r,onClick:()=>i(`freigeben`),children:`Für Updates freigeben`}),t[36]=n.ausgeschlossen,t[37]=n.freigegeben,t[38]=r,t[39]=i,t[40]=D):D=t[40];let O=n.freigegeben?`default`:`outline`,k;t[41]===i?k=t[42]:(k=()=>i(`beobachten`),t[41]=i,t[42]=k);let j=n.freigegeben?`Übernehmen`:`Nur beobachten`,M;t[43]!==r||t[44]!==O||t[45]!==k||t[46]!==j?(M=(0,Z.jsx)(A,{variant:O,size:`sm`,disabled:r,onClick:k,children:j}),t[43]=r,t[44]=O,t[45]=k,t[46]=j,t[47]=M):M=t[47];let N;t[48]!==n.ausgeschlossen||t[49]!==r||t[50]!==i?(N=!n.ausgeschlossen&&(0,Z.jsx)(A,{variant:`ghost`,size:`sm`,disabled:r,onClick:()=>i(`ausschliessen`),children:`Nicht anfassen`}),t[48]=n.ausgeschlossen,t[49]=r,t[50]=i,t[51]=N):N=t[51];let P;t[52]!==D||t[53]!==M||t[54]!==N?(P=(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[D,M,N]}),t[52]=D,t[53]=M,t[54]=N,t[55]=P):P=t[55];let F;return t[56]!==S||t[57]!==E||t[58]!==P?(F=(0,Z.jsxs)(`li`,{className:`flaeche-innen flex flex-col gap-3 rounded-2xl p-4`,children:[S,E,P]}),t[56]=S,t[57]=E,t[58]=P,t[59]=F):F=t[59],F}function qe(e){return(0,Z.jsx)(`li`,{children:e},e)}var Je={freigeben:{titel:`Für Updates freigeben?`,text:`Der Orchestrator setzt in Proxmox das Etikett „watcher“. Danach darf er dort Snapshots anlegen und Updates einspielen — immer erst nach deinem Klick, mit Snapshot vorher und Rückweg bei Rot.`,knopf:`Freigeben`},beobachten:{titel:`Nur beobachten?`,text:``,knopf:`Übernehmen`},ausschliessen:{titel:`Nicht anfassen?`,text:`Der Orchestrator setzt in Proxmox das Etikett „watcher-aus“ und lässt das Gerät dann auch bei „Alle aktualisieren“ aus.`,knopf:`Nicht anfassen`}};function Ye(e){let t=(0,X.c)(29),{s:n,gesperrt:r,onWahl:i}=e,a;t[0]===n.name?a=t[1]:(a=B({art:`container`,name:n.name}),t[0]=n.name,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,Z.jsx)(R,{bild:a,groesse:`md`,punkt:`ok`}),t[2]=a,t[3]=o);let s;t[4]===n.name?s=t[5]:(s=(0,Z.jsxs)(`span`,{className:`text-[15px] font-semibold break-words`,children:[`Docker-Stack `,n.name]}),t[4]=n.name,t[5]=s);let c;t[6]===n.erstmals?c=t[7]:(c=n.erstmals?` · entdeckt ${b(new Date(n.erstmals*1e3).toISOString()).toLowerCase()}`:``,t[6]=n.erstmals,t[7]=c);let l;t[8]===c?l=t[9]:(l=(0,Z.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[`unter Arcane`,c]}),t[8]=c,t[9]=l);let u;t[10]!==s||t[11]!==l?(u=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[s,l]}),t[10]=s,t[11]=l,t[12]=u):u=t[12];let d;t[13]!==o||t[14]!==u?(d=(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[o,u]}),t[13]=o,t[14]=u,t[15]=d):d=t[15];let f;t[16]===n.container?f=t[17]:(f=n.container.join(`, `)||`–`,t[16]=n.container,t[17]=f);let p;t[18]===f?p=t[19]:(p=(0,Z.jsxs)(`p`,{className:`m-0 text-sm break-words text-text-2`,children:[`Container: `,f]}),t[18]=f,t[19]=p);let m;t[20]===i?m=t[21]:(m=()=>i(`beobachten`),t[20]=i,t[21]=m);let h;t[22]!==r||t[23]!==m?(h=(0,Z.jsx)(A,{size:`sm`,className:`self-start`,disabled:r,onClick:m,children:`Übernehmen`}),t[22]=r,t[23]=m,t[24]=h):h=t[24];let g;return t[25]!==h||t[26]!==d||t[27]!==p?(g=(0,Z.jsxs)(`li`,{className:`flaeche-innen flex flex-col gap-3 rounded-2xl p-4`,children:[d,p,h]}),t[25]=h,t[26]=d,t[27]=p,t[28]=g):g=t[28],g}function Xe(e){let t=(0,X.c)(38),{geraete:n,stacks:r,gesperrt:i,onWahl:o}=e,s;t[0]===r?s=t[1]:(s=r===void 0?[]:r,t[0]=r,t[1]=s);let c=s,[l,u]=(0,Q.useState)(null),d=n.length+c.length;if(d===0)return null;let f;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(f=a(`-mt-2 text-[15px] text-text-2`),t[2]=f):f=t[2];let p=d===1?`Eins kennt`:`${d} kennt`,m=d===1?` es`:` sie`,h;t[3]!==p||t[4]!==m?(h=(0,Z.jsxs)(`p`,{className:f,children:[p,` der Orchestrator noch nicht. Entscheide, ob er`,m,` nur beobachtet oder auch aktualisieren darf.`]}),t[3]=p,t[4]=m,t[5]=h):h=t[5];let g;if(t[6]!==n||t[7]!==i||t[8]!==o){let e;t[10]!==i||t[11]!==o?(e=e=>(0,Z.jsx)(Ke,{g:e,gesperrt:i,onWahl:t=>t===`beobachten`?o(e.id,t):u({g:e,wahl:t})},e.id),t[10]=i,t[11]=o,t[12]=e):e=t[12],g=n.map(e),t[6]=n,t[7]=i,t[8]=o,t[9]=g}else g=t[9];let _;if(t[13]!==i||t[14]!==o||t[15]!==c){let e;t[17]!==i||t[18]!==o?(e=e=>(0,Z.jsx)(Ye,{s:e,gesperrt:i,onWahl:t=>o(e.id,t)},e.id),t[17]=i,t[18]=o,t[19]=e):e=t[19],_=c.map(e),t[13]=i,t[14]=o,t[15]=c,t[16]=_}else _=t[16];let v;t[20]!==g||t[21]!==_?(v=(0,Z.jsxs)(`ul`,{className:`m-0 grid list-none gap-3 p-0 md:grid-cols-2`,children:[g,_]}),t[20]=g,t[21]=_,t[22]=v):v=t[22];let y=!!l,b=l?`${l.g.name}: ${Je[l.wahl].titel}`:``,x=l?Je[l.wahl].text:``,S=l?Je[l.wahl].knopf:``,C;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(C=()=>u(null),t[23]=C):C=t[23];let w;t[24]!==l||t[25]!==o?(w=()=>{l&&o(l.g.id,l.wahl),u(null)},t[24]=l,t[25]=o,t[26]=w):w=t[26];let T;t[27]!==i||t[28]!==y||t[29]!==b||t[30]!==x||t[31]!==S||t[32]!==w?(T=(0,Z.jsx)(te,{offen:y,titel:b,text:x,knopf:S,gesperrt:i,onNein:C,onJa:w}),t[27]=i,t[28]=y,t[29]=b,t[30]=x,t[31]=S,t[32]=w,t[33]=T):T=t[33];let E;return t[34]!==T||t[35]!==h||t[36]!==v?(E=(0,Z.jsxs)(Y,{titel:`Neu entdeckt`,id:`neu`,children:[h,v,T]}),t[34]=T,t[35]=h,t[36]=v,t[37]=E):E=t[37],E}var Ze=`md:grid-cols-[minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,1.1fr)_minmax(0,1.1fr)]`,Qe=e=>b(new Date(e*1e3).toISOString()).toLowerCase();function $e(e){let t=(0,X.c)(8),{titel:n,children:r,className:i}=e,o;t[0]===i?o=t[1]:(o=a(`text-sm text-text-2`,i),t[0]=i,t[1]=o);let s;t[2]===n?s=t[3]:(s=(0,Z.jsxs)(`span`,{className:`text-xs text-text-3 md:hidden`,children:[n,` `]}),t[2]=n,t[3]=s);let c;return t[4]!==r||t[5]!==o||t[6]!==s?(c=(0,Z.jsxs)(`span`,{role:`cell`,className:o,children:[s,r]}),t[4]=r,t[5]=o,t[6]=s,t[7]=c):c=t[7],c}function et(e){let t=(0,X.c)(39),{g:n}=e,r=n.geprueft?.zustand===`failed`,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=a(`grid grid-cols-2 gap-x-4 gap-y-1.5 border-t border-white/[0.06] py-3 md:items-start`,Ze),t[0]=i):i=t[0];let o;t[1]===n.name?o=t[2]:(o=(0,Z.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[1]=n.name,t[2]=o);let s;t[3]===n.auftrag?s=t[4]:(s=!n.auftrag&&(0,Z.jsx)(`span`,{className:`text-[13px] text-bernstein`,children:`in keinem Sicherungsauftrag`}),t[3]=n.auftrag,t[4]=s);let c;t[5]!==o||t[6]!==s?(c=(0,Z.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 flex-col md:col-span-1`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7];let l=n.auftrag&&!n.frisch&&`text-bernstein`,u;t[8]===l?u=t[9]:(u=a(l),t[8]=l,t[9]=u);let d;t[10]===n.zuletzt?d=t[11]:(d=n.zuletzt?(0,Z.jsx)(`span`,{className:`ziffern`,children:v(n.zuletzt)}):`noch nie`,t[10]=n.zuletzt,t[11]=d);let f;t[12]!==u||t[13]!==d?(f=(0,Z.jsx)($e,{titel:`Gesichert`,className:u,children:d}),t[12]=u,t[13]=d,t[14]=f):f=t[14];let p=r&&`text-rot-text`,m;t[15]===p?m=t[16]:(m=a(p),t[15]=p,t[16]=m);let h;t[17]!==r||t[18]!==n.geprueft?(h=n.geprueft?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:`ziffern`,children:Qe(n.geprueft.zeit)}),r?` · beschädigt`:` · in Ordnung`]}):(0,Z.jsx)(`span`,{className:`text-text-3`,children:`noch nicht`}),t[17]=r,t[18]=n.geprueft,t[19]=h):h=t[19];let g;t[20]!==r||t[21]!==n.defekt.length?(g=n.defekt.length>0&&!r&&(0,Z.jsx)(`span`,{className:`block text-xs text-bernstein`,children:n.defekt.length===1?`eine ältere Sicherung beschädigt`:`${n.defekt.length} ältere Sicherungen beschädigt`}),t[20]=r,t[21]=n.defekt.length,t[22]=g):g=t[22];let _;t[23]!==m||t[24]!==h||t[25]!==g?(_=(0,Z.jsxs)($e,{titel:`Vom PBS geprüft`,className:m,children:[h,g]}),t[23]=m,t[24]=h,t[25]=g,t[26]=_):_=t[26];let y=n.probe&&!n.probe.ok&&`text-rot-text`,b;t[27]===y?b=t[28]:(b=a(y),t[27]=y,t[28]=b);let x;t[29]===n.probe?x=t[30]:(x=n.probe?(0,Z.jsxs)(Z.Fragment,{children:[n.probe.ok?`gelungen`:`gescheitert`,` `,(0,Z.jsx)(`span`,{className:`ziffern`,children:v(n.probe.zeit)}),n.probe.fehler&&(0,Z.jsx)(`span`,{className:`block text-xs break-words`,children:n.probe.fehler})]}):(0,Z.jsx)(`span`,{className:`text-text-3`,children:`noch keine`}),t[29]=n.probe,t[30]=x);let S;t[31]!==b||t[32]!==x?(S=(0,Z.jsx)($e,{titel:`Probe`,className:b,children:x}),t[31]=b,t[32]=x,t[33]=S):S=t[33];let C;return t[34]!==_||t[35]!==S||t[36]!==c||t[37]!==f?(C=(0,Z.jsxs)(`div`,{role:`row`,className:i,children:[c,f,_,S]}),t[34]=_,t[35]=S,t[36]=c,t[37]=f,t[38]=C):C=t[38],C}function tt(e,t){let n=t.filter(e=>!e.auftrag).length,r=[n?`${n} ohne Auftrag`:`alle ${t.length} in einem Auftrag`],i=t.filter(e=>e.probe&&!e.probe.ok).length;return i?r.push(`Probe bei ${i} gescheitert`):e.probe?.zeit&&r.push(`Probe ${v(e.probe.zeit)}`),r.join(` · `)}function nt(e){let t=(0,X.c)(27),{s:n,onProbe:r,probeGesperrt:i}=e,o=i!==void 0&&i,s;t[0]===n.geraete?s=t[1]:(s=n.geraete??[],t[0]=n.geraete,t[1]=s);let c=s;if(c.length===0)return null;let l;t[2]===c?l=t[3]:(l=c.some(it),t[2]=c,t[3]=l);let u=l,d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,Z.jsx)(D,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Sicherungen je Gerät`]}),t[4]=d):d=t[4];let f=u?`text-bernstein`:`text-text-2`,p;t[5]===f?p=t[6]:(p=a(`text-right text-sm`,f),t[5]=f,t[6]=p);let m;t[7]!==c||t[8]!==n?(m=tt(n,c),t[7]=c,t[8]=n,t[9]=m):m=t[9];let h;t[10]!==p||t[11]!==m?(h=(0,Z.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[d,(0,Z.jsx)(`span`,{className:p,children:m})]}),t[10]=p,t[11]=m,t[12]=h):h=t[12];let g;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,Z.jsx)(`p`,{className:`m-0 pb-1 text-sm text-text-2`,children:`Der PBS prüft die Sicherungen selbst (Prüfauftrag im PBS). Die Probe öffnet einmal die Woche die jüngste Sicherung jedes Geräts, nur lesend: Die Konfiguration muss sich daraus lesen lassen, bei Containern auch der Dateibaum.`}),t[13]=g):g=t[13];let _;t[14]!==r||t[15]!==o?(_=r&&(0,Z.jsx)(A,{variant:`outline`,size:`sm`,className:`my-2`,disabled:o,onClick:r,children:`Jetzt prüfen`}),t[14]=r,t[15]=o,t[16]=_):_=t[16];let v;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pt-1 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,Ze),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Gesichert`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Vom PBS geprüft`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Probe`})]}),t[17]=v):v=t[17];let y;t[18]===c?y=t[19]:(y=c.map(rt),t[18]=c,t[19]=y);let b;t[20]===y?b=t[21]:(b=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Sicherungen je Gerät`,className:`flex flex-col`,children:[v,y]}),t[20]=y,t[21]=b);let x;return t[22]!==u||t[23]!==_||t[24]!==b||t[25]!==h?(x=(0,Z.jsxs)(`details`,{open:u,className:`flaeche-innen group rounded-2xl px-4 open:pb-3`,children:[h,g,_,b]}),t[22]=u,t[23]=_,t[24]=b,t[25]=h,t[26]=x):x=t[26],x}function rt(e){return(0,Z.jsx)(et,{g:e},e.ziel)}function it(e){return!e.auftrag||e.defekt.length>0||e.probe&&!e.probe.ok}var at={ok:`gruen`,gelb:`bernstein`,rot:`rot`,keine:`grau`},ot={ok:`color-mix(in srgb, var(--lab) 80%, transparent)`,gelb:`var(--bernstein)`,rot:`var(--rot)`},st=e=>b(new Date(e*1e3).toISOString());function ct(e){let t=(0,X.c)(11),{anteil:n,stufe:r,name:i}=e,a;t[0]===n?a=t[1]:(a=Math.round(n*100),t[0]=n,t[1]=a);let o=a,s=`${i}: ${o} % belegt`,c=`${Math.min(100,Math.max(2,o))}%`,l=ot[r],u;t[2]!==c||t[3]!==l?(u=(0,Z.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:c,background:l}}),t[2]=c,t[3]=l,t[4]=u):u=t[4];let d,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[80%] w-px bg-bernstein/70`}),f=(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[90%] w-px bg-rot/80`}),t[5]=d,t[6]=f):(d=t[5],f=t[6]);let p;return t[7]!==o||t[8]!==s||t[9]!==u?(p=(0,Z.jsxs)(`div`,{role:`meter`,"aria-label":s,"aria-valuenow":o,"aria-valuemin":0,"aria-valuemax":100,className:`relative h-2 w-full overflow-hidden rounded-full bg-white/[0.07]`,children:[u,d,f]}),t[7]=o,t[8]=s,t[9]=u,t[10]=p):p=t[10],p}function lt(e){let t=(0,X.c)(11),{v:n}=e;if(n?.grund===`gleich`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:`Belegung gleichbleibend`}),t[0]=e):e=t[0],e}let r;t[1]===n?r=t[2]:(r=M(n),t[1]=n,t[2]=r);let i=r;if(!i)return null;let o=N[ie(n)],s;t[3]===o?s=t[4]:(s=a(`ziffern text-xs`,o),t[3]=o,t[4]=s);let c;t[5]===n?c=t[6]:(c=ae(n),t[5]=n,t[6]=c);let l;return t[7]!==s||t[8]!==c||t[9]!==i?(l=(0,Z.jsxs)(`p`,{className:s,children:[c,` · `,i]}),t[7]=s,t[8]=c,t[9]=i,t[10]=l):l=t[10],l}function $(e){let t=(0,X.c)(16),{titel:n,unter:r,chip:i,chipText:a,children:o}=e,s;t[0]===n?s=t[1]:(s=(0,Z.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n}),t[0]=n,t[1]=s);let c;t[2]===r?c=t[3]:(c=r&&(0,Z.jsx)(`span`,{className:`text-sm break-words text-text-3`,children:r}),t[2]=r,t[3]=c);let l;t[4]!==s||t[5]!==c?(l=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[s,c]}),t[4]=s,t[5]=c,t[6]=l):l=t[6];let u;t[7]!==i||t[8]!==a?(u=(0,Z.jsx)(P,{art:i,children:a}),t[7]=i,t[8]=a,t[9]=u):u=t[9];let d;t[10]!==l||t[11]!==u?(d=(0,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==o||t[14]!==d?(f=(0,Z.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col gap-3 rounded-2xl p-4`,children:[d,o]}),t[13]=o,t[14]=d,t[15]=f):f=t[15],f}function ut(e){let t=(0,X.c)(34),{p:n}=e,r;t[0]===n.anteil?r=t[1]:(r=Math.round(n.anteil*100),t[0]=n.anteil,t[1]=r);let i=r,o=`Speicherpool ${n.speicher}`,s=at[n.stufe],c=oe[n.stufe],l=Math.max(n.anteil,n.meta_anteil??0),u=`Speicherpool ${n.speicher}`,d;t[2]!==n.stufe||t[3]!==l||t[4]!==u?(d=(0,Z.jsx)(ct,{anteil:l,stufe:n.stufe,name:u}),t[2]=n.stufe,t[3]=l,t[4]=u,t[5]=d):d=t[5];let f;t[6]===n.belegt?f=t[7]:(f=J(n.belegt),t[6]=n.belegt,t[7]=f);let p;t[8]===n.gesamt?p=t[9]:(p=J(n.gesamt),t[8]=n.gesamt,t[9]=p);let m=n.stufe!==`ok`&&`text-foreground`,h;t[10]===m?h=t[11]:(h=a(m),t[10]=m,t[11]=h);let g;t[12]===n.frei?g=t[13]:(g=J(n.frei),t[12]=n.frei,t[13]=g);let _;t[14]!==h||t[15]!==g?(_=(0,Z.jsxs)(`span`,{className:h,children:[g,` frei`]}),t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==i||t[18]!==_||t[19]!==f||t[20]!==p?(v=(0,Z.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[i,` % · `,f,` von `,p,` · `,_]}),t[17]=i,t[18]=_,t[19]=f,t[20]=p,t[21]=v):v=t[21];let y;t[22]===n.meta_anteil?y=t[23]:(y=n.meta_anteil!==null&&(0,Z.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Metadaten `,Math.round(n.meta_anteil*100),` % belegt`]}),t[22]=n.meta_anteil,t[23]=y);let b;t[24]===n.vorhersage?b=t[25]:(b=(0,Z.jsx)(lt,{v:n.vorhersage}),t[24]=n.vorhersage,t[25]=b);let x;return t[26]!==v||t[27]!==y||t[28]!==b||t[29]!==o||t[30]!==s||t[31]!==c||t[32]!==d?(x=(0,Z.jsxs)($,{titel:o,unter:`Platten der Container und VMs`,chip:s,chipText:c,children:[d,v,y,b]}),t[26]=v,t[27]=y,t[28]=b,t[29]=o,t[30]=s,t[31]=c,t[32]=d,t[33]=x):x=t[33],x}function dt(e){let t=(0,X.c)(24),{s:n}=e,r=at[n.stufe],i=oe[n.stufe],a;t[0]!==n.anteil||t[1]!==n.stufe?(a=(0,Z.jsx)(ct,{anteil:n.anteil,stufe:n.stufe,name:`Systemplatte des Proxmox-Hosts`}),t[0]=n.anteil,t[1]=n.stufe,t[2]=a):a=t[2];let o;t[3]===n.anteil?o=t[4]:(o=Math.round(n.anteil*100),t[3]=n.anteil,t[4]=o);let s;t[5]===n.belegt?s=t[6]:(s=J(n.belegt),t[5]=n.belegt,t[6]=s);let c;t[7]===n.gesamt?c=t[8]:(c=J(n.gesamt),t[7]=n.gesamt,t[8]=c);let l;t[9]===n.frei?l=t[10]:(l=J(n.frei),t[9]=n.frei,t[10]=l);let u;t[11]!==o||t[12]!==s||t[13]!==c||t[14]!==l?(u=(0,Z.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[o,` % · `,s,` von `,c,` · `,l,` frei`]}),t[11]=o,t[12]=s,t[13]=c,t[14]=l,t[15]=u):u=t[15];let d;t[16]===n.vorhersage?d=t[17]:(d=(0,Z.jsx)(lt,{v:n.vorhersage}),t[16]=n.vorhersage,t[17]=d);let f;return t[18]!==r||t[19]!==i||t[20]!==a||t[21]!==u||t[22]!==d?(f=(0,Z.jsxs)($,{titel:`Systemplatte`,unter:`Proxmox-Host: Kernel, Sicherungen vor Updates`,chip:r,chipText:i,children:[a,u,d]}),t[18]=r,t[19]=i,t[20]=a,t[21]=u,t[22]=d,t[23]=f):f=t[23],f}function ft(e){let t=(0,X.c)(22),{n}=e,r=n.problem?n.stufe===`rot`?`gestört`:`unklar`:oe[n.stufe],i=`NAS ${n.server??``}`,o;t[0]===i?o=t[1]:(o=i.trim(),t[0]=i,t[1]=o);let s;t[2]===n.art?s=t[3]:(s=n.art.toUpperCase(),t[2]=n.art,t[3]=s);let c=`${s} · ${n.quelle??`?`} → ${n.ziel}`,l=at[n.stufe],u;t[4]!==n.anteil||t[5]!==n.belegt||t[6]!==n.gesamt||t[7]!==n.problem||t[8]!==n.server||t[9]!==n.stufe||t[10]!==n.vorhersage?(u=n.problem?(0,Z.jsx)(`p`,{className:a(`text-sm`,n.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:n.problem}):n.anteil!==null&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ct,{anteil:n.anteil,stufe:n.stufe,name:`NAS ${n.server??``}`}),(0,Z.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[Math.round(n.anteil*100),` % · `,J(n.belegt),` von `,J(n.gesamt),` · `,J((n.gesamt??0)-(n.belegt??0)),` frei`]}),(0,Z.jsx)(lt,{v:n.vorhersage})]}),t[4]=n.anteil,t[5]=n.belegt,t[6]=n.gesamt,t[7]=n.problem,t[8]=n.server,t[9]=n.stufe,t[10]=n.vorhersage,t[11]=u):u=t[11];let d=n.erreichbar===!1?`antwortet nicht`:`antwortet`,f=n.eingebunden?`auf dem Proxmox-Host eingebunden`:`nicht eingebunden`,p;t[12]!==d||t[13]!==f?(p=(0,Z.jsxs)(`p`,{className:`text-xs text-text-3`,children:[d,` · `,f]}),t[12]=d,t[13]=f,t[14]=p):p=t[14];let m;return t[15]!==r||t[16]!==o||t[17]!==c||t[18]!==l||t[19]!==u||t[20]!==p?(m=(0,Z.jsxs)($,{titel:o,unter:c,chip:l,chipText:r,children:[u,p]}),t[15]=r,t[16]=o,t[17]=c,t[18]=l,t[19]=u,t[20]=p,t[21]=m):m=t[21],m}function pt(e){let t=(0,X.c)(25),{s:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={ok:`aktuell`,gelb:`Lücke`,rot:`gestört`,keine:`kein Auftrag`},t[0]=r):r=t[0];let i=r[n.stufe],a;t[1]===n?a=t[2]:(a=le(n),t[1]=n,t[2]=a);let o=at[n.stufe],s;t[3]===n.probleme?s=t[4]:(s=n.probleme.map(vt),t[3]=n.probleme,t[4]=s);let c;t[5]!==n.erfasst||t[6]!==n.stufe||t[7]!==n.stufe_frische||t[8]!==n.zuletzt?(c=(n.stufe_frische??n.stufe)===`ok`&&(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Alle `,n.erfasst,` Geräte gesichert`,n.zuletzt?(0,Z.jsxs)(Z.Fragment,{children:[`, zuletzt `,(0,Z.jsx)(`span`,{className:`ziffern`,children:st(n.zuletzt)})]}):null,`.`]}),t[5]=n.erfasst,t[6]=n.stufe,t[7]=n.stufe_frische,t[8]=n.zuletzt,t[9]=c):c=t[9];let l;t[10]===n.ohne_auftrag?l=t[11]:(l=(n.ohne_auftrag?.length??0)>0&&(0,Z.jsxs)(`p`,{className:`text-sm text-bernstein`,children:[`In keinem Sicherungsauftrag: `,n.ohne_auftrag.map(_t).join(`, `)]}),t[10]=n.ohne_auftrag,t[11]=l);let u;t[12]===n.fehlend?u=t[13]:(u=n.fehlend.length>0&&(0,Z.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:n.fehlend.map(gt)}),t[12]=n.fehlend,t[13]=u);let d;t[14]===n.ziele?d=t[15]:(d=n.ziele.filter(ht).map(mt),t[14]=n.ziele,t[15]=d);let f;return t[16]!==i||t[17]!==a||t[18]!==o||t[19]!==s||t[20]!==c||t[21]!==l||t[22]!==u||t[23]!==d?(f=(0,Z.jsxs)($,{titel:`Sicherungen`,unter:a,chip:o,chipText:i,children:[s,c,l,u,d]}),t[16]=i,t[17]=a,t[18]=o,t[19]=s,t[20]=c,t[21]=l,t[22]=u,t[23]=d,t[24]=f):f=t[24],f}function mt(e){let t=M(e.vorhersage);return(0,Z.jsxs)(`p`,{className:a(`ziffern text-xs`,t?N[ie(e.vorhersage)]:`text-text-3`),children:[`Ziel `,e.speicher,`: `,Math.round((e.belegt??0)/(e.gesamt??1)*100),` % belegt`,t?` · ${t}`:e.vorhersage?.grund===`gleich`?` · gleichbleibend`:``,e.vorhersage?.quelle===`pbs`&&(t||e.vorhersage.grund===`gleich`)?` (Schätzung des PBS)`:``]},e.speicher)}function ht(e){return e.gesamt}function gt(e){return(0,Z.jsxs)(`li`,{className:`text-bernstein`,children:[e.name,`: `,e.zuletzt?(0,Z.jsxs)(Z.Fragment,{children:[`zuletzt `,(0,Z.jsx)(`span`,{className:`ziffern`,children:st(e.zuletzt)})]}):`noch nie gesichert`]},e.ziel)}function _t(e){return e.name}function vt(e){return(0,Z.jsx)(`p`,{className:`text-sm text-rot-text`,children:e},e)}function yt(e){let t=(0,X.c)(53),{daten:n,laeuft:r,gesperrt:i,onAktion:a,snapshotsLink:o,onProbe:s,probeGesperrt:c}=e,l=r===void 0?null:r,u=i!==void 0&&i,[d,f]=(0,Q.useState)(null),p;t[0]!==n.pools||t[1]!==n.systemplatte?.stufe?(p=n.pools.some(Ct)||(n.systemplatte?.stufe??`ok`)!==`ok`,t[0]=n.pools,t[1]=n.systemplatte?.stufe,t[2]=p):p=t[2];let m=p,h,g,_,v;if(t[3]!==n.empfehlungen||t[4]!==n.nas||t[5]!==n.pools||t[6]!==n.sicherungen||t[7]!==n.systemplatte||t[8]!==u||t[9]!==m||t[10]!==l||t[11]!==a||t[12]!==s||t[13]!==c||t[14]!==o){let e=n.empfehlungen.reduce(St,0);h=`flex flex-col gap-4`;let r;t[19]===n.pools?r=t[20]:(r=n.pools.map(xt),t[19]=n.pools,t[20]=r);let i;t[21]===n.systemplatte?i=t[22]:(i=n.systemplatte&&(0,Z.jsx)(dt,{s:n.systemplatte}),t[21]=n.systemplatte,t[22]=i);let d;t[23]===n.nas?d=t[24]:(d=n.nas.length>0?n.nas.map(bt):(0,Z.jsx)($,{titel:`NAS`,chip:`grau`,chipText:`keins`,children:(0,Z.jsx)(`p`,{className:`text-sm text-text-3`,children:`Auf dem Proxmox-Host ist kein Netzlaufwerk eingebunden.`})}),t[23]=n.nas,t[24]=d);let p;t[25]===n.sicherungen?p=t[26]:(p=(0,Z.jsx)(pt,{s:n.sicherungen}),t[25]=n.sicherungen,t[26]=p),t[27]!==d||t[28]!==p||t[29]!==r||t[30]!==i?(g=(0,Z.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 2xl:grid-cols-4`,children:[r,i,d,p]}),t[27]=d,t[28]=p,t[29]=r,t[30]=i,t[31]=g):g=t[31],t[32]!==n.sicherungen||t[33]!==s||t[34]!==c?(_=(0,Z.jsx)(nt,{s:n.sicherungen,onProbe:s,probeGesperrt:c}),t[32]=n.sicherungen,t[33]=s,t[34]=c,t[35]=_):_=t[35],v=n.empfehlungen.length>0&&(0,Z.jsxs)(`details`,{open:m,className:`flaeche-innen group rounded-2xl px-4 open:pb-3`,children:[(0,Z.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,Z.jsx)(D,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Was Platz bringt`]}),(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[n.empfehlungen.length,` `,n.empfehlungen.length===1?`Vorschlag`:`Vorschläge`,e>0&&` · bis zu ${J(e)}`]})]}),(0,Z.jsx)(`ol`,{className:`flex flex-col`,children:n.empfehlungen.map(e=>(0,Z.jsx)(Et,{e,laeuft:l,gesperrt:u||!a,onFrage:f,verweis:e.art===`snapshot`?o:null},e.titel))})]}),t[3]=n.empfehlungen,t[4]=n.nas,t[5]=n.pools,t[6]=n.sicherungen,t[7]=n.systemplatte,t[8]=u,t[9]=m,t[10]=l,t[11]=a,t[12]=s,t[13]=c,t[14]=o,t[15]=h,t[16]=g,t[17]=_,t[18]=v}else h=t[15],g=t[16],_=t[17],v=t[18];let y=!!d,b=d?`Proxmox-Host: ${d.label}`:``,x=d?.frage??``,S=d?.label??``,C;t[36]!==d||t[37]!==a?(C=()=>{d&&a&&a(d),f(null)},t[36]=d,t[37]=a,t[38]=C):C=t[38];let w;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(w=()=>f(null),t[39]=w):w=t[39];let T;t[40]!==u||t[41]!==x||t[42]!==S||t[43]!==C||t[44]!==y||t[45]!==b?(T=(0,Z.jsx)(te,{offen:y,titel:b,text:x,knopf:S,gesperrt:u,onJa:C,onNein:w}),t[40]=u,t[41]=x,t[42]=S,t[43]=C,t[44]=y,t[45]=b,t[46]=T):T=t[46];let E;return t[47]!==T||t[48]!==h||t[49]!==g||t[50]!==_||t[51]!==v?(E=(0,Z.jsxs)(`div`,{className:h,children:[g,_,v,T]}),t[47]=T,t[48]=h,t[49]=g,t[50]=_,t[51]=v,t[52]=E):E=t[52],E}function bt(e){return(0,Z.jsx)(ft,{n:e},e.ziel)}function xt(e){return(0,Z.jsx)(ut,{p:e},e.speicher)}function St(e,t){return e+(t.platz??0)}function Ct(e){return e.stufe!==`ok`}var wt={pool:`Speicherpool`,systemplatte:`Systemplatte des Hosts`};function Tt({text:e}){return e.split(/`([^`]+)`/).map((e,t)=>t%2==1?(0,Z.jsx)(`code`,{className:`rounded-md bg-white/[0.07] px-1 font-mono text-[13px] text-foreground [font-variant-ligatures:none]`,children:e},t):e)}function Et(e){let t=(0,X.c)(24),{e:n,laeuft:r,gesperrt:i,onFrage:a,verweis:o}=e,s;t[0]===n.titel?s=t[1]:(s=(0,Z.jsx)(`span`,{className:`text-[15px] font-medium break-words`,children:n.titel}),t[0]=n.titel,t[1]=s);let c;t[2]===n.platz?c=t[3]:(c=n.platz?`≈ ${J(n.platz)}`:`Größe unbekannt`,t[2]=n.platz,t[3]=c);let l;t[4]===c?l=t[5]:(l=(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:c}),t[4]=c,t[5]=l);let u;t[6]!==s||t[7]!==l?(u=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[s,l]}),t[6]=s,t[7]=l,t[8]=u):u=t[8];let d;t[9]===n.ort?d=t[10]:(d=n.ort&&(0,Z.jsx)(`span`,{className:`etikett text-[10.5px] tracking-[0.14em] text-text-3`,children:wt[n.ort]??n.ort}),t[9]=n.ort,t[10]=d);let f;t[11]===n.text?f=t[12]:(f=(0,Z.jsx)(`p`,{className:`text-sm break-words text-text-2`,children:(0,Z.jsx)(Tt,{text:n.text})}),t[11]=n.text,t[12]=f);let p;t[13]!==n.aktion||t[14]!==i||t[15]!==r||t[16]!==a?(p=n.aktion&&(r?(0,Z.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,r]}):(0,Z.jsx)(A,{variant:`outline`,size:`sm`,className:`mt-1 self-start`,disabled:i,onClick:()=>a(n.aktion),children:n.aktion.label})),t[13]=n.aktion,t[14]=i,t[15]=r,t[16]=a,t[17]=p):p=t[17];let m;return t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p||t[22]!==o?(m=(0,Z.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-white/[0.06] py-3 first:border-t-0 first:pt-1`,children:[u,d,f,o,p]}),t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=o,t[23]=m):m=t[23],m}var Dt={snapshot:`Snapshot`,sicherung:`Sicherung`,keiner:`kein Rückweg`};function Ot(e){let t=(0,X.c)(24),{anzahl:n,gesperrt:r}=e,[i,a]=(0,Q.useState)(!1),o=m(i),s=C(),c;t[0]===o.data?.schritte?c=t[1]:(c=o.data?.schritte??[],t[0]=o.data?.schritte,t[1]=c);let l=c,u=r||n===0||s.isPending,d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(!0),t[2]=d):d=t[2];let f=n>0?` (${n})`:``,p;t[3]!==u||t[4]!==f?(p=(0,Z.jsxs)(A,{disabled:u,onClick:d,children:[`Alle aktualisieren`,f]}),t[3]=u,t[4]=f,t[5]=p):p=t[5];let h=l.length?`${l.length} Updates starten`:`Starten`,g=s.isPending||o.isPending||l.length===0,_;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>a(!1),t[6]=_):_=t[6];let v;t[7]!==i||t[8]!==s?(v=()=>{i&&(s.mutate(void 0),a(!1))},t[7]=i,t[8]=s,t[9]=v):v=t[9];let y;t[10]!==o.data||t[11]!==o.error||t[12]!==o.isPending||t[13]!==l?(y=o.isPending?(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Die Reihenfolge wird gelesen …`}):o.error?(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Der Plan lässt sich nicht lesen: `,o.error.message]}):(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1`,children:[(0,Z.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:l.map(kt)}),o.data?.hinweis&&(0,Z.jsx)(`p`,{className:`text-xs text-bernstein`,children:o.data.hinweis})]}),t[10]=o.data,t[11]=o.error,t[12]=o.isPending,t[13]=l,t[14]=y):y=t[14];let b;t[15]!==i||t[16]!==y||t[17]!==h||t[18]!==g||t[19]!==v?(b=(0,Z.jsx)(te,{offen:i,titel:`Alle Homelab-Updates einspielen?`,text:`Die Updates laufen nacheinander, jedes mit Rückweg und Prüfung. Ist eine Prüfung rot, geht dieser Schritt von selbst zurück und der Rest bleibt stehen. AdGuard und NPMplus kommen zuletzt, der Proxmox-Host ganz am Ende; neu gestartet wird er nicht.`,knopf:h,gesperrt:g,onNein:_,onJa:v,children:y}),t[15]=i,t[16]=y,t[17]=h,t[18]=g,t[19]=v,t[20]=b):b=t[20];let x;return t[21]!==b||t[22]!==p?(x=(0,Z.jsxs)(Z.Fragment,{children:[p,b]}),t[21]=b,t[22]=p,t[23]=x):x=t[23],x}function kt(e,t){return(0,Z.jsxs)(`li`,{className:`grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-baseline gap-2 text-sm`,children:[(0,Z.jsxs)(`span`,{className:`ziffern text-text-3`,children:[t+1,`.`]}),(0,Z.jsxs)(`span`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),` `,(0,Z.jsxs)(`span`,{className:`text-text-2`,children:[`· `,e.was]})]}),(0,Z.jsx)(`span`,{className:a(`text-xs`,e.rueckweg_art===`keiner`?`text-bernstein`:`text-text-3`),children:Dt[e.rueckweg_art]})]},`${e.ziel}-${e.baustein}`)}var At={wartet:{Symbol:be,farbe:`text-text-3`,text:`wartet`},laeuft:{Symbol:Se,farbe:`text-cyan-text`,text:`läuft`},eingespielt:{Symbol:q,farbe:`text-gruen`,text:`eingespielt`},zurueckgerollt:{Symbol:k,farbe:`text-bernstein`,text:`zurückgerollt`},fehler:{Symbol:O,farbe:`text-rot`,text:`Fehler`},uebersprungen:{Symbol:we,farbe:`text-text-3`,text:`übersprungen`}},jt={laeuft:{art:`cyan`,text:`läuft`},fertig:{art:`gruen`,text:`fertig`},abgebrochen:{art:`bernstein`,text:`abgebrochen`}};function Mt(e){let t=(0,X.c)(33),{lauf:n,onQuittieren:r}=e,i;t[0]===n.schritte?i=t[1]:(i=n.schritte.filter(Pt),t[0]=n.schritte,t[1]=i);let a=i.length,o=jt[n.status],s;t[2]!==a||t[3]!==n.schritte.length?(s=(0,Z.jsxs)(`span`,{className:`text-[15px] font-semibold text-cyan-text`,children:[`Alle aktualisieren · `,a,` von `,n.schritte.length]}),t[2]=a,t[3]=n.schritte.length,t[4]=s):s=t[4];let c;t[5]===n.start?c=t[6]:(c=b(new Date(n.start*1e3).toISOString()),t[5]=n.start,t[6]=c);let l;t[7]===c?l=t[8]:(l=(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:c}),t[7]=c,t[8]=l);let u;t[9]!==o.art||t[10]!==o.text?(u=(0,Z.jsx)(P,{art:o.art,children:o.text}),t[9]=o.art,t[10]=o.text,t[11]=u):u=t[11];let d;t[12]!==l||t[13]!==u?(d=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=d):d=t[14];let f;t[15]!==s||t[16]!==d?(f=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[15]=s,t[16]=d,t[17]=f):f=t[17];let p=`${a/Math.max(1,n.schritte.length)*100}%`,m;t[18]===p?m=t[19]:(m=(0,Z.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,Z.jsx)(`div`,{className:`h-full rounded-full bg-cyan shadow-[0_0_10px_var(--cyan)] transition-all`,style:{width:p}})}),t[18]=p,t[19]=m);let h;t[20]===n.schritte?h=t[21]:(h=n.schritte.map(Nt),t[20]=n.schritte,t[21]=h);let g;t[22]===h?g=t[23]:(g=(0,Z.jsx)(`ol`,{className:`m-0 grid list-none gap-x-6 gap-y-1.5 p-0 sm:grid-cols-2`,children:h}),t[22]=h,t[23]=g);let _;t[24]!==n.status||t[25]!==n.text||t[26]!==r?(_=(n.text||n.status!==`laeuft`&&r)&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n.text&&(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:n.text}),n.status!==`laeuft`&&r&&(0,Z.jsx)(A,{variant:`outline`,size:`sm`,className:`ml-auto`,onClick:r,children:`Ausblenden`})]}),t[24]=n.status,t[25]=n.text,t[26]=r,t[27]=_):_=t[27];let v;return t[28]!==g||t[29]!==_||t[30]!==f||t[31]!==m?(v=(0,Z.jsxs)(`section`,{"aria-label":`Alle aktualisieren`,className:`flex flex-col gap-3 rounded-2xl bg-cyan/[0.06] p-4 ring-1 ring-cyan/30 ring-inset`,children:[f,m,g,_]}),t[28]=g,t[29]=_,t[30]=f,t[31]=m,t[32]=v):v=t[32],v}function Nt(e){let t=At[e.status];return(0,Z.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,Z.jsx)(t.Symbol,{className:a(`mt-0.5 size-4 shrink-0`,t.farbe,e.status===`laeuft`&&`motion-safe:animate-spin`),"aria-hidden":!0}),(0,Z.jsxs)(`span`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,Z.jsxs)(`span`,{className:`text-text-3`,children:[`· `,e.was,` · `,t.text]}),e.text&&e.status!==`eingespielt`&&(0,Z.jsx)(`span`,{className:`block text-xs text-text-3`,children:e.text})]})]},`${e.ziel}-${e.baustein}`)}function Pt(e){return![`wartet`,`laeuft`].includes(e.status)}function Ft(e){let t=(0,X.c)(9),{d:n}=e,r=n.zusammenfassung;if(!r){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`p`,{className:`m-0 text-sm text-text-3`,children:`Lucy konnte gerade keine Kurzfassung schreiben; die Quellen stehen unten.`}),t[0]=e):e=t[0],e}let i;t[1]!==r.aktion||t[2]!==r.aktion_text?(i=r.aktion?(0,Z.jsxs)(`p`,{className:`m-0 rounded-xl bg-bernstein/10 px-3 py-2 text-sm text-bernstein ring-1 ring-bernstein/30 ring-inset`,children:[`⚠ Handarbeit: `,r.aktion_text||`Lies die Hinweise unten, bevor du updatest.`]}):r.aktion===!1&&(0,Z.jsx)(`p`,{className:`m-0 text-sm text-gruen-text`,children:`Du musst dafür nichts selbst tun.`}),t[1]=r.aktion,t[2]=r.aktion_text,t[3]=i):i=t[3];let a;t[4]===r.punkte?a=t[5]:(a=r.punkte.length>0&&(0,Z.jsx)(`ul`,{className:`m-0 flex list-disc flex-col gap-1 pl-5 text-sm text-text-2`,children:r.punkte.map(It)}),t[4]=r.punkte,t[5]=a);let o;return t[6]!==i||t[7]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[i,a]}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function It(e){return(0,Z.jsx)(`li`,{children:e},e)}function Lt(e){let t=(0,X.c)(16),{d:n}=e,r;t[0]===n.versionen?r=t[1]:(r=n.versionen??[],t[0]=n.versionen,t[1]=r);let i=r,a;t[2]===n.pakete?a=t[3]:(a=n.pakete??[],t[2]=n.pakete,t[3]=a);let o=a;if(i.length===0&&o.length===0)return null;let s=i.length?`Release Notes (${i.length} ${i.length===1?`Version`:`Versionen`})`:`Änderungslisten (${o.length} Pakete${n.weitere?`, ${n.weitere} weitere ohne Liste`:``})`,c;t[4]===s?c=t[5]:(c=(0,Z.jsx)(`summary`,{className:`cursor-pointer text-text-3 hover:text-text-2`,children:s}),t[4]=s,t[5]=c);let l;t[6]===i?l=t[7]:(l=i.map(zt),t[6]=i,t[7]=l);let u;t[8]===o?u=t[9]:(u=o.map(Rt),t[8]=o,t[9]=u);let d;t[10]!==l||t[11]!==u?(d=(0,Z.jsxs)(`div`,{className:`mt-2 flex max-h-80 flex-col gap-3 overflow-y-auto pr-1`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==c||t[14]!==d?(f=(0,Z.jsxs)(`details`,{className:`group text-sm`,children:[c,d]}),t[13]=c,t[14]=d,t[15]=f):f=t[15],f}function Rt(e){return(0,Z.jsxs)(`section`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(`span`,{className:`font-mono text-[13px] font-medium`,children:e.name}),(0,Z.jsx)(`pre`,{className:`m-0 font-mono text-[12px] break-words whitespace-pre-wrap text-text-3`,children:e.text})]},e.name)}function zt(e){return(0,Z.jsxs)(`section`,{className:`flex flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex items-baseline justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:e.titel}),e.url&&(0,Z.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener`,className:`inline-flex shrink-0 items-center gap-1 text-cyan hover:underline`,children:[`GitHub `,(0,Z.jsx)(ne,{className:`size-3`,"aria-hidden":!0})]})]}),(0,Z.jsx)(`pre`,{className:`m-0 font-sans text-[13px] break-words whitespace-pre-wrap text-text-3`,children:e.text||`–`})]},e.version)}function Bt(e){let t=(0,X.c)(21),{zid:n,baustein:r,kompakt:i,className:o}=e,s=i!==void 0&&i,c=d(n,r,!0),l;if(c.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`p`,{className:`m-0 text-sm text-text-3`,role:`status`,children:`Lucy liest, was neu ist …`}),t[0]=e):e=t[0],l=e}else if(c.error){let e;t[1]===c.error.message?e=t[2]:(e=(0,Z.jsxs)(`p`,{className:`m-0 text-sm text-text-3`,children:[`Ließ sich gerade nicht lesen: `,c.error.message]}),t[1]=c.error.message,t[2]=e),l=e}else if(c.data?.verfuegbar){let e;t[8]===c.data?e=t[9]:(e=(0,Z.jsx)(Ft,{d:c.data}),t[8]=c.data,t[9]=e);let n;t[10]!==s||t[11]!==c.data?(n=!s&&(0,Z.jsx)(Lt,{d:c.data}),t[10]=s,t[11]=c.data,t[12]=n):n=t[12];let r;t[13]!==e||t[14]!==n?(r=(0,Z.jsxs)(Z.Fragment,{children:[e,n]}),t[13]=e,t[14]=n,t[15]=r):r=t[15],l=r}else{let e=c.data?.grund??`Keine Angaben.`,n;t[3]===c.data?n=t[4]:(n=c.data?.quelle_url&&(0,Z.jsxs)(Z.Fragment,{children:[` `,(0,Z.jsx)(`a`,{href:c.data.quelle_url,target:`_blank`,rel:`noopener`,className:`text-cyan hover:underline`,children:`Zu den Releases`})]}),t[3]=c.data,t[4]=n);let r;t[5]!==e||t[6]!==n?(r=(0,Z.jsxs)(`p`,{className:`m-0 text-sm text-text-3`,children:[e,n]}),t[5]=e,t[6]=n,t[7]=r):r=t[7],l=r}let u;t[16]===o?u=t[17]:(u=a(`flex flex-col gap-2`,o),t[16]=o,t[17]=u);let f;return t[18]!==l||t[19]!==u?(f=(0,Z.jsx)(`div`,{className:u,children:l}),t[18]=l,t[19]=u,t[20]=f):f=t[20],f}var Vt=`md:grid-cols-[minmax(0,1.1fr)_minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,0.9fr)_11.5rem]`;function Ht(e){let t=(0,X.c)(16),{ziel:n,b:r}=e,i=x();if(r.uebersprungen){let e;t[0]!==i||t[1]!==n.id?(e=()=>i.mutate({zid:n.id,version:null}),t[0]=i,t[1]=n.id,t[2]=e):e=t[2];let a;t[3]!==e||t[4]!==i.isPending?(a=(0,Z.jsx)(`button`,{type:`button`,className:`text-cyan hover:underline`,disabled:i.isPending,onClick:e,children:`wieder anbieten`}),t[3]=e,t[4]=i.isPending,t[5]=a):a=t[5];let o;return t[6]!==r.uebersprungen||t[7]!==a?(o=(0,Z.jsxs)(`span`,{className:`text-xs text-text-3`,children:[r.uebersprungen,` übersprungen ·`,` `,a]}),t[6]=r.uebersprungen,t[7]=a,t[8]=o):o=t[8],o}if(r.zustand!==`neu`||!r.verfuegbar)return null;let a;t[9]!==r.verfuegbar||t[10]!==i||t[11]!==n.id?(a=()=>i.mutate({zid:n.id,version:r.verfuegbar}),t[9]=r.verfuegbar,t[10]=i,t[11]=n.id,t[12]=a):a=t[12];let o;return t[13]!==a||t[14]!==i.isPending?(o=(0,Z.jsx)(`button`,{type:`button`,className:`self-start text-xs text-text-3 hover:text-foreground hover:underline`,disabled:i.isPending,onClick:a,children:`Version überspringen`}),t[13]=a,t[14]=i.isPending,t[15]=o):o=t[15],o}function Ut(e){let t=(0,X.c)(30),{ziel:n,b:r}=e;if(!r){let e=n.art===`proxmox-host`?ce(n)?.installiert:null,r;return t[0]===e?r=t[1]:(r=e?(0,Z.jsxs)(`span`,{className:`ziffern text-sm`,children:[`PVE `,e]}):(0,Z.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e,t[1]=r),r}let i;t[2]===r.installiert?i=t[3]:(i=r.installiert?K(r.installiert):`–`,t[2]=r.installiert,t[3]=i);let a=i,o=r.zustand===`aktuell`?`text-foreground`:`text-text-2`,s;t[4]!==a||t[5]!==o?(s=(0,Z.jsx)(`span`,{className:o,children:a}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;t[7]!==r.verfuegbar||t[8]!==r.zustand?(c=r.zustand===`neu`&&r.verfuegbar&&(0,Z.jsxs)(`span`,{className:`text-cyan-text`,children:[`→ `,r.verfuegbar]}),t[7]=r.verfuegbar,t[8]=r.zustand,t[9]=c):c=t[9];let l;t[10]===r.zustand?l=t[11]:(l=r.zustand===`aktuell`&&(0,Z.jsx)(`span`,{className:`font-sans text-xs text-gruen-text`,children:`aktuell`}),t[10]=r.zustand,t[11]=l);let u;t[12]===r.zustand?u=t[13]:(u=r.zustand===`unbekannt`&&(0,Z.jsx)(`span`,{className:`font-sans text-xs text-text-3`,children:`unklar`}),t[12]=r.zustand,t[13]=u);let d;t[14]!==s||t[15]!==c||t[16]!==l||t[17]!==u?(d=(0,Z.jsxs)(`span`,{className:`ziffern flex flex-wrap items-baseline gap-x-2 text-sm`,children:[s,c,l,u]}),t[14]=s,t[15]=c,t[16]=l,t[17]=u,t[18]=d):d=t[18];let f;t[19]!==r.aktion||t[20]!==r.grund||t[21]!==r.zustand?(f=r.zustand===`neu`&&!r.aktion&&r.grund&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r.grund}),t[19]=r.aktion,t[20]=r.grund,t[21]=r.zustand,t[22]=f):f=t[22];let p;t[23]!==r||t[24]!==n?(p=n.art!==`proxmox-host`&&(0,Z.jsx)(Ht,{ziel:n,b:r}),t[23]=r,t[24]=n,t[25]=p):p=t[25];let m;return t[26]!==d||t[27]!==f||t[28]!==p?(m=(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[d,f,p]}),t[26]=d,t[27]=f,t[28]=p,t[29]=m):m=t[29],m}function Wt(e){let t=(0,X.c)(25),{b:n,onSuchen:r,gesperrt:i}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let a=n.id===`docker`,o;if(n.zustand===`neu`){let e=n.kurz||`Update bereit`,r;t[1]===n.sicherheit?r=t[2]:(r=!!n.sicherheit&&(0,Z.jsxs)(`span`,{className:`text-rot-text`,children:[` · `,n.sicherheit,` Sicherheit`]}),t[1]=n.sicherheit,t[2]=r);let i;t[3]!==e||t[4]!==r?(i=(0,Z.jsxs)(`span`,{className:`text-cyan-text`,children:[e,r]}),t[3]=e,t[4]=r,t[5]=i):i=t[5],o=i}else if(n.zustand===`aktuell`){let e=a?`Images aktuell`:`aktuell`,n;t[6]===e?n=t[7]:(n=(0,Z.jsx)(`span`,{className:`text-gruen-text`,children:e}),t[6]=e,t[7]=n),o=n}else{let e;t[8]===n.grund?e=t[9]:(e=se(n.grund),t[8]=n.grund,t[9]=e);let r=e,i=n.grund??void 0,s=a?`Images unklar`:`unklar`,c;t[10]===r?c=t[11]:(c=r&&(0,Z.jsxs)(`span`,{className:`text-text-3`,children:[` · Listen vom `,r]}),t[10]=r,t[11]=c);let l;t[12]!==i||t[13]!==s||t[14]!==c?(l=(0,Z.jsxs)(`span`,{className:`text-text-2`,title:i,children:[s,c]}),t[12]=i,t[13]=s,t[14]=c,t[15]=l):l=t[15],o=l}let s=n.zustand===`unbekannt`?n.aktion:null,c;t[16]===o?c=t[17]:(c=(0,Z.jsx)(`span`,{className:`min-w-0`,children:o}),t[16]=o,t[17]=c);let l;t[18]!==i||t[19]!==r||t[20]!==s?(l=s&&(0,Z.jsx)(A,{variant:`ghost`,size:`icon-sm`,className:`-my-2 shrink-0`,"aria-label":s.label,title:s.label,disabled:i,onClick:()=>r(s),children:(0,Z.jsx)(pe,{})}),t[18]=i,t[19]=r,t[20]=s,t[21]=l):l=t[21];let u;return t[22]!==c||t[23]!==l?(u=(0,Z.jsxs)(`span`,{className:`flex items-center gap-1 text-sm`,children:[c,l]}),t[22]=c,t[23]=l,t[24]=u):u=t[24],u}var Gt={app:`App updaten`,os:`Pakete einspielen`,pakete:`Pakete einspielen`};function Kt(e,t){return!t||t.zustand!==`neu`?!1:t.id===`app`&&!!t.verfuegbar||e.art===`proxmox-host`&&t.id===`pakete`}function qt(e){let t=(0,X.c)(52),{ziel:n,laeuft:r,gesperrt:i,onFrage:o}=e,s;t[0]===n?s=t[1]:(s=V(n),t[0]=n,t[1]=s);let c=s,l;t[2]===n?l=t[3]:(l=ce(n),t[2]=n,t[3]=l);let u=l,d=n.bausteine.filter(Jt),f=de(n)>=2,p;t[4]===n?p=t[5]:(p=n.bausteine.find(e=>Kt(n,e)),t[4]=n,t[5]=p);let m=p,[h,g]=(0,Q.useState)(!1),_=f&&`opacity-75`,v;t[6]===_?v=t[7]:(v=a(`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3.5 md:items-center`,Vt,_),t[6]=_,t[7]=v);let y;t[8]===n?y=t[9]:(y=B(n),t[8]=n,t[9]=y);let b=d.length?`info`:null,x;t[10]!==y||t[11]!==b?(x=(0,Z.jsx)(R,{bild:y,groesse:`sm`,punkt:b}),t[10]=y,t[11]=b,t[12]=x):x=t[12];let S;t[13]===n.name?S=t[14]:(S=(0,Z.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[13]=n.name,t[14]=S);let C;t[15]===n?C=t[16]:(C=H(n)!==n.name&&(0,Z.jsx)(`span`,{className:`text-[13px] text-text-3`,children:H(n)}),t[15]=n,t[16]=C);let w;t[17]!==S||t[18]!==C?(w=(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[S,C]}),t[17]=S,t[18]=C,t[19]=w):w=t[19];let T;t[20]!==w||t[21]!==x?(T=(0,Z.jsxs)(`div`,{role:`rowheader`,className:`flex min-w-0 items-center gap-3`,children:[x,w]}),t[20]=w,t[21]=x,t[22]=T):T=t[22];let E;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`App `}),t[23]=E):E=t[23];let O;t[24]!==c||t[25]!==n?(O=(0,Z.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[E,(0,Z.jsx)(Ut,{ziel:n,b:c})]}),t[24]=c,t[25]=n,t[26]=O):O=t[26];let k;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Pakete `}),t[27]=k):k=t[27];let j=i||!!r,M;t[28]!==o||t[29]!==n?(M=e=>o({ziel:n,aktion:e}),t[28]=o,t[29]=n,t[30]=M):M=t[30];let N;t[31]!==u||t[32]!==j||t[33]!==M?(N=(0,Z.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[k,(0,Z.jsx)(Wt,{b:u,gesperrt:j,onSuchen:M})]}),t[31]=u,t[32]=j,t[33]=M,t[34]=N):N=t[34];let P=d.length?U(n):``,F;t[35]===P?F=t[36]:(F=(0,Z.jsx)(`span`,{role:`cell`,className:`text-sm text-text-3`,children:P}),t[35]=P,t[36]=F);let I=r?(0,Z.jsxs)(`span`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,r]}):d.map(e=>(0,Z.jsx)(A,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>e.aktion&&o({ziel:n,aktion:e.aktion}),children:Gt[e.id]??e.aktion?.label??`Updaten`},e.id)),L;t[37]===I?L=t[38]:(L=(0,Z.jsx)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-stretch`,children:I}),t[37]=I,t[38]=L);let z;t[39]!==m||t[40]!==h||t[41]!==g||t[42]!==n.id?(z=m&&(0,Z.jsxs)(`div`,{className:`col-span-full flex flex-col gap-2`,children:[(0,Z.jsxs)(`button`,{type:`button`,"aria-expanded":h,onClick:()=>g(!h),className:`inline-flex min-h-9 items-center gap-1.5 self-start text-sm text-cyan-text hover:underline`,children:[(0,Z.jsx)(D,{className:a(`size-4 transition-transform`,h&&`rotate-90`),"aria-hidden":!0}),`Was ist neu?`]}),h&&(0,Z.jsx)(Bt,{zid:n.id,baustein:m.id,className:`flaeche-innen rounded-xl p-3`})]}),t[39]=m,t[40]=h,t[41]=g,t[42]=n.id,t[43]=z):z=t[43];let W;return t[44]!==T||t[45]!==O||t[46]!==N||t[47]!==F||t[48]!==L||t[49]!==z||t[50]!==v?(W=(0,Z.jsxs)(`div`,{role:`row`,className:v,children:[T,O,N,F,L,z]}),t[44]=T,t[45]=O,t[46]=N,t[47]=F,t[48]=L,t[49]=z,t[50]=v,t[51]=W):W=t[51],W}function Jt(e){return e.zustand===`neu`&&e.aktion}function Yt(e){let t=(0,X.c)(48),{ziele:n,laufend:r,gesperrt:i,onAktion:o}=e,[s,c]=(0,Q.useState)(null),l;t[0]===s?l=t[1]:(l=s?s.ziel.bausteine.find(e=>e.aktion?.pfad===s.aktion.pfad&&Kt(s.ziel,e)):void 0,t[0]=s,t[1]=l);let u=l,d,f,p,m,h,g;if(t[2]!==i||t[3]!==r||t[4]!==n){let e=[...n].sort(Zt),o;t[11]===n?o=t[12]:(o=n.filter(Xt),t[11]=n,t[12]=o),d=o.length,f=`table`,p=`Updates je Gerät`,m=`flex flex-col`,t[13]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,Z.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,Vt),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`App`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Pakete`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Rückweg`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),t[13]=h):h=t[13];let s;t[14]!==i||t[15]!==r?(s=e=>(0,Z.jsx)(qt,{ziel:e,laeuft:r.get(e.id)??null,gesperrt:i||r.has(e.id),onFrage:c},e.id),t[14]=i,t[15]=r,t[16]=s):s=t[16],g=e.map(s),t[2]=i,t[3]=r,t[4]=n,t[5]=d,t[6]=f,t[7]=p,t[8]=m,t[9]=h,t[10]=g}else d=t[5],f=t[6],p=t[7],m=t[8],h=t[9],g=t[10];let _;t[17]!==f||t[18]!==p||t[19]!==m||t[20]!==h||t[21]!==g?(_=(0,Z.jsxs)(`div`,{role:f,"aria-label":p,className:m,children:[h,g]}),t[17]=f,t[18]=p,t[19]=m,t[20]=h,t[21]=g,t[22]=_):_=t[22];let v;t[23]!==d||t[24]!==n.length?(v=d>0&&d===n.length&&(0,Z.jsx)(P,{art:`gruen`,children:`Alles aktuell`}),t[23]=d,t[24]=n.length,t[25]=v):v=t[25];let y=!!s,b=s?`${s.ziel.name}: ${s.aktion.label}`:``,x=s?.aktion.frage??``,S=s?.aktion.label??``,C;t[26]===s?.aktion.pfad?C=t[27]:(C=s?.aktion.pfad.endsWith(`/neustart`),t[26]=s?.aktion.pfad,t[27]=C);let w=!!C,T;t[28]!==s||t[29]!==o?(T=()=>{s&&o(s.aktion),c(null)},t[28]=s,t[29]=o,t[30]=T):T=t[30];let E;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>c(null),t[31]=E):E=t[31];let D;t[32]!==s||t[33]!==u?(D=u&&s&&(0,Z.jsx)(Bt,{zid:s.ziel.id,baustein:u.id,kompakt:!0}),t[32]=s,t[33]=u,t[34]=D):D=t[34];let O;t[35]!==i||t[36]!==b||t[37]!==x||t[38]!==S||t[39]!==w||t[40]!==T||t[41]!==D||t[42]!==y?(O=(0,Z.jsx)(te,{offen:y,titel:b,text:x,knopf:S,gefahr:w,gesperrt:i,onJa:T,onNein:E,children:D}),t[35]=i,t[36]=b,t[37]=x,t[38]=S,t[39]=w,t[40]=T,t[41]=D,t[42]=y,t[43]=O):O=t[43];let k;return t[44]!==O||t[45]!==_||t[46]!==v?(k=(0,Z.jsxs)(Z.Fragment,{children:[_,v,O]}),t[44]=O,t[45]=_,t[46]=v,t[47]=k):k=t[47],k}function Xt(e){return de(e)===3}function Zt(e,t){return de(e)-de(t)}var Qt=`md:grid-cols-[minmax(0,1.6fr)_minmax(0,1fr)_minmax(0,1.4fr)]`,$t={ok:`bg-gruen`,gelb:`bg-bernstein`,rot:`bg-rot shadow-[0_0_8px_var(--rot)]`},en={ok:`text-text-3`,gelb:`text-bernstein`,rot:`text-rot-text`},tn=e=>b(new Date(e*1e3).toISOString()).toLowerCase();function nn(e){if(e<=0)return`abgelaufen`;if(e<86400)return`noch ${Math.max(1,Math.round(e/3600))} Std.`;let t=Math.round(e/86400);return t<60?`noch ${t} ${t===1?`Tag`:`Tage`}`:t<730?`noch ${Math.round(t/30)} Monate`:`noch ${Math.round(t/365)} Jahre`}function rn(e){let t=(0,X.c)(40),{z:n}=e,r=n.namen.length>1?` und ${n.namen.length-1} weitere`:``,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=a(`grid grid-cols-2 gap-x-4 gap-y-1 border-t border-white/[0.06] py-3 md:items-center`,Qt),t[0]=i):i=t[0];let o=$t[n.stufe],s;t[1]===o?s=t[2]:(s=a(`mt-1.5 size-2 shrink-0 rounded-full`,o),t[1]=o,t[2]=s);let c;t[3]===s?c=t[4]:(c=(0,Z.jsx)(`span`,{"aria-hidden":!0,className:s}),t[3]=s,t[4]=c);let l;t[5]!==r||t[6]!==n.name?(l=(0,Z.jsxs)(`span`,{className:`text-[15px] font-semibold break-all`,children:[n.name,r]}),t[5]=r,t[6]=n.name,t[7]=l):l=t[7];let u;t[8]!==n.aussteller||t[9]!==n.wo?(u=[n.wo,n.aussteller].filter(Boolean),t[8]=n.aussteller,t[9]=n.wo,t[10]=u):u=t[10];let d=u.join(` · `),f;t[11]===d?f=t[12]:(f=(0,Z.jsx)(`span`,{className:`text-[13px] text-text-3`,children:d}),t[11]=d,t[12]=f);let p;t[13]!==l||t[14]!==f?(p=(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[l,f]}),t[13]=l,t[14]=f,t[15]=p):p=t[15];let m;t[16]!==c||t[17]!==p?(m=(0,Z.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-start gap-2.5 md:col-span-1`,children:[c,p]}),t[16]=c,t[17]=p,t[18]=m):m=t[18];let h;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Gültig bis `}),t[19]=h):h=t[19];let g;t[20]===n.bis?g=t[21]:(g=tn(n.bis),t[20]=n.bis,t[21]=g);let _;t[22]===g?_=t[23]:(_=(0,Z.jsx)(`span`,{className:`ziffern`,children:g}),t[22]=g,t[23]=_);let v;t[24]===n.rest_s?v=t[25]:(v=nn(n.rest_s),t[24]=n.rest_s,t[25]=v);let y;t[26]===v?y=t[27]:(y=(0,Z.jsx)(`span`,{className:`block text-xs text-text-3`,children:v}),t[26]=v,t[27]=y);let b;t[28]!==_||t[29]!==y?(b=(0,Z.jsxs)(`span`,{role:`cell`,className:`text-sm text-text-2`,children:[h,_,y]}),t[28]=_,t[29]=y,t[30]=b):b=t[30];let x=en[n.stufe],S;t[31]===x?S=t[32]:(S=a(`text-sm`,x),t[31]=x,t[32]=S);let C=n.problem??`in Ordnung`,w;t[33]!==S||t[34]!==C?(w=(0,Z.jsx)(`span`,{role:`cell`,className:S,children:C}),t[33]=S,t[34]=C,t[35]=w):w=t[35];let T;return t[36]!==m||t[37]!==b||t[38]!==w?(T=(0,Z.jsxs)(`div`,{role:`row`,className:i,children:[m,b,w]}),t[36]=m,t[37]=b,t[38]=w,t[39]=T):T=t[39],T}function an(e){let t=(0,X.c)(37),{daten:n}=e,r=n.zertifikate;if(!n.gelesen||r.length===0)return null;let i,o,s,c,l,u,d,f,p;if(t[0]!==r){o=r.filter(ln),i=r.some(cn),f=o.length>0,p=`flaeche-innen group rounded-2xl px-4 open:pb-3`,u=`flex min-h-12 cursor-pointer list-none flex-wrap items-center justify-between gap-x-3 gap-y-1 py-2 [&::-webkit-details-marker]:hidden`;let e;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(D,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[10]=e):e=t[10],t[11]===r.length?d=t[12]:(d=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[e,r.length,` Zertifikate`]}),t[11]=r.length,t[12]=d),s=a,c=`text-sm`,l=o.length?en[o.some(sn)?`rot`:`gelb`]:`text-text-2`,t[0]=r,t[1]=i,t[2]=o,t[3]=s,t[4]=c,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=p}else i=t[1],o=t[2],s=t[3],c=t[4],l=t[5],u=t[6],d=t[7],f=t[8],p=t[9];let m;t[13]!==s||t[14]!==c||t[15]!==l?(m=s(c,l),t[13]=s,t[14]=c,t[15]=l,t[16]=m):m=t[16];let h=o.length?`${o.length} mit Problem`:`alle gültig`,g;t[17]!==m||t[18]!==h?(g=(0,Z.jsx)(`span`,{className:m,children:h}),t[17]=m,t[18]=h,t[19]=g):g=t[19];let _;t[20]!==g||t[21]!==u||t[22]!==d?(_=(0,Z.jsxs)(`summary`,{className:u,children:[d,g]}),t[20]=g,t[21]=u,t[22]=d,t[23]=_):_=t[23];let v;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsxs)(`div`,{role:`row`,className:a(`etikett hidden gap-x-4 pt-1 pb-2.5 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,Qt),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Für`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Gültig bis`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zustand`})]}),t[24]=v):v=t[24];let y;t[25]===r?y=t[26]:(y=r.map(on),t[25]=r,t[26]=y);let b;t[27]===y?b=t[28]:(b=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Zertifikate`,className:`flex flex-col`,children:[v,y]}),t[27]=y,t[28]=b);let x;t[29]===i?x=t[30]:(x=i&&(0,Z.jsx)(`p`,{className:`m-0 border-t border-white/[0.06] pt-3 text-sm text-text-3`,children:`Die Zertifikate von NPMplus gelten nur knapp eine Woche und werden laufend erneuert — gemeldet wird erst, wenn eine Erneuerung ausbleibt.`}),t[29]=i,t[30]=x);let S;return t[31]!==_||t[32]!==b||t[33]!==x||t[34]!==f||t[35]!==p?(S=(0,Z.jsxs)(`details`,{open:f,className:p,children:[_,b,x]}),t[31]=_,t[32]=b,t[33]=x,t[34]=f,t[35]=p,t[36]=S):S=t[36],S}function on(e){return(0,Z.jsx)(rn,{z:e},`${e.quelle}-${e.datei}-${e.name}`)}function sn(e){return e.stufe===`rot`}function cn(e){return e.quelle===`npm`&&e.laufzeit_s!==null&&e.laufzeit_s<2592e3}function ln(e){return e.stufe!==`ok`}var un=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`],dn={eingespielt:{art:`gruen`,text:`eingespielt`},zurueckgerollt:{art:`bernstein`,text:`zurückgerollt`},fehler:{art:`rot`,text:`Fehler`},neustart:{art:`cyan`,text:`Neustart`},aufgeraeumt:{art:`gruen`,text:`aufgeräumt`},offen:{art:`cyan`,text:`Probelauf`}},fn=e=>b(new Date(e*1e3).toISOString());function pn(){let e=(0,X.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, erscheinen hier alle Geräte mit ihren offenen Updates. Ein Update startest du mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,Z.jsxs)(Z.Fragment,{children:[t,n,(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,Z.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:un.map(mn)})]}),(0,Z.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function mn(e){return(0,Z.jsx)(`li`,{children:(0,Z.jsx)(P,{children:e})},e)}function hn(e){let t=(0,X.c)(9),{partner:n}=e,r;t[0]===n.eingerichtet?r=t[1]:(r=n.eingerichtet?(0,Z.jsx)(P,{art:`rot`,children:`Antwortet nicht`}):(0,Z.jsx)(P,{children:`Noch nicht eingerichtet`}),t[0]=n.eingerichtet,t[1]=r);let i=r,a;t[2]!==n.eingerichtet||t[3]!==n.fehler||t[4]!==n.url?(a=n.eingerichtet?(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,n.fehler??`nicht erreichbar`,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}):(0,Z.jsx)(pn,{}),t[2]=n.eingerichtet,t[3]=n.fehler,t[4]=n.url,t[5]=a):a=t[5];let o;return t[6]!==i||t[7]!==a?(o=(0,Z.jsx)(Y,{titel:`Homelab`,rechts:i,children:a}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function gn(e){let t=(0,X.c)(12),{hinweise:n}=e,r,i;t[0]===n?(r=t[1],i=t[2]):(r=n.filter(vn),i=r.some(_n),t[0]=n,t[1]=r,t[2]=i);let a=i?`rot`:r.length?`bernstein`:`grau`,o=r.length?`${r.length} offen`:`alle stumm`,s;t[3]!==a||t[4]!==o?(s=(0,Z.jsx)(P,{art:a,children:o}),t[3]=a,t[4]=o,t[5]=s):s=t[5];let c;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(c=[],t[6]=c):c=t[6];let l;t[7]===n?l=t[8]:(l=(0,Z.jsx)(_e,{hinweise:n,verlauf:c,basis:`/api/homelab/hinweise`}),t[7]=n,t[8]=l);let u;return t[9]!==s||t[10]!==l?(u=(0,Z.jsx)(Y,{titel:`Hinweise`,id:`hinweise`,rechts:s,children:l}),t[9]=s,t[10]=l,t[11]=u):u=t[11],u}function _n(e){return e.stufe===`rot`}function vn(e){return e.zustand!==`stumm`}function yn(e){let t=(0,X.c)(8),{laeufe:n}=e,r,i,a;if(t[0]!==n){a=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(xn).slice(0,12);if(e.length===0){let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch kein Update im Homelab eingespielt.`}),t[4]=e):e=t[4],a=e;break bb0}r=`@container m-0 flex list-none flex-col p-0`,i=e.map(bn)}t[0]=n,t[1]=r,t[2]=i,t[3]=a}else r=t[1],i=t[2],a=t[3];if(a!==Symbol.for(`react.early_return_sentinel`))return a;let o;return t[5]!==r||t[6]!==i?(o=(0,Z.jsx)(`ol`,{className:r,children:i}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function bn(e){let t=e.ergebnis?dn[e.ergebnis]??{art:`grau`,text:e.ergebnis}:{art:`grau`,text:`unterbrochen`};return(0,Z.jsxs)(`li`,{className:`flex flex-col gap-1.5 border-t border-white/[0.06] py-3 first:border-t-0 first:pt-0`,children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,Z.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:fn(e.start)}),(0,Z.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:e.name}),(0,Z.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,Z.jsx)(P,{art:t.art,children:t.text})})]}),e.text&&(0,Z.jsx)(`p`,{className:`m-0 text-sm text-text-2 @sm:pl-[124px]`,children:e.text})]},e.id)}function xn(e){return e.status!==`laeuft`&&!G(e)}function Sn(e){let t=(0,X.c)(9),{stand:n}=e;if(!n.ausfuehrer.verbunden){let e;t[0]===n.ausfuehrer.zuletzt?e=t[1]:(e=n.ausfuehrer.zuletzt?` (zuletzt ${fn(n.ausfuehrer.zuletzt)})`:``,t[0]=n.ausfuehrer.zuletzt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,Z.jsxs)(`p`,{role:`alert`,className:`rounded-2xl bg-bernstein/[0.08] px-4 py-3 text-[15px] text-bernstein ring-1 ring-bernstein/35 ring-inset`,children:[`Der Ausführer auf dem Proxmox-Host meldet sich nicht`,e,`. Die Geräte zeigen den letzten bekannten Stand; Updates starten erst, wenn er wieder da ist.`]}),t[2]=e,t[3]=r),r}if(!n.bericht){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),t[4]=e):e=t[4],e}if(n.bericht.veraltet){let e;t[5]===n.bericht.empfangen?e=t[6]:(e=fn(n.bericht.empfangen),t[5]=n.bericht.empfangen,t[6]=e);let r;return t[7]===e?r=t[8]:(r=(0,Z.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,e,`; die Angaben können veraltet sein.`]}),t[7]=e,t[8]=r),r}return null}function Cn(){let e=(0,X.c)(20),t=c(),n=s(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=y(r),a=_(r),o=E(r),l=S(),u=null;if(t.isPending||n.isPending){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(z,{text:`Wird gelesen …`}),e[0]=t):t=e[0],u=t}else if(!r){let t;e[1]!==n.data||e[2]!==n.error?.message?(t=n.data?(0,Z.jsx)(hn,{partner:n.data}):(0,Z.jsx)(z,{fehler:!0,text:`Der Partner lässt sich nicht abfragen: ${n.error?.message??`keine Daten`}`}),e[1]=n.data,e[2]=n.error?.message,e[3]=t):t=e[3],u=t}else if(i.isPending){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(z,{text:`Der Homelab-Teil meldet sich gleich …`}),e[4]=t):t=e[4],u=t}else if(!i.data){let t=`Der Homelab-Teil antwortet nicht: ${i.error?.message??`keine Daten`}`,n;e[5]===t?n=e[6]:(n=(0,Z.jsx)(z,{fehler:!0,text:t}),e[5]=t,e[6]=n),u=n}let d;if(e[7]!==a.data?.laeufe){d=new Map;for(let e of a.data?.laeufe??[])e.status===`laeuft`&&d.set(e.ziel,e.schritte.at(-1)??`startet …`);e[7]=a.data?.laeufe,e[8]=d}else d=e[8];let f;e[9]===a.data?.laeufe?f=e[10]:(f=a.data?.laeufe??[],e[9]=a.data?.laeufe,e[10]=f);let p;e[11]===o.data?.hinweise?p=e[12]:(p=o.data?.hinweise??[],e[11]=o.data?.hinweise,e[12]=p);let m;return e[13]!==l||e[14]!==u||e[15]!==i.data||e[16]!==d||e[17]!==f||e[18]!==p?(m={ersatz:u,stand:i.data,laufend:d,laeufe:f,hinweise:p,aktion:l},e[13]=l,e[14]=u,e[15]=i.data,e[16]=d,e[17]=f,e[18]=p,e[19]=m):m=e[19],m}function wn(){let e=(0,X.c)(67),t=W(),{ersatz:n,stand:r,laufend:i,laeufe:a,hinweise:s,aktion:c}=Cn(),d=T(`1h`,!!r),p=w(!!r),m=f(!!r),h=o(),_=l(!!r),v=g(!!r),y=u();if(n||!r)return n;let b,x,S;if(e[0]!==s||e[1]!==a||e[2]!==r){b=r.bericht?fn(r.bericht.empfangen):null;let t;e[6]===a?t=e[7]:(t=new Set(a.filter(En).map(Tn)),e[6]=a,e[7]=t),x=t,S=ee(r,s,x.size,b),e[0]=s,e[1]=a,e[2]=r,e[3]=b,e[4]=x,e[5]=S}else b=e[3],x=e[4],S=e[5];let C=S,E;e[8]!==C.ziel||e[9]!==t?(E=()=>{C.ziel===`updates`?t({to:`/homelab/updates`}):C.ziel&&document.getElementById(C.ziel)?.scrollIntoView({behavior:`smooth`,block:`start`})},e[8]=C.ziel,e[9]=t,e[10]=E):E=e[10];let D;e[11]===t?D=e[12]:(D=(e,n)=>{n?t({to:`/homelab/updates`}):document.getElementById(`geraet-${e.id}`)?.scrollIntoView({behavior:`smooth`,block:`center`})},e[11]=t,e[12]=D);let O;e[13]!==x||e[14]!==C||e[15]!==r.ziele||e[16]!==E||e[17]!==D?(O=(0,Z.jsx)(We,{lage:C,ziele:r.ziele,imUpdate:x,onAnsehen:E,onGeraet:D}),e[13]=x,e[14]=C,e[15]=r.ziele,e[16]=E,e[17]=D,e[18]=O):O=e[18];let k;e[19]===r?k=e[20]:(k=(0,Z.jsx)(Sn,{stand:r}),e[19]=r,e[20]=k);let A;e[21]===s?A=e[22]:(A=s.length>0&&(0,Z.jsx)(gn,{hinweise:s}),e[21]=s,e[22]=A);let j;e[23]===_.data?.geraete?j=e[24]:(j=_.data?.geraete??[],e[23]=_.data?.geraete,e[24]=j);let M;e[25]===_.data?.docker?M=e[26]:(M=_.data?.docker??[],e[25]=_.data?.docker,e[26]=M);let N=y.isPending||!r.ausfuehrer.verbunden,P;e[27]===y?P=e[28]:(P=(e,t)=>y.mutate({id:e,wahl:t}),e[27]=y,e[28]=P);let F;e[29]!==j||e[30]!==M||e[31]!==N||e[32]!==P?(F=(0,Z.jsx)(Xe,{geraete:j,stacks:M,gesperrt:N,onWahl:P}),e[29]=j,e[30]=M,e[31]=N,e[32]=P,e[33]=F):F=e[33];let I;e[34]===b?I=e[35]:(I=b&&(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,b]}),e[34]=b,e[35]=I);let L;e[36]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,Z.jsxs)(he,{to:`/homelab/monitoring`,className:`inline-flex items-center gap-1 text-sm text-lab-text hover:underline`,children:[`Monitoring `,(0,Z.jsx)(me,{className:`size-3.5`,"aria-hidden":!0})]}),e[36]=L):L=e[36];let R;e[37]===I?R=e[38]:(R=(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[I,L]}),e[37]=I,e[38]=R);let z=d.data?.geraete,B;e[39]!==r.ziele||e[40]!==z?(B=(0,Z.jsx)(Be,{ziele:r.ziele,messwerte:z}),e[39]=r.ziele,e[40]=z,e[41]=B):B=e[41];let V;e[42]===d.isError?V=e[43]:(V=d.isError&&(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:`CPU und Speicher erscheinen, sobald der Ausführer Messwerte schickt.`}),e[42]=d.isError,e[43]=V);let H;e[44]!==R||e[45]!==B||e[46]!==V?(H=(0,Z.jsxs)(Y,{titel:`Geräte`,id:`geraete`,rechts:R,children:[B,V]}),e[44]=R,e[45]=B,e[46]=V,e[47]=H):H=e[47];let U;e[48]===v.data?U=e[49]:(U=v.data?.verfuegbar&&v.data.stacks.length>0&&(0,Z.jsx)(Y,{titel:`Docker-Dienste`,id:`docker`,children:(0,Z.jsx)(je,{lage:v.data})}),e[48]=v.data,e[49]=U);let G;e[50]!==c||e[51]!==i||e[52]!==h||e[53]!==p.data||e[54]!==r.ausfuehrer?(G=p.data?.bericht&&(0,Z.jsx)(Y,{titel:`Speicher und Sicherungen`,id:`speicher`,children:(0,Z.jsx)(yt,{daten:p.data,laeuft:i.get(`pve`)??null,gesperrt:c.isPending||i.has(`pve`)||!r.ausfuehrer.verbunden,onAktion:e=>c.mutate(e),onProbe:()=>h.mutate(void 0),probeGesperrt:h.isPending||!r.ausfuehrer.verbunden,snapshotsLink:(0,Z.jsxs)(he,{to:`/homelab/snapshots`,className:`inline-flex min-h-10 items-center gap-1 self-start text-sm text-lab-text hover:underline`,children:[`Zu den Snapshots `,(0,Z.jsx)(me,{className:`size-3.5`,"aria-hidden":!0})]})})}),e[50]=c,e[51]=i,e[52]=h,e[53]=p.data,e[54]=r.ausfuehrer,e[55]=G):G=e[55];let K;e[56]===m.data?K=e[57]:(K=m.data?.gelesen&&m.data.zertifikate.length>0&&(0,Z.jsx)(Y,{titel:`Zertifikate`,id:`zertifikate`,children:(0,Z.jsx)(an,{daten:m.data})}),e[56]=m.data,e[57]=K);let q;return e[58]!==F||e[59]!==H||e[60]!==U||e[61]!==G||e[62]!==K||e[63]!==O||e[64]!==k||e[65]!==A?(q=(0,Z.jsxs)(Z.Fragment,{children:[O,k,A,F,H,U,G,K]}),e[58]=F,e[59]=H,e[60]=U,e[61]=G,e[62]=K,e[63]=O,e[64]=k,e[65]=A,e[66]=q):q=e[66],q}function Tn(e){return e.ziel}function En(e){return e.status===`laeuft`&&!G(e)}function Dn(){let e=(0,X.c)(30),{ersatz:t,stand:n,laufend:r,laeufe:i,aktion:a}=Cn(),o=p(!!n),s=h();if(t||!n)return t;let c=o.data?.sammellauf??null,l=c?.status===`laeuft`,u;e[0]===n.ziele?u=e[1]:(u=ue(n.ziele).filter(On),e[0]=n.ziele,e[1]=u);let d=u.length,f=a.isPending||l||!n.ausfuehrer.verbunden,m;e[2]!==d||e[3]!==f?(m=(0,Z.jsx)(Ot,{anzahl:d,gesperrt:f}),e[2]=d,e[3]=f,e[4]=m):m=e[4];let g;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,Z.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Je Gerät, was läuft und was neu ist. Du startest jedes Update selbst — einzeln oder alle nacheinander. Vorher wird gesichert, danach geprüft; ist die Prüfung rot, geht es von selbst zurück.`}),e[5]=g):g=e[5];let _;e[6]===n?_=e[7]:(_=(0,Z.jsx)(Sn,{stand:n}),e[6]=n,e[7]=_);let v;e[8]!==c||e[9]!==s||e[10]!==l||e[11]!==n.bericht?.empfangen?(v=c&&(l||c.ende&&(n.bericht?.empfangen??0)-c.ende<21600)&&(0,Z.jsx)(Mt,{lauf:c,onQuittieren:()=>s.mutate(c.id)}),e[8]=c,e[9]=s,e[10]=l,e[11]=n.bericht?.empfangen,e[12]=v):v=e[12];let y=a.isPending||l||!n.ausfuehrer.verbunden,b;e[13]===a?b=e[14]:(b=e=>a.mutate(e),e[13]=a,e[14]=b);let x;e[15]!==r||e[16]!==n.ziele||e[17]!==y||e[18]!==b?(x=(0,Z.jsx)(Yt,{ziele:n.ziele,laufend:r,gesperrt:y,onAktion:b}),e[15]=r,e[16]=n.ziele,e[17]=y,e[18]=b,e[19]=x):x=e[19];let S;e[20]!==m||e[21]!==_||e[22]!==v||e[23]!==x?(S=(0,Z.jsxs)(Y,{titel:`Updates`,rechts:m,children:[g,_,v,x]}),e[20]=m,e[21]=_,e[22]=v,e[23]=x,e[24]=S):S=e[24];let C;e[25]===i?C=e[26]:(C=(0,Z.jsx)(Y,{titel:`Verlauf`,children:(0,Z.jsx)(yn,{laeufe:i})}),e[25]=i,e[26]=C);let w;return e[27]!==C||e[28]!==S?(w=(0,Z.jsxs)(Z.Fragment,{children:[S,C]}),e[27]=C,e[28]=S,e[29]=w):w=e[29],w}function On(e){return e.baustein.aktion}export{wn as HomelabSeite,Dn as HomelabUpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/HomelabProtokoll-2honFTFl.js b/frontend/dist/assets/HomelabProtokoll-Dc7ImWeS.js similarity index 95% rename from frontend/dist/assets/HomelabProtokoll-2honFTFl.js rename to frontend/dist/assets/HomelabProtokoll-Dc7ImWeS.js index f1cbe8e..e038584 100644 --- a/frontend/dist/assets/HomelabProtokoll-2honFTFl.js +++ b/frontend/dist/assets/HomelabProtokoll-Dc7ImWeS.js @@ -1 +1 @@ -import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{B as o,D as s,S as c,g as l}from"./abfragen-pD_qBEtc.js";import{t as u}from"./useRouterState-DJr4hrdj.js";import{t as d}from"./chevron-right-DF8ikrVh.js";import{U as f,bt as p,dt as m,ft as h,lt as g,m as _,ut as v}from"./index-B_hvuxH0.js";var y={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};y.node;var b=r(y),x={name:`cog`,size:24,node:[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]};x.node;var S=r(x),C=i(),w=t(e(),1),T=n(),E=[{id:`alle`,name:`Alles`},{id:`lauf`,name:`Updates`},{id:`snapshot`,name:`Snapshots`},{id:`auftrag`,name:`Ausführer`},{id:`hinweis`,name:`Hinweise`},{id:`meldung`,name:`Meldungen`},{id:`pflege`,name:`Pflege`}],D={auftrag:S,lauf:h,sammellauf:h,hinweis:g,meldung:b,pflege:v,snapshot:m},O={ok:{punkt:`bg-gruen`,text:`text-gruen-text`,wort:`ok`},info:{punkt:`bg-cyan`,text:`text-cyan-text`,wort:`Info`},warn:{punkt:`bg-bernstein`,text:`text-bernstein`,wort:`Warnung`},fehler:{punkt:`bg-rot`,text:`text-rot-text`,wort:`Fehler`}},k=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`}),A=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`}),j=new Intl.DateTimeFormat(`sv-SE`,{timeZone:`Europe/Berlin`});function M(e){let t=j.format(new Date),n=j.format(new Date(Date.now()-864e5)),r=j.format(new Date(e*1e3));return r===t?`Heute`:r===n?`Gestern`:k.format(new Date(e*1e3))}function N(e){let t=(0,C.c)(38),{e:n,geraet:r}=e,[i,o]=(0,w.useState)(!1),s=O[n.stufe]??O.info,c=D[n.art]??S,l;t[0]===n.zeit?l=t[1]:(l=A.format(new Date(n.zeit*1e3)),t[0]=n.zeit,t[1]=l);let u;t[2]===l?u=t[3]:(u=(0,T.jsx)(`span`,{className:`ziffern pt-0.5 text-xs text-text-3`,children:l}),t[2]=l,t[3]=u);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,T.jsx)(`span`,{"aria-hidden":!0,className:`absolute -top-2.5 -bottom-2.5 w-px bg-white/10`}),t[4]=f):f=t[4];let p;t[5]===s.punkt?p=t[6]:(p=a(`relative size-2.5 rounded-full ring-4 ring-[var(--panel)]`,s.punkt),t[5]=s.punkt,t[6]=p);let m;t[7]===p?m=t[8]:(m=(0,T.jsxs)(`span`,{className:`relative flex flex-col items-center pt-1`,children:[f,(0,T.jsx)(`span`,{"aria-hidden":!0,className:p})]}),t[7]=p,t[8]=m);let h;t[9]===c?h=t[10]:(h=(0,T.jsx)(c,{className:`size-3.5 shrink-0 text-text-3`,"aria-hidden":!0}),t[9]=c,t[10]=h);let g=n.stufe===`fehler`||n.stufe===`warn`?s.text:`text-foreground`,_;t[11]===g?_=t[12]:(_=a(g),t[11]=g,t[12]=_);let v;t[13]!==n.titel||t[14]!==_?(v=(0,T.jsx)(`span`,{className:_,children:n.titel}),t[13]=n.titel,t[14]=_,t[15]=v):v=t[15];let y;t[16]===r?y=t[17]:(y=r&&(0,T.jsx)(`span`,{className:`rounded-md bg-lab-grund px-1.5 text-xs text-lab-text`,children:r}),t[16]=r,t[17]=y);let b;t[18]===s.wort?b=t[19]:(b=(0,T.jsxs)(`span`,{className:`sr-only`,children:[`(`,s.wort,`)`]}),t[18]=s.wort,t[19]=b);let x;t[20]!==y||t[21]!==b||t[22]!==h||t[23]!==v?(x=(0,T.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-[15px]`,children:[h,v,y,b]}),t[20]=y,t[21]=b,t[22]=h,t[23]=v,t[24]=x):x=t[24];let E;t[25]===n.text?E=t[26]:(E=n.text&&(0,T.jsx)(`span`,{className:`text-sm text-text-2`,children:n.text}),t[25]=n.text,t[26]=E);let k;t[27]!==n.details||t[28]!==i?(k=n.details&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`button`,{type:`button`,onClick:()=>o(!i),"aria-expanded":i,className:`inline-flex h-8 items-center gap-1 self-start text-xs text-cyan hover:underline`,children:[(0,T.jsx)(d,{className:a(`size-3.5 transition-transform`,i&&`rotate-90`),"aria-hidden":!0}),i?`Ausgabe verbergen`:`Ausgabe zeigen`]}),i&&(0,T.jsx)(`pre`,{className:`ziffern m-0 max-h-72 overflow-auto rounded-xl bg-black/30 ring-1 ring-white/[0.07] ring-inset p-2.5 text-xs whitespace-pre-wrap text-text-2`,children:n.details})]}),t[27]=n.details,t[28]=i,t[29]=k):k=t[29];let j;t[30]!==x||t[31]!==E||t[32]!==k?(j=(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[x,E,k]}),t[30]=x,t[31]=E,t[32]=k,t[33]=j):j=t[33];let M;return t[34]!==j||t[35]!==u||t[36]!==m?(M=(0,T.jsxs)(`li`,{className:`grid grid-cols-[64px_18px_minmax(0,1fr)] gap-x-3 border-t border-white/[0.06] py-2.5 first:border-t-0`,children:[u,m,j]}),t[34]=j,t[35]=u,t[36]=m,t[37]=M):M=t[37],M}function P(){let e=(0,C.c)(18),t=s(),n=o(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),[i,d]=(0,w.useState)(`alle`),[m,h]=(0,w.useState)(!1),g=p(),v;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(v={select:L},e[0]=v):v=e[0];let y=u(v),b=l(r).data?.ziele??[],x=new Map(b.map(I)),S;e[1]===y?S=e[2]:(S=y&&/^(pve|(ct|vm)-\d+)$/.test(y)?y:null,e[1]=y,e[2]=S);let D=S,O=c(r,m,D);if(t.isPending||n.isPending){let t;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(f,{text:`Wird gelesen …`}),e[3]=t):t=e[3],t}if(!r){let t;return e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(f,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[4]=t):t=e[4],t}let k=(O.data?.eintraege??[]).filter(e=>i===`alle`||e.art===i||i===`lauf`&&e.art===`sammellauf`),A=[];for(let e of k){let t=M(e.zeit);A.at(-1)?.titel!==t&&A.push({titel:t,eintraege:[]}),A.at(-1).eintraege.push(e)}let j=D?`Alles, was an diesem Gerät geschah: Updates von → nach, Snapshots, Rückwege, Neustarts und Hinweise.`:`Was der Homelab-Teil getan hat: Aufträge an den Ausführer auf dem Proxmox-Host, Update-Läufe, Snapshots, Hinweise, gesendete Meldungen und die nächtliche Paketsuche.`,P;e[5]===j?P=e[6]:(P=(0,T.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:j}),e[5]=j,e[6]=P);let R;e[7]===g?R=e[8]:(R=e=>void g({to:`/homelab/protokoll`,hash:e.target.value||void 0}),e[7]=g,e[8]=R);let z;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,T.jsx)(`option`,{value:``,children:`Alle Geräte`}),e[9]=z):z=e[9];let B;e[10]===i?B=e[11]:(B=E.map(e=>(0,T.jsx)(`button`,{type:`button`,onClick:()=>d(e.id),"aria-pressed":i===e.id,className:a(`h-9 rounded-full border px-3.5 text-sm`,i===e.id?`border-lab-rand bg-lab-grund text-lab-text`:`border-white/10 text-text-2 hover:border-white/20 hover:text-foreground`),children:e.name},e.id)),e[10]=i,e[11]=B);let V;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(V=e=>h(e.target.checked),e[12]=V):V=e[12];let H;e[13]===m?H=e[14]:(H=(0,T.jsxs)(`label`,{className:`ml-auto flex h-9 cursor-pointer items-center gap-2 text-sm text-text-2`,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:m,onChange:V,className:`size-4 accent-[var(--lab)]`}),`Berichte zeigen (alle 10 min)`]}),e[13]=m,e[14]=H);let U;return e[15]!==B||e[16]!==H?(U=(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":`Filter`,children:[B,H]}),e[15]=B,e[16]=H,e[17]=U):U=e[17],(0,T.jsxs)(_,{titel:D?`Zeitleiste · ${x.get(D)??D}`:`Protokoll`,children:[P,(0,T.jsxs)(`label`,{className:`flex max-w-sm flex-col gap-1 text-sm text-text-2`,children:[`Gerät`,(0,T.jsxs)(`select`,{value:D??``,onChange:R,className:`h-10 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-lab/60`,children:[z,b.map(F)]})]}),U,O.isPending?(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):O.isError?(0,T.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Protokoll lässt sich nicht lesen: `,O.error.message]}):A.length===0?(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Dazu gibt es noch keine Einträge.`}):(0,T.jsx)(`div`,{className:a(`flex flex-col gap-5`,O.isFetching&&`opacity-80`),children:A.map(e=>(0,T.jsxs)(`section`,{"aria-label":e.titel,className:`flex flex-col gap-1`,children:[(0,T.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-lab-text`,children:e.titel}),(0,T.jsx)(`ol`,{className:`m-0 flex list-none flex-col p-0`,children:e.eintraege.map((e,t)=>{let n=e.ziel&&!D?x.get(e.ziel)??e.ziel:null;return(0,T.jsx)(N,{e,geraet:n&&!e.titel.includes(n)?n:null},`${e.zeit}-${e.titel}-${t}`)})})]},e.titel))})]})}function F(e){return(0,T.jsx)(`option`,{value:e.id,children:e.name},e.id)}function I(e){return[e.id,e.name]}function L(e){return e.location.hash}export{P as HomelabProtokollSeite}; \ No newline at end of file +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{U as o,_ as s,k as c,w as l}from"./abfragen-CDCgpAto.js";import{t as u}from"./useRouterState-DJr4hrdj.js";import{t as d}from"./chevron-right-DF8ikrVh.js";import{U as f,bt as p,dt as m,ft as h,lt as g,m as _,ut as v}from"./index-CuG_RlEw.js";var y={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};y.node;var b=r(y),x={name:`cog`,size:24,node:[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]};x.node;var S=r(x),C=i(),w=t(e(),1),T=n(),E=[{id:`alle`,name:`Alles`},{id:`lauf`,name:`Updates`},{id:`snapshot`,name:`Snapshots`},{id:`auftrag`,name:`Ausführer`},{id:`hinweis`,name:`Hinweise`},{id:`meldung`,name:`Meldungen`},{id:`pflege`,name:`Pflege`}],D={auftrag:S,lauf:h,sammellauf:h,hinweis:g,meldung:b,pflege:v,snapshot:m},O={ok:{punkt:`bg-gruen`,text:`text-gruen-text`,wort:`ok`},info:{punkt:`bg-cyan`,text:`text-cyan-text`,wort:`Info`},warn:{punkt:`bg-bernstein`,text:`text-bernstein`,wort:`Warnung`},fehler:{punkt:`bg-rot`,text:`text-rot-text`,wort:`Fehler`}},k=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`}),A=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`}),j=new Intl.DateTimeFormat(`sv-SE`,{timeZone:`Europe/Berlin`});function M(e){let t=j.format(new Date),n=j.format(new Date(Date.now()-864e5)),r=j.format(new Date(e*1e3));return r===t?`Heute`:r===n?`Gestern`:k.format(new Date(e*1e3))}function N(e){let t=(0,C.c)(38),{e:n,geraet:r}=e,[i,o]=(0,w.useState)(!1),s=O[n.stufe]??O.info,c=D[n.art]??S,l;t[0]===n.zeit?l=t[1]:(l=A.format(new Date(n.zeit*1e3)),t[0]=n.zeit,t[1]=l);let u;t[2]===l?u=t[3]:(u=(0,T.jsx)(`span`,{className:`ziffern pt-0.5 text-xs text-text-3`,children:l}),t[2]=l,t[3]=u);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,T.jsx)(`span`,{"aria-hidden":!0,className:`absolute -top-2.5 -bottom-2.5 w-px bg-white/10`}),t[4]=f):f=t[4];let p;t[5]===s.punkt?p=t[6]:(p=a(`relative size-2.5 rounded-full ring-4 ring-[var(--panel)]`,s.punkt),t[5]=s.punkt,t[6]=p);let m;t[7]===p?m=t[8]:(m=(0,T.jsxs)(`span`,{className:`relative flex flex-col items-center pt-1`,children:[f,(0,T.jsx)(`span`,{"aria-hidden":!0,className:p})]}),t[7]=p,t[8]=m);let h;t[9]===c?h=t[10]:(h=(0,T.jsx)(c,{className:`size-3.5 shrink-0 text-text-3`,"aria-hidden":!0}),t[9]=c,t[10]=h);let g=n.stufe===`fehler`||n.stufe===`warn`?s.text:`text-foreground`,_;t[11]===g?_=t[12]:(_=a(g),t[11]=g,t[12]=_);let v;t[13]!==n.titel||t[14]!==_?(v=(0,T.jsx)(`span`,{className:_,children:n.titel}),t[13]=n.titel,t[14]=_,t[15]=v):v=t[15];let y;t[16]===r?y=t[17]:(y=r&&(0,T.jsx)(`span`,{className:`rounded-md bg-lab-grund px-1.5 text-xs text-lab-text`,children:r}),t[16]=r,t[17]=y);let b;t[18]===s.wort?b=t[19]:(b=(0,T.jsxs)(`span`,{className:`sr-only`,children:[`(`,s.wort,`)`]}),t[18]=s.wort,t[19]=b);let x;t[20]!==y||t[21]!==b||t[22]!==h||t[23]!==v?(x=(0,T.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-[15px]`,children:[h,v,y,b]}),t[20]=y,t[21]=b,t[22]=h,t[23]=v,t[24]=x):x=t[24];let E;t[25]===n.text?E=t[26]:(E=n.text&&(0,T.jsx)(`span`,{className:`text-sm text-text-2`,children:n.text}),t[25]=n.text,t[26]=E);let k;t[27]!==n.details||t[28]!==i?(k=n.details&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`button`,{type:`button`,onClick:()=>o(!i),"aria-expanded":i,className:`inline-flex h-8 items-center gap-1 self-start text-xs text-cyan hover:underline`,children:[(0,T.jsx)(d,{className:a(`size-3.5 transition-transform`,i&&`rotate-90`),"aria-hidden":!0}),i?`Ausgabe verbergen`:`Ausgabe zeigen`]}),i&&(0,T.jsx)(`pre`,{className:`ziffern m-0 max-h-72 overflow-auto rounded-xl bg-black/30 ring-1 ring-white/[0.07] ring-inset p-2.5 text-xs whitespace-pre-wrap text-text-2`,children:n.details})]}),t[27]=n.details,t[28]=i,t[29]=k):k=t[29];let j;t[30]!==x||t[31]!==E||t[32]!==k?(j=(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[x,E,k]}),t[30]=x,t[31]=E,t[32]=k,t[33]=j):j=t[33];let M;return t[34]!==j||t[35]!==u||t[36]!==m?(M=(0,T.jsxs)(`li`,{className:`grid grid-cols-[64px_18px_minmax(0,1fr)] gap-x-3 border-t border-white/[0.06] py-2.5 first:border-t-0`,children:[u,m,j]}),t[34]=j,t[35]=u,t[36]=m,t[37]=M):M=t[37],M}function P(){let e=(0,C.c)(18),t=c(),n=o(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),[i,d]=(0,w.useState)(`alle`),[m,h]=(0,w.useState)(!1),g=p(),v;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(v={select:L},e[0]=v):v=e[0];let y=u(v),b=s(r).data?.ziele??[],x=new Map(b.map(I)),S;e[1]===y?S=e[2]:(S=y&&/^(pve|(ct|vm)-\d+)$/.test(y)?y:null,e[1]=y,e[2]=S);let D=S,O=l(r,m,D);if(t.isPending||n.isPending){let t;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(f,{text:`Wird gelesen …`}),e[3]=t):t=e[3],t}if(!r){let t;return e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(f,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[4]=t):t=e[4],t}let k=(O.data?.eintraege??[]).filter(e=>i===`alle`||e.art===i||i===`lauf`&&e.art===`sammellauf`),A=[];for(let e of k){let t=M(e.zeit);A.at(-1)?.titel!==t&&A.push({titel:t,eintraege:[]}),A.at(-1).eintraege.push(e)}let j=D?`Alles, was an diesem Gerät geschah: Updates von → nach, Snapshots, Rückwege, Neustarts und Hinweise.`:`Was der Homelab-Teil getan hat: Aufträge an den Ausführer auf dem Proxmox-Host, Update-Läufe, Snapshots, Hinweise, gesendete Meldungen und die nächtliche Paketsuche.`,P;e[5]===j?P=e[6]:(P=(0,T.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:j}),e[5]=j,e[6]=P);let R;e[7]===g?R=e[8]:(R=e=>void g({to:`/homelab/protokoll`,hash:e.target.value||void 0}),e[7]=g,e[8]=R);let z;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,T.jsx)(`option`,{value:``,children:`Alle Geräte`}),e[9]=z):z=e[9];let B;e[10]===i?B=e[11]:(B=E.map(e=>(0,T.jsx)(`button`,{type:`button`,onClick:()=>d(e.id),"aria-pressed":i===e.id,className:a(`h-9 rounded-full border px-3.5 text-sm`,i===e.id?`border-lab-rand bg-lab-grund text-lab-text`:`border-white/10 text-text-2 hover:border-white/20 hover:text-foreground`),children:e.name},e.id)),e[10]=i,e[11]=B);let V;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(V=e=>h(e.target.checked),e[12]=V):V=e[12];let H;e[13]===m?H=e[14]:(H=(0,T.jsxs)(`label`,{className:`ml-auto flex h-9 cursor-pointer items-center gap-2 text-sm text-text-2`,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:m,onChange:V,className:`size-4 accent-[var(--lab)]`}),`Berichte zeigen (alle 10 min)`]}),e[13]=m,e[14]=H);let U;return e[15]!==B||e[16]!==H?(U=(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":`Filter`,children:[B,H]}),e[15]=B,e[16]=H,e[17]=U):U=e[17],(0,T.jsxs)(_,{titel:D?`Zeitleiste · ${x.get(D)??D}`:`Protokoll`,children:[P,(0,T.jsxs)(`label`,{className:`flex max-w-sm flex-col gap-1 text-sm text-text-2`,children:[`Gerät`,(0,T.jsxs)(`select`,{value:D??``,onChange:R,className:`h-10 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] text-foreground outline-none focus:border-lab/60`,children:[z,b.map(F)]})]}),U,O.isPending?(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):O.isError?(0,T.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Protokoll lässt sich nicht lesen: `,O.error.message]}):A.length===0?(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Dazu gibt es noch keine Einträge.`}):(0,T.jsx)(`div`,{className:a(`flex flex-col gap-5`,O.isFetching&&`opacity-80`),children:A.map(e=>(0,T.jsxs)(`section`,{"aria-label":e.titel,className:`flex flex-col gap-1`,children:[(0,T.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-lab-text`,children:e.titel}),(0,T.jsx)(`ol`,{className:`m-0 flex list-none flex-col p-0`,children:e.eintraege.map((e,t)=>{let n=e.ziel&&!D?x.get(e.ziel)??e.ziel:null;return(0,T.jsx)(N,{e,geraet:n&&!e.titel.includes(n)?n:null},`${e.zeit}-${e.titel}-${t}`)})})]},e.titel))})]})}function F(e){return(0,T.jsx)(`option`,{value:e.id,children:e.name},e.id)}function I(e){return[e.id,e.name]}function L(e){return e.location.hash}export{P as HomelabProtokollSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/HomelabSnapshots-CvlkzLGV.js b/frontend/dist/assets/HomelabSnapshots-3N_oyI54.js similarity index 97% rename from frontend/dist/assets/HomelabSnapshots-CvlkzLGV.js rename to frontend/dist/assets/HomelabSnapshots-3N_oyI54.js index 2ffe94c..de71103 100644 --- a/frontend/dist/assets/HomelabSnapshots-CvlkzLGV.js +++ b/frontend/dist/assets/HomelabSnapshots-3N_oyI54.js @@ -1 +1 @@ -import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{B as o,C as s,D as c,et as l}from"./abfragen-pD_qBEtc.js";import{n as u,t as d}from"./undo-2-B8COJmAr.js";import{t as f}from"./button-BHVKhtQ6.js";import{H as p,R as m,U as h,V as g,a as _,d as v,gt as y,h as b,l as x,m as S,o as C,s as w,u as T}from"./index-B_hvuxH0.js";var E={name:`flask-conical`,size:24,node:[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]};E.node;var D=r(E),O={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};O.node;var k=r(O),A={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};A.node;var j=r(A),M=i(),N=t(e(),1),P=n(),F=`grid grid-cols-[minmax(0,1fr)_auto] items-start gap-x-3 gap-y-1.5 border-t border-white/[0.06] py-3 [grid-template-areas:'name_herkunft'_'zeit_zeit'_'text_text'_'knoepfe_knoepfe'] md:grid-rows-[auto_auto_1fr] md:gap-x-4 md:[grid-template-areas:'name_herkunft'_'zeit_knoepfe'_'text_knoepfe'] xl:grid-cols-[minmax(10.5rem,1.1fr)_7.5rem_minmax(0,1fr)_minmax(0,1.4fr)_11rem] xl:grid-rows-none xl:items-center xl:[grid-template-areas:'name_herkunft_zeit_text_knoepfe']`,I=`ziffern min-w-0 pt-1 text-sm break-words text-foreground [grid-area:name] xl:pt-0`,L=`justify-self-end [grid-area:herkunft] xl:justify-self-start`;function R(e){let t=(0,M.c)(11),{zeit:n,jetzt:r}=e,i;t[0]!==r||t[1]!==n?(i=T(n,r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a;t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{className:`ziffern text-text-2`,children:i}),t[3]=i,t[4]=a);let o;t[5]!==r||t[6]!==n?(o=n!==null&&(0,P.jsx)(`span`,{className:`text-text-3`,children:C(n,r)}),t[5]=r,t[6]=n,t[7]=o):o=t[7];let s;return t[8]!==a||t[9]!==o?(s=(0,P.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap items-baseline gap-x-2 text-sm [grid-area:zeit]`,children:[a,o]}),t[8]=a,t[9]=o,t[10]=s):s=t[10],s}function z(e){let t=(0,M.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,P.jsx)(`span`,{role:`cell`,className:`min-w-0 text-sm break-words text-text-2 [grid-area:text]`,children:n}),t[0]=n,t[1]=r),r}function B(e){let t=(0,M.c)(5),{children:n,ohne:r}=e,i;t[0]!==n||t[1]!==r?(i=r?(0,P.jsx)(`span`,{className:`text-xs text-text-3`,children:r}):n,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 [grid-area:knoepfe] md:flex-col md:items-stretch md:justify-self-end xl:justify-self-stretch`,children:i}),t[3]=i,t[4]=a),a}function V(e){let t=(0,M.c)(35),{g:n,s:r,jetzt:i,gesperrt:a,onFrage:o}=e,{loeschen:s,zuruecksetzen:c}=r,l=s||c?null:r.eigen?`Nicht freigegeben`:`Nur in Proxmox`,u;t[0]===r.name?u=t[1]:(u=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.name}),t[0]=r.name,t[1]=u);let m=_[r.herkunft],h=_[r.herkunft],g;t[2]===h.chip?g=t[3]:(g=(0,P.jsx)(p,{children:h.chip}),t[2]=h.chip,t[3]=g);let v;t[4]!==m.text||t[5]!==g?(v=(0,P.jsx)(`span`,{role:`cell`,className:L,title:m.text,children:g}),t[4]=m.text,t[5]=g,t[6]=v):v=t[6];let y;t[7]!==i||t[8]!==r.zeit?(y=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[7]=i,t[8]=r.zeit,t[9]=y):y=t[9];let b;t[10]!==r.beschreibung||t[11]!==r.herkunft?(b=r.beschreibung??(0,P.jsx)(`span`,{className:`text-text-3`,children:_[r.herkunft].text}),t[10]=r.beschreibung,t[11]=r.herkunft,t[12]=b):b=t[12];let x;t[13]===b?x=t[14]:(x=(0,P.jsx)(z,{children:b}),t[13]=b,t[14]=x);let S;t[15]!==n||t[16]!==a||t[17]!==o||t[18]!==c?(S=c&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:c,gefahr:!0}),children:[(0,P.jsx)(d,{"aria-hidden":!0}),` Zurücksetzen`]}),t[15]=n,t[16]=a,t[17]=o,t[18]=c,t[19]=S):S=t[19];let C;t[20]!==n||t[21]!==a||t[22]!==s||t[23]!==o?(C=s&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:s,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[20]=n,t[21]=a,t[22]=s,t[23]=o,t[24]=C):C=t[24];let w;t[25]!==l||t[26]!==C||t[27]!==S?(w=(0,P.jsxs)(B,{ohne:l,children:[S,C]}),t[25]=l,t[26]=C,t[27]=S,t[28]=w):w=t[28];let T;return t[29]!==u||t[30]!==w||t[31]!==v||t[32]!==y||t[33]!==x?(T=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[u,v,y,x,w]}),t[29]=u,t[30]=w,t[31]=v,t[32]=y,t[33]=x,t[34]=T):T=t[34],T}function H(e){let t=(0,M.c)(23),{g:n,e:r,jetzt:i,gesperrt:a,onFrage:o}=e,s;t[0]===r.groesse?s=t[1]:(s=w(r.groesse),t[0]=r.groesse,t[1]=s);let c=s,l=r.loeschen,u;t[2]===r.datei?u=t[3]:(u=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.datei}),t[2]=r.datei,t[3]=u);let d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,P.jsx)(`span`,{role:`cell`,className:L,children:(0,P.jsx)(p,{children:`Sicherung`})}),t[4]=d):d=t[4];let m;t[5]!==r.zeit||t[6]!==i?(m=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[5]=r.zeit,t[6]=i,t[7]=m):m=t[7];let h=c?`${c} auf „${r.speicher}“`:`Auf „${r.speicher}“`,g;t[8]===h?g=t[9]:(g=(0,P.jsxs)(z,{children:[h,`, vor einem Update angelegt`]}),t[8]=h,t[9]=g);let _=l?null:`Nicht freigegeben`,v;t[10]!==n||t[11]!==a||t[12]!==l||t[13]!==o?(v=l&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[10]=n,t[11]=a,t[12]=l,t[13]=o,t[14]=v):v=t[14];let y;t[15]!==_||t[16]!==v?(y=(0,P.jsx)(B,{ohne:_,children:v}),t[15]=_,t[16]=v,t[17]=y):y=t[17];let b;return t[18]!==u||t[19]!==m||t[20]!==g||t[21]!==y?(b=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[u,d,m,g,y]}),t[18]=u,t[19]=m,t[20]=g,t[21]=y,t[22]=b):b=t[22],b}function U(e){let t=(0,M.c)(44),{g:n,jetzt:r,gesperrt:i,onFrage:o}=e,s=n.snapshots.length===0&&n.sicherungen.length===0,{anlegen:c,probe:l}=n,d=n.name,p;t[0]!==n.art||t[1]!==n.name?(p=g({art:n.art,name:n.name}),t[0]=n.art,t[1]=n.name,t[2]=p):p=t[2];let h=n.status===`running`?`ok`:n.status?`aus`:null,_;t[3]!==p||t[4]!==h?(_=(0,P.jsx)(m,{bild:p,punkt:h}),t[3]=p,t[4]=h,t[5]=_):_=t[5];let b;t[6]===n.name?b=t[7]:(b=(0,P.jsx)(`h3`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[6]=n.name,t[7]=b);let x;t[8]===n.wo?x=t[9]:(x=(0,P.jsx)(`span`,{className:`text-[13px] text-text-3`,children:n.wo}),t[8]=n.wo,t[9]=x);let S;t[10]!==b||t[11]!==x?(S=(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[b,x]}),t[10]=b,t[11]=x,t[12]=S):S=t[12];let C;t[13]!==_||t[14]!==S?(C=(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[_,S]}),t[13]=_,t[14]=S,t[15]=C):C=t[15];let w;t[16]!==c||t[17]!==n.laeuft||t[18]!==n.name||t[19]!==i||t[20]!==o||t[21]!==l?(w=n.laeuft?(0,P.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,n.laeuft,` …`]}):(c||l)&&(0,P.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[l&&(0,P.jsxs)(f,{variant:`ghost`,size:`sm`,disabled:i,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(D,{"aria-hidden":!0}),` Rückweg testen`]}),c&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>o({name:n.name,aktion:c,gefahr:!1}),children:[(0,P.jsx)(k,{"aria-hidden":!0}),` Snapshot anlegen`]})]}),t[16]=c,t[17]=n.laeuft,t[18]=n.name,t[19]=i,t[20]=o,t[21]=l,t[22]=w):w=t[22];let E;t[23]!==C||t[24]!==w?(E=(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-2`,children:[C,w]}),t[23]=C,t[24]=w,t[25]=E):E=t[25];let O;t[26]===n.grund?O=t[27]:(O=n.grund&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:n.grund}),t[26]=n.grund,t[27]=O);let A;t[28]!==n.name||t[29]!==n.zuletzt||t[30]!==r?(A=n.zuletzt&&(0,P.jsxs)(`p`,{className:a(`flex items-start gap-1.5 text-sm`,n.zuletzt.ok?`text-gruen-text`:`text-rot-text`),children:[n.zuletzt.ok?(0,P.jsx)(y,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}):(0,P.jsx)(u,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}),(0,P.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2`,children:[(0,P.jsx)(`span`,{className:`break-words`,children:v(n.zuletzt.text,n.name)}),(0,P.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:T(n.zuletzt.ende,r)})]})]}),t[28]=n.name,t[29]=n.zuletzt,t[30]=r,t[31]=A):A=t[31];let j;t[32]!==n||t[33]!==i||t[34]!==r||t[35]!==s||t[36]!==o?(j=s?(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Keine Snapshots.`}):(0,P.jsxs)(`div`,{role:`table`,"aria-label":`Snapshots von ${n.name}`,className:`flex flex-col`,children:[(0,P.jsxs)(`div`,{role:`row`,className:`sr-only`,children:[(0,P.jsx)(`span`,{role:`columnheader`,children:`Snapshot`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Herkunft`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Zeitpunkt`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Beschreibung`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Aktion`})]}),n.snapshots.map(e=>(0,P.jsx)(V,{g:n,s:e,jetzt:r,gesperrt:i,onFrage:o},e.name)),n.sicherungen.map(e=>(0,P.jsx)(H,{g:n,e,jetzt:r,gesperrt:i,onFrage:o},e.datei))]}),t[32]=n,t[33]=i,t[34]=r,t[35]=s,t[36]=o,t[37]=j):j=t[37];let N;return t[38]!==n.name||t[39]!==E||t[40]!==O||t[41]!==A||t[42]!==j?(N=(0,P.jsxs)(`section`,{"aria-label":d,className:`flaeche-innen flex min-w-0 flex-col gap-2 rounded-2xl px-4 py-3.5`,children:[E,O,A,j]}),t[38]=n.name,t[39]=E,t[40]=O,t[41]=A,t[42]=j,t[43]=N):N=t[43],N}function W(e){let t=(0,M.c)(24),{daten:n,gesperrt:r,onAktion:i}=e,[a,o]=(0,N.useState)(null),s;if(t[0]!==n.geraete||t[1]!==n.jetzt||t[2]!==r){let e;t[4]!==n.jetzt||t[5]!==r?(e=e=>(0,P.jsx)(U,{g:e,jetzt:n.jetzt,gesperrt:r||!!e.laeuft,onFrage:o},e.id),t[4]=n.jetzt,t[5]=r,t[6]=e):e=t[6],s=n.geraete.map(e),t[0]=n.geraete,t[1]=n.jetzt,t[2]=r,t[3]=s}else s=t[3];let c;t[7]===s?c=t[8]:(c=(0,P.jsx)(`div`,{className:`flex flex-col gap-3`,children:s}),t[7]=s,t[8]=c);let l=!!a,u=a?`${a.name}: ${a.aktion.label}`:``,d=a?.aktion.frage??``,f=a?.aktion.label??``,p=a?.gefahr,m;t[9]!==a||t[10]!==i?(m=()=>{a&&i(a.aktion),o(null)},t[9]=a,t[10]=i,t[11]=m):m=t[11];let h;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>o(null),t[12]=h):h=t[12];let g;t[13]!==r||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(g=(0,P.jsx)(b,{offen:l,titel:u,text:d,knopf:f,gefahr:p,gesperrt:r,onJa:m,onNein:h}),t[13]=r,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=g):g=t[20];let _;return t[21]!==g||t[22]!==c?(_=(0,P.jsxs)(P.Fragment,{children:[c,g]}),t[21]=g,t[22]=c,t[23]=_):_=t[23],_}function G(){let e=(0,M.c)(41),t=c(),n=o(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=s(r),a=l(),[u,d]=(0,N.useState)(!1);if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(h,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(h,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}if(i.isPending){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(h,{text:`Die Snapshots werden gelesen …`}),e[2]=t):t=e[2],t}if(!i.data){let t=`Die Snapshots lassen sich nicht lesen: ${i.error?.message??`keine Daten`}`,n;return e[3]===t?n=e[4]:(n=(0,P.jsx)(h,{fehler:!0,text:t}),e[3]=t,e[4]=n),n}let m=i.data,g=m.sperre,_;e[5]!==m.bericht||e[6]!==m.summe?(_=m.bericht?(0,P.jsx)(p,{children:x(m.summe)}):void 0,e[5]=m.bericht,e[6]=m.summe,e[7]=_):_=e[7];let v;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,P.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Ein Snapshot hält den Stand eines Geräts fest. Vor jedem Update legt der Orchestrator einen an (beim Proxmox Backup Server eine Sicherung) und räumt nach einem grünen Update die älteren weg. Hier legst du selbst welche an — die bleiben, bis du sie löschst —, setzt ein Gerät zurück oder löschst, was weg kann. Von Hand in Proxmox angelegte stehen nur zur Ansicht da.`}),e[8]=v):v=e[8];let y;e[9]===g?y=e[10]:(y=g&&(0,P.jsx)(`p`,{role:`alert`,className:`rounded-2xl bg-bernstein/[0.08] px-4 py-3 text-[15px] text-bernstein ring-1 ring-bernstein/35 ring-inset`,children:g}),e[9]=g,e[10]=y);let C;e[11]!==a.isPending||e[12]!==m.aufraeumen||e[13]!==m.aufraeumen_laeuft||e[14]!==g?(C=(m.aufraeumen||m.aufraeumen_laeuft)&&(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-2xl bg-white/[0.03] px-4 py-3 ring-1 ring-white/10 ring-inset`,children:[(0,P.jsx)(`p`,{className:`min-w-0 flex-1 text-[14.5px] text-text-2`,children:m.aufraeumen_laeuft?`Die Rückwege der letzten Updates werden gerade nacheinander gelöscht; am Ende kommt eine Meldung.`:`Nach grünen Updates bleibt je Gerät der Rückweg liegen, bis zum nächsten Update. Wegräumen geht hier auf einmal.`}),m.aufraeumen&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a.isPending||!!g,onClick:()=>d(!0),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` `,m.aufraeumen.label]})]}),e[11]=a.isPending,e[12]=m.aufraeumen,e[13]=m.aufraeumen_laeuft,e[14]=g,e[15]=C):C=e[15];let w;e[16]!==m.bericht||e[17]!==m.jetzt?(w=m.bericht?.veraltet&&(0,P.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,T(m.bericht.empfangen,m.jetzt),`; die Liste kann veraltet sein.`]}),e[16]=m.bericht,e[17]=m.jetzt,e[18]=w):w=e[18];let E;e[19]!==a||e[20]!==m||e[21]!==g?(E=m.bericht?(0,P.jsxs)(P.Fragment,{children:[!m.details&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Beschreibungen und die Größe der Sicherungen erscheinen, sobald der neue Ausführer auf dem Proxmox-Host läuft; bis dahin kommt der Zeitpunkt aus dem Namen des Snapshots.`}),(0,P.jsx)(W,{daten:m,gesperrt:a.isPending||!!g||!!m.aufraeumen_laeuft,onAktion:e=>a.mutate(e)}),(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wie viel ein Snapshot im Speicherpool belegt, sagt Proxmox nicht: Er teilt sich die Daten mit dem Gerät und wächst mit jeder Änderung seit seinem Zeitpunkt. Wie voll der Pool ist, steht im Cockpit unter „Speicher und Sicherungen“.`})]}):(0,P.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),e[19]=a,e[20]=m,e[21]=g,e[22]=E):E=e[22];let D=u&&!!m.aufraeumen,O=m.aufraeumen?.label??``,k=m.aufraeumen?.frage??``,A=m.aufraeumen?.label??``,F;e[23]!==a||e[24]!==m.aufraeumen?(F=()=>{m.aufraeumen&&a.mutate(m.aufraeumen),d(!1)},e[23]=a,e[24]=m.aufraeumen,e[25]=F):F=e[25];let I;e[26]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>d(!1),e[26]=I):I=e[26];let L;e[27]!==a.isPending||e[28]!==F||e[29]!==D||e[30]!==O||e[31]!==k||e[32]!==A?(L=(0,P.jsx)(b,{offen:D,titel:O,text:k,knopf:A,gefahr:!0,gesperrt:a.isPending,onJa:F,onNein:I}),e[27]=a.isPending,e[28]=F,e[29]=D,e[30]=O,e[31]=k,e[32]=A,e[33]=L):L=e[33];let R;return e[34]!==_||e[35]!==L||e[36]!==y||e[37]!==C||e[38]!==w||e[39]!==E?(R=(0,P.jsxs)(S,{titel:`Snapshots`,rechts:_,children:[v,y,C,w,E,L]}),e[34]=_,e[35]=L,e[36]=y,e[37]=C,e[38]=w,e[39]=E,e[40]=R):R=e[40],R}export{G as HomelabSnapshotsSeite}; \ No newline at end of file +import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{T as o,U as s,k as c,rt as l}from"./abfragen-CDCgpAto.js";import{n as u,t as d}from"./undo-2-B8COJmAr.js";import{t as f}from"./button-BHVKhtQ6.js";import{H as p,R as m,U as h,V as g,a as _,d as v,gt as y,h as b,l as x,m as S,o as C,s as w,u as T}from"./index-CuG_RlEw.js";var E={name:`flask-conical`,size:24,node:[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]};E.node;var D=r(E),O={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};O.node;var k=r(O),A={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};A.node;var j=r(A),M=i(),N=t(e(),1),P=n(),F=`grid grid-cols-[minmax(0,1fr)_auto] items-start gap-x-3 gap-y-1.5 border-t border-white/[0.06] py-3 [grid-template-areas:'name_herkunft'_'zeit_zeit'_'text_text'_'knoepfe_knoepfe'] md:grid-rows-[auto_auto_1fr] md:gap-x-4 md:[grid-template-areas:'name_herkunft'_'zeit_knoepfe'_'text_knoepfe'] xl:grid-cols-[minmax(10.5rem,1.1fr)_7.5rem_minmax(0,1fr)_minmax(0,1.4fr)_11rem] xl:grid-rows-none xl:items-center xl:[grid-template-areas:'name_herkunft_zeit_text_knoepfe']`,I=`ziffern min-w-0 pt-1 text-sm break-words text-foreground [grid-area:name] xl:pt-0`,L=`justify-self-end [grid-area:herkunft] xl:justify-self-start`;function R(e){let t=(0,M.c)(11),{zeit:n,jetzt:r}=e,i;t[0]!==r||t[1]!==n?(i=T(n,r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a;t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{className:`ziffern text-text-2`,children:i}),t[3]=i,t[4]=a);let o;t[5]!==r||t[6]!==n?(o=n!==null&&(0,P.jsx)(`span`,{className:`text-text-3`,children:C(n,r)}),t[5]=r,t[6]=n,t[7]=o):o=t[7];let s;return t[8]!==a||t[9]!==o?(s=(0,P.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap items-baseline gap-x-2 text-sm [grid-area:zeit]`,children:[a,o]}),t[8]=a,t[9]=o,t[10]=s):s=t[10],s}function z(e){let t=(0,M.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,P.jsx)(`span`,{role:`cell`,className:`min-w-0 text-sm break-words text-text-2 [grid-area:text]`,children:n}),t[0]=n,t[1]=r),r}function B(e){let t=(0,M.c)(5),{children:n,ohne:r}=e,i;t[0]!==n||t[1]!==r?(i=r?(0,P.jsx)(`span`,{className:`text-xs text-text-3`,children:r}):n,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 [grid-area:knoepfe] md:flex-col md:items-stretch md:justify-self-end xl:justify-self-stretch`,children:i}),t[3]=i,t[4]=a),a}function V(e){let t=(0,M.c)(35),{g:n,s:r,jetzt:i,gesperrt:a,onFrage:o}=e,{loeschen:s,zuruecksetzen:c}=r,l=s||c?null:r.eigen?`Nicht freigegeben`:`Nur in Proxmox`,u;t[0]===r.name?u=t[1]:(u=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.name}),t[0]=r.name,t[1]=u);let m=_[r.herkunft],h=_[r.herkunft],g;t[2]===h.chip?g=t[3]:(g=(0,P.jsx)(p,{children:h.chip}),t[2]=h.chip,t[3]=g);let v;t[4]!==m.text||t[5]!==g?(v=(0,P.jsx)(`span`,{role:`cell`,className:L,title:m.text,children:g}),t[4]=m.text,t[5]=g,t[6]=v):v=t[6];let y;t[7]!==i||t[8]!==r.zeit?(y=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[7]=i,t[8]=r.zeit,t[9]=y):y=t[9];let b;t[10]!==r.beschreibung||t[11]!==r.herkunft?(b=r.beschreibung??(0,P.jsx)(`span`,{className:`text-text-3`,children:_[r.herkunft].text}),t[10]=r.beschreibung,t[11]=r.herkunft,t[12]=b):b=t[12];let x;t[13]===b?x=t[14]:(x=(0,P.jsx)(z,{children:b}),t[13]=b,t[14]=x);let S;t[15]!==n||t[16]!==a||t[17]!==o||t[18]!==c?(S=c&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:c,gefahr:!0}),children:[(0,P.jsx)(d,{"aria-hidden":!0}),` Zurücksetzen`]}),t[15]=n,t[16]=a,t[17]=o,t[18]=c,t[19]=S):S=t[19];let C;t[20]!==n||t[21]!==a||t[22]!==s||t[23]!==o?(C=s&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:s,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[20]=n,t[21]=a,t[22]=s,t[23]=o,t[24]=C):C=t[24];let w;t[25]!==l||t[26]!==C||t[27]!==S?(w=(0,P.jsxs)(B,{ohne:l,children:[S,C]}),t[25]=l,t[26]=C,t[27]=S,t[28]=w):w=t[28];let T;return t[29]!==u||t[30]!==w||t[31]!==v||t[32]!==y||t[33]!==x?(T=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[u,v,y,x,w]}),t[29]=u,t[30]=w,t[31]=v,t[32]=y,t[33]=x,t[34]=T):T=t[34],T}function H(e){let t=(0,M.c)(23),{g:n,e:r,jetzt:i,gesperrt:a,onFrage:o}=e,s;t[0]===r.groesse?s=t[1]:(s=w(r.groesse),t[0]=r.groesse,t[1]=s);let c=s,l=r.loeschen,u;t[2]===r.datei?u=t[3]:(u=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.datei}),t[2]=r.datei,t[3]=u);let d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,P.jsx)(`span`,{role:`cell`,className:L,children:(0,P.jsx)(p,{children:`Sicherung`})}),t[4]=d):d=t[4];let m;t[5]!==r.zeit||t[6]!==i?(m=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[5]=r.zeit,t[6]=i,t[7]=m):m=t[7];let h=c?`${c} auf „${r.speicher}“`:`Auf „${r.speicher}“`,g;t[8]===h?g=t[9]:(g=(0,P.jsxs)(z,{children:[h,`, vor einem Update angelegt`]}),t[8]=h,t[9]=g);let _=l?null:`Nicht freigegeben`,v;t[10]!==n||t[11]!==a||t[12]!==l||t[13]!==o?(v=l&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[10]=n,t[11]=a,t[12]=l,t[13]=o,t[14]=v):v=t[14];let y;t[15]!==_||t[16]!==v?(y=(0,P.jsx)(B,{ohne:_,children:v}),t[15]=_,t[16]=v,t[17]=y):y=t[17];let b;return t[18]!==u||t[19]!==m||t[20]!==g||t[21]!==y?(b=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[u,d,m,g,y]}),t[18]=u,t[19]=m,t[20]=g,t[21]=y,t[22]=b):b=t[22],b}function U(e){let t=(0,M.c)(44),{g:n,jetzt:r,gesperrt:i,onFrage:o}=e,s=n.snapshots.length===0&&n.sicherungen.length===0,{anlegen:c,probe:l}=n,d=n.name,p;t[0]!==n.art||t[1]!==n.name?(p=g({art:n.art,name:n.name}),t[0]=n.art,t[1]=n.name,t[2]=p):p=t[2];let h=n.status===`running`?`ok`:n.status?`aus`:null,_;t[3]!==p||t[4]!==h?(_=(0,P.jsx)(m,{bild:p,punkt:h}),t[3]=p,t[4]=h,t[5]=_):_=t[5];let b;t[6]===n.name?b=t[7]:(b=(0,P.jsx)(`h3`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[6]=n.name,t[7]=b);let x;t[8]===n.wo?x=t[9]:(x=(0,P.jsx)(`span`,{className:`text-[13px] text-text-3`,children:n.wo}),t[8]=n.wo,t[9]=x);let S;t[10]!==b||t[11]!==x?(S=(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[b,x]}),t[10]=b,t[11]=x,t[12]=S):S=t[12];let C;t[13]!==_||t[14]!==S?(C=(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[_,S]}),t[13]=_,t[14]=S,t[15]=C):C=t[15];let w;t[16]!==c||t[17]!==n.laeuft||t[18]!==n.name||t[19]!==i||t[20]!==o||t[21]!==l?(w=n.laeuft?(0,P.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,n.laeuft,` …`]}):(c||l)&&(0,P.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[l&&(0,P.jsxs)(f,{variant:`ghost`,size:`sm`,disabled:i,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(D,{"aria-hidden":!0}),` Rückweg testen`]}),c&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>o({name:n.name,aktion:c,gefahr:!1}),children:[(0,P.jsx)(k,{"aria-hidden":!0}),` Snapshot anlegen`]})]}),t[16]=c,t[17]=n.laeuft,t[18]=n.name,t[19]=i,t[20]=o,t[21]=l,t[22]=w):w=t[22];let E;t[23]!==C||t[24]!==w?(E=(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-2`,children:[C,w]}),t[23]=C,t[24]=w,t[25]=E):E=t[25];let O;t[26]===n.grund?O=t[27]:(O=n.grund&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:n.grund}),t[26]=n.grund,t[27]=O);let A;t[28]!==n.name||t[29]!==n.zuletzt||t[30]!==r?(A=n.zuletzt&&(0,P.jsxs)(`p`,{className:a(`flex items-start gap-1.5 text-sm`,n.zuletzt.ok?`text-gruen-text`:`text-rot-text`),children:[n.zuletzt.ok?(0,P.jsx)(y,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}):(0,P.jsx)(u,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}),(0,P.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2`,children:[(0,P.jsx)(`span`,{className:`break-words`,children:v(n.zuletzt.text,n.name)}),(0,P.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:T(n.zuletzt.ende,r)})]})]}),t[28]=n.name,t[29]=n.zuletzt,t[30]=r,t[31]=A):A=t[31];let j;t[32]!==n||t[33]!==i||t[34]!==r||t[35]!==s||t[36]!==o?(j=s?(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Keine Snapshots.`}):(0,P.jsxs)(`div`,{role:`table`,"aria-label":`Snapshots von ${n.name}`,className:`flex flex-col`,children:[(0,P.jsxs)(`div`,{role:`row`,className:`sr-only`,children:[(0,P.jsx)(`span`,{role:`columnheader`,children:`Snapshot`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Herkunft`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Zeitpunkt`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Beschreibung`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Aktion`})]}),n.snapshots.map(e=>(0,P.jsx)(V,{g:n,s:e,jetzt:r,gesperrt:i,onFrage:o},e.name)),n.sicherungen.map(e=>(0,P.jsx)(H,{g:n,e,jetzt:r,gesperrt:i,onFrage:o},e.datei))]}),t[32]=n,t[33]=i,t[34]=r,t[35]=s,t[36]=o,t[37]=j):j=t[37];let N;return t[38]!==n.name||t[39]!==E||t[40]!==O||t[41]!==A||t[42]!==j?(N=(0,P.jsxs)(`section`,{"aria-label":d,className:`flaeche-innen flex min-w-0 flex-col gap-2 rounded-2xl px-4 py-3.5`,children:[E,O,A,j]}),t[38]=n.name,t[39]=E,t[40]=O,t[41]=A,t[42]=j,t[43]=N):N=t[43],N}function W(e){let t=(0,M.c)(24),{daten:n,gesperrt:r,onAktion:i}=e,[a,o]=(0,N.useState)(null),s;if(t[0]!==n.geraete||t[1]!==n.jetzt||t[2]!==r){let e;t[4]!==n.jetzt||t[5]!==r?(e=e=>(0,P.jsx)(U,{g:e,jetzt:n.jetzt,gesperrt:r||!!e.laeuft,onFrage:o},e.id),t[4]=n.jetzt,t[5]=r,t[6]=e):e=t[6],s=n.geraete.map(e),t[0]=n.geraete,t[1]=n.jetzt,t[2]=r,t[3]=s}else s=t[3];let c;t[7]===s?c=t[8]:(c=(0,P.jsx)(`div`,{className:`flex flex-col gap-3`,children:s}),t[7]=s,t[8]=c);let l=!!a,u=a?`${a.name}: ${a.aktion.label}`:``,d=a?.aktion.frage??``,f=a?.aktion.label??``,p=a?.gefahr,m;t[9]!==a||t[10]!==i?(m=()=>{a&&i(a.aktion),o(null)},t[9]=a,t[10]=i,t[11]=m):m=t[11];let h;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>o(null),t[12]=h):h=t[12];let g;t[13]!==r||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(g=(0,P.jsx)(b,{offen:l,titel:u,text:d,knopf:f,gefahr:p,gesperrt:r,onJa:m,onNein:h}),t[13]=r,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=g):g=t[20];let _;return t[21]!==g||t[22]!==c?(_=(0,P.jsxs)(P.Fragment,{children:[c,g]}),t[21]=g,t[22]=c,t[23]=_):_=t[23],_}function G(){let e=(0,M.c)(41),t=c(),n=s(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=o(r),a=l(),[u,d]=(0,N.useState)(!1);if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(h,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(h,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}if(i.isPending){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(h,{text:`Die Snapshots werden gelesen …`}),e[2]=t):t=e[2],t}if(!i.data){let t=`Die Snapshots lassen sich nicht lesen: ${i.error?.message??`keine Daten`}`,n;return e[3]===t?n=e[4]:(n=(0,P.jsx)(h,{fehler:!0,text:t}),e[3]=t,e[4]=n),n}let m=i.data,g=m.sperre,_;e[5]!==m.bericht||e[6]!==m.summe?(_=m.bericht?(0,P.jsx)(p,{children:x(m.summe)}):void 0,e[5]=m.bericht,e[6]=m.summe,e[7]=_):_=e[7];let v;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,P.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Ein Snapshot hält den Stand eines Geräts fest. Vor jedem Update legt der Orchestrator einen an (beim Proxmox Backup Server eine Sicherung) und räumt nach einem grünen Update die älteren weg. Hier legst du selbst welche an — die bleiben, bis du sie löschst —, setzt ein Gerät zurück oder löschst, was weg kann. Von Hand in Proxmox angelegte stehen nur zur Ansicht da.`}),e[8]=v):v=e[8];let y;e[9]===g?y=e[10]:(y=g&&(0,P.jsx)(`p`,{role:`alert`,className:`rounded-2xl bg-bernstein/[0.08] px-4 py-3 text-[15px] text-bernstein ring-1 ring-bernstein/35 ring-inset`,children:g}),e[9]=g,e[10]=y);let C;e[11]!==a.isPending||e[12]!==m.aufraeumen||e[13]!==m.aufraeumen_laeuft||e[14]!==g?(C=(m.aufraeumen||m.aufraeumen_laeuft)&&(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-2xl bg-white/[0.03] px-4 py-3 ring-1 ring-white/10 ring-inset`,children:[(0,P.jsx)(`p`,{className:`min-w-0 flex-1 text-[14.5px] text-text-2`,children:m.aufraeumen_laeuft?`Die Rückwege der letzten Updates werden gerade nacheinander gelöscht; am Ende kommt eine Meldung.`:`Nach grünen Updates bleibt je Gerät der Rückweg liegen, bis zum nächsten Update. Wegräumen geht hier auf einmal.`}),m.aufraeumen&&(0,P.jsxs)(f,{variant:`outline`,size:`sm`,disabled:a.isPending||!!g,onClick:()=>d(!0),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` `,m.aufraeumen.label]})]}),e[11]=a.isPending,e[12]=m.aufraeumen,e[13]=m.aufraeumen_laeuft,e[14]=g,e[15]=C):C=e[15];let w;e[16]!==m.bericht||e[17]!==m.jetzt?(w=m.bericht?.veraltet&&(0,P.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,T(m.bericht.empfangen,m.jetzt),`; die Liste kann veraltet sein.`]}),e[16]=m.bericht,e[17]=m.jetzt,e[18]=w):w=e[18];let E;e[19]!==a||e[20]!==m||e[21]!==g?(E=m.bericht?(0,P.jsxs)(P.Fragment,{children:[!m.details&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Beschreibungen und die Größe der Sicherungen erscheinen, sobald der neue Ausführer auf dem Proxmox-Host läuft; bis dahin kommt der Zeitpunkt aus dem Namen des Snapshots.`}),(0,P.jsx)(W,{daten:m,gesperrt:a.isPending||!!g||!!m.aufraeumen_laeuft,onAktion:e=>a.mutate(e)}),(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wie viel ein Snapshot im Speicherpool belegt, sagt Proxmox nicht: Er teilt sich die Daten mit dem Gerät und wächst mit jeder Änderung seit seinem Zeitpunkt. Wie voll der Pool ist, steht im Cockpit unter „Speicher und Sicherungen“.`})]}):(0,P.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),e[19]=a,e[20]=m,e[21]=g,e[22]=E):E=e[22];let D=u&&!!m.aufraeumen,O=m.aufraeumen?.label??``,k=m.aufraeumen?.frage??``,A=m.aufraeumen?.label??``,F;e[23]!==a||e[24]!==m.aufraeumen?(F=()=>{m.aufraeumen&&a.mutate(m.aufraeumen),d(!1)},e[23]=a,e[24]=m.aufraeumen,e[25]=F):F=e[25];let I;e[26]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>d(!1),e[26]=I):I=e[26];let L;e[27]!==a.isPending||e[28]!==F||e[29]!==D||e[30]!==O||e[31]!==k||e[32]!==A?(L=(0,P.jsx)(b,{offen:D,titel:O,text:k,knopf:A,gefahr:!0,gesperrt:a.isPending,onJa:F,onNein:I}),e[27]=a.isPending,e[28]=F,e[29]=D,e[30]=O,e[31]=k,e[32]=A,e[33]=L):L=e[33];let R;return e[34]!==_||e[35]!==L||e[36]!==y||e[37]!==C||e[38]!==w||e[39]!==E?(R=(0,P.jsxs)(S,{titel:`Snapshots`,rechts:_,children:[v,y,C,w,E,L]}),e[34]=_,e[35]=L,e[36]=y,e[37]=C,e[38]=w,e[39]=E,e[40]=R):R=e[40],R}export{G as HomelabSnapshotsSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/MenueSchublade-DGFi9TOj.js b/frontend/dist/assets/MenueSchublade-mFJEpUye.js similarity index 93% rename from frontend/dist/assets/MenueSchublade-DGFi9TOj.js rename to frontend/dist/assets/MenueSchublade-mFJEpUye.js index 7333637..88a3065 100644 --- a/frontend/dist/assets/MenueSchublade-DGFi9TOj.js +++ b/frontend/dist/assets/MenueSchublade-mFJEpUye.js @@ -1 +1 @@ -import{i as e,r as t}from"./dist-aE7UmubC.js";import{G as n,K as r}from"./index-B_hvuxH0.js";import{a as i,i as a,n as o,r as s,t as c}from"./sheet-DG7u1mB-.js";var l=t(),u=e();function d(e){let t=(0,l.c)(8),{onSchliessen:d}=e,f;t[0]===d?f=t[1]:(f=e=>!e&&d(),t[0]=d,t[1]=f);let p;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,u.jsxs)(a,{className:`p-0`,children:[(0,u.jsx)(i,{asChild:!0,children:(0,u.jsx)(`div`,{children:(0,u.jsx)(n,{})})}),(0,u.jsx)(s,{className:`sr-only`,children:`Bereiche und Seiten`})]}),t[2]=p):p=t[2];let m;t[3]===d?m=t[4]:(m=(0,u.jsxs)(o,{side:`left`,className:`flex flex-col gap-7 border-white/[0.06] bg-[#0a0d14] px-4 pt-5 pb-[calc(1.25rem+env(safe-area-inset-bottom))] data-[side=left]:w-[300px]`,children:[p,(0,u.jsx)(r,{onGewaehlt:d})]}),t[3]=d,t[4]=m);let h;return t[5]!==f||t[6]!==m?(h=(0,u.jsx)(c,{open:!0,onOpenChange:f,children:m}),t[5]=f,t[6]=m,t[7]=h):h=t[7],h}export{d as MenueSchublade}; \ No newline at end of file +import{i as e,r as t}from"./dist-aE7UmubC.js";import{G as n,K as r}from"./index-CuG_RlEw.js";import{a as i,i as a,n as o,r as s,t as c}from"./sheet-DG7u1mB-.js";var l=t(),u=e();function d(e){let t=(0,l.c)(8),{onSchliessen:d}=e,f;t[0]===d?f=t[1]:(f=e=>!e&&d(),t[0]=d,t[1]=f);let p;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,u.jsxs)(a,{className:`p-0`,children:[(0,u.jsx)(i,{asChild:!0,children:(0,u.jsx)(`div`,{children:(0,u.jsx)(n,{})})}),(0,u.jsx)(s,{className:`sr-only`,children:`Bereiche und Seiten`})]}),t[2]=p):p=t[2];let m;t[3]===d?m=t[4]:(m=(0,u.jsxs)(o,{side:`left`,className:`flex flex-col gap-7 border-white/[0.06] bg-[#0a0d14] px-4 pt-5 pb-[calc(1.25rem+env(safe-area-inset-bottom))] data-[side=left]:w-[300px]`,children:[p,(0,u.jsx)(r,{onGewaehlt:d})]}),t[3]=d,t[4]=m);let h;return t[5]!==f||t[6]!==m?(h=(0,u.jsx)(c,{open:!0,onOpenChange:f,children:m}),t[5]=f,t[6]=m,t[7]=h):h=t[7],h}export{d as MenueSchublade}; \ No newline at end of file diff --git a/frontend/dist/assets/Modelle-BlSp1533.js b/frontend/dist/assets/Modelle-qcKJnyDK.js similarity index 79% rename from frontend/dist/assets/Modelle-BlSp1533.js rename to frontend/dist/assets/Modelle-qcKJnyDK.js index 92e553a..0e86a30 100644 --- a/frontend/dist/assets/Modelle-BlSp1533.js +++ b/frontend/dist/assets/Modelle-qcKJnyDK.js @@ -1 +1 @@ -import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Bt as a,E as o,F as s,Ft as c,G as l,H as u,K as d,Lt as f,Nt as p,Ot as m,P as h,Pt as g,Rt as _,St as v,U as y,_t as b,a as x,c as S,gt as C,ht as w,i as T,j as E,l as D,nt as O,rn as k,xt as A,z as j}from"./abfragen-pD_qBEtc.js";import{n as M,t as N}from"./useSelector-DBNxxw17.js";import{n as P}from"./useMatch-DDVpPKJI.js";import{t as F}from"./chevron-right-DF8ikrVh.js";import{t as I}from"./button-BHVKhtQ6.js";import{E as L,H as R,T as z,U as B,h as V,m as H,ut as U,w as W}from"./index-B_hvuxH0.js";import{a as G,i as ee,n as te,r as K,t as ne}from"./sheet-DG7u1mB-.js";import{a as re,r as ie,s as ae,t as q}from"./Auftraege-DLT4O34-.js";import{t as J}from"./breite-k-QN6GPl.js";function oe(e){let t=M();return N(t.stores.location,P(e,t))}var Y=r(),X=t(e(),1),Z=n(),Q=new Intl.NumberFormat(`de-DE`),se=240,ce=24,le={ArrowLeft:e=>Math.max(0,e-1),ArrowRight:(e,t)=>Math.min(t-1,e+1),Home:()=>0,End:(e,t)=>t-1};function ue(e){let t=(0,Y.c)(20),{saeule:n,reihen:r,summe:a,className:o,links:s}=e,c;t[0]===o?c=t[1]:(c=i(`flex flex-col gap-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 py-2`,o),t[0]=o,t[1]=c);let l;t[2]===s?l=t[3]:(l=s===void 0?void 0:{left:s},t[2]=s,t[3]=l);let u;t[4]===n.lang?u=t[5]:(u=(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:n.lang}),t[4]=n.lang,t[5]=u);let d;if(t[6]!==r||t[7]!==n.werte){let e;t[9]===n.werte?e=t[10]:(e=e=>(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 text-sm`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 shrink-0 self-center rounded-full`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(n.werte[e.name]??0)}),(0,Z.jsx)(`span`,{className:`min-w-0 text-text-3`,children:e.name})]},e.name),t[9]=n.werte,t[10]=e),d=r.map(e),t[6]=r,t[7]=n.werte,t[8]=d}else d=t[8];let f;t[11]!==r.length||t[12]!==a?(f=r.length>1&&(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 border-t border-white/[0.06] pt-1 text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(a)}),(0,Z.jsx)(`span`,{className:`text-text-3`,children:`zusammen`})]}),t[11]=r.length,t[12]=a,t[13]=f):f=t[13];let p;return t[14]!==c||t[15]!==l||t[16]!==u||t[17]!==d||t[18]!==f?(p=(0,Z.jsxs)(`div`,{role:`status`,className:c,style:l,children:[u,d,f]}),t[14]=c,t[15]=l,t[16]=u,t[17]=d,t[18]=f,t[19]=p):p=t[19],p}function de(e){let t=(0,Y.c)(92),{saeulen:n,reihen:r,titel:a,summen:o,hoehe:s,spalte:c}=e,l=o===void 0?`alle`:o,u=s===void 0?200:s,d=c===void 0?`Zeitraum`:c,[f,p]=J(),[m,h]=(0,X.useState)(null),g=n.length,_,v,y,b,x,S,C,w,T,E;if(t[0]!==p||t[1]!==u||t[2]!==m||t[3]!==g||t[4]!==f||t[5]!==r||t[6]!==n||t[7]!==d||t[8]!==l||t[9]!==a){let e;t[20]===n?e=t[21]:(e=e=>n.some(t=>(t.werte[e.name]??0)>0),t[20]=n,t[21]=e);let o=r.filter(e),s=n.map(e=>o.reduce((t,n)=>t+(e.werte[n.name]??0),0)),c=Math.max(0,...s),D=L(c),O=D[D.length-1],k;t[22]===O?k=t[23]:(k=Q.format(O),t[22]=O,t[23]=k);let A=Math.max(28,k.length*7+12),j=n.some(ge)?34:22,M;t[24]!==A||t[25]!==j?(M={links:A,rechts:4,oben:20,unten:j},t[24]=A,t[25]=j,t[26]=M):M=t[26];let N=M,P=Math.max(1,p-N.links-N.rechts),F=u-N.oben-N.unten,I=P/Math.max(1,g),R=Math.min(ce,Math.max(3,I*.72)),B;t[27]!==F||t[28]!==O||t[29]!==N.oben?(B=e=>N.oben+F-e/O*F,t[27]=F,t[28]=O,t[29]=N.oben,t[30]=B):B=t[30];let V=B,H=N.oben+F,U;t[31]!==I||t[32]!==N.links?(U=e=>N.links+(e+.5)*I,t[31]=I,t[32]=N.links,t[33]=U):U=t[33];let G=U,ee;t[34]===n?ee=t[35]:(ee=Math.max(1,...n.map(he)),t[34]=n,t[35]=ee);let te=ee*6.6+8,K;t[36]!==I||t[37]!==te?(K=[1,3,6,12].find(e=>e*I>=te)??24,t[36]=I,t[37]=te,t[38]=K):K=t[38];let ne=K,re=s.indexOf(c),ie=I<34,ae;t[39]===g?ae=t[40]:(ae=function(e){if(g===0)return;let t=e.currentTarget.getBoundingClientRect();h(Math.min(g-1,Math.max(0,Math.floor((e.clientX-t.left)/t.width*g))))},t[39]=g,t[40]=ae);let q=ae,J;t[41]===g?J=t[42]:(J=function(e){let t=le[e.key];g!==0&&t&&(e.preventDefault(),h(e=>t(e??g-1,g)))},t[41]=g,t[42]=J);let oe=J,Y=m===null?void 0:n[m],X=p>=360,de=m===null?0:Math.max(0,Math.min(p-se,G(m)+12+se>p?G(m)-12-se:G(m)+12));_=`flex flex-col gap-2`,v=o.length>1&&(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:o.map(me)});let _e;t[43]===g?_e=t[44]:(_e=()=>h(e=>e??(g?g-1:null)),t[43]=g,t[44]=_e);let ve;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(ve=()=>h(null),t[45]=ve):ve=t[45];let ye;t[46]!==Y||t[47]!==I||t[48]!==m||t[49]!==F||t[50]!==N.links||t[51]!==N.oben?(ye=Y&&m!==null&&(0,Z.jsx)(`rect`,{x:N.links+m*I,y:N.oben-4,width:I,height:F+4,rx:4,fill:`var(--erhaben)`}),t[46]=Y,t[47]=I,t[48]=m,t[49]=F,t[50]=N.links,t[51]=N.oben,t[52]=ye):ye=t[52];let be;t[53]!==p||t[54]!==N.links||t[55]!==N.rechts||t[56]!==V?(be=e=>(0,Z.jsxs)(`g`,{children:[(0,Z.jsx)(`line`,{x1:N.links,x2:p-N.rechts,y1:V(e),y2:V(e),strokeWidth:1,stroke:e===0?`var(--linie-stark)`:`var(--linie)`}),(0,Z.jsx)(`text`,{x:N.links-8,y:V(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:Q.format(e)})]},e),t[53]=p,t[54]=N.links,t[55]=N.rechts,t[56]=V,t[57]=be):be=t[57];let xe;t[58]!==P||t[59]!==F||t[60]!==c||t[61]!==N.links||t[62]!==N.oben?(xe=c===0&&(0,Z.jsx)(`text`,{x:N.links+P/2,y:N.oben+F/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Keine Anfragen in diesem Zeitraum`}),t[58]=P,t[59]=F,t[60]=c,t[61]=N.links,t[62]=N.oben,t[63]=xe):xe=t[63];let Se;t[64]===Symbol.for(`react.memo_cache_sentinel`)?(Se=e=>{e.pointerType!==`touch`&&h(null)},t[64]=Se):Se=t[64];let Ce;t[65]!==u||t[66]!==P||t[67]!==N.links||t[68]!==q?(Ce=(0,Z.jsx)(`rect`,{x:N.links,y:0,width:P,height:u,fill:`transparent`,onPointerMove:q,onPointerDown:q,onPointerLeave:Se}),t[65]=u,t[66]=P,t[67]=N.links,t[68]=q,t[69]=Ce):Ce=t[69],y=(0,Z.jsxs)(`div`,{ref:f,className:`relative w-full`,children:[(0,Z.jsxs)(`svg`,{width:p,height:u,viewBox:`0 0 ${p} ${u}`,role:`img`,"aria-label":a,tabIndex:0,onKeyDown:oe,onFocus:_e,onBlur:ve,className:`block h-auto max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[ye,D.map(be),n.map((e,t)=>{let n=G(t)-R/2;return(0,Z.jsxs)(`g`,{children:[z(o.map(t=>e.werte[t.name]??0),V).filter(pe).map(e=>e.oben?(0,Z.jsx)(`path`,{d:W(n,e.y,R,e.hoehe),fill:o[e.index].farbe},e.index):(0,Z.jsx)(`rect`,{x:n,y:e.y,width:R,height:e.hoehe,fill:o[e.index].farbe},e.index)),s[t]>0&&(l===`alle`||t===re)&&(0,Z.jsx)(`text`,{x:G(t),y:V(s[t])-6,textAnchor:`middle`,className:i(`fill-text-2 font-mono`,ie?`text-[10px]`:`text-[11px]`),children:Q.format(s[t])}),(e.raster??t)%ne===0&&(0,Z.jsxs)(`text`,{x:G(t),y:H+15,textAnchor:`middle`,className:`fill-text-3 font-mono text-[11px]`,children:[e.achse,e.achse2&&(0,Z.jsx)(`tspan`,{x:G(t),dy:13,className:`text-[10px]`,children:e.achse2})]})]},e.schluessel)}),xe,Ce]}),Y&&m!==null&&X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m],links:de,className:`pointer-events-none absolute top-1 z-10 w-60 shadow-lg`})]}),b=Y&&m!==null&&!X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m]}),T=`text-sm`,t[70]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[70]=E):E=t[70],w=`mt-2 overflow-x-auto`,S=`w-full border-collapse text-xs`;let we;t[71]===d?we=t[72]:(we=(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-left font-normal`,children:d}),t[71]=d,t[72]=we),C=(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{className:`text-text-3`,children:[we,o.map(fe),o.length>1&&(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 text-right font-normal`,children:`Zusammen`})]})}),x=n.map((e,t)=>(0,Z.jsxs)(`tr`,{className:`border-t border-white/[0.06]`,children:[(0,Z.jsx)(`th`,{scope:`row`,className:`py-1 pr-3 text-left font-normal text-text-3`,children:e.lang}),o.map(t=>(0,Z.jsx)(`td`,{className:`ziffern py-1 pr-3 text-right text-text-2`,children:Q.format(e.werte[t.name]??0)},t.name)),o.length>1&&(0,Z.jsx)(`td`,{className:`ziffern py-1 text-right text-foreground`,children:Q.format(s[t])})]},e.schluessel)),t[0]=p,t[1]=u,t[2]=m,t[3]=g,t[4]=f,t[5]=r,t[6]=n,t[7]=d,t[8]=l,t[9]=a,t[10]=_,t[11]=v,t[12]=y,t[13]=b,t[14]=x,t[15]=S,t[16]=C,t[17]=w,t[18]=T,t[19]=E}else _=t[10],v=t[11],y=t[12],b=t[13],x=t[14],S=t[15],C=t[16],w=t[17],T=t[18],E=t[19];let D;t[73]===x?D=t[74]:(D=(0,Z.jsx)(`tbody`,{children:x}),t[73]=x,t[74]=D);let O;t[75]!==D||t[76]!==S||t[77]!==C?(O=(0,Z.jsxs)(`table`,{className:S,children:[C,D]}),t[75]=D,t[76]=S,t[77]=C,t[78]=O):O=t[78];let k;t[79]!==O||t[80]!==w?(k=(0,Z.jsx)(`div`,{className:w,children:O}),t[79]=O,t[80]=w,t[81]=k):k=t[81];let A;t[82]!==k||t[83]!==T||t[84]!==E?(A=(0,Z.jsxs)(`details`,{className:T,children:[E,k]}),t[82]=k,t[83]=T,t[84]=E,t[85]=A):A=t[85];let j;return t[86]!==_||t[87]!==v||t[88]!==y||t[89]!==b||t[90]!==A?(j=(0,Z.jsxs)(`div`,{className:_,children:[v,y,b,A]}),t[86]=_,t[87]=v,t[88]=y,t[89]=b,t[90]=A,t[91]=j):j=t[91],j}function fe(e){return(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-right font-normal [overflow-wrap:anywhere]`,children:e.name},e.name)}function pe(e){return e.hoehe>0}function me(e){return(0,Z.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),e.name]},e.name)}function he(e){return e.achse.length}function ge(e){return e.achse2}var _e=`Europe/Berlin`,ve=[`var(--reihe-1)`,`var(--reihe-2)`,`var(--reihe-3)`],ye={name:`Weitere`,farbe:`var(--reihe-weitere)`},be=new Intl.NumberFormat(`de-DE`),xe=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Se=new Intl.DateTimeFormat(`en-CA`,{timeZone:_e}),Ce=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:_e}),we=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,hourCycle:`h23`,timeZone:_e}),Te=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:`UTC`}),Ee=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,timeZone:`UTC`}),$=e=>be.format(e);function De(e){if(!(e>0))return`0 %`;let t=e*100;return t<.1?`unter 0,1 %`:`${t<10?xe.format(t):be.format(Math.round(t))} %`}function Oe(e,t=!1){if(e==null||!Number.isFinite(e)||e<0)return`–`;if(Math.round(e*1e3)<1e3)return`${Math.round(e*1e3)} ms`;if(e<9.95)return`${xe.format(e)} s`;let n=Math.round(e);if(n<60)return`${n} s`;if(n<3600&&!t)return n%60?`${Math.floor(n/60)} min ${n%60} s`:`${n/60} min`;let r=Math.round(e/60);return r<60?`${r} min`:r%60?`${Math.floor(r/60)} h ${r%60} min`:`${r/60} h`}var ke={400:`fehlerhafte Anfrage`,404:`nicht gefunden`,408:`Zeitüberschreitung`,413:`Anfrage zu groß`,429:`zu viele Anfragen`,499:`vom Absender abgebrochen`,500:`Fehler beim Modell`,502:`Modell nicht erreichbar`,503:`gerade nicht verfügbar`,504:`Zeitüberschreitung`};function Ae(e){return Object.entries(e??{}).sort(([e,t],[n,r])=>r-t||e.localeCompare(n)).map(([e,t])=>ke[e]?`${$(t)}× ${ke[e]} (${e})`:`${$(t)}× Status ${e}`).join(` · `)}function je(e){return e===null||e<.01?{art:`grau`,wort:null}:e>=.05?{art:`rot`,wort:`hoch`}:{art:`bernstein`,wort:`auffällig`}}var Me=e=>String(e).padStart(2,`0`),Ne=e=>Object.values(e??{}).reduce((e,t)=>e+t,0),Pe=e=>Te.format(e).replace(`.`,``);function Fe(e){return Number(we.formatToParts(e).find(e=>e.type===`hour`)?.value??0)%24}function Ie(e){let[,t,n]=e.split(`-`);return`${Ee.format(new Date(`${e}T12:00:00Z`))}, ${n}.${t}.`}function Le(e,t=new Date){let n=e.stand?new Date(e.stand):t,r=Se.format(n),i=new Date(Date.parse(`${r}T12:00:00Z`)-864e5).toISOString().slice(0,10),a=e.gesamt?.anfragen??e.absender.reduce((e,t)=>e+t.anfragen,0),o=e.gesamt?.dauer_summe_s??null,s=new Map(e.absender.map((e,t)=>[e.name,e.reihe??t])),c=e.absender.map(e=>{let t=s.get(e.name)??ve.length,n=t[e.name,e.reihe])),u=[];for(let e of[...c].sort((e,t)=>(s.get(e.name)??99)-(s.get(t.name)??99)))u.some(t=>t.name===e.reihe)||u.push({name:e.reihe,farbe:e.farbe});let d=e=>{let t={};for(let[n,r]of Object.entries(e??{})){let e=l.get(n)??ye.name;t[e]=(t[e]??0)+r,e===ye.name&&!u.some(t=>t.name===e)&&u.push({...ye})}return t},f=Object.keys(e.je_tag??{}).sort(),p=f.map(t=>{let i=t===r;return{schluessel:t,achse:Pe(new Date(`${t}T12:00:00Z`)),achse2:i?`heute`:`${Number(t.slice(8))}.`,lang:`${Ie(t)}${i?` (heute bis ${Ce.format(n)})`:``}`,werte:d(e.je_tag[t])}}),m;if(e.stunden?.length)m=e.stunden.map((e,t,n)=>{let a=new Date(e.beginn),o=Fe(a),s=Se.format(a),c=s===r?`Heute`:s===i?`Gestern`:Ie(s),l=t===n.length-1?` bis jetzt`:`–${Me((o+1)%24)}:00`;return{schluessel:e.beginn,achse:`${Me(o)}:00`,raster:o,lang:`${c} ${Me(o)}:00${l}`,werte:d(e.je_absender)}});else{let t=Fe(n),r=e.letzte_24h??[];m=[...r.slice(t+1),...r.slice(0,t+1)].map(e=>{let t=Number(e.stunde);return{schluessel:e.stunde,achse:`${Me(t)}:00`,raster:t,lang:`${Me(t)}:00–${Me((t+1)%24)}:00`,werte:d(e.je_absender)}})}let h=f.filter(e=>e!==r),g=e.seit?Se.format(new Date(e.seit)):null,_=e.ladevorgaenge??Object.entries(e.zuletzt_geladen??{}).sort(([,e],[,t])=>Date.parse(t)-Date.parse(e)).map(([e,t])=>({modell:e,anzahl:null,zeiten:[t]}));return{absender:c,reihen:u,tage:p,stunden:m,gesamt:{anfragen:a,fehler:e.gesamt?.fehler??null,fehlerCodes:e.gesamt?.fehler_codes??{},typisch:e.gesamt?.dauer_typisch_s??null,p90:e.gesamt?.dauer_p90_s??null,summe:o},heute:Ne(e.je_tag?.[r]),gestern:Ne(e.je_tag?.[i]),schnitt:h.length?h.reduce((t,n)=>t+Ne(e.je_tag[n]),0)/h.length:null,zeitraum:g?`seit ${Pe(new Date(`${g}T12:00:00Z`))} ${g.slice(8)}.${g.slice(5,7)}.`:`letzte ${e.tage} Tage`,stand:e.stand?Ce.format(n):null,modelle:_}}var Re={grau:`text-foreground`,bernstein:`text-bernstein`,rot:`text-rot-text`};function ze(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,art:o}=e,s=o===void 0?`grau`:o,c;t[0]===n?c=t[1]:(c=(0,Z.jsx)(`span`,{className:`etikett text-[10.5px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=c);let l=Re[s],u;t[2]===l?u=t[3]:(u=i(`font-anzeige text-[28px] leading-none font-bold`,l),t[2]=l,t[3]=u);let d;t[4]!==u||t[5]!==r?(d=(0,Z.jsx)(`span`,{className:u,children:r}),t[4]=u,t[5]=r,t[6]=d):d=t[6];let f;t[7]===a?f=t[8]:(f=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=f);let p;return t[9]!==c||t[10]!==d||t[11]!==f?(p=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5 flaeche-innen rounded-2xl px-3.5 py-3`,children:[c,d,f]}),t[9]=c,t[10]=d,t[11]=f,t[12]=p):p=t[12],p}var Be=`lg:grid-cols-[minmax(0,1.5fr)_minmax(0,1.4fr)_minmax(0,1fr)_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,0.8fr)]`;function Ve(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,leise:o}=e,s;t[0]===n?s=t[1]:(s=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 lg:hidden`,children:n}),t[0]=n,t[1]=s);let c=o?`text-text-3`:`text-foreground`,l;t[2]===c?l=t[3]:(l=i(`ziffern text-sm`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,Z.jsx)(`span`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;t[7]===a?d=t[8]:(d=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=d);let f;return t[9]!==s||t[10]!==u||t[11]!==d?(f=(0,Z.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[s,u,d]}),t[9]=s,t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function He(e){let t=(0,Y.c)(5),{zeilen:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsxs)(`div`,{role:`row`,className:i(`etikett hidden gap-x-4 pb-2 text-[10.5px] tracking-[0.14em] text-text-3 lg:grid`,Be),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Absender`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Anfragen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Typische Antwort`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Rechenzeit`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Fehler`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`})]}),t[0]=r):r=t[0];let a;t[1]===n?a=t[2]:(a=n.map(Ue),t[1]=n,t[2]=a);let o;return t[3]===a?o=t[4]:(o=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Nutzung je Absender`,className:`flex flex-col`,children:[r,a]}),t[3]=a,t[4]=o),o}function Ue(e){return(0,Z.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2.5 border-t border-white/[0.06] py-3 lg:items-start`,Be),children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-2 text-[15px] font-medium lg:col-span-1`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words`,children:e.name})]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex min-w-0 flex-col gap-1.5 lg:col-span-1`,children:[(0,Z.jsxs)(`span`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern`,children:$(e.anfragen)}),(0,Z.jsxs)(`span`,{className:`text-text-3`,children:[` · `,De(e.anteil),` aller Anfragen`]})]}),(0,Z.jsx)(`span`,{className:`h-1.5 w-full max-w-56 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,Z.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.max(1,e.anteil*100)}%`,background:e.farbe}})})]}),(0,Z.jsx)(Ve,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(Ve,{label:`Rechenzeit`,wert:Oe(e.summe,!0),zusatz:e.zeitAnteil===null?void 0:`${De(e.zeitAnteil)} aller Rechenzeit`}),(0,Z.jsx)(Ve,{label:`Fehler`,leise:e.fehler===0,wert:e.fehler===null?`–`:e.fehler===0?`keine`:`${$(e.fehler)} · ${De(e.fehler/e.anfragen)}`,zusatz:e.fehler?Ae(e.fehlerCodes):void 0}),(0,Z.jsx)(Ve,{label:`Zuletzt`,wert:e.zuletzt?w(e.zuletzt):`–`})]},e.name)}function We(e){let t=(0,Y.c)(11),{titel:n,zusatz:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,Z.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r}),t[2]=r,t[3]=o);let s;t[4]!==a||t[5]!==o?(s=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[a,o]}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==i||t[8]!==s||t[9]!==n?(c=(0,Z.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 flaeche-innen rounded-2xl p-4`,children:[s,i]}),t[7]=i,t[8]=s,t[9]=n,t[10]=c):c=t[10],c}function Ge(e){let t=(0,Y.c)(29),{modelle:n,rollen:r}=e;if(n.length===0)return null;let i,a,o,s,c,l;if(t[0]!==n){let e=n.every(Je)?n.reduce(qe,0):null;l=`group flaeche-innen rounded-2xl px-4 open:pb-2`,s=`flex min-h-12 cursor-pointer list-none flex-wrap items-center justify-between gap-x-3 gap-y-1 py-2 [&::-webkit-details-marker]:hidden`,t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,Z.jsx)(F,{className:`size-4 shrink-0 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Wann welches Modell geladen wurde`]}),t[7]=c):c=t[7],i=`ziffern text-sm text-text-2`,a=n.length===1?`1 Modell`:`${n.length} Modelle`,o=e===null?``:` · ${$(e)}× geladen`,t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=c,t[6]=l}else i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6];let u;t[8]!==i||t[9]!==a||t[10]!==o?(u=(0,Z.jsxs)(`span`,{className:i,children:[a,o]}),t[8]=i,t[9]=a,t[10]=o,t[11]=u):u=t[11];let d;t[12]!==s||t[13]!==c||t[14]!==u?(d=(0,Z.jsxs)(`summary`,{className:s,children:[c,u]}),t[12]=s,t[13]=c,t[14]=u,t[15]=d):d=t[15];let f;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Z.jsx)(`p`,{className:`pb-1 text-sm text-text-2`,children:`Gezählt wird, wie oft sich ein Modell nach dem Laden bereit meldete: nach einem Neustart von llama-swap oder wenn es auf Abruf gebraucht wurde.`}),t[16]=f):f=t[16];let p;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett hidden gap-x-4 py-2 text-[10.5px] tracking-[0.14em] text-text-3 sm:grid sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)]`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Modell`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Geladen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Davor`})]}),t[17]=p):p=t[17];let m;if(t[18]!==n||t[19]!==r){let e;t[21]===r?e=t[22]:(e=e=>(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto] gap-x-4 gap-y-1 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)] sm:items-baseline`,children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.modell}),r[e.modell]&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r[e.modell]})]}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-sm text-text-2 sm:text-left`,children:e.anzahl===null?`–`:`${$(e.anzahl)}×`}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-2 sm:col-span-1`,children:[(0,Z.jsx)(`span`,{className:`font-sans text-text-3 sm:hidden`,children:`zuletzt `}),w(e.zeiten[0])]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-3 sm:col-span-1`,children:[e.zeiten.length>1&&(0,Z.jsx)(`span`,{className:`font-sans sm:hidden`,children:`davor `}),e.zeiten.length>1?e.zeiten.slice(1,4).map(Ke).join(` · `):(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`–`})]})]},e.modell),t[21]=r,t[22]=e),m=n.map(e),t[18]=n,t[19]=r,t[20]=m}else m=t[20];let h;t[23]===m?h=t[24]:(h=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Ladevorgänge je Modell`,className:`flex flex-col`,children:[p,m]}),t[23]=m,t[24]=h);let g;return t[25]!==h||t[26]!==l||t[27]!==d?(g=(0,Z.jsxs)(`details`,{className:l,children:[d,f,h]}),t[25]=h,t[26]=l,t[27]=d,t[28]=g):g=t[28],g}function Ke(e){return w(e)}function qe(e,t){return e+(t.anzahl??0)}function Je(e){return e.anzahl!==null}function Ye(e){let t=(0,Y.c)(23),{nutzung:n,laedt:r,fehler:i,rollen:a}=e,o;t[0]===a?o=t[1]:(o=a===void 0?{}:a,t[0]=a,t[1]=o);let s=o;if(!n){let e;return t[2]!==i||t[3]!==r?(e=(0,Z.jsx)(H,{titel:`Wer nutzt die Modelle`,children:r?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[2]=i,t[3]=r,t[4]=e):e=t[4],e}let c,l,u,d,f;if(t[5]!==n){l=Le(n);let e=l.gesamt,r=e.fehler!==null&&e.anfragen?e.fehler/e.anfragen:null,i;t[11]===r?i=t[12]:(i=je(r),t[11]=r,t[12]=i);let a=i;c=H,u=`Wer nutzt die Modelle`,d=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[l.zeitraum,l.stand?` · Stand ${l.stand}`:``]}),f=e.anfragen===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,Z.jsx)(ze,{label:`Anfragen`,wert:$(e.anfragen),zusatz:l.schnitt===null?void 0:`im Schnitt ${$(Math.round(l.schnitt))} am Tag`}),(0,Z.jsx)(ze,{label:`Heute`,wert:$(l.heute),zusatz:`${l.stand?`bis ${l.stand} · `:``}gestern ${$(l.gestern)}`}),(0,Z.jsx)(ze,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(ze,{label:`Fehler`,wert:e.fehler===null?`–`:$(e.fehler),art:a.art,zusatz:e.fehler===null?void 0:e.fehler===0?`alle beantwortet`:`${De(r??0)} der Anfragen${a.wort?` · ${a.wort}`:``}`})]}),(0,Z.jsx)(He,{zeilen:l.absender}),(0,Z.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,Z.jsx)(We,{titel:`Anfragen je Tag`,zusatz:`letzte 7 Tage, heute bis jetzt`,children:(0,Z.jsx)(de,{saeulen:l.tage,reihen:l.reihen,spalte:`Tag`,titel:`Anfragen je Tag der letzten 7 Tage, gestapelt nach Absender`})}),(0,Z.jsx)(We,{titel:`Anfragen je Stunde`,zusatz:`letzte 24 Stunden`,children:(0,Z.jsx)(de,{saeulen:l.stunden,reihen:l.reihen,spalte:`Stunde`,summen:`hoechste`,titel:`Anfragen je Stunde der letzten 24 Stunden, gestapelt nach Absender`})})]})]}),t[5]=n,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else c=t[6],l=t[7],u=t[8],d=t[9],f=t[10];let p;t[13]!==l.modelle||t[14]!==s?(p=(0,Z.jsx)(Ge,{modelle:l.modelle,rollen:s}),t[13]=l.modelle,t[14]=s,t[15]=p):p=t[15];let m;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat-Anfragen an llama-swap, gelesen aus seinem Protokoll und alle 10 Minuten neu gerechnet. NerdQuiz fragt direkt dort an, Lucy und OpenChamber über MC2. Antwortzeit: bis die Antwort ganz da war. Rechenzeit: alle Antwortzeiten zusammen, gleichzeitige Anfragen zählen einzeln.`}),t[16]=m):m=t[16];let h;return t[17]!==c||t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p?(h=(0,Z.jsxs)(c,{titel:u,rechts:d,children:[f,p,m]}),t[17]=c,t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=h):h=t[22],h}var Xe={coder:`Coder`};function Ze(e){let t=(0,Y.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,s=o(),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(null),[m,h]=(0,X.useState)(``),[g,v]=(0,X.useState)(null),y=(0,X.useRef)(!1),x,S;t[0]===u?(x=t[1],S=t[2]):(x=[`hf-suche`,u],S=()=>_(`/api/hf/search?q=${encodeURIComponent(u)}`),t[0]=u,t[1]=x,t[2]=S);let C=u.length>1,w;t[3]!==x||t[4]!==S||t[5]!==C?(w={queryKey:x,queryFn:S,enabled:C},t[3]=x,t[4]=S,t[5]=C,t[6]=w):w=t[6];let T=a(w),E,D;t[7]===f?(E=t[8],D=t[9]):(E=[`hf-quants`,f],D=()=>_(`/api/hf/quants?repo=${encodeURIComponent(f??``)}`),t[7]=f,t[8]=E,t[9]=D);let O=!!f,k;t[10]!==E||t[11]!==D||t[12]!==O?(k={queryKey:E,queryFn:D,enabled:O},t[10]=E,t[11]=D,t[12]=O,t[13]=k):k=t[13];let j=a(k),M,N,P,F,L,R,z,B,H,U,W,re,q;if(t[14]!==g||t[15]!==c||t[16]!==s||t[17]!==n||t[18]!==r||t[19]!==j.data||t[20]!==j.error||t[21]!==j.isError||t[22]!==j.isFetching||t[23]!==f||t[24]!==m||t[25]!==i||t[26]!==T){let e=(j.data?.quants??[]).map($e),a=m?Xe[m]??m:null,o;t[40]!==f||t[41]!==m||t[42]!==i||t[43]!==a?(o=a&&f?ae(f,a,i[m]):null,t[40]=f,t[41]=m,t[42]=i,t[43]=a,t[44]=o):o=t[44],P=o;let u;t[45]!==g||t[46]!==s||t[47]!==r||t[48]!==f||t[49]!==m?(u=function(){f&&g&&!y.current&&(y.current=!0,s.mutate({repo:f,quant:g.quant,rolle:m||null},{onSuccess:e=>{v(null),e.ok!==!1&&r()},onError:()=>v(null),onSettled:()=>{y.current=!1}}))},t[45]=g,t[46]=s,t[47]=r,t[48]=f,t[49]=m,t[50]=u):u=t[50],F=u,N=ne,W=n,t[51]===r?re=t[52]:(re=e=>!e&&r(),t[51]=r,t[52]=re),M=te,z=`right`,B=`gap-3 overflow-y-auto border-white/10 bg-[#0e121a] data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,Z.jsxs)(ee,{children:[(0,Z.jsx)(G,{className:`text-[19px] font-semibold`,children:`Modelle selbst suchen`}),(0,Z.jsx)(K,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=H):H=t[53];let _;t[54]===c?_=t[55]:(_=e=>{e.preventDefault(),p(null),d(c.trim())},t[54]=c,t[55]=_);let x;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,Z.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=x):x=t[56];let S;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>l(e.target.value),t[57]=S):S=t[57];let C;t[58]===c?C=t[59]:(C=(0,Z.jsx)(`input`,{id:`hf-suche`,value:c,onChange:S,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-cyan/60 focus:bg-white/[0.06]`}),t[58]=c,t[59]=C);let w;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,Z.jsx)(I,{type:`submit`,children:`Suchen`}),t[60]=w):w=t[60],t[61]!==_||t[62]!==C?(U=(0,Z.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:_,children:[x,C,w]}),t[61]=_,t[62]=C,t[63]=U):U=t[63],q=`flex flex-col px-4 pb-4`,t[64]!==f||t[65]!==T?(L=!f&&(0,Z.jsxs)(Z.Fragment,{children:[T.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!T.isFetching&&T.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,T.error.message]}),!T.isFetching&&T.data?.results.length===0&&(0,Z.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),T.data?.results.map(e=>(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>p(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-white/[0.06] py-2 text-left hover:text-cyan`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,Z.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[A(e.downloads),` ↓`]})]},e.repo))]}),t[64]=f,t[65]=T,t[66]=L):L=t[66],R=f&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:f}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,onClick:()=>p(null),children:`Zurück`})]}),(0,Z.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,Z.jsxs)(`select`,{value:m,onChange:e=>h(e.target.value),className:`h-11 min-w-0 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-foreground`,children:[(0,Z.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(Xe).map(Qe)]})]}),P&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:P}),j.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!j.isFetching&&j.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,j.error.message]}),!j.isFetching&&j.data&&e.length===0&&(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.06] py-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:b(n,1)}):null,(0,Z.jsx)(I,{variant:`outline`,size:`sm`,disabled:s.isPending,onClick:()=>v({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=g,t[15]=c,t[16]=s,t[17]=n,t[18]=r,t[19]=j.data,t[20]=j.error,t[21]=j.isError,t[22]=j.isFetching,t[23]=f,t[24]=m,t[25]=i,t[26]=T,t[27]=M,t[28]=N,t[29]=P,t[30]=F,t[31]=L,t[32]=R,t[33]=z,t[34]=B,t[35]=H,t[36]=U,t[37]=W,t[38]=re,t[39]=q}else M=t[27],N=t[28],P=t[29],F=t[30],L=t[31],R=t[32],z=t[33],B=t[34],H=t[35],U=t[36],W=t[37],re=t[38],q=t[39];let J;t[67]!==L||t[68]!==R||t[69]!==q?(J=(0,Z.jsxs)(`div`,{className:q,children:[L,R]}),t[67]=L,t[68]=R,t[69]=q,t[70]=J):J=t[70];let oe=g!==null,Q;t[71]!==g||t[72]!==f?(Q=g&&f?`${f} (${g.quant}${g.bytes?`, ${b(g.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(g.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=g,t[72]=f,t[73]=Q):Q=t[73];let se=s.isPending?`Wird gestartet …`:`Installieren`,ce=s.isPending,le;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(le=()=>v(null),t[74]=le):le=t[74];let ue;t[75]===P?ue=t[76]:(ue=P&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:P}),t[75]=P,t[76]=ue);let de=!!m,fe;t[77]===de?fe=t[78]:(fe=ie(de),t[77]=de,t[78]=fe);let pe;t[79]===fe?pe=t[80]:(pe=(0,Z.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:fe}),t[79]=fe,t[80]=pe);let me;t[81]!==s.isPending||t[82]!==F||t[83]!==oe||t[84]!==Q||t[85]!==se||t[86]!==ue||t[87]!==pe?(me=(0,Z.jsxs)(V,{offen:oe,titel:`Modell installieren?`,text:Q,knopf:se,gesperrt:ce,onNein:le,onJa:F,children:[ue,pe]}),t[81]=s.isPending,t[82]=F,t[83]=oe,t[84]=Q,t[85]=se,t[86]=ue,t[87]=pe,t[88]=me):me=t[88];let he;t[89]!==M||t[90]!==z||t[91]!==B||t[92]!==H||t[93]!==U||t[94]!==J||t[95]!==me?(he=(0,Z.jsxs)(M,{side:z,className:B,children:[H,U,J,me]}),t[89]=M,t[90]=z,t[91]=B,t[92]=H,t[93]=U,t[94]=J,t[95]=me,t[96]=he):he=t[96];let ge;return t[97]!==N||t[98]!==W||t[99]!==re||t[100]!==he?(ge=(0,Z.jsx)(N,{open:W,onOpenChange:re,children:he}),t[97]=N,t[98]=W,t[99]=re,t[100]=he,t[101]=ge):ge=t[101],ge}function Qe(e){let[t,n]=e;return(0,Z.jsx)(`option`,{value:t,children:n},t)}function $e(e){return typeof e==`string`?{quant:e}:e}var et=115;function tt(e){let t=(0,Y.c)(55),{modelle:n,laufend:r}=e,i=v(),a=O(),o,s,c,l,u,d,f,p,m,h;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=C(i?.ram_total??a.data?.box.ram_total)??122.7,g=C(i?.ram_used??a.data?.box.ram_used)??0,_;t[15]===r?_=t[16]:(_=e=>r.includes(e.name),t[15]=r,t[16]=_);let v=n.filter(_).reduce(nt,0);s=Math.max(0,g-v);let y=t=>`${Math.min(100,t/e*100)}%`;o=H,p=`Speicher`,m=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(g),` von `,Math.round(e),` GB belegt · Grenze ~`,et,` GB`]});let b=`Speicher: ${Math.round(g)} von ${Math.round(e)} GB belegt`,x=y(g),S;t[17]===x?S=t[18]:(S={width:x},t[17]=x,t[18]=S);let w=`${g?v/g*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,Z.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${g?s/g*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,Z.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:E}}),t[21]=E,t[22]=D);let O;t[23]!==S||t[24]!==T||t[25]!==D?(O=(0,Z.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:S,children:[T,D]}),t[23]=S,t[24]=T,t[25]=D,t[26]=O):O=t[26];let k=y(et),A;t[27]===k?A=t[28]:(A=(0,Z.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:k}}),t[27]=k,t[28]=A),t[29]!==b||t[30]!==O||t[31]!==A?(h=(0,Z.jsxs)(`div`,{className:`relative h-8 overflow-hidden rounded-xl bg-white/[0.06]`,role:`img`,"aria-label":b,children:[O,A]}),t[29]=b,t[30]=O,t[31]=A,t[32]=h):h=t[32],f=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,d=Math.round(v),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14];let g;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==d?(g=(0,Z.jsxs)(`span`,{className:c,children:[l,u,d,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=d,t[38]=g):g=t[38];let _;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=_):_=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let b;t[42]===y?b=t[43]:(b=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[_,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=b);let x;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=x):x=t[44];let S;t[45]!==b||t[46]!==f||t[47]!==g?(S=(0,Z.jsxs)(`div`,{className:f,children:[g,b,x]}),t[45]=b,t[46]=f,t[47]=g,t[48]=S):S=t[48];let w;return t[49]!==o||t[50]!==S||t[51]!==p||t[52]!==m||t[53]!==h?(w=(0,Z.jsxs)(o,{titel:p,rechts:m,children:[h,S]}),t[49]=o,t[50]=S,t[51]=p,t[52]=m,t[53]=h,t[54]=w):w=t[54],w}function nt(e,t){return e+(C(t.size_bytes)??0)}function rt(e){let t=(0,Y.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,Z.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Z.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function it(e){let t=(0,Y.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=h();if(!r){let e;t[0]===n?e=t[1]:(e=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(R,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-white/15 p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision||!!i,d;t[12]===n?d=t[13]:(d=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[12]=n,t[13]=d);let f=a?`gruen`:`grau`,p=a?`Geladen`:`Auf Abruf`,m;t[14]!==f||t[15]!==p?(m=(0,Z.jsx)(R,{art:f,children:p}),t[14]=f,t[15]=p,t[16]=m):m=t[16];let g;t[17]!==d||t[18]!==m?(g=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[d,m]}),t[17]=d,t[18]=m,t[19]=g):g=t[19];let _;t[20]===r.name?_=t[21]:(_=(0,Z.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=_);let v;t[22]===r.size_bytes?v=t[23]:(v=b(r.size_bytes),t[22]=r.size_bytes,t[23]=v);let y;t[24]===v?y=t[25]:(y=(0,Z.jsx)(rt,{name:`Größe`,wert:v}),t[24]=v,t[25]=y);let x=l?`${l}k`:`–`,S;t[26]===x?S=t[27]:(S=(0,Z.jsx)(rt,{name:`Kontext`,wert:x}),t[26]=x,t[27]=S);let C=u?`ja`:`nein`,w;t[28]===C?w=t[29]:(w=(0,Z.jsx)(rt,{name:`Bilder`,wert:C}),t[28]=C,t[29]=w);let T;t[30]!==S||t[31]!==w||t[32]!==y?(T=(0,Z.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[y,S,w]}),t[30]=S,t[31]=w,t[32]=y,t[33]=T):T=t[33];let E=r.spec_active?` Mit Draft-Beschleunigung.`:``,D=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==E||t[36]!==D?(O=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,E,D]}),t[34]=o,t[35]=E,t[36]=D,t[37]=O):O=t[37];let k;t[38]!==s||t[39]!==a||t[40]!==r.name?(k=!a&&(0,Z.jsx)(I,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=k):k=t[41];let A;return t[42]!==T||t[43]!==O||t[44]!==k||t[45]!==g||t[46]!==_?(A=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 flaeche rounded-2xl p-5`,children:[g,_,T,O,k]}),t[42]=T,t[43]=O,t[44]=k,t[45]=g,t[46]=_,t[47]=A):A=t[47],A}var at={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},ot={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function st(e){let t=(0,Y.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-[10.5px] tracking-[0.14em] text-text-3`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`flaeche-innen rounded-xl px-3 py-2 text-sm`,children:[a,e.map(ct)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function ct(e){let[t,n]=e;return(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-white/[0.06] py-1`,children:[(0,Z.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${ot[n.urteil??``]??`text-text-2`}`,children:g(n.kandidat,n.einheit)}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:g(n.baseline,n.einheit)})]},t)}function lt(e){let t=(0,Y.c)(80),{k:n,test:r,heute:i}=e,a=y(),o=d(),[s,c]=(0,X.useState)(null),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=l):l=t[0];let u=l.includes(n.status),f=n.rolle===`hirn`,p;t[1]===n.name?p=t[2]:(p=(0,Z.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=p);let h=f?`fürs Hirn`:`fürs Coden`,g;t[3]===h?g=t[4]:(g=(0,Z.jsx)(R,{art:`cyan`,children:h}),t[3]=h,t[4]=g);let _;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(_=n.groesse_gb!=null&&(0,Z.jsx)(R,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=_):_=t[8];let v=at[n.status]??`grau`,b=m[n.status]??n.status,x;t[9]!==v||t[10]!==b?(x=(0,Z.jsx)(R,{art:v,children:b}),t[9]=v,t[10]=b,t[11]=x):x=t[11];let S;t[12]!==p||t[13]!==g||t[14]!==_||t[15]!==x?(S=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[p,g,_,x]}),t[12]=p,t[13]=g,t[14]=_,t[15]=x,t[16]=S):S=t[16];let C;t[17]===n.groesse_gb?C=t[18]:(C=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=C);let w;t[19]!==n.begruendung||t[20]!==C?(w=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[C,n.begruendung]}),t[19]=n.begruendung,t[20]=C,t[21]=w):w=t[21];let T;t[22]!==n.status||t[23]!==r?(T=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,Z.jsx)(st,{test:r}),t[22]=n.status,t[23]=r,t[24]=T):T=t[24];let E;t[25]!==n.begruendung||t[26]!==n.testbar_grund?(E=n.testbar_grund&&!n.begruendung.startsWith(`Läuft gerade`)&&(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:n.testbar_grund}),t[25]=n.begruendung,t[26]=n.testbar_grund,t[27]=E):E=t[27];let D;t[28]!==a.isPending||t[29]!==n.status||t[30]!==n.testbar_jetzt||t[31]!==u||t[32]!==o.isPending?(D=u&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.testbar_jetzt&&(0,Z.jsx)(I,{variant:`info`,size:`sm`,disabled:o.isPending,onClick:()=>c(`testen`),children:`Jetzt testen`}),n.status===`bestanden`&&(0,Z.jsx)(I,{size:`sm`,disabled:a.isPending,onClick:()=>c(`uebernehmen`),children:`Übernehmen`}),(0,Z.jsx)(I,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>c(`verwerfen`),children:`Verwerfen`})]}),t[28]=a.isPending,t[29]=n.status,t[30]=n.testbar_jetzt,t[31]=u,t[32]=o.isPending,t[33]=D):D=t[33];let O=s===`uebernehmen`,k=`${n.name} übernehmen?`,A=f?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,j;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>c(null),t[34]=j):j=t[34];let M;t[35]!==a||t[36]!==s||t[37]!==n.id||t[38]!==n.name?(M=()=>{s===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),c(null))},t[35]=a,t[36]=s,t[37]=n.id,t[38]=n.name,t[39]=M):M=t[39];let N;t[40]!==a.isPending||t[41]!==O||t[42]!==k||t[43]!==A||t[44]!==M?(N=(0,Z.jsx)(V,{offen:O,titel:k,text:A,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:j,onJa:M}),t[40]=a.isPending,t[41]=O,t[42]=k,t[43]=A,t[44]=M,t[45]=N):N=t[45];let P=s===`testen`,F=`${n.name} jetzt testen?`,L;t[46]===n.groesse_gb?L=t[47]:(L=n.groesse_gb==null?``:` (${n.groesse_gb.toLocaleString(`de-DE`)} GB)`,t[46]=n.groesse_gb,t[47]=L);let z=`Das Radar lädt ${n.name}${L} herunter, falls nötig, misst das heutige Modell der Rolle und dann den Kandidaten. Das dauert je nach Download eine halbe bis zwei Stunden. Solange antworten Lucy und NerdQuiz etwas langsamer; ein geladener Coder wird dafür entladen, und wird er währenddessen gebraucht, bricht der Test ab. Das Ergebnis kommt als Meldung; fällt der Kandidat durch, werden seine Dateien gelöscht.`,B;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(B=()=>c(null),t[48]=B):B=t[48];let H;t[49]!==s||t[50]!==n.id||t[51]!==n.name||t[52]!==o?(H=()=>{s===`testen`&&(o.mutate({id:n.id,name:n.name}),c(null))},t[49]=s,t[50]=n.id,t[51]=n.name,t[52]=o,t[53]=H):H=t[53];let U;t[54]!==P||t[55]!==F||t[56]!==z||t[57]!==H||t[58]!==o.isPending?(U=(0,Z.jsx)(V,{offen:P,titel:F,text:z,knopf:`Jetzt testen`,gesperrt:o.isPending,onNein:B,onJa:H}),t[54]=P,t[55]=F,t[56]=z,t[57]=H,t[58]=o.isPending,t[59]=U):U=t[59];let W=s===`verwerfen`,G=`${n.name} verwerfen?`,ee;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(ee=()=>c(null),t[60]=ee):ee=t[60];let te;t[61]!==a||t[62]!==s||t[63]!==n.id||t[64]!==n.name?(te=()=>{s===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),c(null))},t[61]=a,t[62]=s,t[63]=n.id,t[64]=n.name,t[65]=te):te=t[65];let K;t[66]!==a.isPending||t[67]!==W||t[68]!==G||t[69]!==te?(K=(0,Z.jsx)(V,{offen:W,gefahr:!0,titel:G,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:ee,onJa:te}),t[66]=a.isPending,t[67]=W,t[68]=G,t[69]=te,t[70]=K):K=t[70];let ne;return t[71]!==w||t[72]!==T||t[73]!==E||t[74]!==D||t[75]!==N||t[76]!==U||t[77]!==K||t[78]!==S?(ne=(0,Z.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-white/[0.06] py-3.5`,children:[S,w,T,E,D,N,U,K]}),t[71]=w,t[72]=T,t[73]=E,t[74]=D,t[75]=N,t[76]=U,t[77]=K,t[78]=S,t[79]=ne):ne=t[79],ne}function ut(e){let t=(0,Y.c)(30),{hirn:n,coder:r}=e,i=u(),a=l(),o=E(),s=k(),c=o.data?.jobs,d=(c??[]).filter(ft).at(-1),m=a.data?.job_id,h;t[0]!==m||t[1]!==c?(h=!!m&&!!c&&!c.some(e=>e.id===m),t[0]=m,t[1]=c,t[2]=h):h=t[2];let g=h,_=a.isPending||g||d!==void 0&&p(d),v=(0,X.useRef)(_);if((0,X.useEffect)(()=>{v.current&&!_&&s.invalidateQueries({queryKey:[`radar`]}),v.current=_},[_,s]),i.isError&&!i.data){let e=i.error instanceof f&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,Z.jsx)(H,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let y=i.data,b=H,x;t[6]===a?x=t[7]:(x=()=>a.mutate(void 0),t[6]=a,t[7]=x);let S=_?`Sucht …`:`Jetzt suchen`,C;t[8]!==_||t[9]!==x||t[10]!==S?(C=(0,Z.jsx)(I,{variant:`info`,size:`sm`,onClick:x,disabled:_,children:S}),t[8]=_,t[9]=x,t[10]=S,t[11]=C):C=t[11];let T;t[12]===y?T=t[13]:(T=y?.naechster_test?` Nächster Test: ${w(y.naechster_test)}.`:``,t[12]=y,t[13]=T);let D=_?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,O;t[14]!==T||t[15]!==D?(O=(0,Z.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche. Tagsüber geht es mit „Jetzt testen“, wenn der Kandidat samt Coder in den Speicher passt.`,T,D]}),t[14]=T,t[15]=D,t[16]=O):O=t[16];let A=!_&&d?.state===`failed`&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,re(d)??`ohne Meldung`]}),j;t[17]!==r||t[18]!==y||t[19]!==n?(j=y?y.kandidaten.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:y.kandidaten.map(e=>(0,Z.jsx)(lt,{k:e,test:y.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=y,t[19]=n,t[20]=j):j=t[20];let M;t[21]===y?M=t[22]:(M=y&&y.tests.length>0&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`h3`,{className:`etikett text-[10.5px] tracking-[0.12em] text-text-3`,children:`Letzte Tests`}),y.tests.slice(0,3).map(dt)]}),t[21]=y,t[22]=M);let N;return t[23]!==b||t[24]!==O||t[25]!==A||t[26]!==j||t[27]!==M||t[28]!==C?(N=(0,Z.jsxs)(b,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:C,children:[O,A,j,M]}),t[23]=b,t[24]=O,t[25]=A,t[26]=j,t[27]=M,t[28]=C,t[29]=N):N=t[29],N}function dt(e){return(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-text-3`,children:w(e.datum)}),` · `,e.zusammenfassung]},e.id)}function ft(e){return e.group===`radar`}var pt=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function mt(e){let t=(0,Y.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(F,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let s;t[3]===r?s=t[4]:(s=(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=s);let c;t[5]!==o||t[6]!==s?(c=(0,Z.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7];let l;t[8]===i?l=t[9]:(l=(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=l);let u;return t[10]!==c||t[11]!==l?(u=(0,Z.jsxs)(`details`,{className:`group flaeche-innen rounded-2xl px-4 open:pb-2`,children:[c,l]}),t[10]=c,t[11]=l,t[12]=u):u=t[12],u}function ht(){let e=(0,Y.c)(37),t=S(),n=D(),[r,i]=(0,X.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],d=r.reduce(gt,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]}),e[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(vt,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,Z.jsxs)(H,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=H,o=`Aufräumen`,s=r.length>0?(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,d.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[16]=c):c=e[16],l=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,Z.jsx)(mt,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${d.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,Z.jsx)(R,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d=r!==null,f=`${r?.name??``} löschen?`,p;e[17]===r?.groesse_gb?p=e[18]:(p=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=p);let m=`${r?.hinweis??``} Es werden ${p} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,h;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>i(null),e[19]=h):h=e[19];let g;e[20]!==r||e[21]!==n?(g=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=g):g=e[22];let _;e[23]!==n.isPending||e[24]!==g||e[25]!==d||e[26]!==f||e[27]!==m?(_=(0,Z.jsx)(V,{offen:d,gefahr:!0,titel:f,text:m,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:h,onJa:g}),e[23]=n.isPending,e[24]=g,e[25]=d,e[26]=f,e[27]=m,e[28]=_):_=e[28];let v;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(vt,{}),e[29]=v):v=e[29];let y;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==_||e[34]!==c||e[35]!==l?(y=(0,Z.jsxs)(a,{titel:o,rechts:s,children:[c,l,_,v]}),e[30]=a,e[31]=o,e[32]=s,e[33]=_,e[34]=c,e[35]=l,e[36]=y):y=e[36],y}function gt(e,t){return e+t.groesse_gb}function _t(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function vt(){let e=(0,Y.c)(23),t=x(),n=T(),[r,i]=(0,X.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(yt,0);a=`flex flex-col gap-2`,o=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,Z.jsxs)(mt,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${_t(s)}`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,Z.jsx)(R,{children:`Altrest`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let u=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,d;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>i(null),e[9]=d):d=e[9];let f;e[10]!==r||e[11]!==n?(f=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=f):f=e[12];let p;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==u||e[17]!==f?(p=(0,Z.jsx)(V,{offen:s,gefahr:!0,titel:c,text:u,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:d,onJa:f}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=u,e[17]=f,e[18]=p):p=e[18];let m;return e[19]!==a||e[20]!==o||e[21]!==p?(m=(0,Z.jsxs)(`div`,{className:a,children:[o,p]}),e[19]=a,e[20]=o,e[21]=p,e[22]=m):m=e[22],m}function yt(e,t){return e+t.groesse_bytes}function bt(){let e=(0,Y.c)(69),t=s(),n=j(),r=u(),i=E(),[a,o]=(0,X.useState)(!1),c;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={select:wt},e[0]=c):c=e[0];let l=oe(c),d=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,f,p;if(e[1]!==d||e[2]!==l?(f=()=>{d&&l===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},p=[d,l],e[1]=d,e[2]=l,e[3]=f,e[4]=p):(f=e[3],p=e[4]),(0,X.useEffect)(f,p),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(B,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,Z.jsx)(B,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let m=t.data.models,h=t.data.running,g,_,v,y,x,S,C,T,D,O,k,A,M;if(e[8]!==h||e[9]!==m||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=m.find(Ct);_=m.find(St);let r;e[26]===m?r=e[27]:(r=(e,t)=>e?m.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[26]=m,e[27]=r);let i=r,a=i(t,`vision`);v=i(_,`coder-bild`);let s=m.filter(e=>![t,_,a,v].includes(e)),c;e[28]===n.data?.zuletzt_geladen?c=e[29]:(c=n.data?.zuletzt_geladen??{},e[28]=n.data?.zuletzt_geladen,e[29]=c);let l=c,u={};for(let[e,n]of[[t,`Hirn`],[_,`Coder`],[a,`Bild-Zwilling des Hirns`],[v,`Bild-Zwilling des Coders`]])e&&(u[e.name]=n);e[30]!==h||e[31]!==m?(A=(0,Z.jsx)(tt,{modelle:m,laufend:h}),e[30]=h,e[31]=m,e[32]=A):A=e[32],e[33]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsx)(q,{alsPanel:!0}),e[33]=M):M=e[33];let d;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsx)(it,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[34]=d):d=e[34],y=(0,Z.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,Z.jsx)(it,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&h.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,Z.jsx)(it,{titel:`Coder`,modell:_,zwilling:v,laeuft:!!_&&h.includes(_.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),d]}),x=(0,Z.jsx)(Ye,{nutzung:n.data,laedt:n.isPending,fehler:n.error?.message??null,rollen:u});let f=t?.name,p=_?.name;e[35]!==f||e[36]!==p?(S=(0,Z.jsx)(ut,{hirn:f,coder:p}),e[35]=f,e[36]=p,e[37]=S):S=e[37],g=H,D=`Weitere Einträge`,e[38]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,Z.jsxs)(I,{variant:`outline`,size:`sm`,onClick:()=>o(!0),children:[(0,Z.jsx)(U,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[38]=O):O=e[38],k=s.length===0&&(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),C=`m-0 flex list-none flex-col p-0`;let E;e[39]!==h||e[40]!==l?(E=e=>(0,Z.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,Z.jsxs)(`span`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:b(e.size_bytes)}),(0,Z.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:h.includes(e.name)?`geladen`:l[e.name]?`zuletzt ${w(l[e.name])}`:`länger nicht geladen`})]},e.name),e[39]=h,e[40]=l,e[41]=E):E=e[41],T=s.map(E),e[8]=h,e[9]=m,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=g,e[14]=_,e[15]=v,e[16]=y,e[17]=x,e[18]=S,e[19]=C,e[20]=T,e[21]=D,e[22]=O,e[23]=k,e[24]=A,e[25]=M}else g=e[13],_=e[14],v=e[15],y=e[16],x=e[17],S=e[18],C=e[19],T=e[20],D=e[21],O=e[22],k=e[23],A=e[24],M=e[25];let N;e[42]!==C||e[43]!==T?(N=(0,Z.jsx)(`ul`,{className:C,children:T}),e[42]=C,e[43]=T,e[44]=N):N=e[44];let P;e[45]!==g||e[46]!==N||e[47]!==D||e[48]!==O||e[49]!==k?(P=(0,Z.jsxs)(g,{titel:D,rechts:O,children:[k,N]}),e[45]=g,e[46]=N,e[47]=D,e[48]=O,e[49]=k,e[50]=P):P=e[50];let F;e[51]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,Z.jsx)(ht,{}),e[51]=F):F=e[51];let L;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(L=()=>o(!1),e[52]=L):L=e[52];let R;e[53]!==_||e[54]!==v?(R=_?{name:_.name,zwilling:!!v,weitere:_.aliases.filter(xt)}:void 0,e[53]=_,e[54]=v,e[55]=R):R=e[55];let z;e[56]===R?z=e[57]:(z={coder:R},e[56]=R,e[57]=z);let V;e[58]!==a||e[59]!==z?(V=(0,Z.jsx)(Ze,{offen:a,onSchliessen:L,rollenJetzt:z}),e[58]=a,e[59]=z,e[60]=V):V=e[60];let W;return e[61]!==y||e[62]!==x||e[63]!==S||e[64]!==P||e[65]!==V||e[66]!==A||e[67]!==M?(W=(0,Z.jsxs)(Z.Fragment,{children:[A,M,y,x,S,P,F,V]}),e[61]=y,e[62]=x,e[63]=S,e[64]=P,e[65]=V,e[66]=A,e[67]=M,e[68]=W):W=e[68],W}function xt(e){return e.toLowerCase()!==`coder`}function St(e){return c(e)===`coder`}function Ct(e){return c(e)===`hirn`}function wt(e){return e.hash}export{lt as Kandidat,bt as ModelleSeite}; \ No newline at end of file +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Bt as a,G as o,H as s,I as c,It as l,J as u,K as d,L as f,Lt as p,N as m,O as h,Rt as g,Tt as _,Ut as v,Vt as y,Y as b,a as x,at as S,bt as C,c as w,i as T,jt as E,l as D,on as O,vt as k,wt as A,yt as j}from"./abfragen-CDCgpAto.js";import{n as M,t as N}from"./useSelector-DBNxxw17.js";import{n as P}from"./useMatch-DDVpPKJI.js";import{t as F}from"./chevron-right-DF8ikrVh.js";import{t as I}from"./button-BHVKhtQ6.js";import{E as L,H as R,T as z,U as B,h as V,m as H,ut as U,w as W}from"./index-CuG_RlEw.js";import{a as G,i as ee,n as te,r as K,t as ne}from"./sheet-DG7u1mB-.js";import{a as re,r as ie,s as ae,t as q}from"./Auftraege-Dwy9GTde.js";import{t as J}from"./breite-k-QN6GPl.js";function oe(e){let t=M();return N(t.stores.location,P(e,t))}var Y=r(),X=t(e(),1),Z=n(),Q=new Intl.NumberFormat(`de-DE`),se=240,ce=24,le={ArrowLeft:e=>Math.max(0,e-1),ArrowRight:(e,t)=>Math.min(t-1,e+1),Home:()=>0,End:(e,t)=>t-1};function ue(e){let t=(0,Y.c)(20),{saeule:n,reihen:r,summe:a,className:o,links:s}=e,c;t[0]===o?c=t[1]:(c=i(`flex flex-col gap-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 py-2`,o),t[0]=o,t[1]=c);let l;t[2]===s?l=t[3]:(l=s===void 0?void 0:{left:s},t[2]=s,t[3]=l);let u;t[4]===n.lang?u=t[5]:(u=(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:n.lang}),t[4]=n.lang,t[5]=u);let d;if(t[6]!==r||t[7]!==n.werte){let e;t[9]===n.werte?e=t[10]:(e=e=>(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 text-sm`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 shrink-0 self-center rounded-full`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(n.werte[e.name]??0)}),(0,Z.jsx)(`span`,{className:`min-w-0 text-text-3`,children:e.name})]},e.name),t[9]=n.werte,t[10]=e),d=r.map(e),t[6]=r,t[7]=n.werte,t[8]=d}else d=t[8];let f;t[11]!==r.length||t[12]!==a?(f=r.length>1&&(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 border-t border-white/[0.06] pt-1 text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(a)}),(0,Z.jsx)(`span`,{className:`text-text-3`,children:`zusammen`})]}),t[11]=r.length,t[12]=a,t[13]=f):f=t[13];let p;return t[14]!==c||t[15]!==l||t[16]!==u||t[17]!==d||t[18]!==f?(p=(0,Z.jsxs)(`div`,{role:`status`,className:c,style:l,children:[u,d,f]}),t[14]=c,t[15]=l,t[16]=u,t[17]=d,t[18]=f,t[19]=p):p=t[19],p}function de(e){let t=(0,Y.c)(92),{saeulen:n,reihen:r,titel:a,summen:o,hoehe:s,spalte:c}=e,l=o===void 0?`alle`:o,u=s===void 0?200:s,d=c===void 0?`Zeitraum`:c,[f,p]=J(),[m,h]=(0,X.useState)(null),g=n.length,_,v,y,b,x,S,C,w,T,E;if(t[0]!==p||t[1]!==u||t[2]!==m||t[3]!==g||t[4]!==f||t[5]!==r||t[6]!==n||t[7]!==d||t[8]!==l||t[9]!==a){let e;t[20]===n?e=t[21]:(e=e=>n.some(t=>(t.werte[e.name]??0)>0),t[20]=n,t[21]=e);let o=r.filter(e),s=n.map(e=>o.reduce((t,n)=>t+(e.werte[n.name]??0),0)),c=Math.max(0,...s),D=L(c),O=D[D.length-1],k;t[22]===O?k=t[23]:(k=Q.format(O),t[22]=O,t[23]=k);let A=Math.max(28,k.length*7+12),j=n.some(ge)?34:22,M;t[24]!==A||t[25]!==j?(M={links:A,rechts:4,oben:20,unten:j},t[24]=A,t[25]=j,t[26]=M):M=t[26];let N=M,P=Math.max(1,p-N.links-N.rechts),F=u-N.oben-N.unten,I=P/Math.max(1,g),R=Math.min(ce,Math.max(3,I*.72)),B;t[27]!==F||t[28]!==O||t[29]!==N.oben?(B=e=>N.oben+F-e/O*F,t[27]=F,t[28]=O,t[29]=N.oben,t[30]=B):B=t[30];let V=B,H=N.oben+F,U;t[31]!==I||t[32]!==N.links?(U=e=>N.links+(e+.5)*I,t[31]=I,t[32]=N.links,t[33]=U):U=t[33];let G=U,ee;t[34]===n?ee=t[35]:(ee=Math.max(1,...n.map(he)),t[34]=n,t[35]=ee);let te=ee*6.6+8,K;t[36]!==I||t[37]!==te?(K=[1,3,6,12].find(e=>e*I>=te)??24,t[36]=I,t[37]=te,t[38]=K):K=t[38];let ne=K,re=s.indexOf(c),ie=I<34,ae;t[39]===g?ae=t[40]:(ae=function(e){if(g===0)return;let t=e.currentTarget.getBoundingClientRect();h(Math.min(g-1,Math.max(0,Math.floor((e.clientX-t.left)/t.width*g))))},t[39]=g,t[40]=ae);let q=ae,J;t[41]===g?J=t[42]:(J=function(e){let t=le[e.key];g!==0&&t&&(e.preventDefault(),h(e=>t(e??g-1,g)))},t[41]=g,t[42]=J);let oe=J,Y=m===null?void 0:n[m],X=p>=360,de=m===null?0:Math.max(0,Math.min(p-se,G(m)+12+se>p?G(m)-12-se:G(m)+12));_=`flex flex-col gap-2`,v=o.length>1&&(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:o.map(me)});let _e;t[43]===g?_e=t[44]:(_e=()=>h(e=>e??(g?g-1:null)),t[43]=g,t[44]=_e);let ve;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(ve=()=>h(null),t[45]=ve):ve=t[45];let ye;t[46]!==Y||t[47]!==I||t[48]!==m||t[49]!==F||t[50]!==N.links||t[51]!==N.oben?(ye=Y&&m!==null&&(0,Z.jsx)(`rect`,{x:N.links+m*I,y:N.oben-4,width:I,height:F+4,rx:4,fill:`var(--erhaben)`}),t[46]=Y,t[47]=I,t[48]=m,t[49]=F,t[50]=N.links,t[51]=N.oben,t[52]=ye):ye=t[52];let be;t[53]!==p||t[54]!==N.links||t[55]!==N.rechts||t[56]!==V?(be=e=>(0,Z.jsxs)(`g`,{children:[(0,Z.jsx)(`line`,{x1:N.links,x2:p-N.rechts,y1:V(e),y2:V(e),strokeWidth:1,stroke:e===0?`var(--linie-stark)`:`var(--linie)`}),(0,Z.jsx)(`text`,{x:N.links-8,y:V(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:Q.format(e)})]},e),t[53]=p,t[54]=N.links,t[55]=N.rechts,t[56]=V,t[57]=be):be=t[57];let xe;t[58]!==P||t[59]!==F||t[60]!==c||t[61]!==N.links||t[62]!==N.oben?(xe=c===0&&(0,Z.jsx)(`text`,{x:N.links+P/2,y:N.oben+F/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Keine Anfragen in diesem Zeitraum`}),t[58]=P,t[59]=F,t[60]=c,t[61]=N.links,t[62]=N.oben,t[63]=xe):xe=t[63];let Se;t[64]===Symbol.for(`react.memo_cache_sentinel`)?(Se=e=>{e.pointerType!==`touch`&&h(null)},t[64]=Se):Se=t[64];let Ce;t[65]!==u||t[66]!==P||t[67]!==N.links||t[68]!==q?(Ce=(0,Z.jsx)(`rect`,{x:N.links,y:0,width:P,height:u,fill:`transparent`,onPointerMove:q,onPointerDown:q,onPointerLeave:Se}),t[65]=u,t[66]=P,t[67]=N.links,t[68]=q,t[69]=Ce):Ce=t[69],y=(0,Z.jsxs)(`div`,{ref:f,className:`relative w-full`,children:[(0,Z.jsxs)(`svg`,{width:p,height:u,viewBox:`0 0 ${p} ${u}`,role:`img`,"aria-label":a,tabIndex:0,onKeyDown:oe,onFocus:_e,onBlur:ve,className:`block h-auto max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[ye,D.map(be),n.map((e,t)=>{let n=G(t)-R/2;return(0,Z.jsxs)(`g`,{children:[z(o.map(t=>e.werte[t.name]??0),V).filter(pe).map(e=>e.oben?(0,Z.jsx)(`path`,{d:W(n,e.y,R,e.hoehe),fill:o[e.index].farbe},e.index):(0,Z.jsx)(`rect`,{x:n,y:e.y,width:R,height:e.hoehe,fill:o[e.index].farbe},e.index)),s[t]>0&&(l===`alle`||t===re)&&(0,Z.jsx)(`text`,{x:G(t),y:V(s[t])-6,textAnchor:`middle`,className:i(`fill-text-2 font-mono`,ie?`text-[10px]`:`text-[11px]`),children:Q.format(s[t])}),(e.raster??t)%ne===0&&(0,Z.jsxs)(`text`,{x:G(t),y:H+15,textAnchor:`middle`,className:`fill-text-3 font-mono text-[11px]`,children:[e.achse,e.achse2&&(0,Z.jsx)(`tspan`,{x:G(t),dy:13,className:`text-[10px]`,children:e.achse2})]})]},e.schluessel)}),xe,Ce]}),Y&&m!==null&&X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m],links:de,className:`pointer-events-none absolute top-1 z-10 w-60 shadow-lg`})]}),b=Y&&m!==null&&!X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m]}),T=`text-sm`,t[70]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[70]=E):E=t[70],w=`mt-2 overflow-x-auto`,S=`w-full border-collapse text-xs`;let we;t[71]===d?we=t[72]:(we=(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-left font-normal`,children:d}),t[71]=d,t[72]=we),C=(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{className:`text-text-3`,children:[we,o.map(fe),o.length>1&&(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 text-right font-normal`,children:`Zusammen`})]})}),x=n.map((e,t)=>(0,Z.jsxs)(`tr`,{className:`border-t border-white/[0.06]`,children:[(0,Z.jsx)(`th`,{scope:`row`,className:`py-1 pr-3 text-left font-normal text-text-3`,children:e.lang}),o.map(t=>(0,Z.jsx)(`td`,{className:`ziffern py-1 pr-3 text-right text-text-2`,children:Q.format(e.werte[t.name]??0)},t.name)),o.length>1&&(0,Z.jsx)(`td`,{className:`ziffern py-1 text-right text-foreground`,children:Q.format(s[t])})]},e.schluessel)),t[0]=p,t[1]=u,t[2]=m,t[3]=g,t[4]=f,t[5]=r,t[6]=n,t[7]=d,t[8]=l,t[9]=a,t[10]=_,t[11]=v,t[12]=y,t[13]=b,t[14]=x,t[15]=S,t[16]=C,t[17]=w,t[18]=T,t[19]=E}else _=t[10],v=t[11],y=t[12],b=t[13],x=t[14],S=t[15],C=t[16],w=t[17],T=t[18],E=t[19];let D;t[73]===x?D=t[74]:(D=(0,Z.jsx)(`tbody`,{children:x}),t[73]=x,t[74]=D);let O;t[75]!==D||t[76]!==S||t[77]!==C?(O=(0,Z.jsxs)(`table`,{className:S,children:[C,D]}),t[75]=D,t[76]=S,t[77]=C,t[78]=O):O=t[78];let k;t[79]!==O||t[80]!==w?(k=(0,Z.jsx)(`div`,{className:w,children:O}),t[79]=O,t[80]=w,t[81]=k):k=t[81];let A;t[82]!==k||t[83]!==T||t[84]!==E?(A=(0,Z.jsxs)(`details`,{className:T,children:[E,k]}),t[82]=k,t[83]=T,t[84]=E,t[85]=A):A=t[85];let j;return t[86]!==_||t[87]!==v||t[88]!==y||t[89]!==b||t[90]!==A?(j=(0,Z.jsxs)(`div`,{className:_,children:[v,y,b,A]}),t[86]=_,t[87]=v,t[88]=y,t[89]=b,t[90]=A,t[91]=j):j=t[91],j}function fe(e){return(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-right font-normal [overflow-wrap:anywhere]`,children:e.name},e.name)}function pe(e){return e.hoehe>0}function me(e){return(0,Z.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),e.name]},e.name)}function he(e){return e.achse.length}function ge(e){return e.achse2}var _e=`Europe/Berlin`,ve=[`var(--reihe-1)`,`var(--reihe-2)`,`var(--reihe-3)`],ye={name:`Weitere`,farbe:`var(--reihe-weitere)`},be=new Intl.NumberFormat(`de-DE`),xe=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Se=new Intl.DateTimeFormat(`en-CA`,{timeZone:_e}),Ce=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:_e}),we=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,hourCycle:`h23`,timeZone:_e}),Te=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:`UTC`}),Ee=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,timeZone:`UTC`}),$=e=>be.format(e);function De(e){if(!(e>0))return`0 %`;let t=e*100;return t<.1?`unter 0,1 %`:`${t<10?xe.format(t):be.format(Math.round(t))} %`}function Oe(e,t=!1){if(e==null||!Number.isFinite(e)||e<0)return`–`;if(Math.round(e*1e3)<1e3)return`${Math.round(e*1e3)} ms`;if(e<9.95)return`${xe.format(e)} s`;let n=Math.round(e);if(n<60)return`${n} s`;if(n<3600&&!t)return n%60?`${Math.floor(n/60)} min ${n%60} s`:`${n/60} min`;let r=Math.round(e/60);return r<60?`${r} min`:r%60?`${Math.floor(r/60)} h ${r%60} min`:`${r/60} h`}var ke={400:`fehlerhafte Anfrage`,404:`nicht gefunden`,408:`Zeitüberschreitung`,413:`Anfrage zu groß`,429:`zu viele Anfragen`,499:`vom Absender abgebrochen`,500:`Fehler beim Modell`,502:`Modell nicht erreichbar`,503:`gerade nicht verfügbar`,504:`Zeitüberschreitung`};function Ae(e){return Object.entries(e??{}).sort(([e,t],[n,r])=>r-t||e.localeCompare(n)).map(([e,t])=>ke[e]?`${$(t)}× ${ke[e]} (${e})`:`${$(t)}× Status ${e}`).join(` · `)}function je(e){return e===null||e<.01?{art:`grau`,wort:null}:e>=.05?{art:`rot`,wort:`hoch`}:{art:`bernstein`,wort:`auffällig`}}var Me=e=>String(e).padStart(2,`0`),Ne=e=>Object.values(e??{}).reduce((e,t)=>e+t,0),Pe=e=>Te.format(e).replace(`.`,``);function Fe(e){return Number(we.formatToParts(e).find(e=>e.type===`hour`)?.value??0)%24}function Ie(e){let[,t,n]=e.split(`-`);return`${Ee.format(new Date(`${e}T12:00:00Z`))}, ${n}.${t}.`}function Le(e,t=new Date){let n=e.stand?new Date(e.stand):t,r=Se.format(n),i=new Date(Date.parse(`${r}T12:00:00Z`)-864e5).toISOString().slice(0,10),a=e.gesamt?.anfragen??e.absender.reduce((e,t)=>e+t.anfragen,0),o=e.gesamt?.dauer_summe_s??null,s=new Map(e.absender.map((e,t)=>[e.name,e.reihe??t])),c=e.absender.map(e=>{let t=s.get(e.name)??ve.length,n=t[e.name,e.reihe])),u=[];for(let e of[...c].sort((e,t)=>(s.get(e.name)??99)-(s.get(t.name)??99)))u.some(t=>t.name===e.reihe)||u.push({name:e.reihe,farbe:e.farbe});let d=e=>{let t={};for(let[n,r]of Object.entries(e??{})){let e=l.get(n)??ye.name;t[e]=(t[e]??0)+r,e===ye.name&&!u.some(t=>t.name===e)&&u.push({...ye})}return t},f=Object.keys(e.je_tag??{}).sort(),p=f.map(t=>{let i=t===r;return{schluessel:t,achse:Pe(new Date(`${t}T12:00:00Z`)),achse2:i?`heute`:`${Number(t.slice(8))}.`,lang:`${Ie(t)}${i?` (heute bis ${Ce.format(n)})`:``}`,werte:d(e.je_tag[t])}}),m;if(e.stunden?.length)m=e.stunden.map((e,t,n)=>{let a=new Date(e.beginn),o=Fe(a),s=Se.format(a),c=s===r?`Heute`:s===i?`Gestern`:Ie(s),l=t===n.length-1?` bis jetzt`:`–${Me((o+1)%24)}:00`;return{schluessel:e.beginn,achse:`${Me(o)}:00`,raster:o,lang:`${c} ${Me(o)}:00${l}`,werte:d(e.je_absender)}});else{let t=Fe(n),r=e.letzte_24h??[];m=[...r.slice(t+1),...r.slice(0,t+1)].map(e=>{let t=Number(e.stunde);return{schluessel:e.stunde,achse:`${Me(t)}:00`,raster:t,lang:`${Me(t)}:00–${Me((t+1)%24)}:00`,werte:d(e.je_absender)}})}let h=f.filter(e=>e!==r),g=e.seit?Se.format(new Date(e.seit)):null,_=e.ladevorgaenge??Object.entries(e.zuletzt_geladen??{}).sort(([,e],[,t])=>Date.parse(t)-Date.parse(e)).map(([e,t])=>({modell:e,anzahl:null,zeiten:[t]}));return{absender:c,reihen:u,tage:p,stunden:m,gesamt:{anfragen:a,fehler:e.gesamt?.fehler??null,fehlerCodes:e.gesamt?.fehler_codes??{},typisch:e.gesamt?.dauer_typisch_s??null,p90:e.gesamt?.dauer_p90_s??null,summe:o},heute:Ne(e.je_tag?.[r]),gestern:Ne(e.je_tag?.[i]),schnitt:h.length?h.reduce((t,n)=>t+Ne(e.je_tag[n]),0)/h.length:null,zeitraum:g?`seit ${Pe(new Date(`${g}T12:00:00Z`))} ${g.slice(8)}.${g.slice(5,7)}.`:`letzte ${e.tage} Tage`,stand:e.stand?Ce.format(n):null,modelle:_}}var Re={grau:`text-foreground`,bernstein:`text-bernstein`,rot:`text-rot-text`};function ze(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,art:o}=e,s=o===void 0?`grau`:o,c;t[0]===n?c=t[1]:(c=(0,Z.jsx)(`span`,{className:`etikett text-[10.5px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=c);let l=Re[s],u;t[2]===l?u=t[3]:(u=i(`font-anzeige text-[28px] leading-none font-bold`,l),t[2]=l,t[3]=u);let d;t[4]!==u||t[5]!==r?(d=(0,Z.jsx)(`span`,{className:u,children:r}),t[4]=u,t[5]=r,t[6]=d):d=t[6];let f;t[7]===a?f=t[8]:(f=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=f);let p;return t[9]!==c||t[10]!==d||t[11]!==f?(p=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5 flaeche-innen rounded-2xl px-3.5 py-3`,children:[c,d,f]}),t[9]=c,t[10]=d,t[11]=f,t[12]=p):p=t[12],p}var Be=`lg:grid-cols-[minmax(0,1.5fr)_minmax(0,1.4fr)_minmax(0,1fr)_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,0.8fr)]`;function Ve(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,leise:o}=e,s;t[0]===n?s=t[1]:(s=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 lg:hidden`,children:n}),t[0]=n,t[1]=s);let c=o?`text-text-3`:`text-foreground`,l;t[2]===c?l=t[3]:(l=i(`ziffern text-sm`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,Z.jsx)(`span`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;t[7]===a?d=t[8]:(d=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=d);let f;return t[9]!==s||t[10]!==u||t[11]!==d?(f=(0,Z.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[s,u,d]}),t[9]=s,t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function He(e){let t=(0,Y.c)(5),{zeilen:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsxs)(`div`,{role:`row`,className:i(`etikett hidden gap-x-4 pb-2 text-[10.5px] tracking-[0.14em] text-text-3 lg:grid`,Be),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Absender`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Anfragen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Typische Antwort`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Rechenzeit`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Fehler`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`})]}),t[0]=r):r=t[0];let a;t[1]===n?a=t[2]:(a=n.map(Ue),t[1]=n,t[2]=a);let o;return t[3]===a?o=t[4]:(o=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Nutzung je Absender`,className:`flex flex-col`,children:[r,a]}),t[3]=a,t[4]=o),o}function Ue(e){return(0,Z.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2.5 border-t border-white/[0.06] py-3 lg:items-start`,Be),children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-2 text-[15px] font-medium lg:col-span-1`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words`,children:e.name})]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex min-w-0 flex-col gap-1.5 lg:col-span-1`,children:[(0,Z.jsxs)(`span`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern`,children:$(e.anfragen)}),(0,Z.jsxs)(`span`,{className:`text-text-3`,children:[` · `,De(e.anteil),` aller Anfragen`]})]}),(0,Z.jsx)(`span`,{className:`h-1.5 w-full max-w-56 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,Z.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.max(1,e.anteil*100)}%`,background:e.farbe}})})]}),(0,Z.jsx)(Ve,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(Ve,{label:`Rechenzeit`,wert:Oe(e.summe,!0),zusatz:e.zeitAnteil===null?void 0:`${De(e.zeitAnteil)} aller Rechenzeit`}),(0,Z.jsx)(Ve,{label:`Fehler`,leise:e.fehler===0,wert:e.fehler===null?`–`:e.fehler===0?`keine`:`${$(e.fehler)} · ${De(e.fehler/e.anfragen)}`,zusatz:e.fehler?Ae(e.fehlerCodes):void 0}),(0,Z.jsx)(Ve,{label:`Zuletzt`,wert:e.zuletzt?k(e.zuletzt):`–`})]},e.name)}function We(e){let t=(0,Y.c)(11),{titel:n,zusatz:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,Z.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r}),t[2]=r,t[3]=o);let s;t[4]!==a||t[5]!==o?(s=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[a,o]}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==i||t[8]!==s||t[9]!==n?(c=(0,Z.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 flaeche-innen rounded-2xl p-4`,children:[s,i]}),t[7]=i,t[8]=s,t[9]=n,t[10]=c):c=t[10],c}function Ge(e){let t=(0,Y.c)(29),{modelle:n,rollen:r}=e;if(n.length===0)return null;let i,a,o,s,c,l;if(t[0]!==n){let e=n.every(Je)?n.reduce(qe,0):null;l=`group flaeche-innen rounded-2xl px-4 open:pb-2`,s=`flex min-h-12 cursor-pointer list-none flex-wrap items-center justify-between gap-x-3 gap-y-1 py-2 [&::-webkit-details-marker]:hidden`,t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,Z.jsx)(F,{className:`size-4 shrink-0 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Wann welches Modell geladen wurde`]}),t[7]=c):c=t[7],i=`ziffern text-sm text-text-2`,a=n.length===1?`1 Modell`:`${n.length} Modelle`,o=e===null?``:` · ${$(e)}× geladen`,t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=c,t[6]=l}else i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6];let u;t[8]!==i||t[9]!==a||t[10]!==o?(u=(0,Z.jsxs)(`span`,{className:i,children:[a,o]}),t[8]=i,t[9]=a,t[10]=o,t[11]=u):u=t[11];let d;t[12]!==s||t[13]!==c||t[14]!==u?(d=(0,Z.jsxs)(`summary`,{className:s,children:[c,u]}),t[12]=s,t[13]=c,t[14]=u,t[15]=d):d=t[15];let f;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Z.jsx)(`p`,{className:`pb-1 text-sm text-text-2`,children:`Gezählt wird, wie oft sich ein Modell nach dem Laden bereit meldete: nach einem Neustart von llama-swap oder wenn es auf Abruf gebraucht wurde.`}),t[16]=f):f=t[16];let p;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett hidden gap-x-4 py-2 text-[10.5px] tracking-[0.14em] text-text-3 sm:grid sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)]`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Modell`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Geladen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Davor`})]}),t[17]=p):p=t[17];let m;if(t[18]!==n||t[19]!==r){let e;t[21]===r?e=t[22]:(e=e=>(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto] gap-x-4 gap-y-1 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)] sm:items-baseline`,children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.modell}),r[e.modell]&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r[e.modell]})]}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-sm text-text-2 sm:text-left`,children:e.anzahl===null?`–`:`${$(e.anzahl)}×`}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-2 sm:col-span-1`,children:[(0,Z.jsx)(`span`,{className:`font-sans text-text-3 sm:hidden`,children:`zuletzt `}),k(e.zeiten[0])]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-3 sm:col-span-1`,children:[e.zeiten.length>1&&(0,Z.jsx)(`span`,{className:`font-sans sm:hidden`,children:`davor `}),e.zeiten.length>1?e.zeiten.slice(1,4).map(Ke).join(` · `):(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`–`})]})]},e.modell),t[21]=r,t[22]=e),m=n.map(e),t[18]=n,t[19]=r,t[20]=m}else m=t[20];let h;t[23]===m?h=t[24]:(h=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Ladevorgänge je Modell`,className:`flex flex-col`,children:[p,m]}),t[23]=m,t[24]=h);let g;return t[25]!==h||t[26]!==l||t[27]!==d?(g=(0,Z.jsxs)(`details`,{className:l,children:[d,f,h]}),t[25]=h,t[26]=l,t[27]=d,t[28]=g):g=t[28],g}function Ke(e){return k(e)}function qe(e,t){return e+(t.anzahl??0)}function Je(e){return e.anzahl!==null}function Ye(e){let t=(0,Y.c)(23),{nutzung:n,laedt:r,fehler:i,rollen:a}=e,o;t[0]===a?o=t[1]:(o=a===void 0?{}:a,t[0]=a,t[1]=o);let s=o;if(!n){let e;return t[2]!==i||t[3]!==r?(e=(0,Z.jsx)(H,{titel:`Wer nutzt die Modelle`,children:r?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[2]=i,t[3]=r,t[4]=e):e=t[4],e}let c,l,u,d,f;if(t[5]!==n){l=Le(n);let e=l.gesamt,r=e.fehler!==null&&e.anfragen?e.fehler/e.anfragen:null,i;t[11]===r?i=t[12]:(i=je(r),t[11]=r,t[12]=i);let a=i;c=H,u=`Wer nutzt die Modelle`,d=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[l.zeitraum,l.stand?` · Stand ${l.stand}`:``]}),f=e.anfragen===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,Z.jsx)(ze,{label:`Anfragen`,wert:$(e.anfragen),zusatz:l.schnitt===null?void 0:`im Schnitt ${$(Math.round(l.schnitt))} am Tag`}),(0,Z.jsx)(ze,{label:`Heute`,wert:$(l.heute),zusatz:`${l.stand?`bis ${l.stand} · `:``}gestern ${$(l.gestern)}`}),(0,Z.jsx)(ze,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(ze,{label:`Fehler`,wert:e.fehler===null?`–`:$(e.fehler),art:a.art,zusatz:e.fehler===null?void 0:e.fehler===0?`alle beantwortet`:`${De(r??0)} der Anfragen${a.wort?` · ${a.wort}`:``}`})]}),(0,Z.jsx)(He,{zeilen:l.absender}),(0,Z.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,Z.jsx)(We,{titel:`Anfragen je Tag`,zusatz:`letzte 7 Tage, heute bis jetzt`,children:(0,Z.jsx)(de,{saeulen:l.tage,reihen:l.reihen,spalte:`Tag`,titel:`Anfragen je Tag der letzten 7 Tage, gestapelt nach Absender`})}),(0,Z.jsx)(We,{titel:`Anfragen je Stunde`,zusatz:`letzte 24 Stunden`,children:(0,Z.jsx)(de,{saeulen:l.stunden,reihen:l.reihen,spalte:`Stunde`,summen:`hoechste`,titel:`Anfragen je Stunde der letzten 24 Stunden, gestapelt nach Absender`})})]})]}),t[5]=n,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else c=t[6],l=t[7],u=t[8],d=t[9],f=t[10];let p;t[13]!==l.modelle||t[14]!==s?(p=(0,Z.jsx)(Ge,{modelle:l.modelle,rollen:s}),t[13]=l.modelle,t[14]=s,t[15]=p):p=t[15];let m;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat-Anfragen an llama-swap, gelesen aus seinem Protokoll und alle 10 Minuten neu gerechnet. NerdQuiz fragt direkt dort an, Lucy und OpenChamber über MC2. Antwortzeit: bis die Antwort ganz da war. Rechenzeit: alle Antwortzeiten zusammen, gleichzeitige Anfragen zählen einzeln.`}),t[16]=m):m=t[16];let h;return t[17]!==c||t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p?(h=(0,Z.jsxs)(c,{titel:u,rechts:d,children:[f,p,m]}),t[17]=c,t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=h):h=t[22],h}var Xe={coder:`Coder`};function Ze(e){let t=(0,Y.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,a=h(),[o,s]=(0,X.useState)(``),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(null),[f,p]=(0,X.useState)(``),[m,g]=(0,X.useState)(null),_=(0,X.useRef)(!1),b,x;t[0]===c?(b=t[1],x=t[2]):(b=[`hf-suche`,c],x=()=>y(`/api/hf/search?q=${encodeURIComponent(c)}`),t[0]=c,t[1]=b,t[2]=x);let S=c.length>1,w;t[3]!==b||t[4]!==x||t[5]!==S?(w={queryKey:b,queryFn:x,enabled:S},t[3]=b,t[4]=x,t[5]=S,t[6]=w):w=t[6];let T=v(w),E,D;t[7]===u?(E=t[8],D=t[9]):(E=[`hf-quants`,u],D=()=>y(`/api/hf/quants?repo=${encodeURIComponent(u??``)}`),t[7]=u,t[8]=E,t[9]=D);let O=!!u,k;t[10]!==E||t[11]!==D||t[12]!==O?(k={queryKey:E,queryFn:D,enabled:O},t[10]=E,t[11]=D,t[12]=O,t[13]=k):k=t[13];let j=v(k),M,N,P,F,L,R,z,B,H,U,W,re,q;if(t[14]!==m||t[15]!==o||t[16]!==a||t[17]!==n||t[18]!==r||t[19]!==j.data||t[20]!==j.error||t[21]!==j.isError||t[22]!==j.isFetching||t[23]!==u||t[24]!==f||t[25]!==i||t[26]!==T){let e=(j.data?.quants??[]).map($e),c=f?Xe[f]??f:null,h;t[40]!==u||t[41]!==f||t[42]!==i||t[43]!==c?(h=c&&u?ae(u,c,i[f]):null,t[40]=u,t[41]=f,t[42]=i,t[43]=c,t[44]=h):h=t[44],P=h;let v;t[45]!==m||t[46]!==a||t[47]!==r||t[48]!==u||t[49]!==f?(v=function(){u&&m&&!_.current&&(_.current=!0,a.mutate({repo:u,quant:m.quant,rolle:f||null},{onSuccess:e=>{g(null),e.ok!==!1&&r()},onError:()=>g(null),onSettled:()=>{_.current=!1}}))},t[45]=m,t[46]=a,t[47]=r,t[48]=u,t[49]=f,t[50]=v):v=t[50],F=v,N=ne,W=n,t[51]===r?re=t[52]:(re=e=>!e&&r(),t[51]=r,t[52]=re),M=te,z=`right`,B=`gap-3 overflow-y-auto border-white/10 bg-[#0e121a] data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,Z.jsxs)(ee,{children:[(0,Z.jsx)(G,{className:`text-[19px] font-semibold`,children:`Modelle selbst suchen`}),(0,Z.jsx)(K,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=H):H=t[53];let y;t[54]===o?y=t[55]:(y=e=>{e.preventDefault(),d(null),l(o.trim())},t[54]=o,t[55]=y);let b;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,Z.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=b):b=t[56];let x;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>s(e.target.value),t[57]=x):x=t[57];let S;t[58]===o?S=t[59]:(S=(0,Z.jsx)(`input`,{id:`hf-suche`,value:o,onChange:x,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-cyan/60 focus:bg-white/[0.06]`}),t[58]=o,t[59]=S);let w;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,Z.jsx)(I,{type:`submit`,children:`Suchen`}),t[60]=w):w=t[60],t[61]!==y||t[62]!==S?(U=(0,Z.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:y,children:[b,S,w]}),t[61]=y,t[62]=S,t[63]=U):U=t[63],q=`flex flex-col px-4 pb-4`,t[64]!==u||t[65]!==T?(L=!u&&(0,Z.jsxs)(Z.Fragment,{children:[T.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!T.isFetching&&T.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,T.error.message]}),!T.isFetching&&T.data?.results.length===0&&(0,Z.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),T.data?.results.map(e=>(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>d(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-white/[0.06] py-2 text-left hover:text-cyan`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,Z.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[A(e.downloads),` ↓`]})]},e.repo))]}),t[64]=u,t[65]=T,t[66]=L):L=t[66],R=u&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:u}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,onClick:()=>d(null),children:`Zurück`})]}),(0,Z.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,Z.jsxs)(`select`,{value:f,onChange:e=>p(e.target.value),className:`h-11 min-w-0 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-foreground`,children:[(0,Z.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(Xe).map(Qe)]})]}),P&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:P}),j.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!j.isFetching&&j.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,j.error.message]}),!j.isFetching&&j.data&&e.length===0&&(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.06] py-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:C(n,1)}):null,(0,Z.jsx)(I,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>g({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=m,t[15]=o,t[16]=a,t[17]=n,t[18]=r,t[19]=j.data,t[20]=j.error,t[21]=j.isError,t[22]=j.isFetching,t[23]=u,t[24]=f,t[25]=i,t[26]=T,t[27]=M,t[28]=N,t[29]=P,t[30]=F,t[31]=L,t[32]=R,t[33]=z,t[34]=B,t[35]=H,t[36]=U,t[37]=W,t[38]=re,t[39]=q}else M=t[27],N=t[28],P=t[29],F=t[30],L=t[31],R=t[32],z=t[33],B=t[34],H=t[35],U=t[36],W=t[37],re=t[38],q=t[39];let J;t[67]!==L||t[68]!==R||t[69]!==q?(J=(0,Z.jsxs)(`div`,{className:q,children:[L,R]}),t[67]=L,t[68]=R,t[69]=q,t[70]=J):J=t[70];let oe=m!==null,Q;t[71]!==m||t[72]!==u?(Q=m&&u?`${u} (${m.quant}${m.bytes?`, ${C(m.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(m.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=m,t[72]=u,t[73]=Q):Q=t[73];let se=a.isPending?`Wird gestartet …`:`Installieren`,ce=a.isPending,le;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(le=()=>g(null),t[74]=le):le=t[74];let ue;t[75]===P?ue=t[76]:(ue=P&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:P}),t[75]=P,t[76]=ue);let de=!!f,fe;t[77]===de?fe=t[78]:(fe=ie(de),t[77]=de,t[78]=fe);let pe;t[79]===fe?pe=t[80]:(pe=(0,Z.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:fe}),t[79]=fe,t[80]=pe);let me;t[81]!==a.isPending||t[82]!==F||t[83]!==oe||t[84]!==Q||t[85]!==se||t[86]!==ue||t[87]!==pe?(me=(0,Z.jsxs)(V,{offen:oe,titel:`Modell installieren?`,text:Q,knopf:se,gesperrt:ce,onNein:le,onJa:F,children:[ue,pe]}),t[81]=a.isPending,t[82]=F,t[83]=oe,t[84]=Q,t[85]=se,t[86]=ue,t[87]=pe,t[88]=me):me=t[88];let he;t[89]!==M||t[90]!==z||t[91]!==B||t[92]!==H||t[93]!==U||t[94]!==J||t[95]!==me?(he=(0,Z.jsxs)(M,{side:z,className:B,children:[H,U,J,me]}),t[89]=M,t[90]=z,t[91]=B,t[92]=H,t[93]=U,t[94]=J,t[95]=me,t[96]=he):he=t[96];let ge;return t[97]!==N||t[98]!==W||t[99]!==re||t[100]!==he?(ge=(0,Z.jsx)(N,{open:W,onOpenChange:re,children:he}),t[97]=N,t[98]=W,t[99]=re,t[100]=he,t[101]=ge):ge=t[101],ge}function Qe(e){let[t,n]=e;return(0,Z.jsx)(`option`,{value:t,children:n},t)}function $e(e){return typeof e==`string`?{quant:e}:e}var et=115;function tt(e){let t=(0,Y.c)(55),{modelle:n,laufend:r}=e,i=_(),a=S(),o,s,c,l,u,d,f,p,m,h;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=j(i?.ram_total??a.data?.box.ram_total)??122.7,g=j(i?.ram_used??a.data?.box.ram_used)??0,_;t[15]===r?_=t[16]:(_=e=>r.includes(e.name),t[15]=r,t[16]=_);let v=n.filter(_).reduce(nt,0);s=Math.max(0,g-v);let y=t=>`${Math.min(100,t/e*100)}%`;o=H,p=`Speicher`,m=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(g),` von `,Math.round(e),` GB belegt · Grenze ~`,et,` GB`]});let b=`Speicher: ${Math.round(g)} von ${Math.round(e)} GB belegt`,x=y(g),S;t[17]===x?S=t[18]:(S={width:x},t[17]=x,t[18]=S);let C=`${g?v/g*100:0}%`,w;t[19]===C?w=t[20]:(w=(0,Z.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:C}}),t[19]=C,t[20]=w);let T=`${g?s/g*100:0}%`,E;t[21]===T?E=t[22]:(E=(0,Z.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:T}}),t[21]=T,t[22]=E);let D;t[23]!==S||t[24]!==w||t[25]!==E?(D=(0,Z.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:S,children:[w,E]}),t[23]=S,t[24]=w,t[25]=E,t[26]=D):D=t[26];let O=y(et),k;t[27]===O?k=t[28]:(k=(0,Z.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:O}}),t[27]=O,t[28]=k),t[29]!==b||t[30]!==D||t[31]!==k?(h=(0,Z.jsxs)(`div`,{className:`relative h-8 overflow-hidden rounded-xl bg-white/[0.06]`,role:`img`,"aria-label":b,children:[D,k]}),t[29]=b,t[30]=D,t[31]=k,t[32]=h):h=t[32],f=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,d=Math.round(v),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14];let g;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==d?(g=(0,Z.jsxs)(`span`,{className:c,children:[l,u,d,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=d,t[38]=g):g=t[38];let v;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=v):v=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let b;t[42]===y?b=t[43]:(b=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[v,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=b);let x;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=x):x=t[44];let C;t[45]!==b||t[46]!==f||t[47]!==g?(C=(0,Z.jsxs)(`div`,{className:f,children:[g,b,x]}),t[45]=b,t[46]=f,t[47]=g,t[48]=C):C=t[48];let w;return t[49]!==o||t[50]!==C||t[51]!==p||t[52]!==m||t[53]!==h?(w=(0,Z.jsxs)(o,{titel:p,rechts:m,children:[h,C]}),t[49]=o,t[50]=C,t[51]=p,t[52]=m,t[53]=h,t[54]=w):w=t[54],w}function nt(e,t){return e+(j(t.size_bytes)??0)}function rt(e){let t=(0,Y.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,Z.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Z.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function it(e){let t=(0,Y.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=c();if(!r){let e;t[0]===n?e=t[1]:(e=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(R,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-white/15 p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let l;t[9]!==r.ctx||t[10]!==r.parallel_slots?(l=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=l):l=t[11];let u=l,d=!!r.capabilities?.vision||!!i,f;t[12]===n?f=t[13]:(f=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[12]=n,t[13]=f);let p=a?`gruen`:`grau`,m=a?`Geladen`:`Auf Abruf`,h;t[14]!==p||t[15]!==m?(h=(0,Z.jsx)(R,{art:p,children:m}),t[14]=p,t[15]=m,t[16]=h):h=t[16];let g;t[17]!==f||t[18]!==h?(g=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[f,h]}),t[17]=f,t[18]=h,t[19]=g):g=t[19];let _;t[20]===r.name?_=t[21]:(_=(0,Z.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=_);let v;t[22]===r.size_bytes?v=t[23]:(v=C(r.size_bytes),t[22]=r.size_bytes,t[23]=v);let y;t[24]===v?y=t[25]:(y=(0,Z.jsx)(rt,{name:`Größe`,wert:v}),t[24]=v,t[25]=y);let b=u?`${u}k`:`–`,x;t[26]===b?x=t[27]:(x=(0,Z.jsx)(rt,{name:`Kontext`,wert:b}),t[26]=b,t[27]=x);let S=d?`ja`:`nein`,w;t[28]===S?w=t[29]:(w=(0,Z.jsx)(rt,{name:`Bilder`,wert:S}),t[28]=S,t[29]=w);let T;t[30]!==x||t[31]!==w||t[32]!==y?(T=(0,Z.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[y,x,w]}),t[30]=x,t[31]=w,t[32]=y,t[33]=T):T=t[33];let E=r.spec_active?` Mit Draft-Beschleunigung.`:``,D=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==E||t[36]!==D?(O=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,E,D]}),t[34]=o,t[35]=E,t[36]=D,t[37]=O):O=t[37];let k;t[38]!==s||t[39]!==a||t[40]!==r.name?(k=!a&&(0,Z.jsx)(I,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=k):k=t[41];let A;return t[42]!==T||t[43]!==O||t[44]!==k||t[45]!==g||t[46]!==_?(A=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 flaeche rounded-2xl p-5`,children:[g,_,T,O,k]}),t[42]=T,t[43]=O,t[44]=k,t[45]=g,t[46]=_,t[47]=A):A=t[47],A}var at={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},ot={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function st(e){let t=(0,Y.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-[10.5px] tracking-[0.14em] text-text-3`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`flaeche-innen rounded-xl px-3 py-2 text-sm`,children:[a,e.map(ct)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function ct(e){let[t,n]=e;return(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-white/[0.06] py-1`,children:[(0,Z.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${ot[n.urteil??``]??`text-text-2`}`,children:p(n.kandidat,n.einheit)}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:p(n.baseline,n.einheit)})]},t)}function lt(e){let t=(0,Y.c)(80),{k:n,test:r,heute:i}=e,a=d(),o=b(),[s,c]=(0,X.useState)(null),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=l):l=t[0];let u=l.includes(n.status),f=n.rolle===`hirn`,p;t[1]===n.name?p=t[2]:(p=(0,Z.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=p);let m=f?`fürs Hirn`:`fürs Coden`,h;t[3]===m?h=t[4]:(h=(0,Z.jsx)(R,{art:`cyan`,children:m}),t[3]=m,t[4]=h);let g;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(g=n.groesse_gb!=null&&(0,Z.jsx)(R,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=g):g=t[8];let _=at[n.status]??`grau`,v=E[n.status]??n.status,y;t[9]!==_||t[10]!==v?(y=(0,Z.jsx)(R,{art:_,children:v}),t[9]=_,t[10]=v,t[11]=y):y=t[11];let x;t[12]!==p||t[13]!==h||t[14]!==g||t[15]!==y?(x=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[p,h,g,y]}),t[12]=p,t[13]=h,t[14]=g,t[15]=y,t[16]=x):x=t[16];let S;t[17]===n.groesse_gb?S=t[18]:(S=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=S);let C;t[19]!==n.begruendung||t[20]!==S?(C=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[S,n.begruendung]}),t[19]=n.begruendung,t[20]=S,t[21]=C):C=t[21];let w;t[22]!==n.status||t[23]!==r?(w=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,Z.jsx)(st,{test:r}),t[22]=n.status,t[23]=r,t[24]=w):w=t[24];let T;t[25]!==n.begruendung||t[26]!==n.testbar_grund?(T=n.testbar_grund&&!n.begruendung.startsWith(`Läuft gerade`)&&(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:n.testbar_grund}),t[25]=n.begruendung,t[26]=n.testbar_grund,t[27]=T):T=t[27];let D;t[28]!==a.isPending||t[29]!==n.status||t[30]!==n.testbar_jetzt||t[31]!==u||t[32]!==o.isPending?(D=u&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.testbar_jetzt&&(0,Z.jsx)(I,{variant:`info`,size:`sm`,disabled:o.isPending,onClick:()=>c(`testen`),children:`Jetzt testen`}),n.status===`bestanden`&&(0,Z.jsx)(I,{size:`sm`,disabled:a.isPending,onClick:()=>c(`uebernehmen`),children:`Übernehmen`}),(0,Z.jsx)(I,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>c(`verwerfen`),children:`Verwerfen`})]}),t[28]=a.isPending,t[29]=n.status,t[30]=n.testbar_jetzt,t[31]=u,t[32]=o.isPending,t[33]=D):D=t[33];let O=s===`uebernehmen`,k=`${n.name} übernehmen?`,A=f?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,j;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>c(null),t[34]=j):j=t[34];let M;t[35]!==a||t[36]!==s||t[37]!==n.id||t[38]!==n.name?(M=()=>{s===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),c(null))},t[35]=a,t[36]=s,t[37]=n.id,t[38]=n.name,t[39]=M):M=t[39];let N;t[40]!==a.isPending||t[41]!==O||t[42]!==k||t[43]!==A||t[44]!==M?(N=(0,Z.jsx)(V,{offen:O,titel:k,text:A,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:j,onJa:M}),t[40]=a.isPending,t[41]=O,t[42]=k,t[43]=A,t[44]=M,t[45]=N):N=t[45];let P=s===`testen`,F=`${n.name} jetzt testen?`,L;t[46]===n.groesse_gb?L=t[47]:(L=n.groesse_gb==null?``:` (${n.groesse_gb.toLocaleString(`de-DE`)} GB)`,t[46]=n.groesse_gb,t[47]=L);let z=`Das Radar lädt ${n.name}${L} herunter, falls nötig, misst das heutige Modell der Rolle und dann den Kandidaten. Das dauert je nach Download eine halbe bis zwei Stunden. Solange antworten Lucy und NerdQuiz etwas langsamer; ein geladener Coder wird dafür entladen, und wird er währenddessen gebraucht, bricht der Test ab. Das Ergebnis kommt als Meldung; fällt der Kandidat durch, werden seine Dateien gelöscht.`,B;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(B=()=>c(null),t[48]=B):B=t[48];let H;t[49]!==s||t[50]!==n.id||t[51]!==n.name||t[52]!==o?(H=()=>{s===`testen`&&(o.mutate({id:n.id,name:n.name}),c(null))},t[49]=s,t[50]=n.id,t[51]=n.name,t[52]=o,t[53]=H):H=t[53];let U;t[54]!==P||t[55]!==F||t[56]!==z||t[57]!==H||t[58]!==o.isPending?(U=(0,Z.jsx)(V,{offen:P,titel:F,text:z,knopf:`Jetzt testen`,gesperrt:o.isPending,onNein:B,onJa:H}),t[54]=P,t[55]=F,t[56]=z,t[57]=H,t[58]=o.isPending,t[59]=U):U=t[59];let W=s===`verwerfen`,G=`${n.name} verwerfen?`,ee;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(ee=()=>c(null),t[60]=ee):ee=t[60];let te;t[61]!==a||t[62]!==s||t[63]!==n.id||t[64]!==n.name?(te=()=>{s===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),c(null))},t[61]=a,t[62]=s,t[63]=n.id,t[64]=n.name,t[65]=te):te=t[65];let K;t[66]!==a.isPending||t[67]!==W||t[68]!==G||t[69]!==te?(K=(0,Z.jsx)(V,{offen:W,gefahr:!0,titel:G,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:ee,onJa:te}),t[66]=a.isPending,t[67]=W,t[68]=G,t[69]=te,t[70]=K):K=t[70];let ne;return t[71]!==C||t[72]!==w||t[73]!==T||t[74]!==D||t[75]!==N||t[76]!==U||t[77]!==K||t[78]!==x?(ne=(0,Z.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-white/[0.06] py-3.5`,children:[x,C,w,T,D,N,U,K]}),t[71]=C,t[72]=w,t[73]=T,t[74]=D,t[75]=N,t[76]=U,t[77]=K,t[78]=x,t[79]=ne):ne=t[79],ne}function ut(e){let t=(0,Y.c)(30),{hirn:n,coder:r}=e,i=o(),s=u(),c=m(),d=O(),f=c.data?.jobs,p=(f??[]).filter(ft).at(-1),h=s.data?.job_id,g;t[0]!==h||t[1]!==f?(g=!!h&&!!f&&!f.some(e=>e.id===h),t[0]=h,t[1]=f,t[2]=g):g=t[2];let _=g,v=s.isPending||_||p!==void 0&&l(p),y=(0,X.useRef)(v);if((0,X.useEffect)(()=>{y.current&&!v&&d.invalidateQueries({queryKey:[`radar`]}),y.current=v},[v,d]),i.isError&&!i.data){let e=i.error instanceof a&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,Z.jsx)(H,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let b=i.data,x=H,S;t[6]===s?S=t[7]:(S=()=>s.mutate(void 0),t[6]=s,t[7]=S);let C=v?`Sucht …`:`Jetzt suchen`,w;t[8]!==v||t[9]!==S||t[10]!==C?(w=(0,Z.jsx)(I,{variant:`info`,size:`sm`,onClick:S,disabled:v,children:C}),t[8]=v,t[9]=S,t[10]=C,t[11]=w):w=t[11];let T;t[12]===b?T=t[13]:(T=b?.naechster_test?` Nächster Test: ${k(b.naechster_test)}.`:``,t[12]=b,t[13]=T);let E=v?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,D;t[14]!==T||t[15]!==E?(D=(0,Z.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche. Tagsüber geht es mit „Jetzt testen“, wenn der Kandidat samt Coder in den Speicher passt.`,T,E]}),t[14]=T,t[15]=E,t[16]=D):D=t[16];let A=!v&&p?.state===`failed`&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,re(p)??`ohne Meldung`]}),j;t[17]!==r||t[18]!==b||t[19]!==n?(j=b?b.kandidaten.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:b.kandidaten.map(e=>(0,Z.jsx)(lt,{k:e,test:b.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=b,t[19]=n,t[20]=j):j=t[20];let M;t[21]===b?M=t[22]:(M=b&&b.tests.length>0&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`h3`,{className:`etikett text-[10.5px] tracking-[0.12em] text-text-3`,children:`Letzte Tests`}),b.tests.slice(0,3).map(dt)]}),t[21]=b,t[22]=M);let N;return t[23]!==x||t[24]!==D||t[25]!==A||t[26]!==j||t[27]!==M||t[28]!==w?(N=(0,Z.jsxs)(x,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:w,children:[D,A,j,M]}),t[23]=x,t[24]=D,t[25]=A,t[26]=j,t[27]=M,t[28]=w,t[29]=N):N=t[29],N}function dt(e){return(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-text-3`,children:k(e.datum)}),` · `,e.zusammenfassung]},e.id)}function ft(e){return e.group===`radar`}var pt=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function mt(e){let t=(0,Y.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(F,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let s;t[3]===r?s=t[4]:(s=(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=s);let c;t[5]!==o||t[6]!==s?(c=(0,Z.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7];let l;t[8]===i?l=t[9]:(l=(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=l);let u;return t[10]!==c||t[11]!==l?(u=(0,Z.jsxs)(`details`,{className:`group flaeche-innen rounded-2xl px-4 open:pb-2`,children:[c,l]}),t[10]=c,t[11]=l,t[12]=u):u=t[12],u}function ht(){let e=(0,Y.c)(37),t=w(),n=D(),[r,i]=(0,X.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],d=r.reduce(gt,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]}),e[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(vt,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,Z.jsxs)(H,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=H,o=`Aufräumen`,s=r.length>0?(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,d.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[16]=c):c=e[16],l=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,Z.jsx)(mt,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${d.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,Z.jsx)(R,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d=r!==null,f=`${r?.name??``} löschen?`,p;e[17]===r?.groesse_gb?p=e[18]:(p=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=p);let m=`${r?.hinweis??``} Es werden ${p} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,h;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>i(null),e[19]=h):h=e[19];let g;e[20]!==r||e[21]!==n?(g=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=g):g=e[22];let _;e[23]!==n.isPending||e[24]!==g||e[25]!==d||e[26]!==f||e[27]!==m?(_=(0,Z.jsx)(V,{offen:d,gefahr:!0,titel:f,text:m,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:h,onJa:g}),e[23]=n.isPending,e[24]=g,e[25]=d,e[26]=f,e[27]=m,e[28]=_):_=e[28];let v;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(vt,{}),e[29]=v):v=e[29];let y;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==_||e[34]!==c||e[35]!==l?(y=(0,Z.jsxs)(a,{titel:o,rechts:s,children:[c,l,_,v]}),e[30]=a,e[31]=o,e[32]=s,e[33]=_,e[34]=c,e[35]=l,e[36]=y):y=e[36],y}function gt(e,t){return e+t.groesse_gb}function _t(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function vt(){let e=(0,Y.c)(23),t=x(),n=T(),[r,i]=(0,X.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(yt,0);a=`flex flex-col gap-2`,o=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,Z.jsxs)(mt,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${_t(s)}`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,Z.jsx)(R,{children:`Altrest`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let u=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,d;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>i(null),e[9]=d):d=e[9];let f;e[10]!==r||e[11]!==n?(f=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=f):f=e[12];let p;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==u||e[17]!==f?(p=(0,Z.jsx)(V,{offen:s,gefahr:!0,titel:c,text:u,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:d,onJa:f}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=u,e[17]=f,e[18]=p):p=e[18];let m;return e[19]!==a||e[20]!==o||e[21]!==p?(m=(0,Z.jsxs)(`div`,{className:a,children:[o,p]}),e[19]=a,e[20]=o,e[21]=p,e[22]=m):m=e[22],m}function yt(e,t){return e+t.groesse_bytes}function bt(){let e=(0,Y.c)(69),t=f(),n=s(),r=o(),i=m(),[a,c]=(0,X.useState)(!1),l;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(l={select:wt},e[0]=l):l=e[0];let u=oe(l),d=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,p,h;if(e[1]!==d||e[2]!==u?(p=()=>{d&&u===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},h=[d,u],e[1]=d,e[2]=u,e[3]=p,e[4]=h):(p=e[3],h=e[4]),(0,X.useEffect)(p,h),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(B,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,Z.jsx)(B,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let g=t.data.models,_=t.data.running,v,y,b,x,S,w,T,E,D,O,A,j,M;if(e[8]!==_||e[9]!==g||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=g.find(Ct);y=g.find(St);let r;e[26]===g?r=e[27]:(r=(e,t)=>e?g.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[26]=g,e[27]=r);let i=r,a=i(t,`vision`);b=i(y,`coder-bild`);let o=g.filter(e=>![t,y,a,b].includes(e)),s;e[28]===n.data?.zuletzt_geladen?s=e[29]:(s=n.data?.zuletzt_geladen??{},e[28]=n.data?.zuletzt_geladen,e[29]=s);let l=s,u={};for(let[e,n]of[[t,`Hirn`],[y,`Coder`],[a,`Bild-Zwilling des Hirns`],[b,`Bild-Zwilling des Coders`]])e&&(u[e.name]=n);e[30]!==_||e[31]!==g?(j=(0,Z.jsx)(tt,{modelle:g,laufend:_}),e[30]=_,e[31]=g,e[32]=j):j=e[32],e[33]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsx)(q,{alsPanel:!0}),e[33]=M):M=e[33];let d;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsx)(it,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[34]=d):d=e[34],x=(0,Z.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,Z.jsx)(it,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&_.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,Z.jsx)(it,{titel:`Coder`,modell:y,zwilling:b,laeuft:!!y&&_.includes(y.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),d]}),S=(0,Z.jsx)(Ye,{nutzung:n.data,laedt:n.isPending,fehler:n.error?.message??null,rollen:u});let f=t?.name,p=y?.name;e[35]!==f||e[36]!==p?(w=(0,Z.jsx)(ut,{hirn:f,coder:p}),e[35]=f,e[36]=p,e[37]=w):w=e[37],v=H,D=`Weitere Einträge`,e[38]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,Z.jsxs)(I,{variant:`outline`,size:`sm`,onClick:()=>c(!0),children:[(0,Z.jsx)(U,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[38]=O):O=e[38],A=o.length===0&&(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),T=`m-0 flex list-none flex-col p-0`;let m;e[39]!==_||e[40]!==l?(m=e=>(0,Z.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,Z.jsxs)(`span`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:C(e.size_bytes)}),(0,Z.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:_.includes(e.name)?`geladen`:l[e.name]?`zuletzt ${k(l[e.name])}`:`länger nicht geladen`})]},e.name),e[39]=_,e[40]=l,e[41]=m):m=e[41],E=o.map(m),e[8]=_,e[9]=g,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=v,e[14]=y,e[15]=b,e[16]=x,e[17]=S,e[18]=w,e[19]=T,e[20]=E,e[21]=D,e[22]=O,e[23]=A,e[24]=j,e[25]=M}else v=e[13],y=e[14],b=e[15],x=e[16],S=e[17],w=e[18],T=e[19],E=e[20],D=e[21],O=e[22],A=e[23],j=e[24],M=e[25];let N;e[42]!==T||e[43]!==E?(N=(0,Z.jsx)(`ul`,{className:T,children:E}),e[42]=T,e[43]=E,e[44]=N):N=e[44];let P;e[45]!==v||e[46]!==N||e[47]!==D||e[48]!==O||e[49]!==A?(P=(0,Z.jsxs)(v,{titel:D,rechts:O,children:[A,N]}),e[45]=v,e[46]=N,e[47]=D,e[48]=O,e[49]=A,e[50]=P):P=e[50];let F;e[51]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,Z.jsx)(ht,{}),e[51]=F):F=e[51];let L;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(L=()=>c(!1),e[52]=L):L=e[52];let R;e[53]!==y||e[54]!==b?(R=y?{name:y.name,zwilling:!!b,weitere:y.aliases.filter(xt)}:void 0,e[53]=y,e[54]=b,e[55]=R):R=e[55];let z;e[56]===R?z=e[57]:(z={coder:R},e[56]=R,e[57]=z);let V;e[58]!==a||e[59]!==z?(V=(0,Z.jsx)(Ze,{offen:a,onSchliessen:L,rollenJetzt:z}),e[58]=a,e[59]=z,e[60]=V):V=e[60];let W;return e[61]!==x||e[62]!==S||e[63]!==w||e[64]!==P||e[65]!==V||e[66]!==j||e[67]!==M?(W=(0,Z.jsxs)(Z.Fragment,{children:[j,M,x,S,w,P,F,V]}),e[61]=x,e[62]=S,e[63]=w,e[64]=P,e[65]=V,e[66]=j,e[67]=M,e[68]=W):W=e[68],W}function xt(e){return e.toLowerCase()!==`coder`}function St(e){return g(e)===`coder`}function Ct(e){return g(e)===`hirn`}function wt(e){return e.hash}export{lt as Kandidat,bt as ModelleSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Monitoring-D00MRslA.js b/frontend/dist/assets/Monitoring-CpuY6nlC.js similarity index 93% rename from frontend/dist/assets/Monitoring-D00MRslA.js rename to frontend/dist/assets/Monitoring-CpuY6nlC.js index 94d5d40..f3e9cba 100644 --- a/frontend/dist/assets/Monitoring-D00MRslA.js +++ b/frontend/dist/assets/Monitoring-CpuY6nlC.js @@ -1 +1 @@ -import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{B as a,D as o,St as s,u as c,x as l}from"./abfragen-pD_qBEtc.js";import{t as u}from"./useRouterState-DJr4hrdj.js";import{C as d,F as f,I as p,L as m,M as h,N as g,P as _,R as v,S as y,U as b,V as x,m as S,x as C}from"./index-B_hvuxH0.js";import{t as w}from"./breite-k-QN6GPl.js";var T=t(e(),1),E=r(),D=n(),O={ruhig:{wert:`text-foreground`,marke:null},gelb:{wert:`text-bernstein`,marke:`hoch`},rot:{wert:`text-rot-text`,marke:`kritisch`}};function k(e){let t=(0,E.c)(29),{label:n,wert:r,einheit:a,punkte:o,max:s,zustand:c,farbe:l,zeitraumText:u}=e,d=O[c===void 0?`ruhig`:c],p;t[0]===n?p=t[1]:(p=(0,D.jsx)(`span`,{className:`etikett text-[11px] text-text-3`,children:n}),t[0]=n,t[1]=p);let m;t[2]===d.wert?m=t[3]:(m=i(`font-anzeige text-[28px] leading-none font-semibold tabular-nums`,d.wert),t[2]=d.wert,t[3]=m);let h;t[4]!==a||t[5]!==r?(h=f(r,a),t[4]=a,t[5]=r,t[6]=h):h=t[6];let g;t[7]!==m||t[8]!==h?(g=(0,D.jsx)(`span`,{className:m,children:h}),t[7]=m,t[8]=h,t[9]=g):g=t[9];let _;t[10]!==d.marke||t[11]!==d.wert?(_=d.marke&&(0,D.jsx)(`span`,{className:i(`etikett text-[10.5px]`,d.wert),children:d.marke}),t[10]=d.marke,t[11]=d.wert,t[12]=_):_=t[12];let v;t[13]!==g||t[14]!==_?(v=(0,D.jsxs)(`span`,{className:`flex items-baseline gap-2`,children:[g,_]}),t[13]=g,t[14]=_,t[15]=v):v=t[15];let y;t[16]!==l||t[17]!==n||t[18]!==s||t[19]!==o||t[20]!==u?(y=o&&o.length>1&&(0,D.jsx)(C,{punkte:o,max:s,farbe:l,beschriftung:`${n}, ${u}`}),t[16]=l,t[17]=n,t[18]=s,t[19]=o,t[20]=u,t[21]=y):y=t[21];let b;t[22]===o?b=t[23]:(b=o&&o.length<=1&&(0,D.jsx)(`span`,{className:`h-9`,"aria-hidden":!0}),t[22]=o,t[23]=b);let x;return t[24]!==p||t[25]!==v||t[26]!==y||t[27]!==b?(x=(0,D.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col gap-1.5 rounded-xl px-3.5 pt-3 pb-2`,children:[p,v,y,b]}),t[24]=p,t[25]=v,t[26]=y,t[27]=b,t[28]=x):x=t[28],x}var A={rechts:12,oben:10,unten:24};function j(e){let t=(0,E.c)(72),{reihen:n,einheit:r,langerZeitraum:i,hoehe:a,titel:o}=e,s=a===void 0?180:a,[c,l]=w(),[u,m]=(0,T.useState)(null),h,g,v,b,x,S,C,O;if(t[0]!==l||t[1]!==r||t[2]!==s||t[3]!==u||t[4]!==i||t[5]!==c||t[6]!==n||t[7]!==o){let e=n[0]?.punkte??[],a=e.length,w=_(n.map(re),r),T=r===`prozent`?[0,25,50,75,100]:[0,w/2,w],E=Math.max(40,Math.max(...T.map(e=>f(e,r).length))*7+12),k;t[16]===E?k=t[17]:(k={...A,links:E},t[16]=E,t[17]=k);let j=k,M=l-j.links-A.rechts,N=s-A.oben-A.unten,ie=e[0]?.[0]??0,P=e[a-1]?.[0]??1,F=e=>j.links+(P>ie?(e-ie)/(P-ie)*M:0),I;t[18]!==N||t[19]!==w?(I=e=>A.oben+N-Math.min(e,w)/(w||1)*N,t[18]=N,t[19]=w,t[20]=I):I=t[20];let L=I,R=A.oben+N,z=a>1?[0,.25,.5,.75,1].map(t=>e[Math.round(t*(a-1))][0]):[],B;t[21]===n?B=t[22]:(B=n.some(ne),t[21]=n,t[22]=B);let V=B,H;t[23]===a?H=t[24]:(H=function(e){if(a===0)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e.clientX-t.left)/t.width));m(Math.round(n*(a-1)))},t[23]=a,t[24]=H);let U=H,W;t[25]===a?W=t[26]:(W=function(e){if(a!==0){if(e.key===`ArrowLeft`)m(e=>Math.max(0,(e??a-1)-1));else if(e.key===`ArrowRight`)m(e=>Math.min(a-1,(e??a-1)+1));else return;e.preventDefault()}},t[25]=a,t[26]=W);let ae=W,G=u!==null&&e[u]?e[u][0]:null,K=G===null?0:F(G),oe=e.slice(-12);S=`flex flex-col gap-2`,t[27]===n?C=t[28]:(C=n.length>1&&(0,D.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:n.map(te)}),t[27]=n,t[28]=C);let q;t[29]===a?q=t[30]:(q=()=>m(e=>e??(a?a-1:null)),t[29]=a,t[30]=q);let J;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>m(null),t[31]=J):J=t[31];let Y;t[32]!==j.links||t[33]!==R||t[34]!==V||t[35]!==M||t[36]!==N||t[37]!==n||t[38]!==F||t[39]!==L?(Y=V?n.map(e=>(0,D.jsxs)(`g`,{children:[n.length===1&&(0,D.jsx)(`path`,{d:y(e.punkte,F,L,R),fill:e.farbe,opacity:.1}),(0,D.jsx)(`path`,{d:d(e.punkte,F,L),fill:`none`,stroke:e.farbe,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]},e.name)):(0,D.jsx)(`text`,{x:j.links+M/2,y:A.oben+N/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Noch keine Messwerte in diesem Zeitraum`}),t[32]=j.links,t[33]=R,t[34]=V,t[35]=M,t[36]=N,t[37]=n,t[38]=F,t[39]=L,t[40]=Y):Y=t[40];let se;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>m(null),t[41]=se):se=t[41];let X;t[42]!==j.links||t[43]!==M||t[44]!==N||t[45]!==U?(X=(0,D.jsx)(`rect`,{x:j.links,y:A.oben,width:M,height:N,fill:`transparent`,onPointerMove:U,onPointerLeave:se}),t[42]=j.links,t[43]=M,t[44]=N,t[45]=U,t[46]=X):X=t[46];let ce=(0,D.jsxs)(`svg`,{width:l,height:s,role:`img`,"aria-label":o,tabIndex:0,onKeyDown:ae,onFocus:q,onBlur:J,className:`block max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[T.map(e=>(0,D.jsxs)(`g`,{children:[(0,D.jsx)(`line`,{x1:j.links,x2:l-A.rechts,y1:L(e),y2:L(e),stroke:`var(--linie)`,strokeWidth:1}),(0,D.jsx)(`text`,{x:j.links-8,y:L(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:f(e,r)})]},e)),z.map((e,t)=>(0,D.jsx)(`text`,{x:F(e),y:s-6,className:`fill-text-3 font-mono text-[11px]`,textAnchor:t===0?`start`:t===z.length-1?`end`:`middle`,children:p(e,i)},e)),Y,G!==null&&(0,D.jsxs)(`g`,{"aria-hidden":!0,children:[(0,D.jsx)(`line`,{x1:F(G),x2:F(G),y1:A.oben,y2:R,stroke:`var(--text-3)`,strokeWidth:1}),n.map(e=>{let t=e.punkte[u]?.[1];return t==null?null:(0,D.jsx)(`circle`,{cx:F(G),cy:L(t),r:4,fill:e.farbe,stroke:`var(--panel)`,strokeWidth:2},e.name)})]}),X]}),Z=G!==null&&(0,D.jsxs)(`div`,{role:`status`,className:`pointer-events-none absolute top-1 z-10 flex min-w-36 flex-col gap-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 py-2 shadow-lg`,style:K>l/2?{right:l-K+10}:{left:K+10},children:[(0,D.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:p(G,!0)}),n.map(e=>(0,D.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,D.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 rounded-full`,style:{background:e.farbe}}),(0,D.jsx)(`span`,{className:`font-semibold text-foreground`,children:f(e.punkte[u]?.[1],r)}),n.length>1&&(0,D.jsx)(`span`,{className:`text-text-3`,children:e.name})]},e.name))]});t[47]!==c||t[48]!==ce||t[49]!==Z?(O=(0,D.jsxs)(`div`,{ref:c,className:`relative w-full`,children:[ce,Z]}),t[47]=c,t[48]=ce,t[49]=Z,t[50]=O):O=t[50],b=`group text-sm`,t[51]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,D.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[51]=x):x=t[51],g=`ziffern mt-2 w-full max-w-md border-collapse text-xs`;let Q;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,D.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:`Zeit`}),t[52]=Q):Q=t[52];let $;t[53]===n?$=t[54]:($=n.map(ee),t[53]=n,t[54]=$),t[55]===$?v=t[56]:(v=(0,D.jsx)(`thead`,{children:(0,D.jsxs)(`tr`,{className:`text-left text-text-3`,children:[Q,$]})}),t[55]=$,t[56]=v),h=oe.map((e,t)=>{let[o]=e;return(0,D.jsxs)(`tr`,{className:`border-t border-white/[0.06]`,children:[(0,D.jsx)(`td`,{className:`py-1 pr-4 text-text-3`,children:p(o,i)}),n.map(e=>(0,D.jsx)(`td`,{className:`py-1 pr-4 text-text-2`,children:f(e.punkte[a-oe.length+t]?.[1],r)},e.name))]},o)}),t[0]=l,t[1]=r,t[2]=s,t[3]=u,t[4]=i,t[5]=c,t[6]=n,t[7]=o,t[8]=h,t[9]=g,t[10]=v,t[11]=b,t[12]=x,t[13]=S,t[14]=C,t[15]=O}else h=t[8],g=t[9],v=t[10],b=t[11],x=t[12],S=t[13],C=t[14],O=t[15];let k;t[57]===h?k=t[58]:(k=(0,D.jsx)(`tbody`,{children:h}),t[57]=h,t[58]=k);let j;t[59]!==k||t[60]!==g||t[61]!==v?(j=(0,D.jsxs)(`table`,{className:g,children:[v,k]}),t[59]=k,t[60]=g,t[61]=v,t[62]=j):j=t[62];let M;t[63]!==j||t[64]!==b||t[65]!==x?(M=(0,D.jsxs)(`details`,{className:b,children:[x,j]}),t[63]=j,t[64]=b,t[65]=x,t[66]=M):M=t[66];let N;return t[67]!==M||t[68]!==S||t[69]!==C||t[70]!==O?(N=(0,D.jsxs)(`div`,{className:S,children:[C,O,M]}),t[67]=M,t[68]=S,t[69]=C,t[70]=O,t[71]=N):N=t[71],N}function ee(e){return(0,D.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:e.name},e.name)}function te(e){return(0,D.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-4 rounded-full`,style:{background:e.farbe}}),e.name]},e.name)}function ne(e){return e.punkte.some(M)}function M(e){let[,t]=e;return t!==null}function re(e){return e.punkte}var N=[{id:`1h`,name:`1 Stunde`,text:`letzte Stunde`},{id:`24h`,name:`24 Stunden`,text:`letzte 24 Stunden`},{id:`7d`,name:`7 Tage`,text:`letzte 7 Tage`}];function ie(e){let t=(0,E.c)(6),{wert:n,onWahl:r,farbe:a}=e,o=a===`box`?`border-box-rand bg-box-grund text-box-text`:`border-lab-rand bg-lab-grund text-lab-text`,s;t[0]!==o||t[1]!==r||t[2]!==n?(s=N.map(e=>(0,D.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-pressed":n===e.id,className:i(`h-9 rounded-full border px-4 text-sm`,n===e.id?o:`border-white/10 text-text-2 hover:border-white/20 hover:text-foreground`),children:e.name},e.id)),t[0]=o,t[1]=r,t[2]=n,t[3]=s):s=t[3];let c;return t[4]===s?c=t[5]:(c=(0,D.jsx)(`div`,{role:`group`,"aria-label":`Zeitraum`,className:`flex flex-wrap gap-2`,children:s}),t[4]=s,t[5]=c),c}function P(e){let t=(0,E.c)(9),{titel:n,rechts:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,D.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]!==r||t[3]!==a?(o=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[a,r]}),t[2]=r,t[3]=a,t[4]=o):o=t[4];let s;return t[5]!==i||t[6]!==o||t[7]!==n?(s=(0,D.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 flaeche rounded-2xl p-4 sm:p-5`,children:[o,i]}),t[5]=i,t[6]=o,t[7]=n,t[8]=s):s=t[8],s}var F=e=>N.find(t=>t.id===e)?.text??``;function I(){let e=(0,E.c)(97),[t,n]=(0,T.useState)(`1h`),r=c(t),a=s(),o;e[0]===r.data?.reihen?o=e[1]:(o=r.data?.reihen??{},e[0]=r.data?.reihen,e[1]=o);let l=o,u;e[2]===r.data?.aktuell?u=e[3]:(u=r.data?.aktuell??{},e[2]=r.data?.aktuell,e[3]=u);let d=u,f=t===`7d`,p;e[4]!==d||e[5]!==l?(p=(e,t)=>e??d[t]??g(l[t]),e[4]=d,e[5]=l,e[6]=p):p=e[6];let h=p,_;e[7]===t?_=e[8]:(_=(0,D.jsx)(ie,{wert:t,onWahl:n,farbe:`box`}),e[7]=t,e[8]=_);let v;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,D.jsx)(`span`,{className:`text-sm text-text-3`,children:`Zahlen live, Verläufe im Minutentakt`}),e[9]=v):v=e[9];let y;e[10]===_?y=e[11]:(y=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[_,v]}),e[10]=_,e[11]=y);let x=a?.cpu,S;e[12]!==x||e[13]!==h?(S=h(x,`cpu`),e[12]=x,e[13]=h,e[14]=S):S=e[14];let C=a?.cpu,w;e[15]!==C||e[16]!==h?(w=m(h(C,`cpu`),85,95),e[15]=C,e[16]=h,e[17]=w):w=e[17];let O;e[18]===t?O=e[19]:(O=F(t),e[18]=t,e[19]=O);let A;e[20]!==O||e[21]!==S||e[22]!==w?(A=(0,D.jsx)(k,{label:`CPU`,wert:S,einheit:`prozent`,max:100,zustand:w,zeitraumText:O}),e[20]=O,e[21]=S,e[22]=w,e[23]=A):A=e[23];let ee=a?.ram,te;e[24]!==ee||e[25]!==h?(te=h(ee,`ram`),e[24]=ee,e[25]=h,e[26]=te):te=e[26];let ne=a?.ram,M;e[27]!==ne||e[28]!==h?(M=m(h(ne,`ram`),85,95),e[27]=ne,e[28]=h,e[29]=M):M=e[29];let re;e[30]===t?re=e[31]:(re=F(t),e[30]=t,e[31]=re);let N;e[32]!==te||e[33]!==M||e[34]!==re?(N=(0,D.jsx)(k,{label:`Speicher`,wert:te,einheit:`prozent`,max:100,zustand:M,zeitraumText:re}),e[32]=te,e[33]=M,e[34]=re,e[35]=N):N=e[35];let I=a?.gpu,L;e[36]!==I||e[37]!==h?(L=h(I,`gpu`),e[36]=I,e[37]=h,e[38]=L):L=e[38];let R;e[39]===t?R=e[40]:(R=F(t),e[39]=t,e[40]=R);let z;e[41]!==L||e[42]!==R?(z=(0,D.jsx)(k,{label:`GPU`,wert:L,einheit:`prozent`,max:100,zeitraumText:R}),e[41]=L,e[42]=R,e[43]=z):z=e[43];let B=a?.temp_cpu,V;e[44]!==B||e[45]!==h?(V=h(B,`temp_cpu`),e[44]=B,e[45]=h,e[46]=V):V=e[46];let H=a?.temp_cpu,U;e[47]!==H||e[48]!==h?(U=m(h(H,`temp_cpu`),80,90),e[47]=H,e[48]=h,e[49]=U):U=e[49];let W;e[50]===t?W=e[51]:(W=F(t),e[50]=t,e[51]=W);let ae;e[52]!==V||e[53]!==U||e[54]!==W?(ae=(0,D.jsx)(k,{label:`CPU-Temp.`,wert:V,einheit:`grad`,max:100,zustand:U,zeitraumText:W}),e[52]=V,e[53]=U,e[54]=W,e[55]=ae):ae=e[55];let G=a?.temp_gpu,K;e[56]!==G||e[57]!==h?(K=h(G,`temp_gpu`),e[56]=G,e[57]=h,e[58]=K):K=e[58];let oe=a?.temp_gpu,q;e[59]!==oe||e[60]!==h?(q=m(h(oe,`temp_gpu`),80,90),e[59]=oe,e[60]=h,e[61]=q):q=e[61];let J;e[62]===t?J=e[63]:(J=F(t),e[62]=t,e[63]=J);let Y;e[64]!==K||e[65]!==q||e[66]!==J?(Y=(0,D.jsx)(k,{label:`GPU-Temp.`,wert:K,einheit:`grad`,max:100,zustand:q,zeitraumText:J}),e[64]=K,e[65]=q,e[66]=J,e[67]=Y):Y=e[67];let se=a?.disk,X;e[68]!==se||e[69]!==h?(X=h(se,`platte`),e[68]=se,e[69]=h,e[70]=X):X=e[70];let ce=a?.disk,Z;e[71]!==ce||e[72]!==h?(Z=m(h(ce,`platte`),80,90),e[71]=ce,e[72]=h,e[73]=Z):Z=e[73];let Q;e[74]===t?Q=e[75]:(Q=F(t),e[74]=t,e[75]=Q);let $;e[76]!==X||e[77]!==Z||e[78]!==Q?($=(0,D.jsx)(k,{label:`Platte`,wert:X,einheit:`prozent`,max:100,zustand:Z,zeitraumText:Q}),e[76]=X,e[77]=Z,e[78]=Q,e[79]=$):$=e[79];let le;e[80]!==A||e[81]!==N||e[82]!==z||e[83]!==ae||e[84]!==Y||e[85]!==$?(le=(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-3 xl:grid-cols-6`,children:[A,N,z,ae,Y,$]}),e[80]=A,e[81]=N,e[82]=z,e[83]=ae,e[84]=Y,e[85]=$,e[86]=le):le=e[86];let ue;e[87]!==f||e[88]!==r.data||e[89]!==r.isError||e[90]!==r.isPlaceholderData||e[91]!==l?(ue=r.isError&&!r.data?(0,D.jsx)(b,{text:`Der Verlauf ist noch nicht da: Die KI-Box sammelt Messwerte, sobald der neue Stand läuft. Die Zahlen oben sind live.`}):(0,D.jsxs)(`div`,{className:i(`grid gap-5 md:gap-6 xl:grid-cols-2`,r.isPlaceholderData&&`opacity-70`),children:[(0,D.jsx)(P,{titel:`CPU`,children:(0,D.jsx)(j,{titel:`CPU-Auslastung in Prozent`,einheit:`prozent`,langerZeitraum:f,reihen:[{name:`CPU`,punkte:l.cpu??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`Speicher`,children:(0,D.jsx)(j,{titel:`Belegter Speicher in Prozent`,einheit:`prozent`,langerZeitraum:f,reihen:[{name:`Speicher`,punkte:l.ram??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`GPU`,children:(0,D.jsx)(j,{titel:`GPU-Last in Prozent`,einheit:`prozent`,langerZeitraum:f,reihen:[{name:`GPU`,punkte:l.gpu??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`Temperatur`,children:(0,D.jsx)(j,{titel:`Temperatur von CPU und GPU in Grad`,einheit:`grad`,langerZeitraum:f,reihen:[{name:`CPU`,punkte:l.temp_cpu??[],farbe:`var(--reihe-1)`},{name:`GPU`,punkte:l.temp_gpu??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Netz`,children:(0,D.jsx)(j,{titel:`Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:f,reihen:[{name:`empfangen`,punkte:l.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:l.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Tokens pro Minute`,children:(0,D.jsx)(j,{titel:`Erzeugte und gelesene Tokens pro Minute`,einheit:`anzahl`,langerZeitraum:f,reihen:[{name:`Tokens`,punkte:l.tokens??[],farbe:`var(--reihe-1)`}]})})]}),e[87]=f,e[88]=r.data,e[89]=r.isError,e[90]=r.isPlaceholderData,e[91]=l,e[92]=ue):ue=e[92];let de;return e[93]!==le||e[94]!==ue||e[95]!==y?(de=(0,D.jsxs)(D.Fragment,{children:[y,le,ue]}),e[93]=le,e[94]=ue,e[95]=y,e[96]=de):de=e[96],de}function L(e){let t=(0,E.c)(43),{g:n,zeitraum:r}=e,i=n.aktuell,a=n.id,o=n.name,s;t[0]!==n.art||t[1]!==n.name?(s=x({art:n.art,name:n.name}),t[0]=n.art,t[1]=n.name,t[2]=s):s=t[2];let c;t[3]===s?c=t[4]:(c=(0,D.jsx)(v,{bild:s,groesse:`sm`}),t[3]=s,t[4]=c);let l;t[5]===n.name?l=t[6]:(l=(0,D.jsx)(`h3`,{className:`text-[15px] font-semibold`,children:n.name}),t[5]=n.name,t[6]=l);let u;t[7]!==c||t[8]!==l?(u=(0,D.jsxs)(`span`,{className:`flex min-w-0 items-center gap-3`,children:[c,l]}),t[7]=c,t[8]=l,t[9]=u):u=t[9];let d;t[10]===i.cpu?d=t[11]:(d=i.cpu==null?`–`:`${Math.round(i.cpu)} %`,t[10]=i.cpu,t[11]=d);let f;t[12]===i.ram?f=t[13]:(f=i.ram==null?`–`:`${Math.round(i.ram)} %`,t[12]=i.ram,t[13]=f);let p;t[14]===i.uptime_s?p=t[15]:(p=h(i.uptime_s),t[14]=i.uptime_s,t[15]=p);let m;t[16]!==d||t[17]!==f||t[18]!==p?(m=(0,D.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`CPU `,d,` · RAM `,f,` · läuft `,p]}),t[16]=d,t[17]=f,t[18]=p,t[19]=m):m=t[19];let g;t[20]!==m||t[21]!==u?(g=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[u,m]}),t[20]=m,t[21]=u,t[22]=g):g=t[22];let _=`${n.name}: CPU und Speicher in Prozent`,y=r===`7d`,b;t[23]===n.reihen.cpu?b=t[24]:(b=n.reihen.cpu??[],t[23]=n.reihen.cpu,t[24]=b);let S;t[25]===b?S=t[26]:(S={name:`CPU`,punkte:b,farbe:`var(--reihe-1)`},t[25]=b,t[26]=S);let C;t[27]===n.reihen.ram?C=t[28]:(C=n.reihen.ram??[],t[27]=n.reihen.ram,t[28]=C);let w;t[29]===C?w=t[30]:(w={name:`Speicher`,punkte:C,farbe:`var(--reihe-2)`},t[29]=C,t[30]=w);let T;t[31]!==S||t[32]!==w?(T=[S,w],t[31]=S,t[32]=w,t[33]=T):T=t[33];let O;t[34]!==_||t[35]!==y||t[36]!==T?(O=(0,D.jsx)(j,{titel:_,einheit:`prozent`,langerZeitraum:y,hoehe:140,reihen:T}),t[34]=_,t[35]=y,t[36]=T,t[37]=O):O=t[37];let k;return t[38]!==n.id||t[39]!==n.name||t[40]!==g||t[41]!==O?(k=(0,D.jsxs)(`section`,{id:a,"aria-label":o,className:`flex min-w-0 scroll-mt-6 flex-col gap-3 flaeche rounded-2xl p-4 sm:p-5`,children:[g,O]}),t[38]=n.id,t[39]=n.name,t[40]=g,t[41]=O,t[42]=k):k=t[42],k}function R(){let e=(0,E.c)(31),[t,n]=(0,T.useState)(`1h`),r=o(),s=a(),c=r.data?.rolle===`homelab`||!!(s.data?.eingerichtet&&s.data.erreichbar),d=l(t,c),f;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(f={select:H},e[0]=f):f=e[0];let p=u(f),g,_;if(e[1]!==p||e[2]!==d.data?(g=()=>{p&&d.data&&document.getElementById(p)?.scrollIntoView({block:`start`})},_=[p,d.data],e[1]=p,e[2]=d.data,e[3]=g,e[4]=_):(g=e[3],_=e[4]),(0,T.useEffect)(g,_),!c){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(b,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[5]=t):t=e[5],t}if(d.isPending){let t;return e[6]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(b,{text:`Die Messwerte kommen gleich …`}),e[6]=t):t=e[6],t}if(!d.data){let t;return e[7]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(b,{text:`Noch keine Messwerte: Der Ausführer schickt sie jede Minute, sobald sein neuer Stand eingespielt ist.`}),e[7]=t):t=e[7],t}let v,y,x,C;if(e[8]!==d.data.geraete||e[9]!==d.isPlaceholderData||e[10]!==t){let r=d.data.geraete.find(V),a=d.data.geraete.filter(B),o=t===`7d`,s=r?.aktuell??{},c;e[15]===t?c=e[16]:(c=(0,D.jsx)(ie,{wert:t,onWahl:n,farbe:`homelab`}),e[15]=t,e[16]=c);let l;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,D.jsx)(`span`,{className:`text-sm text-text-3`,children:`Werte im Minutentakt vom Proxmox-Host`}),e[17]=l):l=e[17],e[18]===c?x=e[19]:(x=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[c,l]}),e[18]=c,e[19]=x),C=r&&(0,D.jsxs)(S,{titel:`Proxmox-Host`,rechts:(0,D.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`läuft `,h(s.uptime_s),s.load1==null?``:` · Last ${s.load1.toFixed(2).replace(`.`,`,`)}`]}),children:[(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,D.jsx)(k,{label:`CPU`,wert:s.cpu,einheit:`prozent`,max:100,punkte:r.reihen.cpu,zustand:m(s.cpu??null,85,95),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Speicher`,wert:s.ram,einheit:`prozent`,max:100,punkte:r.reihen.ram,zustand:m(s.ram??null,90,95),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Temperatur`,wert:s.temp_cpu,einheit:`grad`,max:100,punkte:r.reihen.temp_cpu,zustand:m(s.temp_cpu??null,80,90),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Systemplatte`,wert:s.platte,einheit:`prozent`,max:100,punkte:r.reihen.platte,zustand:m(s.platte??null,80,90),zeitraumText:F(t)})]}),(0,D.jsxs)(`div`,{className:i(`grid gap-5 xl:grid-cols-2`,d.isPlaceholderData&&`opacity-70`),children:[(0,D.jsx)(P,{titel:`CPU und Speicher`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: CPU und Speicher in Prozent`,einheit:`prozent`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.cpu??[],farbe:`var(--reihe-1)`},{name:`Speicher`,punkte:r.reihen.ram??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Netz`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:o,reihen:[{name:`empfangen`,punkte:r.reihen.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:r.reihen.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(r.reihen.temp_cpu?.some(z)??!1)&&(0,D.jsx)(P,{titel:`Temperatur`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: CPU-Temperatur in Grad`,einheit:`grad`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.temp_cpu??[],farbe:`var(--reihe-1)`}]})})]})]});let u=d.isPlaceholderData&&`opacity-70`;e[20]===u?v=e[21]:(v=i(`grid gap-5 md:gap-6 xl:grid-cols-2`,u),e[20]=u,e[21]=v);let f;e[22]===t?f=e[23]:(f=e=>(0,D.jsx)(L,{g:e,zeitraum:t},e.id),e[22]=t,e[23]=f),y=a.map(f),e[8]=d.data.geraete,e[9]=d.isPlaceholderData,e[10]=t,e[11]=v,e[12]=y,e[13]=x,e[14]=C}else v=e[11],y=e[12],x=e[13],C=e[14];let w;e[24]!==v||e[25]!==y?(w=(0,D.jsx)(`div`,{className:v,children:y}),e[24]=v,e[25]=y,e[26]=w):w=e[26];let O;return e[27]!==x||e[28]!==C||e[29]!==w?(O=(0,D.jsxs)(D.Fragment,{children:[x,C,w]}),e[27]=x,e[28]=C,e[29]=w,e[30]=O):O=e[30],O}function z(e){let[,t]=e;return t!==null}function B(e){return e.art!==`proxmox-host`}function V(e){return e.art===`proxmox-host`}function H(e){return e.location.hash}export{I as BoxMonitoringSeite,R as HomelabMonitoringSeite}; \ No newline at end of file +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{S as a,Tt as o,U as s,k as c,u as l}from"./abfragen-CDCgpAto.js";import{t as u}from"./useRouterState-DJr4hrdj.js";import{C as d,F as f,I as p,L as m,M as h,N as g,P as _,R as v,S as y,U as b,V as x,m as S,x as C}from"./index-CuG_RlEw.js";import{t as w}from"./breite-k-QN6GPl.js";var T=t(e(),1),E=r(),D=n(),O={ruhig:{wert:`text-foreground`,marke:null},gelb:{wert:`text-bernstein`,marke:`hoch`},rot:{wert:`text-rot-text`,marke:`kritisch`}};function k(e){let t=(0,E.c)(29),{label:n,wert:r,einheit:a,punkte:o,max:s,zustand:c,farbe:l,zeitraumText:u}=e,d=O[c===void 0?`ruhig`:c],p;t[0]===n?p=t[1]:(p=(0,D.jsx)(`span`,{className:`etikett text-[11px] text-text-3`,children:n}),t[0]=n,t[1]=p);let m;t[2]===d.wert?m=t[3]:(m=i(`font-anzeige text-[28px] leading-none font-semibold tabular-nums`,d.wert),t[2]=d.wert,t[3]=m);let h;t[4]!==a||t[5]!==r?(h=f(r,a),t[4]=a,t[5]=r,t[6]=h):h=t[6];let g;t[7]!==m||t[8]!==h?(g=(0,D.jsx)(`span`,{className:m,children:h}),t[7]=m,t[8]=h,t[9]=g):g=t[9];let _;t[10]!==d.marke||t[11]!==d.wert?(_=d.marke&&(0,D.jsx)(`span`,{className:i(`etikett text-[10.5px]`,d.wert),children:d.marke}),t[10]=d.marke,t[11]=d.wert,t[12]=_):_=t[12];let v;t[13]!==g||t[14]!==_?(v=(0,D.jsxs)(`span`,{className:`flex items-baseline gap-2`,children:[g,_]}),t[13]=g,t[14]=_,t[15]=v):v=t[15];let y;t[16]!==l||t[17]!==n||t[18]!==s||t[19]!==o||t[20]!==u?(y=o&&o.length>1&&(0,D.jsx)(C,{punkte:o,max:s,farbe:l,beschriftung:`${n}, ${u}`}),t[16]=l,t[17]=n,t[18]=s,t[19]=o,t[20]=u,t[21]=y):y=t[21];let b;t[22]===o?b=t[23]:(b=o&&o.length<=1&&(0,D.jsx)(`span`,{className:`h-9`,"aria-hidden":!0}),t[22]=o,t[23]=b);let x;return t[24]!==p||t[25]!==v||t[26]!==y||t[27]!==b?(x=(0,D.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col gap-1.5 rounded-xl px-3.5 pt-3 pb-2`,children:[p,v,y,b]}),t[24]=p,t[25]=v,t[26]=y,t[27]=b,t[28]=x):x=t[28],x}var A={rechts:12,oben:10,unten:24};function j(e){let t=(0,E.c)(72),{reihen:n,einheit:r,langerZeitraum:i,hoehe:a,titel:o}=e,s=a===void 0?180:a,[c,l]=w(),[u,m]=(0,T.useState)(null),h,g,v,b,x,S,C,O;if(t[0]!==l||t[1]!==r||t[2]!==s||t[3]!==u||t[4]!==i||t[5]!==c||t[6]!==n||t[7]!==o){let e=n[0]?.punkte??[],a=e.length,w=_(n.map(re),r),T=r===`prozent`?[0,25,50,75,100]:[0,w/2,w],E=Math.max(40,Math.max(...T.map(e=>f(e,r).length))*7+12),k;t[16]===E?k=t[17]:(k={...A,links:E},t[16]=E,t[17]=k);let j=k,M=l-j.links-A.rechts,N=s-A.oben-A.unten,ie=e[0]?.[0]??0,P=e[a-1]?.[0]??1,F=e=>j.links+(P>ie?(e-ie)/(P-ie)*M:0),I;t[18]!==N||t[19]!==w?(I=e=>A.oben+N-Math.min(e,w)/(w||1)*N,t[18]=N,t[19]=w,t[20]=I):I=t[20];let L=I,R=A.oben+N,z=a>1?[0,.25,.5,.75,1].map(t=>e[Math.round(t*(a-1))][0]):[],B;t[21]===n?B=t[22]:(B=n.some(ne),t[21]=n,t[22]=B);let V=B,H;t[23]===a?H=t[24]:(H=function(e){if(a===0)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e.clientX-t.left)/t.width));m(Math.round(n*(a-1)))},t[23]=a,t[24]=H);let U=H,W;t[25]===a?W=t[26]:(W=function(e){if(a!==0){if(e.key===`ArrowLeft`)m(e=>Math.max(0,(e??a-1)-1));else if(e.key===`ArrowRight`)m(e=>Math.min(a-1,(e??a-1)+1));else return;e.preventDefault()}},t[25]=a,t[26]=W);let ae=W,G=u!==null&&e[u]?e[u][0]:null,K=G===null?0:F(G),oe=e.slice(-12);S=`flex flex-col gap-2`,t[27]===n?C=t[28]:(C=n.length>1&&(0,D.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:n.map(te)}),t[27]=n,t[28]=C);let q;t[29]===a?q=t[30]:(q=()=>m(e=>e??(a?a-1:null)),t[29]=a,t[30]=q);let J;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>m(null),t[31]=J):J=t[31];let Y;t[32]!==j.links||t[33]!==R||t[34]!==V||t[35]!==M||t[36]!==N||t[37]!==n||t[38]!==F||t[39]!==L?(Y=V?n.map(e=>(0,D.jsxs)(`g`,{children:[n.length===1&&(0,D.jsx)(`path`,{d:y(e.punkte,F,L,R),fill:e.farbe,opacity:.1}),(0,D.jsx)(`path`,{d:d(e.punkte,F,L),fill:`none`,stroke:e.farbe,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]},e.name)):(0,D.jsx)(`text`,{x:j.links+M/2,y:A.oben+N/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Noch keine Messwerte in diesem Zeitraum`}),t[32]=j.links,t[33]=R,t[34]=V,t[35]=M,t[36]=N,t[37]=n,t[38]=F,t[39]=L,t[40]=Y):Y=t[40];let se;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>m(null),t[41]=se):se=t[41];let X;t[42]!==j.links||t[43]!==M||t[44]!==N||t[45]!==U?(X=(0,D.jsx)(`rect`,{x:j.links,y:A.oben,width:M,height:N,fill:`transparent`,onPointerMove:U,onPointerLeave:se}),t[42]=j.links,t[43]=M,t[44]=N,t[45]=U,t[46]=X):X=t[46];let ce=(0,D.jsxs)(`svg`,{width:l,height:s,role:`img`,"aria-label":o,tabIndex:0,onKeyDown:ae,onFocus:q,onBlur:J,className:`block max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[T.map(e=>(0,D.jsxs)(`g`,{children:[(0,D.jsx)(`line`,{x1:j.links,x2:l-A.rechts,y1:L(e),y2:L(e),stroke:`var(--linie)`,strokeWidth:1}),(0,D.jsx)(`text`,{x:j.links-8,y:L(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:f(e,r)})]},e)),z.map((e,t)=>(0,D.jsx)(`text`,{x:F(e),y:s-6,className:`fill-text-3 font-mono text-[11px]`,textAnchor:t===0?`start`:t===z.length-1?`end`:`middle`,children:p(e,i)},e)),Y,G!==null&&(0,D.jsxs)(`g`,{"aria-hidden":!0,children:[(0,D.jsx)(`line`,{x1:F(G),x2:F(G),y1:A.oben,y2:R,stroke:`var(--text-3)`,strokeWidth:1}),n.map(e=>{let t=e.punkte[u]?.[1];return t==null?null:(0,D.jsx)(`circle`,{cx:F(G),cy:L(t),r:4,fill:e.farbe,stroke:`var(--panel)`,strokeWidth:2},e.name)})]}),X]}),Z=G!==null&&(0,D.jsxs)(`div`,{role:`status`,className:`pointer-events-none absolute top-1 z-10 flex min-w-36 flex-col gap-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 py-2 shadow-lg`,style:K>l/2?{right:l-K+10}:{left:K+10},children:[(0,D.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:p(G,!0)}),n.map(e=>(0,D.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,D.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 rounded-full`,style:{background:e.farbe}}),(0,D.jsx)(`span`,{className:`font-semibold text-foreground`,children:f(e.punkte[u]?.[1],r)}),n.length>1&&(0,D.jsx)(`span`,{className:`text-text-3`,children:e.name})]},e.name))]});t[47]!==c||t[48]!==ce||t[49]!==Z?(O=(0,D.jsxs)(`div`,{ref:c,className:`relative w-full`,children:[ce,Z]}),t[47]=c,t[48]=ce,t[49]=Z,t[50]=O):O=t[50],b=`group text-sm`,t[51]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,D.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[51]=x):x=t[51],g=`ziffern mt-2 w-full max-w-md border-collapse text-xs`;let Q;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,D.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:`Zeit`}),t[52]=Q):Q=t[52];let $;t[53]===n?$=t[54]:($=n.map(ee),t[53]=n,t[54]=$),t[55]===$?v=t[56]:(v=(0,D.jsx)(`thead`,{children:(0,D.jsxs)(`tr`,{className:`text-left text-text-3`,children:[Q,$]})}),t[55]=$,t[56]=v),h=oe.map((e,t)=>{let[o]=e;return(0,D.jsxs)(`tr`,{className:`border-t border-white/[0.06]`,children:[(0,D.jsx)(`td`,{className:`py-1 pr-4 text-text-3`,children:p(o,i)}),n.map(e=>(0,D.jsx)(`td`,{className:`py-1 pr-4 text-text-2`,children:f(e.punkte[a-oe.length+t]?.[1],r)},e.name))]},o)}),t[0]=l,t[1]=r,t[2]=s,t[3]=u,t[4]=i,t[5]=c,t[6]=n,t[7]=o,t[8]=h,t[9]=g,t[10]=v,t[11]=b,t[12]=x,t[13]=S,t[14]=C,t[15]=O}else h=t[8],g=t[9],v=t[10],b=t[11],x=t[12],S=t[13],C=t[14],O=t[15];let k;t[57]===h?k=t[58]:(k=(0,D.jsx)(`tbody`,{children:h}),t[57]=h,t[58]=k);let j;t[59]!==k||t[60]!==g||t[61]!==v?(j=(0,D.jsxs)(`table`,{className:g,children:[v,k]}),t[59]=k,t[60]=g,t[61]=v,t[62]=j):j=t[62];let M;t[63]!==j||t[64]!==b||t[65]!==x?(M=(0,D.jsxs)(`details`,{className:b,children:[x,j]}),t[63]=j,t[64]=b,t[65]=x,t[66]=M):M=t[66];let N;return t[67]!==M||t[68]!==S||t[69]!==C||t[70]!==O?(N=(0,D.jsxs)(`div`,{className:S,children:[C,O,M]}),t[67]=M,t[68]=S,t[69]=C,t[70]=O,t[71]=N):N=t[71],N}function ee(e){return(0,D.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:e.name},e.name)}function te(e){return(0,D.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-4 rounded-full`,style:{background:e.farbe}}),e.name]},e.name)}function ne(e){return e.punkte.some(M)}function M(e){let[,t]=e;return t!==null}function re(e){return e.punkte}var N=[{id:`1h`,name:`1 Stunde`,text:`letzte Stunde`},{id:`24h`,name:`24 Stunden`,text:`letzte 24 Stunden`},{id:`7d`,name:`7 Tage`,text:`letzte 7 Tage`}];function ie(e){let t=(0,E.c)(6),{wert:n,onWahl:r,farbe:a}=e,o=a===`box`?`border-box-rand bg-box-grund text-box-text`:`border-lab-rand bg-lab-grund text-lab-text`,s;t[0]!==o||t[1]!==r||t[2]!==n?(s=N.map(e=>(0,D.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-pressed":n===e.id,className:i(`h-9 rounded-full border px-4 text-sm`,n===e.id?o:`border-white/10 text-text-2 hover:border-white/20 hover:text-foreground`),children:e.name},e.id)),t[0]=o,t[1]=r,t[2]=n,t[3]=s):s=t[3];let c;return t[4]===s?c=t[5]:(c=(0,D.jsx)(`div`,{role:`group`,"aria-label":`Zeitraum`,className:`flex flex-wrap gap-2`,children:s}),t[4]=s,t[5]=c),c}function P(e){let t=(0,E.c)(9),{titel:n,rechts:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,D.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]!==r||t[3]!==a?(o=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[a,r]}),t[2]=r,t[3]=a,t[4]=o):o=t[4];let s;return t[5]!==i||t[6]!==o||t[7]!==n?(s=(0,D.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 flaeche rounded-2xl p-4 sm:p-5`,children:[o,i]}),t[5]=i,t[6]=o,t[7]=n,t[8]=s):s=t[8],s}var F=e=>N.find(t=>t.id===e)?.text??``;function I(){let e=(0,E.c)(97),[t,n]=(0,T.useState)(`1h`),r=l(t),a=o(),s;e[0]===r.data?.reihen?s=e[1]:(s=r.data?.reihen??{},e[0]=r.data?.reihen,e[1]=s);let c=s,u;e[2]===r.data?.aktuell?u=e[3]:(u=r.data?.aktuell??{},e[2]=r.data?.aktuell,e[3]=u);let d=u,f=t===`7d`,p;e[4]!==d||e[5]!==c?(p=(e,t)=>e??d[t]??g(c[t]),e[4]=d,e[5]=c,e[6]=p):p=e[6];let h=p,_;e[7]===t?_=e[8]:(_=(0,D.jsx)(ie,{wert:t,onWahl:n,farbe:`box`}),e[7]=t,e[8]=_);let v;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,D.jsx)(`span`,{className:`text-sm text-text-3`,children:`Zahlen live, Verläufe im Minutentakt`}),e[9]=v):v=e[9];let y;e[10]===_?y=e[11]:(y=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[_,v]}),e[10]=_,e[11]=y);let x=a?.cpu,S;e[12]!==x||e[13]!==h?(S=h(x,`cpu`),e[12]=x,e[13]=h,e[14]=S):S=e[14];let C=a?.cpu,w;e[15]!==C||e[16]!==h?(w=m(h(C,`cpu`),85,95),e[15]=C,e[16]=h,e[17]=w):w=e[17];let O;e[18]===t?O=e[19]:(O=F(t),e[18]=t,e[19]=O);let A;e[20]!==O||e[21]!==S||e[22]!==w?(A=(0,D.jsx)(k,{label:`CPU`,wert:S,einheit:`prozent`,max:100,zustand:w,zeitraumText:O}),e[20]=O,e[21]=S,e[22]=w,e[23]=A):A=e[23];let ee=a?.ram,te;e[24]!==ee||e[25]!==h?(te=h(ee,`ram`),e[24]=ee,e[25]=h,e[26]=te):te=e[26];let ne=a?.ram,M;e[27]!==ne||e[28]!==h?(M=m(h(ne,`ram`),85,95),e[27]=ne,e[28]=h,e[29]=M):M=e[29];let re;e[30]===t?re=e[31]:(re=F(t),e[30]=t,e[31]=re);let N;e[32]!==te||e[33]!==M||e[34]!==re?(N=(0,D.jsx)(k,{label:`Speicher`,wert:te,einheit:`prozent`,max:100,zustand:M,zeitraumText:re}),e[32]=te,e[33]=M,e[34]=re,e[35]=N):N=e[35];let I=a?.gpu,L;e[36]!==I||e[37]!==h?(L=h(I,`gpu`),e[36]=I,e[37]=h,e[38]=L):L=e[38];let R;e[39]===t?R=e[40]:(R=F(t),e[39]=t,e[40]=R);let z;e[41]!==L||e[42]!==R?(z=(0,D.jsx)(k,{label:`GPU`,wert:L,einheit:`prozent`,max:100,zeitraumText:R}),e[41]=L,e[42]=R,e[43]=z):z=e[43];let B=a?.temp_cpu,V;e[44]!==B||e[45]!==h?(V=h(B,`temp_cpu`),e[44]=B,e[45]=h,e[46]=V):V=e[46];let H=a?.temp_cpu,U;e[47]!==H||e[48]!==h?(U=m(h(H,`temp_cpu`),80,90),e[47]=H,e[48]=h,e[49]=U):U=e[49];let W;e[50]===t?W=e[51]:(W=F(t),e[50]=t,e[51]=W);let ae;e[52]!==V||e[53]!==U||e[54]!==W?(ae=(0,D.jsx)(k,{label:`CPU-Temp.`,wert:V,einheit:`grad`,max:100,zustand:U,zeitraumText:W}),e[52]=V,e[53]=U,e[54]=W,e[55]=ae):ae=e[55];let G=a?.temp_gpu,K;e[56]!==G||e[57]!==h?(K=h(G,`temp_gpu`),e[56]=G,e[57]=h,e[58]=K):K=e[58];let oe=a?.temp_gpu,q;e[59]!==oe||e[60]!==h?(q=m(h(oe,`temp_gpu`),80,90),e[59]=oe,e[60]=h,e[61]=q):q=e[61];let J;e[62]===t?J=e[63]:(J=F(t),e[62]=t,e[63]=J);let Y;e[64]!==K||e[65]!==q||e[66]!==J?(Y=(0,D.jsx)(k,{label:`GPU-Temp.`,wert:K,einheit:`grad`,max:100,zustand:q,zeitraumText:J}),e[64]=K,e[65]=q,e[66]=J,e[67]=Y):Y=e[67];let se=a?.disk,X;e[68]!==se||e[69]!==h?(X=h(se,`platte`),e[68]=se,e[69]=h,e[70]=X):X=e[70];let ce=a?.disk,Z;e[71]!==ce||e[72]!==h?(Z=m(h(ce,`platte`),80,90),e[71]=ce,e[72]=h,e[73]=Z):Z=e[73];let Q;e[74]===t?Q=e[75]:(Q=F(t),e[74]=t,e[75]=Q);let $;e[76]!==X||e[77]!==Z||e[78]!==Q?($=(0,D.jsx)(k,{label:`Platte`,wert:X,einheit:`prozent`,max:100,zustand:Z,zeitraumText:Q}),e[76]=X,e[77]=Z,e[78]=Q,e[79]=$):$=e[79];let le;e[80]!==A||e[81]!==N||e[82]!==z||e[83]!==ae||e[84]!==Y||e[85]!==$?(le=(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-3 xl:grid-cols-6`,children:[A,N,z,ae,Y,$]}),e[80]=A,e[81]=N,e[82]=z,e[83]=ae,e[84]=Y,e[85]=$,e[86]=le):le=e[86];let ue;e[87]!==f||e[88]!==r.data||e[89]!==r.isError||e[90]!==r.isPlaceholderData||e[91]!==c?(ue=r.isError&&!r.data?(0,D.jsx)(b,{text:`Der Verlauf ist noch nicht da: Die KI-Box sammelt Messwerte, sobald der neue Stand läuft. Die Zahlen oben sind live.`}):(0,D.jsxs)(`div`,{className:i(`grid gap-5 md:gap-6 xl:grid-cols-2`,r.isPlaceholderData&&`opacity-70`),children:[(0,D.jsx)(P,{titel:`CPU`,children:(0,D.jsx)(j,{titel:`CPU-Auslastung in Prozent`,einheit:`prozent`,langerZeitraum:f,reihen:[{name:`CPU`,punkte:c.cpu??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`Speicher`,children:(0,D.jsx)(j,{titel:`Belegter Speicher in Prozent`,einheit:`prozent`,langerZeitraum:f,reihen:[{name:`Speicher`,punkte:c.ram??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`GPU`,children:(0,D.jsx)(j,{titel:`GPU-Last in Prozent`,einheit:`prozent`,langerZeitraum:f,reihen:[{name:`GPU`,punkte:c.gpu??[],farbe:`var(--reihe-1)`}]})}),(0,D.jsx)(P,{titel:`Temperatur`,children:(0,D.jsx)(j,{titel:`Temperatur von CPU und GPU in Grad`,einheit:`grad`,langerZeitraum:f,reihen:[{name:`CPU`,punkte:c.temp_cpu??[],farbe:`var(--reihe-1)`},{name:`GPU`,punkte:c.temp_gpu??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Netz`,children:(0,D.jsx)(j,{titel:`Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:f,reihen:[{name:`empfangen`,punkte:c.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:c.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Tokens pro Minute`,children:(0,D.jsx)(j,{titel:`Erzeugte und gelesene Tokens pro Minute`,einheit:`anzahl`,langerZeitraum:f,reihen:[{name:`Tokens`,punkte:c.tokens??[],farbe:`var(--reihe-1)`}]})})]}),e[87]=f,e[88]=r.data,e[89]=r.isError,e[90]=r.isPlaceholderData,e[91]=c,e[92]=ue):ue=e[92];let de;return e[93]!==le||e[94]!==ue||e[95]!==y?(de=(0,D.jsxs)(D.Fragment,{children:[y,le,ue]}),e[93]=le,e[94]=ue,e[95]=y,e[96]=de):de=e[96],de}function L(e){let t=(0,E.c)(43),{g:n,zeitraum:r}=e,i=n.aktuell,a=n.id,o=n.name,s;t[0]!==n.art||t[1]!==n.name?(s=x({art:n.art,name:n.name}),t[0]=n.art,t[1]=n.name,t[2]=s):s=t[2];let c;t[3]===s?c=t[4]:(c=(0,D.jsx)(v,{bild:s,groesse:`sm`}),t[3]=s,t[4]=c);let l;t[5]===n.name?l=t[6]:(l=(0,D.jsx)(`h3`,{className:`text-[15px] font-semibold`,children:n.name}),t[5]=n.name,t[6]=l);let u;t[7]!==c||t[8]!==l?(u=(0,D.jsxs)(`span`,{className:`flex min-w-0 items-center gap-3`,children:[c,l]}),t[7]=c,t[8]=l,t[9]=u):u=t[9];let d;t[10]===i.cpu?d=t[11]:(d=i.cpu==null?`–`:`${Math.round(i.cpu)} %`,t[10]=i.cpu,t[11]=d);let f;t[12]===i.ram?f=t[13]:(f=i.ram==null?`–`:`${Math.round(i.ram)} %`,t[12]=i.ram,t[13]=f);let p;t[14]===i.uptime_s?p=t[15]:(p=h(i.uptime_s),t[14]=i.uptime_s,t[15]=p);let m;t[16]!==d||t[17]!==f||t[18]!==p?(m=(0,D.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`CPU `,d,` · RAM `,f,` · läuft `,p]}),t[16]=d,t[17]=f,t[18]=p,t[19]=m):m=t[19];let g;t[20]!==m||t[21]!==u?(g=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[u,m]}),t[20]=m,t[21]=u,t[22]=g):g=t[22];let _=`${n.name}: CPU und Speicher in Prozent`,y=r===`7d`,b;t[23]===n.reihen.cpu?b=t[24]:(b=n.reihen.cpu??[],t[23]=n.reihen.cpu,t[24]=b);let S;t[25]===b?S=t[26]:(S={name:`CPU`,punkte:b,farbe:`var(--reihe-1)`},t[25]=b,t[26]=S);let C;t[27]===n.reihen.ram?C=t[28]:(C=n.reihen.ram??[],t[27]=n.reihen.ram,t[28]=C);let w;t[29]===C?w=t[30]:(w={name:`Speicher`,punkte:C,farbe:`var(--reihe-2)`},t[29]=C,t[30]=w);let T;t[31]!==S||t[32]!==w?(T=[S,w],t[31]=S,t[32]=w,t[33]=T):T=t[33];let O;t[34]!==_||t[35]!==y||t[36]!==T?(O=(0,D.jsx)(j,{titel:_,einheit:`prozent`,langerZeitraum:y,hoehe:140,reihen:T}),t[34]=_,t[35]=y,t[36]=T,t[37]=O):O=t[37];let k;return t[38]!==n.id||t[39]!==n.name||t[40]!==g||t[41]!==O?(k=(0,D.jsxs)(`section`,{id:a,"aria-label":o,className:`flex min-w-0 scroll-mt-6 flex-col gap-3 flaeche rounded-2xl p-4 sm:p-5`,children:[g,O]}),t[38]=n.id,t[39]=n.name,t[40]=g,t[41]=O,t[42]=k):k=t[42],k}function R(){let e=(0,E.c)(31),[t,n]=(0,T.useState)(`1h`),r=c(),o=s(),l=r.data?.rolle===`homelab`||!!(o.data?.eingerichtet&&o.data.erreichbar),d=a(t,l),f;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(f={select:H},e[0]=f):f=e[0];let p=u(f),g,_;if(e[1]!==p||e[2]!==d.data?(g=()=>{p&&d.data&&document.getElementById(p)?.scrollIntoView({block:`start`})},_=[p,d.data],e[1]=p,e[2]=d.data,e[3]=g,e[4]=_):(g=e[3],_=e[4]),(0,T.useEffect)(g,_),!l){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(b,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[5]=t):t=e[5],t}if(d.isPending){let t;return e[6]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(b,{text:`Die Messwerte kommen gleich …`}),e[6]=t):t=e[6],t}if(!d.data){let t;return e[7]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsx)(b,{text:`Noch keine Messwerte: Der Ausführer schickt sie jede Minute, sobald sein neuer Stand eingespielt ist.`}),e[7]=t):t=e[7],t}let v,y,x,C;if(e[8]!==d.data.geraete||e[9]!==d.isPlaceholderData||e[10]!==t){let r=d.data.geraete.find(V),a=d.data.geraete.filter(B),o=t===`7d`,s=r?.aktuell??{},c;e[15]===t?c=e[16]:(c=(0,D.jsx)(ie,{wert:t,onWahl:n,farbe:`homelab`}),e[15]=t,e[16]=c);let l;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,D.jsx)(`span`,{className:`text-sm text-text-3`,children:`Werte im Minutentakt vom Proxmox-Host`}),e[17]=l):l=e[17],e[18]===c?x=e[19]:(x=(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[c,l]}),e[18]=c,e[19]=x),C=r&&(0,D.jsxs)(S,{titel:`Proxmox-Host`,rechts:(0,D.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`läuft `,h(s.uptime_s),s.load1==null?``:` · Last ${s.load1.toFixed(2).replace(`.`,`,`)}`]}),children:[(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,D.jsx)(k,{label:`CPU`,wert:s.cpu,einheit:`prozent`,max:100,punkte:r.reihen.cpu,zustand:m(s.cpu??null,85,95),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Speicher`,wert:s.ram,einheit:`prozent`,max:100,punkte:r.reihen.ram,zustand:m(s.ram??null,90,95),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Temperatur`,wert:s.temp_cpu,einheit:`grad`,max:100,punkte:r.reihen.temp_cpu,zustand:m(s.temp_cpu??null,80,90),zeitraumText:F(t)}),(0,D.jsx)(k,{label:`Systemplatte`,wert:s.platte,einheit:`prozent`,max:100,punkte:r.reihen.platte,zustand:m(s.platte??null,80,90),zeitraumText:F(t)})]}),(0,D.jsxs)(`div`,{className:i(`grid gap-5 xl:grid-cols-2`,d.isPlaceholderData&&`opacity-70`),children:[(0,D.jsx)(P,{titel:`CPU und Speicher`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: CPU und Speicher in Prozent`,einheit:`prozent`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.cpu??[],farbe:`var(--reihe-1)`},{name:`Speicher`,punkte:r.reihen.ram??[],farbe:`var(--reihe-2)`}]})}),(0,D.jsx)(P,{titel:`Netz`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:o,reihen:[{name:`empfangen`,punkte:r.reihen.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:r.reihen.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(r.reihen.temp_cpu?.some(z)??!1)&&(0,D.jsx)(P,{titel:`Temperatur`,children:(0,D.jsx)(j,{titel:`Proxmox-Host: CPU-Temperatur in Grad`,einheit:`grad`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.temp_cpu??[],farbe:`var(--reihe-1)`}]})})]})]});let u=d.isPlaceholderData&&`opacity-70`;e[20]===u?v=e[21]:(v=i(`grid gap-5 md:gap-6 xl:grid-cols-2`,u),e[20]=u,e[21]=v);let f;e[22]===t?f=e[23]:(f=e=>(0,D.jsx)(L,{g:e,zeitraum:t},e.id),e[22]=t,e[23]=f),y=a.map(f),e[8]=d.data.geraete,e[9]=d.isPlaceholderData,e[10]=t,e[11]=v,e[12]=y,e[13]=x,e[14]=C}else v=e[11],y=e[12],x=e[13],C=e[14];let w;e[24]!==v||e[25]!==y?(w=(0,D.jsx)(`div`,{className:v,children:y}),e[24]=v,e[25]=y,e[26]=w):w=e[26];let O;return e[27]!==x||e[28]!==C||e[29]!==w?(O=(0,D.jsxs)(D.Fragment,{children:[x,C,w]}),e[27]=x,e[28]=C,e[29]=w,e[30]=O):O=e[30],O}function z(e){let[,t]=e;return t!==null}function B(e){return e.art!==`proxmox-host`}function V(e){return e.art===`proxmox-host`}function H(e){return e.location.hash}export{I as BoxMonitoringSeite,R as HomelabMonitoringSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Lagekopf-Cap3dqRY.js b/frontend/dist/assets/Plattenliste-g8leg5Tm.js similarity index 74% rename from frontend/dist/assets/Lagekopf-Cap3dqRY.js rename to frontend/dist/assets/Plattenliste-g8leg5Tm.js index a6afc60..b9ba83f 100644 --- a/frontend/dist/assets/Lagekopf-Cap3dqRY.js +++ b/frontend/dist/assets/Plattenliste-g8leg5Tm.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Protokollfenster-DeA4EXoc.js","assets/dist-aE7UmubC.js","assets/sheet-DG7u1mB-.js","assets/dist-CakcBaML.js","assets/button-BHVKhtQ6.js","assets/index-B_hvuxH0.js","assets/abfragen-pD_qBEtc.js","assets/useSelector-DBNxxw17.js","assets/useMatch-DDVpPKJI.js","assets/useRouterState-DJr4hrdj.js","assets/index-Cz-7Ak8T.css"])))=>i.map(i=>d[i]); -import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Et as a,Mt as o,bt as s,h as c,ht as l,yt as u,zt as d}from"./abfragen-pD_qBEtc.js";import{t as f}from"./button-BHVKhtQ6.js";import{R as p,W as m}from"./index-B_hvuxH0.js";var h=r(),g=t(e(),1),_=n(),v=(0,g.lazy)(()=>m(()=>import(`./Protokollfenster-DeA4EXoc.js`).then(e=>({default:e.Protokollfenster})),__vite__mapDeps([0,1,2,3,4]))),y=(0,g.lazy)(()=>m(()=>import(`./index-B_hvuxH0.js`).then(e=>e.g).then(e=>({default:e.Bestaetigen})),__vite__mapDeps([5,1,3,4,6,7,8,9,10])));function b({h:e,basis:t}){let n=c(t),[r,p]=(0,g.useState)(null),[m,h]=(0,g.useState)(null),b=e.stufe===`rot`,x=m?o(e,m):null;async function S(){try{let n=await d(`${t}/${encodeURIComponent(e.id)}/aktion/protokoll`);p({titel:e.titel,text:n.text||n.out||n.err||`Kein Protokoll vorhanden.`})}catch(e){a(`fehler`,e.message)}}function C(t){n.mutate({hinweis:e.id,aktion:t.id,label:t.label})}function w(t){t.id===`protokoll`?S():o(e,t)?h(t):C(t)}let T=e.zustand===`stumm`;return(0,_.jsxs)(`article`,{className:i(`flex flex-col gap-2.5 rounded-2xl px-4 py-3.5 ring-1 ring-inset`,T?`bg-white/[0.03] opacity-70 ring-white/10`:b?`bg-rot/[0.07] ring-rot/35`:`bg-bernstein/[0.06] ring-bernstein/30`),children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,_.jsx)(`h3`,{className:`min-w-0 flex-1 font-sans text-[16.5px] leading-snug font-semibold`,children:e.titel}),(0,_.jsx)(`span`,{className:i(`etikett shrink-0 rounded-full px-2.5 py-0.5 text-[10.5px] tracking-[0.12em] ring-1 ring-inset`,b?`bg-rot/12 text-rot-text ring-rot/40`:`bg-bernstein/10 text-bernstein ring-bernstein/35`),children:b?`Jetzt`:`Prüfen`})]}),(0,_.jsxs)(`p`,{className:`ziffern text-[13px] text-text-3`,children:[u(e.seit),` · zuletzt `,s(e.zuletzt),e.zustand===`neu`&&(0,_.jsx)(`span`,{className:`font-sans text-cyan-text`,children:` · neu`}),T&&e.stumm_bis&&(0,_.jsxs)(`span`,{className:`font-sans`,children:[` · stumm bis `,l(new Date(e.stumm_bis*1e3).toISOString()).toLowerCase()]})]}),e.text&&(0,_.jsx)(`p`,{className:`text-[15px] leading-relaxed break-words text-text-2`,children:e.text}),(0,_.jsxs)(`div`,{className:`flex flex-wrap gap-2.5 pt-1`,children:[e.aktionen.map((e,t)=>(0,_.jsx)(f,{variant:t===0&&e.id!==`protokoll`?`default`:`outline`,size:`sm`,disabled:n.isPending,onClick:()=>w(e),children:e.label},e.id)),e.zustand===`neu`&&(0,_.jsx)(f,{variant:`ghost`,size:`sm`,disabled:n.isPending,onClick:()=>C({id:`gesehen`,label:`Gesehen`}),children:`Gesehen`}),e.zustand&&!T&&(0,_.jsx)(f,{variant:`ghost`,size:`sm`,disabled:n.isPending,onClick:()=>C({id:`stumm`,label:`24 h stumm`}),children:`24 h stumm`}),T&&(0,_.jsx)(f,{variant:`ghost`,size:`sm`,disabled:n.isPending,onClick:()=>C({id:`laut`,label:`Wieder melden`}),children:`Wieder melden`})]}),r&&(0,_.jsx)(g.Suspense,{fallback:null,children:(0,_.jsx)(v,{offen:!0,titel:r.titel,text:r.text,onSchliessen:()=>p(null)})}),m&&x&&(0,_.jsx)(g.Suspense,{fallback:null,children:(0,_.jsx)(y,{offen:!0,titel:x.titel,text:x.text,knopf:x.knopf,gesperrt:n.isPending,onNein:()=>h(null),onJa:()=>{C(m),h(null)}})})]})}function x(e){let t=(0,h.c)(15),{hinweise:n,verlauf:r,basis:i}=e,a=i===void 0?`/api/hinweise`:i,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=new Date().toDateString(),t[0]=o):o=t[0];let s=o,c;if(t[1]!==n.length||t[2]!==r){c=Symbol.for(`react.early_return_sentinel`);bb0:{let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=e=>(e.art===`erledigt`||e.art===`auto`)&&new Date(e.ts*1e3).toDateString()===s,t[4]=e):e=t[4];let i=r.filter(e);if(n.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,_.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine offenen Punkte. Der Wächter prüft jede Minute.`}),t[5]=e):e=t[5];let n=i.length>0&&(0,_.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm text-text-3`,children:i.slice(0,4).map(S)}),r;t[6]===n?r=t[7]:(r=(0,_.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e,n]}),t[6]=n,t[7]=r),c=r;break bb0}}t[1]=n.length,t[2]=r,t[3]=c}else c=t[3];if(c!==Symbol.for(`react.early_return_sentinel`))return c;let l;if(t[8]!==a||t[9]!==n){let e;t[11]===a?e=t[12]:(e=e=>(0,_.jsx)(b,{h:e,basis:a},e.id),t[11]=a,t[12]=e),l=n.map(e),t[8]=a,t[9]=n,t[10]=l}else l=t[10];let u;return t[13]===l?u=t[14]:(u=(0,_.jsx)(`div`,{className:`flex flex-col gap-3`,children:l}),t[13]=l,t[14]=u),u}function S(e){return(0,_.jsxs)(`li`,{children:[(0,_.jsx)(`span`,{className:`ziffern`,children:s(e.ts)}),` · `,e.text]},`${e.id}-${e.ts}`)}var C={ok:{block:`bg-gruen/[0.07] ring-gruen/30`,glut:`var(--gruen)`,text:`text-gruen`},info:{block:`bg-cyan/[0.07] ring-cyan/30`,glut:`var(--cyan)`,text:`text-cyan-text`},gelb:{block:`bg-bernstein/[0.08] ring-bernstein/35`,glut:`var(--bernstein)`,text:`text-bernstein`},rot:{block:`bg-rot/10 ring-rot/40`,glut:`var(--rot)`,text:`text-rot-text`},stumm:{block:`bg-white/[0.04] ring-white/15`,glut:`var(--text-3)`,text:`text-text-2`}};function w(e){let t=(0,h.c)(32),{art:n,oben:r,mitte:a,unten:o,aktiv:s,onAnsehen:c,label:l,children:u}=e,d=C[n],f=`radial-gradient(closest-side, color-mix(in srgb, ${d.glut} 20%, transparent), transparent)`,p;t[0]===f?p=t[1]:(p=(0,_.jsx)(`div`,{"aria-hidden":!0,className:`glut-atmet pointer-events-none absolute -top-40 -left-32 size-[460px] rounded-full`,style:{background:f}}),t[0]=f,t[1]=p);let m=!s,g=`${r}: ${a}`,v=s?`cursor-pointer hover:brightness-125`:`cursor-default`,y=n===`gelb`&&`lampe-atmet`,b;t[2]!==d.block||t[3]!==v||t[4]!==y?(b=i(`flex min-h-[132px] flex-col items-start justify-center gap-1.5 rounded-2xl px-5 py-4 text-left ring-1 ring-inset transition-[filter]`,d.block,v,y),t[2]=d.block,t[3]=v,t[4]=y,t[5]=b):b=t[5];let x;t[6]===r?x=t[7]:(x=(0,_.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.18em] text-text-3`,children:r}),t[6]=r,t[7]=x);let S;t[8]===d.text?S=t[9]:(S=i(`text-[30px] leading-tight font-semibold tracking-[-0.01em] sm:text-[34px]`,d.text),t[8]=d.text,t[9]=S);let w;t[10]!==a||t[11]!==S?(w=(0,_.jsx)(`span`,{className:S,children:a}),t[10]=a,t[11]=S,t[12]=w):w=t[12];let T;t[13]===o?T=t[14]:(T=(0,_.jsx)(`span`,{className:`text-[13.5px] text-text-2`,children:o}),t[13]=o,t[14]=T);let E;t[15]!==c||t[16]!==w||t[17]!==T||t[18]!==m||t[19]!==g||t[20]!==b||t[21]!==x?(E=(0,_.jsxs)(`button`,{type:`button`,onClick:c,disabled:m,"aria-label":g,className:b,children:[x,w,T]}),t[15]=c,t[16]=w,t[17]=T,t[18]=m,t[19]=g,t[20]=b,t[21]=x,t[22]=E):E=t[22];let D;t[23]===u?D=t[24]:(D=(0,_.jsx)(`ul`,{className:`m-0 grid list-none grid-cols-1 gap-2 p-0 min-[480px]:grid-cols-2 xl:grid-cols-4`,children:u}),t[23]=u,t[24]=D);let O;t[25]!==E||t[26]!==D?(O=(0,_.jsxs)(`div`,{className:`relative grid gap-4 p-4 sm:p-5 lg:grid-cols-[280px_minmax(0,1fr)] lg:gap-5`,children:[E,D]}),t[25]=E,t[26]=D,t[27]=O):O=t[27];let k;return t[28]!==l||t[29]!==O||t[30]!==p?(k=(0,_.jsxs)(`section`,{"aria-label":l,className:`auftauchen flaeche relative overflow-hidden rounded-3xl`,children:[p,O]}),t[28]=l,t[29]=O,t[30]=p,t[31]=k):k=t[31],k}var T={ok:`ok`,aus:`aus`,warn:`warn`,info:`info`,fehler:`rot`},E={ok:`text-text-3`,aus:`text-text-3`,warn:`text-bernstein`,info:`text-cyan-text`,fehler:`text-rot-text`},D={ok:`in Ordnung`,aus:`aus`,warn:`braucht Aufmerksamkeit`,info:`Info`,fehler:`Störung`};function O(e){let t=(0,h.c)(25),{bild:n,name:r,wert:a,zustand:o,zahl:s,onClick:c}=e,l=T[o],u;t[0]!==n||t[1]!==l?(u=(0,_.jsx)(p,{bild:n,punkt:l}),t[0]=n,t[1]=l,t[2]=u):u=t[2];let d;t[3]===r?d=t[4]:(d=(0,_.jsx)(`span`,{className:`truncate text-[14.5px] leading-snug font-medium`,children:r}),t[3]=r,t[4]=d);let f=E[o],m;t[5]===f?m=t[6]:(m=i(`truncate text-[12.5px] leading-snug`,f),t[5]=f,t[6]=m);let g;t[7]!==m||t[8]!==a?(g=(0,_.jsx)(`span`,{className:m,children:a}),t[7]=m,t[8]=a,t[9]=g):g=t[9];let v;t[10]===s?v=t[11]:(v=s&&(0,_.jsx)(`span`,{className:i(`truncate text-[12px] leading-snug`,s.stufe===`rot`?`text-rot-text`:s.stufe===`gelb`?`text-bernstein`:`text-text-3`),children:s.text}),t[10]=s,t[11]=v);let y=D[o],b;t[12]===y?b=t[13]:(b=(0,_.jsx)(`span`,{className:`sr-only`,children:y}),t[12]=y,t[13]=b);let x;t[14]!==d||t[15]!==g||t[16]!==v||t[17]!==b?(x=(0,_.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[d,g,v,b]}),t[14]=d,t[15]=g,t[16]=v,t[17]=b,t[18]=x):x=t[18];let S;t[19]!==x||t[20]!==u?(S=(0,_.jsxs)(_.Fragment,{children:[u,x]}),t[19]=x,t[20]=u,t[21]=S):S=t[21];let C=S,w;return t[22]!==C||t[23]!==c?(w=(0,_.jsx)(`li`,{children:c?(0,_.jsx)(`button`,{type:`button`,onClick:c,className:i(`flaeche-innen flex h-full w-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 text-left`,`transition-colors hover:border-white/20 hover:bg-white/[0.05]`),children:C}):(0,_.jsx)(`div`,{className:`flaeche-innen flex h-full w-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 text-left`,children:C})}),t[22]=C,t[23]=c,t[24]=w):w=t[24],w}export{w as n,x as r,O as t}; \ No newline at end of file +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Protokollfenster-DeA4EXoc.js","assets/dist-aE7UmubC.js","assets/sheet-DG7u1mB-.js","assets/dist-CakcBaML.js","assets/button-BHVKhtQ6.js","assets/index-CuG_RlEw.js","assets/abfragen-CDCgpAto.js","assets/useSelector-DBNxxw17.js","assets/useMatch-DDVpPKJI.js","assets/useRouterState-DJr4hrdj.js","assets/index-CyAQuGX0.css"])))=>i.map(i=>d[i]); +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Ct as a,Ft as o,Ht as s,St as c,g as l,kt as u,vt as d}from"./abfragen-CDCgpAto.js";import{t as f}from"./button-BHVKhtQ6.js";import{R as p,W as m}from"./index-CuG_RlEw.js";var h=r(),g=t(e(),1),_=n(),v=(0,g.lazy)(()=>m(()=>import(`./Protokollfenster-DeA4EXoc.js`).then(e=>({default:e.Protokollfenster})),__vite__mapDeps([0,1,2,3,4]))),y=(0,g.lazy)(()=>m(()=>import(`./index-CuG_RlEw.js`).then(e=>e.g).then(e=>({default:e.Bestaetigen})),__vite__mapDeps([5,1,3,4,6,7,8,9,10])));function b({h:e,basis:t}){let n=l(t),[r,p]=(0,g.useState)(null),[m,h]=(0,g.useState)(null),b=e.stufe===`rot`,x=m?o(e,m):null;async function S(){try{let n=await s(`${t}/${encodeURIComponent(e.id)}/aktion/protokoll`);p({titel:e.titel,text:n.text||n.out||n.err||`Kein Protokoll vorhanden.`})}catch(e){u(`fehler`,e.message)}}function C(t){n.mutate({hinweis:e.id,aktion:t.id,label:t.label})}function w(t){t.id===`protokoll`?S():o(e,t)?h(t):C(t)}let T=e.zustand===`stumm`;return(0,_.jsxs)(`article`,{className:i(`flex flex-col gap-2.5 rounded-2xl px-4 py-3.5 ring-1 ring-inset`,T?`bg-white/[0.03] opacity-70 ring-white/10`:b?`bg-rot/[0.07] ring-rot/35`:`bg-bernstein/[0.06] ring-bernstein/30`),children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,_.jsx)(`h3`,{className:`min-w-0 flex-1 font-sans text-[16.5px] leading-snug font-semibold`,children:e.titel}),(0,_.jsx)(`span`,{className:i(`etikett shrink-0 rounded-full px-2.5 py-0.5 text-[10.5px] tracking-[0.12em] ring-1 ring-inset`,b?`bg-rot/12 text-rot-text ring-rot/40`:`bg-bernstein/10 text-bernstein ring-bernstein/35`),children:b?`Jetzt`:`Prüfen`})]}),(0,_.jsxs)(`p`,{className:`ziffern text-[13px] text-text-3`,children:[c(e.seit),` · zuletzt `,a(e.zuletzt),e.zustand===`neu`&&(0,_.jsx)(`span`,{className:`font-sans text-cyan-text`,children:` · neu`}),T&&e.stumm_bis&&(0,_.jsxs)(`span`,{className:`font-sans`,children:[` · stumm bis `,d(new Date(e.stumm_bis*1e3).toISOString()).toLowerCase()]})]}),e.text&&(0,_.jsx)(`p`,{className:`text-[15px] leading-relaxed break-words text-text-2`,children:e.text}),(0,_.jsxs)(`div`,{className:`flex flex-wrap gap-2.5 pt-1`,children:[e.aktionen.map((e,t)=>(0,_.jsx)(f,{variant:t===0&&e.id!==`protokoll`?`default`:`outline`,size:`sm`,disabled:n.isPending,onClick:()=>w(e),children:e.label},e.id)),e.zustand===`neu`&&(0,_.jsx)(f,{variant:`ghost`,size:`sm`,disabled:n.isPending,onClick:()=>C({id:`gesehen`,label:`Gesehen`}),children:`Gesehen`}),e.zustand&&!T&&(0,_.jsx)(f,{variant:`ghost`,size:`sm`,disabled:n.isPending,onClick:()=>C({id:`stumm`,label:`24 h stumm`}),children:`24 h stumm`}),T&&(0,_.jsx)(f,{variant:`ghost`,size:`sm`,disabled:n.isPending,onClick:()=>C({id:`laut`,label:`Wieder melden`}),children:`Wieder melden`})]}),r&&(0,_.jsx)(g.Suspense,{fallback:null,children:(0,_.jsx)(v,{offen:!0,titel:r.titel,text:r.text,onSchliessen:()=>p(null)})}),m&&x&&(0,_.jsx)(g.Suspense,{fallback:null,children:(0,_.jsx)(y,{offen:!0,titel:x.titel,text:x.text,knopf:x.knopf,gesperrt:n.isPending,onNein:()=>h(null),onJa:()=>{C(m),h(null)}})})]})}function x(e){let t=(0,h.c)(15),{hinweise:n,verlauf:r,basis:i}=e,a=i===void 0?`/api/hinweise`:i,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=new Date().toDateString(),t[0]=o):o=t[0];let s=o,c;if(t[1]!==n.length||t[2]!==r){c=Symbol.for(`react.early_return_sentinel`);bb0:{let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=e=>(e.art===`erledigt`||e.art===`auto`)&&new Date(e.ts*1e3).toDateString()===s,t[4]=e):e=t[4];let i=r.filter(e);if(n.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,_.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine offenen Punkte. Der Wächter prüft jede Minute.`}),t[5]=e):e=t[5];let n=i.length>0&&(0,_.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm text-text-3`,children:i.slice(0,4).map(S)}),r;t[6]===n?r=t[7]:(r=(0,_.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e,n]}),t[6]=n,t[7]=r),c=r;break bb0}}t[1]=n.length,t[2]=r,t[3]=c}else c=t[3];if(c!==Symbol.for(`react.early_return_sentinel`))return c;let l;if(t[8]!==a||t[9]!==n){let e;t[11]===a?e=t[12]:(e=e=>(0,_.jsx)(b,{h:e,basis:a},e.id),t[11]=a,t[12]=e),l=n.map(e),t[8]=a,t[9]=n,t[10]=l}else l=t[10];let u;return t[13]===l?u=t[14]:(u=(0,_.jsx)(`div`,{className:`flex flex-col gap-3`,children:l}),t[13]=l,t[14]=u),u}function S(e){return(0,_.jsxs)(`li`,{children:[(0,_.jsx)(`span`,{className:`ziffern`,children:a(e.ts)}),` · `,e.text]},`${e.id}-${e.ts}`)}var C={ok:{block:`bg-gruen/[0.07] ring-gruen/30`,glut:`var(--gruen)`,text:`text-gruen`},info:{block:`bg-cyan/[0.07] ring-cyan/30`,glut:`var(--cyan)`,text:`text-cyan-text`},gelb:{block:`bg-bernstein/[0.08] ring-bernstein/35`,glut:`var(--bernstein)`,text:`text-bernstein`},rot:{block:`bg-rot/10 ring-rot/40`,glut:`var(--rot)`,text:`text-rot-text`},stumm:{block:`bg-white/[0.04] ring-white/15`,glut:`var(--text-3)`,text:`text-text-2`}};function w(e){let t=(0,h.c)(32),{art:n,oben:r,mitte:a,unten:o,aktiv:s,onAnsehen:c,label:l,children:u}=e,d=C[n],f=`radial-gradient(closest-side, color-mix(in srgb, ${d.glut} 20%, transparent), transparent)`,p;t[0]===f?p=t[1]:(p=(0,_.jsx)(`div`,{"aria-hidden":!0,className:`glut-atmet pointer-events-none absolute -top-40 -left-32 size-[460px] rounded-full`,style:{background:f}}),t[0]=f,t[1]=p);let m=!s,g=`${r}: ${a}`,v=s?`cursor-pointer hover:brightness-125`:`cursor-default`,y=n===`gelb`&&`lampe-atmet`,b;t[2]!==d.block||t[3]!==v||t[4]!==y?(b=i(`flex min-h-[132px] flex-col items-start justify-center gap-1.5 rounded-2xl px-5 py-4 text-left ring-1 ring-inset transition-[filter]`,d.block,v,y),t[2]=d.block,t[3]=v,t[4]=y,t[5]=b):b=t[5];let x;t[6]===r?x=t[7]:(x=(0,_.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.18em] text-text-3`,children:r}),t[6]=r,t[7]=x);let S;t[8]===d.text?S=t[9]:(S=i(`text-[30px] leading-tight font-semibold tracking-[-0.01em] sm:text-[34px]`,d.text),t[8]=d.text,t[9]=S);let w;t[10]!==a||t[11]!==S?(w=(0,_.jsx)(`span`,{className:S,children:a}),t[10]=a,t[11]=S,t[12]=w):w=t[12];let T;t[13]===o?T=t[14]:(T=(0,_.jsx)(`span`,{className:`text-[13.5px] text-text-2`,children:o}),t[13]=o,t[14]=T);let E;t[15]!==c||t[16]!==w||t[17]!==T||t[18]!==m||t[19]!==g||t[20]!==b||t[21]!==x?(E=(0,_.jsxs)(`button`,{type:`button`,onClick:c,disabled:m,"aria-label":g,className:b,children:[x,w,T]}),t[15]=c,t[16]=w,t[17]=T,t[18]=m,t[19]=g,t[20]=b,t[21]=x,t[22]=E):E=t[22];let D;t[23]===u?D=t[24]:(D=(0,_.jsx)(`ul`,{className:`m-0 grid list-none grid-cols-1 gap-2 p-0 min-[480px]:grid-cols-2 xl:grid-cols-4`,children:u}),t[23]=u,t[24]=D);let O;t[25]!==E||t[26]!==D?(O=(0,_.jsxs)(`div`,{className:`relative grid gap-4 p-4 sm:p-5 lg:grid-cols-[280px_minmax(0,1fr)] lg:gap-5`,children:[E,D]}),t[25]=E,t[26]=D,t[27]=O):O=t[27];let k;return t[28]!==l||t[29]!==O||t[30]!==p?(k=(0,_.jsxs)(`section`,{"aria-label":l,className:`auftauchen flaeche relative overflow-hidden rounded-3xl`,children:[p,O]}),t[28]=l,t[29]=O,t[30]=p,t[31]=k):k=t[31],k}var T={ok:`ok`,aus:`aus`,warn:`warn`,info:`info`,fehler:`rot`},E={ok:`text-text-3`,aus:`text-text-3`,warn:`text-bernstein`,info:`text-cyan-text`,fehler:`text-rot-text`},D={ok:`in Ordnung`,aus:`aus`,warn:`braucht Aufmerksamkeit`,info:`Info`,fehler:`Störung`};function O(e){let t=(0,h.c)(25),{bild:n,name:r,wert:a,zustand:o,zahl:s,onClick:c}=e,l=T[o],u;t[0]!==n||t[1]!==l?(u=(0,_.jsx)(p,{bild:n,punkt:l}),t[0]=n,t[1]=l,t[2]=u):u=t[2];let d;t[3]===r?d=t[4]:(d=(0,_.jsx)(`span`,{className:`truncate text-[14.5px] leading-snug font-medium`,children:r}),t[3]=r,t[4]=d);let f=E[o],m;t[5]===f?m=t[6]:(m=i(`truncate text-[12.5px] leading-snug`,f),t[5]=f,t[6]=m);let g;t[7]!==m||t[8]!==a?(g=(0,_.jsx)(`span`,{className:m,children:a}),t[7]=m,t[8]=a,t[9]=g):g=t[9];let v;t[10]===s?v=t[11]:(v=s&&(0,_.jsx)(`span`,{className:i(`truncate text-[12px] leading-snug`,s.stufe===`rot`?`text-rot-text`:s.stufe===`gelb`?`text-bernstein`:`text-text-3`),children:s.text}),t[10]=s,t[11]=v);let y=D[o],b;t[12]===y?b=t[13]:(b=(0,_.jsx)(`span`,{className:`sr-only`,children:y}),t[12]=y,t[13]=b);let x;t[14]!==d||t[15]!==g||t[16]!==v||t[17]!==b?(x=(0,_.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[d,g,v,b]}),t[14]=d,t[15]=g,t[16]=v,t[17]=b,t[18]=x):x=t[18];let S;t[19]!==x||t[20]!==u?(S=(0,_.jsxs)(_.Fragment,{children:[u,x]}),t[19]=x,t[20]=u,t[21]=S):S=t[21];let C=S,w;return t[22]!==C||t[23]!==c?(w=(0,_.jsx)(`li`,{children:c?(0,_.jsx)(`button`,{type:`button`,onClick:c,className:i(`flaeche-innen flex h-full w-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 text-left`,`transition-colors hover:border-white/20 hover:bg-white/[0.05]`),children:C}):(0,_.jsx)(`div`,{className:`flaeche-innen flex h-full w-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 text-left`,children:C})}),t[22]=C,t[23]=c,t[24]=w):w=t[24],w}var k={ok:`bg-gruen`,gelb:`bg-bernstein`,rot:`bg-rot shadow-[0_0_8px_var(--rot)]`},A={ok:`text-text-3`,gelb:`text-bernstein`,rot:`text-rot-text`},j={nvme:`NVMe`,ssd:`SSD`,hdd:`Festplatte`};function M(e){if(!e)return null;let t=e/0xe8d4a51000;return t>=1?`${t.toLocaleString(`de-DE`,{maximumFractionDigits:1})} TB`:`${Math.round(e/1e9)} GB`}function N(e){if(!e)return null;let t=e/8766;return t>=1?`läuft seit ${t.toLocaleString(`de-DE`,{maximumFractionDigits:1})} Jahren`:`läuft seit ${Math.round(e/24)} Tagen`}function P(e){let t=(0,h.c)(5),{platten:n}=e;if(n.length===0){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,_.jsx)(`p`,{className:`text-sm text-text-3`,children:`Noch keine Werte.`}),t[0]=e):e=t[0],e}let r;t[1]===n?r=t[2]:(r=n.map(F),t[1]=n,t[2]=r);let i;return t[3]===r?i=t[4]:(i=(0,_.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r}),t[3]=r,t[4]=i),i}function F(e){let t=e.gesund===!0?`meldet sich gesund`:e.gesund===!1?`meldet sich krank`:`Zustand unbekannt`,n=[e.verbraucht==null?null:`${e.verbraucht} % verbraucht`,e.temperatur==null?null:`${e.temperatur} °C`,N(e.stunden)].filter(Boolean);return(0,_.jsxs)(`li`,{className:`flex items-start gap-3 border-t border-white/[0.06] py-3 first:border-t-0`,children:[(0,_.jsx)(`span`,{"aria-hidden":!0,className:i(`mt-1.5 size-2 shrink-0 rounded-full`,k[e.stufe])}),(0,_.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,_.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:e.name}),(0,_.jsx)(`span`,{className:`text-[13px] text-text-3`,children:[e.wo,j[e.typ]??null,M(e.groesse)].filter(Boolean).join(` · `)}),(0,_.jsxs)(`span`,{className:i(`text-sm`,e.stufe===`ok`?`text-text-2`:A[e.stufe]),children:[e.saetze.length?e.saetze.join(`; `):t,n.length?(0,_.jsxs)(`span`,{className:`text-text-3`,children:[` · `,n.join(` · `)]}):null]})]})]},e.id)}export{x as i,O as n,w as r,P as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Start-X1vycEEP.js b/frontend/dist/assets/Start-X1vycEEP.js new file mode 100644 index 0000000..fa3374b --- /dev/null +++ b/frontend/dist/assets/Start-X1vycEEP.js @@ -0,0 +1 @@ +import{i as e,r as t,t as n}from"./dist-aE7UmubC.js";import{G as r,Mt as i,Pt as a,Tt as o,at as s,bt as c,d as l,jt as u,vt as d,xt as f,yt as p,zt as m}from"./abfragen-CDCgpAto.js";import{t as h}from"./button-BHVKhtQ6.js";import{D as g,H as _,O as v,U as y,m as b,yt as x,z as S}from"./index-CuG_RlEw.js";import{i as C,n as w,r as T,t as E}from"./Plattenliste-g8leg5Tm.js";var D=t(),O=e(),k={erledigt:{text:`Erledigt`,farbe:`text-gruen-text`,punkt:`bg-gruen`},fehler:{text:`Fehler`,farbe:`text-rot-text`,punkt:`bg-rot`},geplant:{text:`Geplant`,farbe:`text-text-3`,punkt:`bg-white/25`}};function A(e){let t=(0,D.c)(23),{e:r}=e,i=k[r.status]??k.geplant,a=r.status===`geplant`&&/update/i.test(r.titel)?`text-cyan-text`:i.farbe,o;t[0]===r.zeit?o=t[1]:(o=d(r.zeit),t[0]=r.zeit,t[1]=o);let s;t[2]===o?s=t[3]:(s=(0,O.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:o}),t[2]=o,t[3]=s);let c;t[4]===r.text?c=t[5]:(c=r.text&&(0,O.jsxs)(`span`,{className:`text-text-3`,children:[`, `,r.text]}),t[4]=r.text,t[5]=c);let l;t[6]!==r.titel||t[7]!==c?(l=(0,O.jsxs)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-base break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:[r.titel,c]}),t[6]=r.titel,t[7]=c,t[8]=l):l=t[8];let u;t[9]===a?u=t[10]:(u=n(`etikett col-start-2 row-start-1 flex items-center gap-1.5 justify-self-end text-[10.5px] tracking-[0.12em] @sm:col-start-3`,a),t[9]=a,t[10]=u);let f;t[11]===i.punkt?f=t[12]:(f=n(`size-1.5 rounded-full`,i.punkt),t[11]=i.punkt,t[12]=f);let p;t[13]===f?p=t[14]:(p=(0,O.jsx)(`span`,{"aria-hidden":!0,className:f}),t[13]=f,t[14]=p);let m;t[15]!==i.text||t[16]!==u||t[17]!==p?(m=(0,O.jsxs)(`span`,{className:u,children:[p,i.text]}),t[15]=i.text,t[16]=u,t[17]=p,t[18]=m):m=t[18];let h;return t[19]!==s||t[20]!==l||t[21]!==m?(h=(0,O.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t border-white/[0.06] py-2.5 first:border-t-0 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[s,l,m]}),t[19]=s,t[20]=l,t[21]=m,t[22]=h):h=t[22],h}function j(e){let t=(0,D.c)(6),{gelaufen:n,geplant:r}=e,i;t[0]!==n||t[1]!==r?(i=[...n,...r.slice(0,5)],t[0]=n,t[1]=r,t[2]=i):i=t[2];let a=i;if(a.length===0){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Heute ist noch nichts gelaufen, und nichts ist geplant.`}),t[3]=e):e=t[3],e}let o;return t[4]===a?o=t[5]:(o=(0,O.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:a.map(M)}),t[4]=a,t[5]=o),o}function M(e){return(0,O.jsx)(A,{e},`${e.titel}-${e.zeit}`)}function N(e){let t=(0,D.c)(28),{anteil:n,farbe:r,zonen:a,mitte:o,unter:s,beschriftung:c,ariaText:l,hinweis:u}=e,d=r===void 0?`var(--box)`:r,f;t[0]===a?f=t[1]:(f=a===void 0?[]:a,t[0]=a,t[1]=f);let p=f,m=n!=null&&n>.004,h;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,O.jsx)(`path`,{d:i(0,1,75),fill:`none`,stroke:`rgb(255 255 255 / 0.07)`,strokeWidth:12,strokeLinecap:`round`}),t[2]=h):h=t[2];let g;t[3]===p?g=t[4]:(g=p.map(P),t[3]=p,t[4]=g);let _;t[5]!==n||t[6]!==d||t[7]!==m?(_=m&&(0,O.jsx)(`path`,{d:i(0,n,75),fill:`none`,stroke:d,strokeWidth:12,strokeLinecap:`round`,style:{filter:`drop-shadow(0 0 7px color-mix(in srgb, ${d} 60%, transparent))`}}),t[5]=n,t[6]=d,t[7]=m,t[8]=_):_=t[8];let v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={fontFamily:`var(--font-anzeige)`,fontSize:40,fontWeight:600,fill:`var(--foreground)`},t[9]=v):v=t[9];let y;t[10]===o?y=t[11]:(y=(0,O.jsx)(`text`,{x:`100`,y:`102`,textAnchor:`middle`,style:v,children:o}),t[10]=o,t[11]=y);let b;t[12]===s?b=t[13]:(b=s&&(0,O.jsx)(`text`,{x:`100`,y:`124`,textAnchor:`middle`,style:{fontFamily:`var(--font-sans)`,fontSize:13,fontWeight:500,fill:`var(--text-3)`},children:s}),t[12]=s,t[13]=b);let x;t[14]!==l||t[15]!==g||t[16]!==_||t[17]!==y||t[18]!==b?(x=(0,O.jsxs)(`svg`,{viewBox:`0 0 200 150`,className:`h-auto w-full max-w-[200px]`,role:`img`,"aria-label":l,children:[h,g,_,y,b]}),t[14]=l,t[15]=g,t[16]=_,t[17]=y,t[18]=b,t[19]=x):x=t[19];let S;t[20]===c?S=t[21]:(S=(0,O.jsx)(`figcaption`,{className:`etikett text-[11.5px] tracking-[0.14em] text-text-3`,children:c}),t[20]=c,t[21]=S);let C;t[22]===u?C=t[23]:(C=u&&(0,O.jsx)(`span`,{className:`text-center text-xs ${u.className}`,children:u.text}),t[22]=u,t[23]=C);let w;return t[24]!==x||t[25]!==S||t[26]!==C?(w=(0,O.jsxs)(`figure`,{className:`m-0 flex min-w-0 flex-col items-center gap-1`,children:[x,S,C]}),t[24]=x,t[25]=S,t[26]=C,t[27]=w):w=t[27],w}function P(e){return(0,O.jsx)(`path`,{d:i(e.von,e.bis,86),fill:`none`,stroke:e.farbe,strokeWidth:4,strokeLinecap:`round`},`${e.von}-${e.bis}`)}function F(e){let t=(0,D.c)(12),{zustand:n,lampen:r,onAnsehen:i}=e,o;t[0]===n?o=t[1]:(o=a(n),t[0]=n,t[1]=o);let s=o,c=s.art,l=s.oben,u=s.mitte,d=s.unten,f=s.art===`gelb`||s.art===`rot`,p;t[2]===r?p=t[3]:(p=r.map(I),t[2]=r,t[3]=p);let m;return t[4]!==s.art||t[5]!==s.mitte||t[6]!==s.oben||t[7]!==s.unten||t[8]!==i||t[9]!==f||t[10]!==p?(m=(0,O.jsx)(T,{art:c,oben:l,mitte:u,unten:d,aktiv:f,onAnsehen:i,label:`Warnpanel`,children:p}),t[4]=s.art,t[5]=s.mitte,t[6]=s.oben,t[7]=s.unten,t[8]=i,t[9]=f,t[10]=p,t[11]=m):m=t[11],m}function I(e){return(0,O.jsx)(w,{bild:S(e.id),name:e.label,wert:e.wert,zustand:e.zustand},e.id)}function L(e){let t=(0,D.c)(2),{z:n}=e,r;return t[0]===n?r=t[1]:(r=(0,O.jsx)(`span`,{className:`ziffern inline-flex h-[1.75em] w-[1.1875em] shrink-0 items-center justify-center rounded-lg border border-white/10 bg-gradient-to-b from-white/[0.07] to-white/[0.02] font-medium shadow-[inset_0_1px_0_rgb(255_255_255/0.06)]`,children:n}),t[0]=n,t[1]=r),r}function R(e){let t=(0,D.c)(25),{sekunden:n}=e,r;t[0]===n?r=t[1]:(r=f(n),t[0]=n,t[1]=r);let i=r,a=String(Math.min(i?.[0]??0,99)),o;t[2]===a?o=t[3]:(o=a.padStart(2,`0`),t[2]=a,t[3]=o);let s=o,c=String(i?.[1]??0),l;t[4]===c?l=t[5]:(l=c.padStart(2,`0`),t[4]=c,t[5]=l);let u=l,d=i?`Laufzeit ohne Neustart: ${i[0]} Tage, ${i[1]} Stunden`:`Laufzeit unbekannt`,p=i?s[0]:`–`,m;t[6]===p?m=t[7]:(m=(0,O.jsx)(L,{z:p}),t[6]=p,t[7]=m);let h=i?s[1]:`–`,g;t[8]===h?g=t[9]:(g=(0,O.jsx)(L,{z:h}),t[8]=h,t[9]=g);let _;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,O.jsx)(`span`,{className:`etikett mr-[0.444em] ml-[0.111em] text-[0.5625em] text-text-3`,children:`T`}),t[10]=_):_=t[10];let v=i?u[0]:`–`,y;t[11]===v?y=t[12]:(y=(0,O.jsx)(L,{z:v}),t[11]=v,t[12]=y);let b=i?u[1]:`–`,x;t[13]===b?x=t[14]:(x=(0,O.jsx)(L,{z:b}),t[13]=b,t[14]=x);let S;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,O.jsx)(`span`,{className:`etikett ml-[0.111em] text-[0.5625em] text-text-3`,children:`H`}),t[15]=S):S=t[15];let C;t[16]!==y||t[17]!==x||t[18]!==m||t[19]!==g||t[20]!==d?(C=(0,O.jsxs)(`div`,{"aria-label":d,role:`img`,className:`flex h-[min(75cqw,150px)] items-center gap-[0.1875em] pb-[min(10cqw,20px)] text-[length:clamp(14px,14.5cqw,32px)]`,children:[m,g,_,y,x,S]}),t[16]=y,t[17]=x,t[18]=m,t[19]=g,t[20]=d,t[21]=C):C=t[21];let w;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,O.jsx)(`figcaption`,{className:`etikett text-[11.5px] tracking-[0.14em] text-text-3`,children:`Ohne Neustart`}),t[22]=w):w=t[22];let T;return t[23]===C?T=t[24]:(T=(0,O.jsxs)(`figure`,{className:`@container m-0 flex min-w-0 flex-col items-center justify-end gap-1`,children:[C,w]}),t[23]=C,t[24]=T),T}function z(e){let t=(0,D.c)(53),{box:n}=e,r=o(),i=r?.ram_used??n.ram_used,a=r?.ram_total??n.ram_total,s=r?.temp_cpu??n.temp_cpu,l=r?.temp_gpu??n.temp_gpu,u=n.platte,d=u?.vorhersage,f;t[0]===d?f=t[1]:(f=v(d),t[0]=d,t[1]=f);let h=f,_=r?.uptime_s??n.uptime_s,y=i!=null&&a?i/a:null,b;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(b={"--i":1},t[2]=b):b=t[2];let x;t[3]===i?x=t[4]:(x=i==null?`–`:String(Math.round(p(i)??0)),t[3]=i,t[4]=x);let S;t[5]===a?S=t[6]:(S=a?`von ${Math.round(p(a)??0)} GB`:void 0,t[5]=a,t[6]=S);let C;t[7]!==y||t[8]!==i||t[9]!==a?(C=y==null?`Speicher unbekannt`:`Speicher: ${c(i)} von ${c(a)} belegt`,t[7]=y,t[8]=i,t[9]=a,t[10]=C):C=t[10];let w;t[11]!==y||t[12]!==x||t[13]!==S||t[14]!==C?(w=(0,O.jsx)(N,{beschriftung:`Speicher`,anteil:y,mitte:x,unter:S,ariaText:C}),t[11]=y,t[12]=x,t[13]=S,t[14]=C,t[15]=w):w=t[15];let T=s==null?null:s/100,E;t[16]===s?E=t[17]:(E=m(s),t[16]=s,t[17]=E);let k;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(k=[{von:.7,bis:.85,farbe:`var(--bernstein)`},{von:.85,bis:1,farbe:`var(--rot)`}],t[18]=k):k=t[18];let A;t[19]===s?A=t[20]:(A=s==null?`–`:`${Math.round(s)}°`,t[19]=s,t[20]=A);let j;t[21]===l?j=t[22]:(j=l==null?void 0:`GPU ${Math.round(l)}°`,t[21]=l,t[22]=j);let M;t[23]===s?M=t[24]:(M=s==null?`Temperatur unbekannt`:`Temperatur ${Math.round(s)} Grad`,t[23]=s,t[24]=M);let P;t[25]!==A||t[26]!==j||t[27]!==M||t[28]!==T||t[29]!==E?(P=(0,O.jsx)(N,{beschriftung:`Temperatur`,anteil:T,farbe:E,zonen:k,mitte:A,unter:j,ariaText:M}),t[25]=A,t[26]=j,t[27]=M,t[28]=T,t[29]=E,t[30]=P):P=t[30];let F=u?u.percent/100:null,I=u&&u.percent>=90?`var(--rot)`:u&&u.percent>=80?`var(--bernstein)`:`var(--box)`,L;t[31]===u?L=t[32]:(L=u?`${Math.round(u.percent)}%`:`–`,t[31]=u,t[32]=L);let z;t[33]===u?z=t[34]:(z=u?`${c(u.used)} / ${c(u.total)}`:void 0,t[33]=u,t[34]=z);let B;t[35]===u?B=t[36]:(B=u?`Platte zu ${Math.round(u.percent)} Prozent belegt`:`Platte unbekannt`,t[35]=u,t[36]=B);let V;t[37]===h?V=t[38]:(V=h?{text:h.text,className:g[h.stufe]}:null,t[37]=h,t[38]=V);let H;t[39]!==F||t[40]!==I||t[41]!==L||t[42]!==z||t[43]!==B||t[44]!==V?(H=(0,O.jsx)(N,{beschriftung:`Platte`,anteil:F,farbe:I,mitte:L,unter:z,ariaText:B,hinweis:V}),t[39]=F,t[40]=I,t[41]=L,t[42]=z,t[43]=B,t[44]=V,t[45]=H):H=t[45];let U;t[46]===_?U=t[47]:(U=(0,O.jsx)(R,{sekunden:_}),t[46]=_,t[47]=U);let W;return t[48]!==P||t[49]!==H||t[50]!==U||t[51]!==w?(W=(0,O.jsxs)(`section`,{"aria-label":`Instrumente`,className:`auftauchen flaeche grid grid-cols-2 gap-x-4 gap-y-6 rounded-3xl px-4 py-5 lg:grid-cols-4 lg:px-6`,style:b,children:[w,P,H,U]}),t[48]=P,t[49]=H,t[50]=U,t[51]=w,t[52]=W):W=t[52],W}var B={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`};function V(e){let t=(0,D.c)(14),{radar:n}=e;if(!n?.kandidaten)return null;let r,i;t[0]===n.kandidaten?(r=t[1],i=t[2]):(r=n.kandidaten.filter(U),i=r.find(H)??r[0],t[0]=n.kandidaten,t[1]=r,t[2]=i);let a=i,o=r.length===1?``:`en`,s;t[3]!==r.length||t[4]!==o?(s=(0,O.jsxs)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-cyan-text`,children:[`Radar · `,r.length,` Kandidat`,o]}),t[3]=r.length,t[4]=o,t[5]=s):s=t[5];let c;t[6]===a?c=t[7]:(c=a?(0,O.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[15px]`,children:[(0,O.jsx)(`span`,{className:`ziffern`,children:a.name}),(0,O.jsxs)(`span`,{className:`text-text-2`,children:[`fürs `,a.rolle===`hirn`?`Hirn`:`Coden`]}),(0,O.jsx)(_,{art:B[a.status]??`grau`,children:u[a.status]??a.status})]}):(0,O.jsx)(`span`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}),t[6]=a,t[7]=c);let l;t[8]!==s||t[9]!==c?(l=(0,O.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[s,c]}),t[8]=s,t[9]=c,t[10]=l):l=t[10];let d;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,O.jsx)(h,{variant:`info`,size:`sm`,asChild:!0,children:(0,O.jsx)(x,{to:`/box/modelle`,hash:`radar`,children:`Ansehen`})}),t[11]=d):d=t[11];let f;return t[12]===l?f=t[13]:(f=(0,O.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center justify-between gap-3 rounded-2xl bg-cyan/[0.06] px-4 py-3.5 ring-1 ring-cyan/30 ring-inset`,children:[l,d]}),t[12]=l,t[13]=f),f}function H(e){return e.status===`bestanden`}function U(e){return[`bestanden`,`wartet`,`neu`].includes(e.status)}function W(){let e=(0,D.c)(35),{data:t,error:n,isPending:i}=s(),a=r(),o=l();if(i){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(y,{text:`Die Box meldet sich gleich …`}),e[0]=t):t=e[0],t}if(!t){let t=`MC2 antwortet nicht: ${n?.message??`keine Daten`}`,r;return e[1]===t?r=e[2]:(r=(0,O.jsx)(y,{fehler:!0,text:t}),e[1]=t,e[2]=r),r}let c=t.hinweise.length,u;e[3]!==t.lampen||e[4]!==t.zustand?(u=(0,O.jsx)(F,{zustand:t.zustand,lampen:t.lampen,onAnsehen:G}),e[3]=t.lampen,e[4]=t.zustand,e[5]=u):u=e[5];let d;e[6]===t.box?d=e[7]:(d=(0,O.jsx)(z,{box:t.box}),e[6]=t.box,e[7]=d);let f=c?`bernstein`:`gruen`,p=c?`${c} offen`:`alles erledigt`,m;e[8]!==f||e[9]!==p?(m=(0,O.jsx)(_,{art:f,children:p}),e[8]=f,e[9]=p,e[10]=m):m=e[10];let h;e[11]!==t.hinweise||e[12]!==t.verlauf?(h=(0,O.jsx)(C,{hinweise:t.hinweise,verlauf:t.verlauf}),e[11]=t.hinweise,e[12]=t.verlauf,e[13]=h):h=e[13];let g;e[14]!==m||e[15]!==h?(g=(0,O.jsx)(b,{titel:`Checkliste`,id:`checkliste`,rechts:m,children:h}),e[14]=m,e[15]=h,e[16]=g):g=e[16];let v;e[17]!==t.flugplan.gelaufen||e[18]!==t.flugplan.geplant?(v=(0,O.jsx)(j,{gelaufen:t.flugplan.gelaufen,geplant:t.flugplan.geplant}),e[17]=t.flugplan.gelaufen,e[18]=t.flugplan.geplant,e[19]=v):v=e[19];let x;e[20]===a.data?x=e[21]:(x=(0,O.jsx)(V,{radar:a.data}),e[20]=a.data,e[21]=x);let S;e[22]!==v||e[23]!==x?(S=(0,O.jsxs)(b,{titel:`Flugplan`,children:[v,x]}),e[22]=v,e[23]=x,e[24]=S):S=e[24];let w;e[25]!==g||e[26]!==S?(w=(0,O.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[minmax(0,1.35fr)_minmax(0,1fr)] md:gap-6`,children:[g,S]}),e[25]=g,e[26]=S,e[27]=w):w=e[27];let T;e[28]===o.data?T=e[29]:(T=o.data&&o.data.platten.length>0&&(0,O.jsx)(b,{titel:`Plattengesundheit`,id:`platten`,children:(0,O.jsx)(E,{platten:o.data.platten})}),e[28]=o.data,e[29]=T);let k;return e[30]!==u||e[31]!==d||e[32]!==w||e[33]!==T?(k=(0,O.jsxs)(O.Fragment,{children:[u,d,w,T]}),e[30]=u,e[31]=d,e[32]=w,e[33]=T,e[34]=k):k=e[34],k}function G(){return document.getElementById(`checkliste`)?.scrollIntoView({behavior:`smooth`,block:`start`})}export{W as StartSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Start-vq5R-eQh.js b/frontend/dist/assets/Start-vq5R-eQh.js deleted file mode 100644 index 5edba89..0000000 --- a/frontend/dist/assets/Start-vq5R-eQh.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,r as t,t as n}from"./dist-aE7UmubC.js";import{H as r,It as i,Ot as a,St as o,_t as s,gt as c,ht as l,jt as u,kt as d,nt as f,vt as p}from"./abfragen-pD_qBEtc.js";import{t as m}from"./button-BHVKhtQ6.js";import{D as h,H as g,O as _,U as v,m as y,yt as b,z as x}from"./index-B_hvuxH0.js";import{n as S,r as C,t as w}from"./Lagekopf-Cap3dqRY.js";var T=t(),E=e(),D={erledigt:{text:`Erledigt`,farbe:`text-gruen-text`,punkt:`bg-gruen`},fehler:{text:`Fehler`,farbe:`text-rot-text`,punkt:`bg-rot`},geplant:{text:`Geplant`,farbe:`text-text-3`,punkt:`bg-white/25`}};function O(e){let t=(0,T.c)(23),{e:r}=e,i=D[r.status]??D.geplant,a=r.status===`geplant`&&/update/i.test(r.titel)?`text-cyan-text`:i.farbe,o;t[0]===r.zeit?o=t[1]:(o=l(r.zeit),t[0]=r.zeit,t[1]=o);let s;t[2]===o?s=t[3]:(s=(0,E.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:o}),t[2]=o,t[3]=s);let c;t[4]===r.text?c=t[5]:(c=r.text&&(0,E.jsxs)(`span`,{className:`text-text-3`,children:[`, `,r.text]}),t[4]=r.text,t[5]=c);let u;t[6]!==r.titel||t[7]!==c?(u=(0,E.jsxs)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-base break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:[r.titel,c]}),t[6]=r.titel,t[7]=c,t[8]=u):u=t[8];let d;t[9]===a?d=t[10]:(d=n(`etikett col-start-2 row-start-1 flex items-center gap-1.5 justify-self-end text-[10.5px] tracking-[0.12em] @sm:col-start-3`,a),t[9]=a,t[10]=d);let f;t[11]===i.punkt?f=t[12]:(f=n(`size-1.5 rounded-full`,i.punkt),t[11]=i.punkt,t[12]=f);let p;t[13]===f?p=t[14]:(p=(0,E.jsx)(`span`,{"aria-hidden":!0,className:f}),t[13]=f,t[14]=p);let m;t[15]!==i.text||t[16]!==d||t[17]!==p?(m=(0,E.jsxs)(`span`,{className:d,children:[p,i.text]}),t[15]=i.text,t[16]=d,t[17]=p,t[18]=m):m=t[18];let h;return t[19]!==s||t[20]!==u||t[21]!==m?(h=(0,E.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t border-white/[0.06] py-2.5 first:border-t-0 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[s,u,m]}),t[19]=s,t[20]=u,t[21]=m,t[22]=h):h=t[22],h}function k(e){let t=(0,T.c)(6),{gelaufen:n,geplant:r}=e,i;t[0]!==n||t[1]!==r?(i=[...n,...r.slice(0,5)],t[0]=n,t[1]=r,t[2]=i):i=t[2];let a=i;if(a.length===0){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,E.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Heute ist noch nichts gelaufen, und nichts ist geplant.`}),t[3]=e):e=t[3],e}let o;return t[4]===a?o=t[5]:(o=(0,E.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:a.map(A)}),t[4]=a,t[5]=o),o}function A(e){return(0,E.jsx)(O,{e},`${e.titel}-${e.zeit}`)}function j(e){let t=(0,T.c)(28),{anteil:n,farbe:r,zonen:i,mitte:a,unter:o,beschriftung:s,ariaText:c,hinweis:l}=e,u=r===void 0?`var(--box)`:r,f;t[0]===i?f=t[1]:(f=i===void 0?[]:i,t[0]=i,t[1]=f);let p=f,m=n!=null&&n>.004,h;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,E.jsx)(`path`,{d:d(0,1,75),fill:`none`,stroke:`rgb(255 255 255 / 0.07)`,strokeWidth:12,strokeLinecap:`round`}),t[2]=h):h=t[2];let g;t[3]===p?g=t[4]:(g=p.map(M),t[3]=p,t[4]=g);let _;t[5]!==n||t[6]!==u||t[7]!==m?(_=m&&(0,E.jsx)(`path`,{d:d(0,n,75),fill:`none`,stroke:u,strokeWidth:12,strokeLinecap:`round`,style:{filter:`drop-shadow(0 0 7px color-mix(in srgb, ${u} 60%, transparent))`}}),t[5]=n,t[6]=u,t[7]=m,t[8]=_):_=t[8];let v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={fontFamily:`var(--font-anzeige)`,fontSize:40,fontWeight:600,fill:`var(--foreground)`},t[9]=v):v=t[9];let y;t[10]===a?y=t[11]:(y=(0,E.jsx)(`text`,{x:`100`,y:`102`,textAnchor:`middle`,style:v,children:a}),t[10]=a,t[11]=y);let b;t[12]===o?b=t[13]:(b=o&&(0,E.jsx)(`text`,{x:`100`,y:`124`,textAnchor:`middle`,style:{fontFamily:`var(--font-sans)`,fontSize:13,fontWeight:500,fill:`var(--text-3)`},children:o}),t[12]=o,t[13]=b);let x;t[14]!==c||t[15]!==g||t[16]!==_||t[17]!==y||t[18]!==b?(x=(0,E.jsxs)(`svg`,{viewBox:`0 0 200 150`,className:`h-auto w-full max-w-[200px]`,role:`img`,"aria-label":c,children:[h,g,_,y,b]}),t[14]=c,t[15]=g,t[16]=_,t[17]=y,t[18]=b,t[19]=x):x=t[19];let S;t[20]===s?S=t[21]:(S=(0,E.jsx)(`figcaption`,{className:`etikett text-[11.5px] tracking-[0.14em] text-text-3`,children:s}),t[20]=s,t[21]=S);let C;t[22]===l?C=t[23]:(C=l&&(0,E.jsx)(`span`,{className:`text-center text-xs ${l.className}`,children:l.text}),t[22]=l,t[23]=C);let w;return t[24]!==x||t[25]!==S||t[26]!==C?(w=(0,E.jsxs)(`figure`,{className:`m-0 flex min-w-0 flex-col items-center gap-1`,children:[x,S,C]}),t[24]=x,t[25]=S,t[26]=C,t[27]=w):w=t[27],w}function M(e){return(0,E.jsx)(`path`,{d:d(e.von,e.bis,86),fill:`none`,stroke:e.farbe,strokeWidth:4,strokeLinecap:`round`},`${e.von}-${e.bis}`)}function N(e){let t=(0,T.c)(12),{zustand:n,lampen:r,onAnsehen:i}=e,a;t[0]===n?a=t[1]:(a=u(n),t[0]=n,t[1]=a);let o=a,s=o.art,c=o.oben,l=o.mitte,d=o.unten,f=o.art===`gelb`||o.art===`rot`,p;t[2]===r?p=t[3]:(p=r.map(P),t[2]=r,t[3]=p);let m;return t[4]!==o.art||t[5]!==o.mitte||t[6]!==o.oben||t[7]!==o.unten||t[8]!==i||t[9]!==f||t[10]!==p?(m=(0,E.jsx)(S,{art:s,oben:c,mitte:l,unten:d,aktiv:f,onAnsehen:i,label:`Warnpanel`,children:p}),t[4]=o.art,t[5]=o.mitte,t[6]=o.oben,t[7]=o.unten,t[8]=i,t[9]=f,t[10]=p,t[11]=m):m=t[11],m}function P(e){return(0,E.jsx)(w,{bild:x(e.id),name:e.label,wert:e.wert,zustand:e.zustand},e.id)}function F(e){let t=(0,T.c)(2),{z:n}=e,r;return t[0]===n?r=t[1]:(r=(0,E.jsx)(`span`,{className:`ziffern inline-flex h-[1.75em] w-[1.1875em] shrink-0 items-center justify-center rounded-lg border border-white/10 bg-gradient-to-b from-white/[0.07] to-white/[0.02] font-medium shadow-[inset_0_1px_0_rgb(255_255_255/0.06)]`,children:n}),t[0]=n,t[1]=r),r}function I(e){let t=(0,T.c)(25),{sekunden:n}=e,r;t[0]===n?r=t[1]:(r=p(n),t[0]=n,t[1]=r);let i=r,a=String(Math.min(i?.[0]??0,99)),o;t[2]===a?o=t[3]:(o=a.padStart(2,`0`),t[2]=a,t[3]=o);let s=o,c=String(i?.[1]??0),l;t[4]===c?l=t[5]:(l=c.padStart(2,`0`),t[4]=c,t[5]=l);let u=l,d=i?`Laufzeit ohne Neustart: ${i[0]} Tage, ${i[1]} Stunden`:`Laufzeit unbekannt`,f=i?s[0]:`–`,m;t[6]===f?m=t[7]:(m=(0,E.jsx)(F,{z:f}),t[6]=f,t[7]=m);let h=i?s[1]:`–`,g;t[8]===h?g=t[9]:(g=(0,E.jsx)(F,{z:h}),t[8]=h,t[9]=g);let _;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,E.jsx)(`span`,{className:`etikett mr-[0.444em] ml-[0.111em] text-[0.5625em] text-text-3`,children:`T`}),t[10]=_):_=t[10];let v=i?u[0]:`–`,y;t[11]===v?y=t[12]:(y=(0,E.jsx)(F,{z:v}),t[11]=v,t[12]=y);let b=i?u[1]:`–`,x;t[13]===b?x=t[14]:(x=(0,E.jsx)(F,{z:b}),t[13]=b,t[14]=x);let S;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,E.jsx)(`span`,{className:`etikett ml-[0.111em] text-[0.5625em] text-text-3`,children:`H`}),t[15]=S):S=t[15];let C;t[16]!==y||t[17]!==x||t[18]!==m||t[19]!==g||t[20]!==d?(C=(0,E.jsxs)(`div`,{"aria-label":d,role:`img`,className:`flex h-[min(75cqw,150px)] items-center gap-[0.1875em] pb-[min(10cqw,20px)] text-[length:clamp(14px,14.5cqw,32px)]`,children:[m,g,_,y,x,S]}),t[16]=y,t[17]=x,t[18]=m,t[19]=g,t[20]=d,t[21]=C):C=t[21];let w;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,E.jsx)(`figcaption`,{className:`etikett text-[11.5px] tracking-[0.14em] text-text-3`,children:`Ohne Neustart`}),t[22]=w):w=t[22];let D;return t[23]===C?D=t[24]:(D=(0,E.jsxs)(`figure`,{className:`@container m-0 flex min-w-0 flex-col items-center justify-end gap-1`,children:[C,w]}),t[23]=C,t[24]=D),D}function L(e){let t=(0,T.c)(53),{box:n}=e,r=o(),a=r?.ram_used??n.ram_used,l=r?.ram_total??n.ram_total,u=r?.temp_cpu??n.temp_cpu,d=r?.temp_gpu??n.temp_gpu,f=n.platte,p=f?.vorhersage,m;t[0]===p?m=t[1]:(m=_(p),t[0]=p,t[1]=m);let g=m,v=r?.uptime_s??n.uptime_s,y=a!=null&&l?a/l:null,b;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(b={"--i":1},t[2]=b):b=t[2];let x;t[3]===a?x=t[4]:(x=a==null?`–`:String(Math.round(c(a)??0)),t[3]=a,t[4]=x);let S;t[5]===l?S=t[6]:(S=l?`von ${Math.round(c(l)??0)} GB`:void 0,t[5]=l,t[6]=S);let C;t[7]!==y||t[8]!==a||t[9]!==l?(C=y==null?`Speicher unbekannt`:`Speicher: ${s(a)} von ${s(l)} belegt`,t[7]=y,t[8]=a,t[9]=l,t[10]=C):C=t[10];let w;t[11]!==y||t[12]!==x||t[13]!==S||t[14]!==C?(w=(0,E.jsx)(j,{beschriftung:`Speicher`,anteil:y,mitte:x,unter:S,ariaText:C}),t[11]=y,t[12]=x,t[13]=S,t[14]=C,t[15]=w):w=t[15];let D=u==null?null:u/100,O;t[16]===u?O=t[17]:(O=i(u),t[16]=u,t[17]=O);let k;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(k=[{von:.7,bis:.85,farbe:`var(--bernstein)`},{von:.85,bis:1,farbe:`var(--rot)`}],t[18]=k):k=t[18];let A;t[19]===u?A=t[20]:(A=u==null?`–`:`${Math.round(u)}°`,t[19]=u,t[20]=A);let M;t[21]===d?M=t[22]:(M=d==null?void 0:`GPU ${Math.round(d)}°`,t[21]=d,t[22]=M);let N;t[23]===u?N=t[24]:(N=u==null?`Temperatur unbekannt`:`Temperatur ${Math.round(u)} Grad`,t[23]=u,t[24]=N);let P;t[25]!==A||t[26]!==M||t[27]!==N||t[28]!==D||t[29]!==O?(P=(0,E.jsx)(j,{beschriftung:`Temperatur`,anteil:D,farbe:O,zonen:k,mitte:A,unter:M,ariaText:N}),t[25]=A,t[26]=M,t[27]=N,t[28]=D,t[29]=O,t[30]=P):P=t[30];let F=f?f.percent/100:null,L=f&&f.percent>=90?`var(--rot)`:f&&f.percent>=80?`var(--bernstein)`:`var(--box)`,R;t[31]===f?R=t[32]:(R=f?`${Math.round(f.percent)}%`:`–`,t[31]=f,t[32]=R);let z;t[33]===f?z=t[34]:(z=f?`${s(f.used)} / ${s(f.total)}`:void 0,t[33]=f,t[34]=z);let B;t[35]===f?B=t[36]:(B=f?`Platte zu ${Math.round(f.percent)} Prozent belegt`:`Platte unbekannt`,t[35]=f,t[36]=B);let V;t[37]===g?V=t[38]:(V=g?{text:g.text,className:h[g.stufe]}:null,t[37]=g,t[38]=V);let H;t[39]!==F||t[40]!==L||t[41]!==R||t[42]!==z||t[43]!==B||t[44]!==V?(H=(0,E.jsx)(j,{beschriftung:`Platte`,anteil:F,farbe:L,mitte:R,unter:z,ariaText:B,hinweis:V}),t[39]=F,t[40]=L,t[41]=R,t[42]=z,t[43]=B,t[44]=V,t[45]=H):H=t[45];let U;t[46]===v?U=t[47]:(U=(0,E.jsx)(I,{sekunden:v}),t[46]=v,t[47]=U);let W;return t[48]!==P||t[49]!==H||t[50]!==U||t[51]!==w?(W=(0,E.jsxs)(`section`,{"aria-label":`Instrumente`,className:`auftauchen flaeche grid grid-cols-2 gap-x-4 gap-y-6 rounded-3xl px-4 py-5 lg:grid-cols-4 lg:px-6`,style:b,children:[w,P,H,U]}),t[48]=P,t[49]=H,t[50]=U,t[51]=w,t[52]=W):W=t[52],W}var R={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`};function z(e){let t=(0,T.c)(14),{radar:n}=e;if(!n?.kandidaten)return null;let r,i;t[0]===n.kandidaten?(r=t[1],i=t[2]):(r=n.kandidaten.filter(V),i=r.find(B)??r[0],t[0]=n.kandidaten,t[1]=r,t[2]=i);let o=i,s=r.length===1?``:`en`,c;t[3]!==r.length||t[4]!==s?(c=(0,E.jsxs)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-cyan-text`,children:[`Radar · `,r.length,` Kandidat`,s]}),t[3]=r.length,t[4]=s,t[5]=c):c=t[5];let l;t[6]===o?l=t[7]:(l=o?(0,E.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[15px]`,children:[(0,E.jsx)(`span`,{className:`ziffern`,children:o.name}),(0,E.jsxs)(`span`,{className:`text-text-2`,children:[`fürs `,o.rolle===`hirn`?`Hirn`:`Coden`]}),(0,E.jsx)(g,{art:R[o.status]??`grau`,children:a[o.status]??o.status})]}):(0,E.jsx)(`span`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}),t[6]=o,t[7]=l);let u;t[8]!==c||t[9]!==l?(u=(0,E.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[c,l]}),t[8]=c,t[9]=l,t[10]=u):u=t[10];let d;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,E.jsx)(m,{variant:`info`,size:`sm`,asChild:!0,children:(0,E.jsx)(b,{to:`/box/modelle`,hash:`radar`,children:`Ansehen`})}),t[11]=d):d=t[11];let f;return t[12]===u?f=t[13]:(f=(0,E.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center justify-between gap-3 rounded-2xl bg-cyan/[0.06] px-4 py-3.5 ring-1 ring-cyan/30 ring-inset`,children:[u,d]}),t[12]=u,t[13]=f),f}function B(e){return e.status===`bestanden`}function V(e){return[`bestanden`,`wartet`,`neu`].includes(e.status)}function H(){let e=(0,T.c)(32),{data:t,error:n,isPending:i}=f(),a=r();if(i){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,E.jsx)(v,{text:`Die Box meldet sich gleich …`}),e[0]=t):t=e[0],t}if(!t){let t=`MC2 antwortet nicht: ${n?.message??`keine Daten`}`,r;return e[1]===t?r=e[2]:(r=(0,E.jsx)(v,{fehler:!0,text:t}),e[1]=t,e[2]=r),r}let o=t.hinweise.length,s;e[3]!==t.lampen||e[4]!==t.zustand?(s=(0,E.jsx)(N,{zustand:t.zustand,lampen:t.lampen,onAnsehen:U}),e[3]=t.lampen,e[4]=t.zustand,e[5]=s):s=e[5];let c;e[6]===t.box?c=e[7]:(c=(0,E.jsx)(L,{box:t.box}),e[6]=t.box,e[7]=c);let l=o?`bernstein`:`gruen`,u=o?`${o} offen`:`alles erledigt`,d;e[8]!==l||e[9]!==u?(d=(0,E.jsx)(g,{art:l,children:u}),e[8]=l,e[9]=u,e[10]=d):d=e[10];let p;e[11]!==t.hinweise||e[12]!==t.verlauf?(p=(0,E.jsx)(C,{hinweise:t.hinweise,verlauf:t.verlauf}),e[11]=t.hinweise,e[12]=t.verlauf,e[13]=p):p=e[13];let m;e[14]!==d||e[15]!==p?(m=(0,E.jsx)(y,{titel:`Checkliste`,id:`checkliste`,rechts:d,children:p}),e[14]=d,e[15]=p,e[16]=m):m=e[16];let h;e[17]!==t.flugplan.gelaufen||e[18]!==t.flugplan.geplant?(h=(0,E.jsx)(k,{gelaufen:t.flugplan.gelaufen,geplant:t.flugplan.geplant}),e[17]=t.flugplan.gelaufen,e[18]=t.flugplan.geplant,e[19]=h):h=e[19];let _;e[20]===a.data?_=e[21]:(_=(0,E.jsx)(z,{radar:a.data}),e[20]=a.data,e[21]=_);let b;e[22]!==h||e[23]!==_?(b=(0,E.jsxs)(y,{titel:`Flugplan`,children:[h,_]}),e[22]=h,e[23]=_,e[24]=b):b=e[24];let x;e[25]!==m||e[26]!==b?(x=(0,E.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[minmax(0,1.35fr)_minmax(0,1fr)] md:gap-6`,children:[m,b]}),e[25]=m,e[26]=b,e[27]=x):x=e[27];let S;return e[28]!==s||e[29]!==c||e[30]!==x?(S=(0,E.jsxs)(E.Fragment,{children:[s,c,x]}),e[28]=s,e[29]=c,e[30]=x,e[31]=S):S=e[31],S}function U(){return document.getElementById(`checkliste`)?.scrollIntoView({behavior:`smooth`,block:`start`})}export{H as StartSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Updates-C1DGAQzb.js b/frontend/dist/assets/Updates-C1DGAQzb.js new file mode 100644 index 0000000..d210235 --- /dev/null +++ b/frontend/dist/assets/Updates-C1DGAQzb.js @@ -0,0 +1,2 @@ +import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{A as a,It as o,N as s,_t as c,at as l,ct as u,dt as d,h as f,m as p,tt as ee,ut as te,vt as m}from"./abfragen-CDCgpAto.js";import{t as h}from"./chevron-right-DF8ikrVh.js";import{t as ne}from"./button-BHVKhtQ6.js";import{H as g,R as _,U as v,h as y,m as b,z as x}from"./index-CuG_RlEw.js";import{c as S,i as C,n as re,o as w,t as T}from"./Auftraege-Dwy9GTde.js";var E=r(),D=t(e(),1),O=n(),ie=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],k={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function ae(e){let t=(0,E.c)(7),{breit:n}=e,r=n===void 0?`w-16`:n,a;t[0]===r?a=t[1]:(a=i(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,r),t[0]=r,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,O.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,O.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,O.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function oe(e){let t=(0,E.c)(13),{text:n}=e,[r,a]=(0,D.useState)(!1),o;t[0]===n?o=t[1]:(o=n.split(` +`).length>3||n.length>240,t[0]=n,t[1]=o);let s=o,c=s&&!r&&`line-clamp-3`,l;t[2]===c?l=t[3]:(l=i(`m-0 whitespace-pre-line`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==n?(u=(0,O.jsx)(`p`,{className:l,children:n}),t[4]=l,t[5]=n,t[6]=u):u=t[6];let d;t[7]!==s||t[8]!==r?(d=s&&(0,O.jsx)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>a(!r),className:`-mb-2 inline-flex h-11 items-center text-sm text-cyan-text hover:underline`,children:r?`Weniger zeigen`:`Ganze Zusammenfassung zeigen`}),t[7]=s,t[8]=r,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==d?(f=(0,O.jsxs)(`div`,{className:`flex flex-col items-start`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function se(e){let t=(0,E.c)(13),{d:n}=e,r;t[0]===n.packages?r=t[1]:(r=n.packages??[],t[0]=n.packages,t[1]=r);let i=r,a,o;if(t[2]!==n.held_back||t[3]!==i){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.held_back??[];if(i.length===0&&e.length===0){o=null;break bb0}let r;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,O.jsx)(h,{"aria-hidden":!0,className:`size-4 transition-transform group-open:rotate-90`}),t[6]=r):r=t[6];let s=i.length===0?`Was Ubuntu zurückhält (${e.length})`:i.length===1?`Das Paket ansehen`:`Alle ${i.length} Pakete ansehen`,c;t[7]===s?c=t[8]:(c=(0,O.jsxs)(`summary`,{className:`inline-flex h-11 cursor-pointer items-center gap-1 text-sm text-cyan-text hover:underline`,children:[r,s]}),t[7]=s,t[8]=c);let l;t[9]===i?l=t[10]:(l=i.map(j),t[9]=i,t[10]=l);let u;t[11]===l?u=t[12]:(u=(0,O.jsx)(`ul`,{className:`ziffern m-0 flex max-h-64 list-none flex-col gap-1 overflow-auto rounded-xl bg-black/30 ring-1 ring-white/[0.07] ring-inset p-2.5 text-xs`,children:l}),t[11]=l,t[12]=u),a=(0,O.jsxs)(`details`,{className:`group`,children:[c,u,e.length>0&&(0,O.jsxs)(`p`,{className:`mt-2 text-xs text-text-3`,children:[`Dazu `,e.length===1?`kommt ein Paket`:`kommen ${e.length} Pakete`,`, die Ubuntu noch zurückhält (`,e.map(A).join(`, `),`). Die kommen von selbst, wenn Ubuntu sie freigibt.`]})]})}t[2]=n.held_back,t[3]=i,t[4]=a,t[5]=o}else a=t[4],o=t[5];return o===Symbol.for(`react.early_return_sentinel`)?a:o}function A(e){return e.name}function j(e){return(0,O.jsxs)(`li`,{className:`break-all`,children:[(0,O.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,O.jsxs)(`span`,{className:`text-text-3`,children:[e.current,` → `,e.candidate]})]},e.name)}function ce(e){let t=(0,E.c)(6),{d:n}=e;if(n.action_needed===!1){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,O.jsx)(g,{art:`gruen`,children:`Nichts zu tun`}),t[0]=e):e=t[0],e}if(n.action_needed!==!0)return null;let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,O.jsx)(g,{art:`bernstein`,children:`Du musst etwas tun`}),t[1]=r):r=t[1];let i;t[2]===n.action_text?i=t[3]:(i=n.action_text&&(0,O.jsx)(`span`,{className:`text-bernstein`,children:n.action_text}),t[2]=n.action_text,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,O.jsxs)(`span`,{className:`flex flex-col items-start gap-1.5`,children:[r,i]}),t[4]=i,t[5]=a),a}function M(e){let t=e?.trim();return t?t.startsWith(`(Zusammenfassung nicht verfügbar`)?`Die Zusammenfassung ist gerade nicht verfügbar.`:t:null}function N(e){let t=(0,E.c)(70),{id:n,name:r,details:i,hatUpdate:a,neuLautStart:o,fest:s,gesperrt:c,onStart:l,onFreigeben:u}=e,d=i.data,f=i.isPending,p=i.isError?i.error.message:d?.error,ee;t[0]!==d||t[1]!==n?(ee=d?S(n,d):null,t[0]=d,t[1]=n,t[2]=ee):ee=t[2];let te=ee,m=a?te?.neu??o??null:null,h=d?.summary,g;t[3]===h?g=t[4]:(g=M(h),t[3]=h,t[4]=g);let v=g,y=te&&te.laeuft!==`–`?te.laeuft:p?`unbekannt`:`–`,b;t[5]!==f||t[6]!==y?(b=f?(0,O.jsx)(ae,{}):(0,O.jsx)(O.Fragment,{children:y}),t[5]=f,t[6]=y,t[7]=b):b=t[7];let C=b,re;t[8]!==p||t[9]!==f||t[10]!==m?(re=f?(0,O.jsx)(ae,{breit:`w-20`}):m?(0,O.jsx)(`span`,{className:`text-cyan-text`,children:m}):p?(0,O.jsx)(`span`,{className:`text-bernstein`,children:`nicht geprüft`}):(0,O.jsx)(`span`,{className:`text-text-3`,children:`–`}),t[8]=p,t[9]=f,t[10]=m,t[11]=re):re=t[11];let T=re,D;if(f){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,O.jsx)(`span`,{className:`text-text-3`,children:`Wird geprüft …`}),t[12]=e):e=t[12],D=e}else if(p&&!a){let e;t[13]===p?e=t[14]:(e=w(p),t[13]=p,t[14]=e);let n;t[15]===e?n=t[16]:(n=(0,O.jsx)(`span`,{className:`text-bernstein`,children:e}),t[15]=e,t[16]=n),D=n}else if(!a)D=`Aktuell.`;else{let e;t[17]===p?e=t[18]:(e=p&&(0,O.jsx)(`span`,{className:`text-bernstein`,children:w(p)}),t[17]=p,t[18]=e);let r;t[19]===d?r=t[20]:(r=d&&(0,O.jsx)(ce,{d}),t[19]=d,t[20]=r);let i;t[21]!==d||t[22]!==n||t[23]!==v?(i=n===`os`?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{children:d?.count?`${d.count} ${d.count===1?`Paket`:`Pakete`} aus Ubuntu.`:`Neue Pakete aus Ubuntu.`}),d&&(0,O.jsx)(se,{d})]}):v?(0,O.jsx)(oe,{text:v}):null,t[21]=d,t[22]=n,t[23]=v,t[24]=i):i=t[24];let a;t[25]!==e||t[26]!==r||t[27]!==i?(a=(0,O.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[e,r,i]}),t[25]=e,t[26]=r,t[27]=i,t[28]=a):a=t[28],D=a}let ie=f||void 0,k;t[29]===n?k=t[30]:(k=x(n),t[29]=n,t[30]=k);let A;t[31]===k?A=t[32]:(A=(0,O.jsx)(_,{bild:k,groesse:`sm`}),t[31]=k,t[32]=A);let j;t[33]===r?j=t[34]:(j=(0,O.jsx)(`span`,{className:`min-w-0`,children:r}),t[33]=r,t[34]=j);let N;t[35]!==A||t[36]!==j?(N=(0,O.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 items-center gap-3 text-[15px] font-semibold`,children:[A,j]}),t[35]=A,t[36]=j,t[37]=N):N=t[37];let P;t[38]!==p||t[39]!==f||t[40]!==m||t[41]!==T?(P=!f&&(m||p)&&(0,O.jsxs)(O.Fragment,{children:[` `,m?`→`:`·`,` `,T]}),t[38]=p,t[39]=f,t[40]=m,t[41]=T,t[42]=P):P=t[42];let F;t[43]!==C||t[44]!==P?(F=(0,O.jsxs)(`span`,{role:`cell`,className:`ziffern -mt-1 text-sm text-text-2 md:hidden`,children:[C,P]}),t[43]=C,t[44]=P,t[45]=F):F=t[45];let I;t[46]===C?I=t[47]:(I=(0,O.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm text-text-2 md:block`,children:C}),t[46]=C,t[47]=I);let L;t[48]===T?L=t[49]:(L=(0,O.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm md:block`,children:T}),t[48]=T,t[49]=L);let R;t[50]!==s||t[51]!==r?(R=s&&(0,O.jsxs)(`span`,{className:`mb-1.5 block text-bernstein`,children:[`Festgehalten seit `,s.seit,` auf `,s.version,`: `,s.grund,`. Der Sonntags-Lauf überspringt `,r,`.`]}),t[50]=s,t[51]=r,t[52]=R):R=t[52];let z;t[53]!==R||t[54]!==D?(z=(0,O.jsxs)(`div`,{role:`cell`,className:`text-sm leading-relaxed text-text-2`,children:[R,D]}),t[53]=R,t[54]=D,t[55]=z):z=t[55];let B;t[56]!==s||t[57]!==c||t[58]!==a||t[59]!==u||t[60]!==l?(B=(s||a)&&(0,O.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-end`,children:[s&&(0,O.jsx)(ne,{variant:`outline`,size:`sm`,onClick:u,children:`Freigeben`}),a&&(0,O.jsx)(ne,{variant:`outline`,size:`sm`,onClick:l,disabled:c,children:`Aktualisieren`})]}),t[56]=s,t[57]=c,t[58]=a,t[59]=u,t[60]=l,t[61]=B):B=t[61];let le;return t[62]!==N||t[63]!==F||t[64]!==I||t[65]!==L||t[66]!==z||t[67]!==B||t[68]!==ie?(le=(0,O.jsxs)(`div`,{role:`row`,"aria-busy":ie,className:`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3.5 md:grid-cols-[210px_100px_170px_minmax(0,1fr)_auto] md:items-start`,children:[N,F,I,L,z,B]}),t[62]=N,t[63]=F,t[64]=I,t[65]=L,t[66]=z,t[67]=B,t[68]=ie,t[69]=le):le=t[69],le}var P={rot:`rot`,gelb:`bernstein`,gruen:`gruen`,info:`cyan`,grau:`grau`},F={rot:`bg-rot`,gelb:`bg-bernstein`,gruen:`bg-gruen`,info:`bg-cyan`,grau:`bg-text-3`};function I(e){let t=(0,E.c)(19),{lauf:n}=e,r;t[0]===n.start?r=t[1]:(r=m(n.start),t[0]=n.start,t[1]=r);let i;t[2]===r?i=t[3]:(i=(0,O.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:r}),t[2]=r,t[3]=i);let a;t[4]===n.anlass?a=t[5]:(a=(0,O.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:n.anlass}),t[4]=n.anlass,t[5]=a);let o=P[n.stufe],s;t[6]!==n.titel||t[7]!==o?(s=(0,O.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,O.jsx)(g,{art:o,children:n.titel})}),t[6]=n.titel,t[7]=o,t[8]=s):s=t[8];let c;t[9]!==i||t[10]!==a||t[11]!==s?(c=(0,O.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[i,a,s]}),t[9]=i,t[10]=a,t[11]=s,t[12]=c):c=t[12];let l;t[13]!==n.stufe||t[14]!==n.zeilen?(l=n.stufe!==`grau`&&n.zeilen.length>0&&(0,O.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 @sm:pl-[124px]`,children:n.zeilen.map(L)}),t[13]=n.stufe,t[14]=n.zeilen,t[15]=l):l=t[15];let u;return t[16]!==c||t[17]!==l?(u=(0,O.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-white/[0.06] py-3`,children:[c,l]}),t[16]=c,t[17]=l,t[18]=u):u=t[18],u}function L(e){return(0,O.jsxs)(`li`,{className:`flex items-baseline gap-2 text-sm leading-snug text-text-2`,children:[(0,O.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 shrink-0 -translate-y-px rounded-full`,F[e.stufe])}),(0,O.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,O.jsx)(`span`,{className:`text-foreground`,children:e.baustein}),` · `,e.text]})]},`${e.baustein}-${e.text}`)}function R(e){return e.mtime?m(new Date(e.mtime*1e3).toISOString()):e.snapshot}function z(){let e=(0,E.c)(126),t=l(),n=p(!0).data?.update_fenster,r=s(),i=d(),o=ee(),m=te(),h=f(),g=a(),_=c(),[x,S]=(0,D.useState)(null),C;e[0]===t.data?.updates.bausteine?C=e[1]:(C=new Map((t.data?.updates.bausteine??[]).map(pe)),e[0]=t.data?.updates.bausteine,e[1]=C);let w=C,ae=new Map((t.data?.updates.festgehalten??[]).map(fe)),oe;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(oe=ie.map(de),e[2]=oe):oe=e[2];let se=u(oe),A;e[3]!==se||e[4]!==w?(A=(e,t)=>re(e.id,se[t].data)??w.has(e.id),e[3]=se,e[4]=w,e[5]=A):A=e[5];let j=ie.map(A),ce;e[6]===r.data?.jobs?ce=e[7]:(ce=r.data?.jobs??[],e[6]=r.data?.jobs,e[7]=ce);let M=ce,P;e[8]!==M||e[9]!==t.data?.zustand?(P=M.some(ue)||(t.data?.zustand.update_laeuft??!1),e[8]=M,e[9]=t.data?.zustand,e[10]=P):P=e[10];let F=P,I;e[11]===M?I=e[12]:(I=M.some(le),e[11]=M,e[12]=I);let L=I,z=F||m.isPending,V=o.data?.available??!1,H;if(t.isPending){let t;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(v,{text:`Updates werden gelesen …`}),e[13]=t):t=e[13],H=t}else if(t.isError&&!t.data){let n=`Die Box antwortet nicht: ${t.error.message}`,r;e[14]===n?r=e[15]:(r=(0,O.jsx)(v,{fehler:!0,text:n}),e[14]=n,e[15]=r),H=r}else{let t;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsxs)(`div`,{role:`row`,className:`etikett hidden grid-cols-[210px_100px_170px_minmax(0,1fr)_auto] gap-x-4 pb-2 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,children:[(0,O.jsx)(`span`,{role:`columnheader`,children:`Baustein`}),(0,O.jsx)(`span`,{role:`columnheader`,children:`Läuft`}),(0,O.jsx)(`span`,{role:`columnheader`,children:`Neu`}),(0,O.jsx)(`span`,{role:`columnheader`,children:`Was sich ändert`}),(0,O.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),e[16]=t):t=e[16],H=(0,O.jsxs)(`div`,{role:`table`,"aria-label":`Bausteine und ihre Updates`,className:`flex flex-col`,children:[t,ie.map((e,t)=>(0,O.jsx)(N,{id:e.id,name:e.name,details:se[t],hatUpdate:j[t],neuLautStart:w.get(e.id),fest:ae.get(e.id),gesperrt:z,onStart:()=>S({art:`einzeln`,id:e.id,name:e.name}),onFreigeben:()=>{let t=ae.get(e.id);t&&S({art:`freigeben`,id:e.id,name:e.name,grund:t.grund})}},e.id))]})}let U;if(i.isPending){let t;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[17]=t):t=e[17],U=t}else if(i.isError&&!i.data){let t;e[18]===i.error.message?t=e[19]:(t=(0,O.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Verlauf lässt sich gerade nicht lesen: `,i.error.message]}),e[18]=i.error.message,e[19]=t),U=t}else if(i.data?.laeufe.length){let t;e[21]===i.data.laeufe?t=e[22]:(t=i.data.laeufe.map(B),e[21]=i.data.laeufe,e[22]=t);let n;e[23]===t?n=e[24]:(n=(0,O.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:t}),e[23]=t,e[24]=n),U=n}else{let t;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Update-Läufe aufgezeichnet.`}),e[20]=t):t=e[20],U=t}let W;if(o.isPending){let t;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[25]=t):t=e[25],W=t}else if(o.isError&&!o.data){let t;e[26]===o.error.message?t=e[27]:(t=(0,O.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Sicherungen lassen sich gerade nicht lesen: `,o.error.message]}),e[26]=o.error.message,e[27]=t),W=t}else if(o.data?.backups.length){let t;if(e[29]!==o.data.backups||e[30]!==_.isPending||e[31]!==V){let n;e[33]!==_.isPending||e[34]!==V?(n=e=>(0,O.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.06] py-2.5`,children:[(0,O.jsx)(`span`,{className:`ziffern text-sm`,children:R(e)}),(0,O.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,O.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,O.jsx)(ne,{variant:`ghost`,size:`sm`,disabled:!V||_.isPending,onClick:()=>S({art:`zurueck`,datei:e.file,zeit:R(e)}),children:`Zurückspielen`})]})]},e.file),e[33]=_.isPending,e[34]=V,e[35]=n):n=e[35],t=o.data.backups.slice(0,5).map(n),e[29]=o.data.backups,e[30]=_.isPending,e[31]=V,e[32]=t}else t=e[32];let n;e[36]===t?n=e[37]:(n=(0,O.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:t}),e[36]=t,e[37]=n),W=n}else{let t;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Sicherung vorhanden.`}),e[28]=t):t=e[28],W=t}let me=b,G;e[38]===m?G=e[39]:(G=()=>m.mutate(`pruefen`),e[38]=m,e[39]=G);let he=m.isPending||L,ge=L?`Sucht …`:`Nach Neuem suchen`,K;e[40]!==ge||e[41]!==G||e[42]!==he?(K=(0,O.jsx)(ne,{variant:`outline`,onClick:G,disabled:he,children:ge}),e[40]=ge,e[41]=G,e[42]=he,e[43]=K):K=e[43];let _e=ne,q;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(q=()=>S({art:`alle`}),e[44]=q):q=e[44];let ve=z||!j.some(Boolean),J;e[45]!==_e||e[46]!==q||e[47]!==ve?(J=(0,O.jsx)(_e,{onClick:q,disabled:ve,children:`Alles jetzt aktualisieren`}),e[45]=_e,e[46]=q,e[47]=ve,e[48]=J):J=e[48];let Y;e[49]!==K||e[50]!==J?(Y=(0,O.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[K,J]}),e[49]=K,e[50]=J,e[51]=Y):Y=e[51];let ye=n?`Jeden ${n.tag_name} um ${n.uhrzeit} automatisch.`:`Einmal pro Woche automatisch.`,X;e[52]===ye?X=e[53]:(X=(0,O.jsxs)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:[ye,` Vorher wird gesichert, danach geprüft.`]}),e[52]=ye,e[53]=X);let be;e[54]===F?be=e[55]:(be=F&&(0,O.jsx)(`p`,{role:`status`,className:`text-[15px] text-cyan-text`,children:`Gerade läuft ein Update. Weitere lassen sich erst starten, wenn es fertig ist.`}),e[54]=F,e[55]=be);let xe;e[56]===Symbol.for(`react.memo_cache_sentinel`)?(xe=(0,O.jsx)(T,{}),e[56]=xe):xe=e[56];let Z;e[57]!==me||e[58]!==Y||e[59]!==X||e[60]!==be||e[61]!==H?(Z=(0,O.jsxs)(me,{titel:`Updates`,rechts:Y,children:[X,be,H,xe]}),e[57]=me,e[58]=Y,e[59]=X,e[60]=be,e[61]=H,e[62]=Z):Z=e[62];let Se;e[63]===U?Se=e[64]:(Se=(0,O.jsx)(b,{titel:`Verlauf`,children:U}),e[63]=U,e[64]=Se);let Ce;e[65]===g?Ce=e[66]:(Ce=()=>g.mutate(void 0),e[65]=g,e[66]=Ce);let we=g.isPending?`Sichert …`:`Jetzt sichern`,Te;e[67]!==g.isPending||e[68]!==Ce||e[69]!==we?(Te=(0,O.jsx)(ne,{variant:`outline`,size:`sm`,onClick:Ce,disabled:g.isPending,children:we}),e[67]=g.isPending,e[68]=Ce,e[69]=we,e[70]=Te):Te=e[70];let Ee;e[71]===Symbol.for(`react.memo_cache_sentinel`)?(Ee=(0,O.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[71]=Ee):Ee=e[71];let Q;e[72]!==o.data||e[73]!==V?(Q=o.data&&!V&&(0,O.jsx)(`p`,{className:`text-sm text-text-3`,children:`Zurückspielen geht nur auf der Box selbst.`}),e[72]=o.data,e[73]=V,e[74]=Q):Q=e[74];let De;e[75]!==W||e[76]!==Te||e[77]!==Q?(De=(0,O.jsxs)(b,{titel:`Sicherungen`,rechts:Te,children:[Ee,Q,W]}),e[75]=W,e[76]=Te,e[77]=Q,e[78]=De):De=e[78];let Oe;e[79]!==Se||e[80]!==De?(Oe=(0,O.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[Se,De]}),e[79]=Se,e[80]=De,e[81]=Oe):Oe=e[81];let ke=x?.art===`alle`,Ae;e[82]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=()=>S(null),e[82]=Ae):Ae=e[82];let je;e[83]!==x?.art||e[84]!==m?(je=()=>{x?.art===`alle`&&m.mutate(`alle`),S(null)},e[83]=x?.art,e[84]=m,e[85]=je):je=e[85];let Me;e[86]!==z||e[87]!==ke||e[88]!==je?(Me=(0,O.jsx)(y,{offen:ke,titel:`Alles jetzt aktualisieren?`,text:`Motor, llama-swap, Hermes und Betriebssystem werden nacheinander aktualisiert, soweit es Neues gibt, und danach geprüft. Motor und llama-swap holen bei Problemen ihren alten Stand von selbst zurück, vor Hermes wird gesichert. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,gesperrt:z,onNein:Ae,onJa:je}),e[86]=z,e[87]=ke,e[88]=je,e[89]=Me):Me=e[89];let Ne=x?.art===`einzeln`,Pe=x?.art===`einzeln`?`${x.name} aktualisieren?`:``,Fe=x?.art===`einzeln`?k[x.id]??``:``,Ie;e[90]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=()=>S(null),e[90]=Ie):Ie=e[90];let Le;e[91]!==x||e[92]!==m?(Le=()=>{x?.art===`einzeln`&&m.mutate(x.id),S(null)},e[91]=x,e[92]=m,e[93]=Le):Le=e[93];let Re;e[94]!==z||e[95]!==Ne||e[96]!==Pe||e[97]!==Fe||e[98]!==Le?(Re=(0,O.jsx)(y,{offen:Ne,titel:Pe,text:Fe,knopf:`Aktualisieren`,gesperrt:z,onNein:Ie,onJa:Le}),e[94]=z,e[95]=Ne,e[96]=Pe,e[97]=Fe,e[98]=Le,e[99]=Re):Re=e[99];let ze=x?.art===`freigeben`,Be=x?.art===`freigeben`?`${x.name} freigeben?`:``,Ve=x?.art===`freigeben`?`Festgehalten wurde ${x.name}, weil: ${x.grund}. Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`:``,He;e[100]===Symbol.for(`react.memo_cache_sentinel`)?(He=()=>S(null),e[100]=He):He=e[100];let Ue;e[101]!==x||e[102]!==h?(Ue=()=>{x?.art===`freigeben`&&h.mutate(x.id),S(null)},e[101]=x,e[102]=h,e[103]=Ue):Ue=e[103];let We;e[104]!==h.isPending||e[105]!==ze||e[106]!==Be||e[107]!==Ve||e[108]!==Ue?(We=(0,O.jsx)(y,{offen:ze,titel:Be,text:Ve,knopf:`Freigeben`,gesperrt:h.isPending,onNein:He,onJa:Ue}),e[104]=h.isPending,e[105]=ze,e[106]=Be,e[107]=Ve,e[108]=Ue,e[109]=We):We=e[109];let Ge=x?.art===`zurueck`,Ke=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${x?.art===`zurueck`?x.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,qe;e[110]===Symbol.for(`react.memo_cache_sentinel`)?(qe=()=>S(null),e[110]=qe):qe=e[110];let Je;e[111]!==x||e[112]!==_?(Je=()=>{x?.art===`zurueck`&&_.mutate(x.datei),S(null)},e[111]=x,e[112]=_,e[113]=Je):Je=e[113];let $;e[114]!==Ge||e[115]!==Ke||e[116]!==Je||e[117]!==_.isPending?($=(0,O.jsx)(y,{offen:Ge,gefahr:!0,titel:`Sicherung zurückspielen?`,text:Ke,knopf:`Zurückspielen`,gesperrt:_.isPending,onNein:qe,onJa:Je}),e[114]=Ge,e[115]=Ke,e[116]=Je,e[117]=_.isPending,e[118]=$):$=e[118];let Ye;return e[119]!==Z||e[120]!==Oe||e[121]!==Me||e[122]!==Re||e[123]!==We||e[124]!==$?(Ye=(0,O.jsxs)(O.Fragment,{children:[Z,Oe,Me,Re,We,$]}),e[119]=Z,e[120]=Oe,e[121]=Me,e[122]=Re,e[123]=We,e[124]=$,e[125]=Ye):Ye=e[125],Ye}function B(e){return(0,O.jsx)(I,{lauf:e},e.start)}function le(e){return C(e)&&o(e)}function ue(e){return e.group===`maintenance`&&o(e)}function de(e){return e.id}function fe(e){return[e.baustein,e]}function pe(e){return[e.id,e.neu]}export{z as UpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Updates-D8iDMVee.js b/frontend/dist/assets/Updates-D8iDMVee.js deleted file mode 100644 index 54fc1d7..0000000 --- a/frontend/dist/assets/Updates-D8iDMVee.js +++ /dev/null @@ -1,2 +0,0 @@ -import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Nt as a,O as o,Q as s,at as c,ct as l,ht as u,j as d,m as f,mt as p,nt as ee,p as te,st as m}from"./abfragen-pD_qBEtc.js";import{t as h}from"./chevron-right-DF8ikrVh.js";import{t as g}from"./button-BHVKhtQ6.js";import{H as _,R as v,U as ne,h as y,m as b,z as x}from"./index-B_hvuxH0.js";import{c as S,i as C,n as re,o as w,t as T}from"./Auftraege-DLT4O34-.js";var E=r(),D=t(e(),1),O=n(),k=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],A={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function ie(e){let t=(0,E.c)(7),{breit:n}=e,r=n===void 0?`w-16`:n,a;t[0]===r?a=t[1]:(a=i(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,r),t[0]=r,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,O.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,O.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,O.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function ae(e){let t=(0,E.c)(13),{text:n}=e,[r,a]=(0,D.useState)(!1),o;t[0]===n?o=t[1]:(o=n.split(` -`).length>3||n.length>240,t[0]=n,t[1]=o);let s=o,c=s&&!r&&`line-clamp-3`,l;t[2]===c?l=t[3]:(l=i(`m-0 whitespace-pre-line`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==n?(u=(0,O.jsx)(`p`,{className:l,children:n}),t[4]=l,t[5]=n,t[6]=u):u=t[6];let d;t[7]!==s||t[8]!==r?(d=s&&(0,O.jsx)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>a(!r),className:`-mb-2 inline-flex h-11 items-center text-sm text-cyan-text hover:underline`,children:r?`Weniger zeigen`:`Ganze Zusammenfassung zeigen`}),t[7]=s,t[8]=r,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==d?(f=(0,O.jsxs)(`div`,{className:`flex flex-col items-start`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function oe(e){let t=(0,E.c)(13),{d:n}=e,r;t[0]===n.packages?r=t[1]:(r=n.packages??[],t[0]=n.packages,t[1]=r);let i=r,a,o;if(t[2]!==n.held_back||t[3]!==i){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.held_back??[];if(i.length===0&&e.length===0){o=null;break bb0}let r;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,O.jsx)(h,{"aria-hidden":!0,className:`size-4 transition-transform group-open:rotate-90`}),t[6]=r):r=t[6];let s=i.length===0?`Was Ubuntu zurückhält (${e.length})`:i.length===1?`Das Paket ansehen`:`Alle ${i.length} Pakete ansehen`,c;t[7]===s?c=t[8]:(c=(0,O.jsxs)(`summary`,{className:`inline-flex h-11 cursor-pointer items-center gap-1 text-sm text-cyan-text hover:underline`,children:[r,s]}),t[7]=s,t[8]=c);let l;t[9]===i?l=t[10]:(l=i.map(M),t[9]=i,t[10]=l);let u;t[11]===l?u=t[12]:(u=(0,O.jsx)(`ul`,{className:`ziffern m-0 flex max-h-64 list-none flex-col gap-1 overflow-auto rounded-xl bg-black/30 ring-1 ring-white/[0.07] ring-inset p-2.5 text-xs`,children:l}),t[11]=l,t[12]=u),a=(0,O.jsxs)(`details`,{className:`group`,children:[c,u,e.length>0&&(0,O.jsxs)(`p`,{className:`mt-2 text-xs text-text-3`,children:[`Dazu `,e.length===1?`kommt ein Paket`:`kommen ${e.length} Pakete`,`, die Ubuntu noch zurückhält (`,e.map(j).join(`, `),`). Die kommen von selbst, wenn Ubuntu sie freigibt.`]})]})}t[2]=n.held_back,t[3]=i,t[4]=a,t[5]=o}else a=t[4],o=t[5];return o===Symbol.for(`react.early_return_sentinel`)?a:o}function j(e){return e.name}function M(e){return(0,O.jsxs)(`li`,{className:`break-all`,children:[(0,O.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,O.jsxs)(`span`,{className:`text-text-3`,children:[e.current,` → `,e.candidate]})]},e.name)}function se(e){let t=(0,E.c)(6),{d:n}=e;if(n.action_needed===!1){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,O.jsx)(_,{art:`gruen`,children:`Nichts zu tun`}),t[0]=e):e=t[0],e}if(n.action_needed!==!0)return null;let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,O.jsx)(_,{art:`bernstein`,children:`Du musst etwas tun`}),t[1]=r):r=t[1];let i;t[2]===n.action_text?i=t[3]:(i=n.action_text&&(0,O.jsx)(`span`,{className:`text-bernstein`,children:n.action_text}),t[2]=n.action_text,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,O.jsxs)(`span`,{className:`flex flex-col items-start gap-1.5`,children:[r,i]}),t[4]=i,t[5]=a),a}function N(e){let t=e?.trim();return t?t.startsWith(`(Zusammenfassung nicht verfügbar`)?`Die Zusammenfassung ist gerade nicht verfügbar.`:t:null}function P(e){let t=(0,E.c)(70),{id:n,name:r,details:i,hatUpdate:a,neuLautStart:o,fest:s,gesperrt:c,onStart:l,onFreigeben:u}=e,d=i.data,f=i.isPending,p=i.isError?i.error.message:d?.error,ee;t[0]!==d||t[1]!==n?(ee=d?S(n,d):null,t[0]=d,t[1]=n,t[2]=ee):ee=t[2];let te=ee,m=a?te?.neu??o??null:null,h=d?.summary,_;t[3]===h?_=t[4]:(_=N(h),t[3]=h,t[4]=_);let ne=_,y=te&&te.laeuft!==`–`?te.laeuft:p?`unbekannt`:`–`,b;t[5]!==f||t[6]!==y?(b=f?(0,O.jsx)(ie,{}):(0,O.jsx)(O.Fragment,{children:y}),t[5]=f,t[6]=y,t[7]=b):b=t[7];let C=b,re;t[8]!==p||t[9]!==f||t[10]!==m?(re=f?(0,O.jsx)(ie,{breit:`w-20`}):m?(0,O.jsx)(`span`,{className:`text-cyan-text`,children:m}):p?(0,O.jsx)(`span`,{className:`text-bernstein`,children:`nicht geprüft`}):(0,O.jsx)(`span`,{className:`text-text-3`,children:`–`}),t[8]=p,t[9]=f,t[10]=m,t[11]=re):re=t[11];let T=re,D;if(f){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,O.jsx)(`span`,{className:`text-text-3`,children:`Wird geprüft …`}),t[12]=e):e=t[12],D=e}else if(p&&!a){let e;t[13]===p?e=t[14]:(e=w(p),t[13]=p,t[14]=e);let n;t[15]===e?n=t[16]:(n=(0,O.jsx)(`span`,{className:`text-bernstein`,children:e}),t[15]=e,t[16]=n),D=n}else if(!a)D=`Aktuell.`;else{let e;t[17]===p?e=t[18]:(e=p&&(0,O.jsx)(`span`,{className:`text-bernstein`,children:w(p)}),t[17]=p,t[18]=e);let r;t[19]===d?r=t[20]:(r=d&&(0,O.jsx)(se,{d}),t[19]=d,t[20]=r);let i;t[21]!==d||t[22]!==n||t[23]!==ne?(i=n===`os`?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{children:d?.count?`${d.count} ${d.count===1?`Paket`:`Pakete`} aus Ubuntu.`:`Neue Pakete aus Ubuntu.`}),d&&(0,O.jsx)(oe,{d})]}):ne?(0,O.jsx)(ae,{text:ne}):null,t[21]=d,t[22]=n,t[23]=ne,t[24]=i):i=t[24];let a;t[25]!==e||t[26]!==r||t[27]!==i?(a=(0,O.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[e,r,i]}),t[25]=e,t[26]=r,t[27]=i,t[28]=a):a=t[28],D=a}let k=f||void 0,A;t[29]===n?A=t[30]:(A=x(n),t[29]=n,t[30]=A);let j;t[31]===A?j=t[32]:(j=(0,O.jsx)(v,{bild:A,groesse:`sm`}),t[31]=A,t[32]=j);let M;t[33]===r?M=t[34]:(M=(0,O.jsx)(`span`,{className:`min-w-0`,children:r}),t[33]=r,t[34]=M);let P;t[35]!==j||t[36]!==M?(P=(0,O.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 items-center gap-3 text-[15px] font-semibold`,children:[j,M]}),t[35]=j,t[36]=M,t[37]=P):P=t[37];let F;t[38]!==p||t[39]!==f||t[40]!==m||t[41]!==T?(F=!f&&(m||p)&&(0,O.jsxs)(O.Fragment,{children:[` `,m?`→`:`·`,` `,T]}),t[38]=p,t[39]=f,t[40]=m,t[41]=T,t[42]=F):F=t[42];let I;t[43]!==C||t[44]!==F?(I=(0,O.jsxs)(`span`,{role:`cell`,className:`ziffern -mt-1 text-sm text-text-2 md:hidden`,children:[C,F]}),t[43]=C,t[44]=F,t[45]=I):I=t[45];let L;t[46]===C?L=t[47]:(L=(0,O.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm text-text-2 md:block`,children:C}),t[46]=C,t[47]=L);let R;t[48]===T?R=t[49]:(R=(0,O.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm md:block`,children:T}),t[48]=T,t[49]=R);let z;t[50]!==s||t[51]!==r?(z=s&&(0,O.jsxs)(`span`,{className:`mb-1.5 block text-bernstein`,children:[`Festgehalten seit `,s.seit,` auf `,s.version,`: `,s.grund,`. Der Sonntags-Lauf überspringt `,r,`.`]}),t[50]=s,t[51]=r,t[52]=z):z=t[52];let B;t[53]!==z||t[54]!==D?(B=(0,O.jsxs)(`div`,{role:`cell`,className:`text-sm leading-relaxed text-text-2`,children:[z,D]}),t[53]=z,t[54]=D,t[55]=B):B=t[55];let V;t[56]!==s||t[57]!==c||t[58]!==a||t[59]!==u||t[60]!==l?(V=(s||a)&&(0,O.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-end`,children:[s&&(0,O.jsx)(g,{variant:`outline`,size:`sm`,onClick:u,children:`Freigeben`}),a&&(0,O.jsx)(g,{variant:`outline`,size:`sm`,onClick:l,disabled:c,children:`Aktualisieren`})]}),t[56]=s,t[57]=c,t[58]=a,t[59]=u,t[60]=l,t[61]=V):V=t[61];let ce;return t[62]!==P||t[63]!==I||t[64]!==L||t[65]!==R||t[66]!==B||t[67]!==V||t[68]!==k?(ce=(0,O.jsxs)(`div`,{role:`row`,"aria-busy":k,className:`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-white/[0.06] py-3.5 md:grid-cols-[210px_100px_170px_minmax(0,1fr)_auto] md:items-start`,children:[P,I,L,R,B,V]}),t[62]=P,t[63]=I,t[64]=L,t[65]=R,t[66]=B,t[67]=V,t[68]=k,t[69]=ce):ce=t[69],ce}var F={rot:`rot`,gelb:`bernstein`,gruen:`gruen`,info:`cyan`,grau:`grau`},I={rot:`bg-rot`,gelb:`bg-bernstein`,gruen:`bg-gruen`,info:`bg-cyan`,grau:`bg-text-3`};function L(e){let t=(0,E.c)(19),{lauf:n}=e,r;t[0]===n.start?r=t[1]:(r=u(n.start),t[0]=n.start,t[1]=r);let i;t[2]===r?i=t[3]:(i=(0,O.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:r}),t[2]=r,t[3]=i);let a;t[4]===n.anlass?a=t[5]:(a=(0,O.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:n.anlass}),t[4]=n.anlass,t[5]=a);let o=F[n.stufe],s;t[6]!==n.titel||t[7]!==o?(s=(0,O.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,O.jsx)(_,{art:o,children:n.titel})}),t[6]=n.titel,t[7]=o,t[8]=s):s=t[8];let c;t[9]!==i||t[10]!==a||t[11]!==s?(c=(0,O.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[i,a,s]}),t[9]=i,t[10]=a,t[11]=s,t[12]=c):c=t[12];let l;t[13]!==n.stufe||t[14]!==n.zeilen?(l=n.stufe!==`grau`&&n.zeilen.length>0&&(0,O.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 @sm:pl-[124px]`,children:n.zeilen.map(R)}),t[13]=n.stufe,t[14]=n.zeilen,t[15]=l):l=t[15];let d;return t[16]!==c||t[17]!==l?(d=(0,O.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-white/[0.06] py-3`,children:[c,l]}),t[16]=c,t[17]=l,t[18]=d):d=t[18],d}function R(e){return(0,O.jsxs)(`li`,{className:`flex items-baseline gap-2 text-sm leading-snug text-text-2`,children:[(0,O.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 shrink-0 -translate-y-px rounded-full`,I[e.stufe])}),(0,O.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,O.jsx)(`span`,{className:`text-foreground`,children:e.baustein}),` · `,e.text]})]},`${e.baustein}-${e.text}`)}function z(e){return e.mtime?u(new Date(e.mtime*1e3).toISOString()):e.snapshot}function B(){let e=(0,E.c)(126),t=ee(),n=te(!0).data?.update_fenster,r=d(),i=l(),a=s(),u=m(),h=f(),_=o(),v=p(),[x,S]=(0,D.useState)(null),C;e[0]===t.data?.updates.bausteine?C=e[1]:(C=new Map((t.data?.updates.bausteine??[]).map(fe)),e[0]=t.data?.updates.bausteine,e[1]=C);let w=C,ie=new Map((t.data?.updates.festgehalten??[]).map(de)),ae;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(ae=k.map(ue),e[2]=ae):ae=e[2];let oe=c(ae),j;e[3]!==oe||e[4]!==w?(j=(e,t)=>re(e.id,oe[t].data)??w.has(e.id),e[3]=oe,e[4]=w,e[5]=j):j=e[5];let M=k.map(j),se;e[6]===r.data?.jobs?se=e[7]:(se=r.data?.jobs??[],e[6]=r.data?.jobs,e[7]=se);let N=se,F;e[8]!==N||e[9]!==t.data?.zustand?(F=N.some(le)||(t.data?.zustand.update_laeuft??!1),e[8]=N,e[9]=t.data?.zustand,e[10]=F):F=e[10];let I=F,L;e[11]===N?L=e[12]:(L=N.some(ce),e[11]=N,e[12]=L);let R=L,B=I||u.isPending,H=a.data?.available??!1,U;if(t.isPending){let t;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(ne,{text:`Updates werden gelesen …`}),e[13]=t):t=e[13],U=t}else if(t.isError&&!t.data){let n=`Die Box antwortet nicht: ${t.error.message}`,r;e[14]===n?r=e[15]:(r=(0,O.jsx)(ne,{fehler:!0,text:n}),e[14]=n,e[15]=r),U=r}else{let t;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsxs)(`div`,{role:`row`,className:`etikett hidden grid-cols-[210px_100px_170px_minmax(0,1fr)_auto] gap-x-4 pb-2 text-[10.5px] tracking-[0.14em] text-text-3 md:grid`,children:[(0,O.jsx)(`span`,{role:`columnheader`,children:`Baustein`}),(0,O.jsx)(`span`,{role:`columnheader`,children:`Läuft`}),(0,O.jsx)(`span`,{role:`columnheader`,children:`Neu`}),(0,O.jsx)(`span`,{role:`columnheader`,children:`Was sich ändert`}),(0,O.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),e[16]=t):t=e[16],U=(0,O.jsxs)(`div`,{role:`table`,"aria-label":`Bausteine und ihre Updates`,className:`flex flex-col`,children:[t,k.map((e,t)=>(0,O.jsx)(P,{id:e.id,name:e.name,details:oe[t],hatUpdate:M[t],neuLautStart:w.get(e.id),fest:ie.get(e.id),gesperrt:B,onStart:()=>S({art:`einzeln`,id:e.id,name:e.name}),onFreigeben:()=>{let t=ie.get(e.id);t&&S({art:`freigeben`,id:e.id,name:e.name,grund:t.grund})}},e.id))]})}let W;if(i.isPending){let t;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[17]=t):t=e[17],W=t}else if(i.isError&&!i.data){let t;e[18]===i.error.message?t=e[19]:(t=(0,O.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Verlauf lässt sich gerade nicht lesen: `,i.error.message]}),e[18]=i.error.message,e[19]=t),W=t}else if(i.data?.laeufe.length){let t;e[21]===i.data.laeufe?t=e[22]:(t=i.data.laeufe.map(V),e[21]=i.data.laeufe,e[22]=t);let n;e[23]===t?n=e[24]:(n=(0,O.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:t}),e[23]=t,e[24]=n),W=n}else{let t;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Update-Läufe aufgezeichnet.`}),e[20]=t):t=e[20],W=t}let G;if(a.isPending){let t;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[25]=t):t=e[25],G=t}else if(a.isError&&!a.data){let t;e[26]===a.error.message?t=e[27]:(t=(0,O.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Sicherungen lassen sich gerade nicht lesen: `,a.error.message]}),e[26]=a.error.message,e[27]=t),G=t}else if(a.data?.backups.length){let t;if(e[29]!==a.data.backups||e[30]!==v.isPending||e[31]!==H){let n;e[33]!==v.isPending||e[34]!==H?(n=e=>(0,O.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.06] py-2.5`,children:[(0,O.jsx)(`span`,{className:`ziffern text-sm`,children:z(e)}),(0,O.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,O.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,O.jsx)(g,{variant:`ghost`,size:`sm`,disabled:!H||v.isPending,onClick:()=>S({art:`zurueck`,datei:e.file,zeit:z(e)}),children:`Zurückspielen`})]})]},e.file),e[33]=v.isPending,e[34]=H,e[35]=n):n=e[35],t=a.data.backups.slice(0,5).map(n),e[29]=a.data.backups,e[30]=v.isPending,e[31]=H,e[32]=t}else t=e[32];let n;e[36]===t?n=e[37]:(n=(0,O.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:t}),e[36]=t,e[37]=n),G=n}else{let t;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,O.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Sicherung vorhanden.`}),e[28]=t):t=e[28],G=t}let pe=b,K;e[38]===u?K=e[39]:(K=()=>u.mutate(`pruefen`),e[38]=u,e[39]=K);let me=u.isPending||R,he=R?`Sucht …`:`Nach Neuem suchen`,q;e[40]!==he||e[41]!==K||e[42]!==me?(q=(0,O.jsx)(g,{variant:`outline`,onClick:K,disabled:me,children:he}),e[40]=he,e[41]=K,e[42]=me,e[43]=q):q=e[43];let ge=g,J;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>S({art:`alle`}),e[44]=J):J=e[44];let _e=B||!M.some(Boolean),Y;e[45]!==ge||e[46]!==J||e[47]!==_e?(Y=(0,O.jsx)(ge,{onClick:J,disabled:_e,children:`Alles jetzt aktualisieren`}),e[45]=ge,e[46]=J,e[47]=_e,e[48]=Y):Y=e[48];let X;e[49]!==q||e[50]!==Y?(X=(0,O.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[q,Y]}),e[49]=q,e[50]=Y,e[51]=X):X=e[51];let ve=n?`Jeden ${n.tag_name} um ${n.uhrzeit} automatisch.`:`Einmal pro Woche automatisch.`,Z;e[52]===ve?Z=e[53]:(Z=(0,O.jsxs)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:[ve,` Vorher wird gesichert, danach geprüft.`]}),e[52]=ve,e[53]=Z);let ye;e[54]===I?ye=e[55]:(ye=I&&(0,O.jsx)(`p`,{role:`status`,className:`text-[15px] text-cyan-text`,children:`Gerade läuft ein Update. Weitere lassen sich erst starten, wenn es fertig ist.`}),e[54]=I,e[55]=ye);let be;e[56]===Symbol.for(`react.memo_cache_sentinel`)?(be=(0,O.jsx)(T,{}),e[56]=be):be=e[56];let Q;e[57]!==pe||e[58]!==X||e[59]!==Z||e[60]!==ye||e[61]!==U?(Q=(0,O.jsxs)(pe,{titel:`Updates`,rechts:X,children:[Z,ye,U,be]}),e[57]=pe,e[58]=X,e[59]=Z,e[60]=ye,e[61]=U,e[62]=Q):Q=e[62];let xe;e[63]===W?xe=e[64]:(xe=(0,O.jsx)(b,{titel:`Verlauf`,children:W}),e[63]=W,e[64]=xe);let Se;e[65]===_?Se=e[66]:(Se=()=>_.mutate(void 0),e[65]=_,e[66]=Se);let Ce=_.isPending?`Sichert …`:`Jetzt sichern`,we;e[67]!==_.isPending||e[68]!==Se||e[69]!==Ce?(we=(0,O.jsx)(g,{variant:`outline`,size:`sm`,onClick:Se,disabled:_.isPending,children:Ce}),e[67]=_.isPending,e[68]=Se,e[69]=Ce,e[70]=we):we=e[70];let Te;e[71]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,O.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[71]=Te):Te=e[71];let Ee;e[72]!==a.data||e[73]!==H?(Ee=a.data&&!H&&(0,O.jsx)(`p`,{className:`text-sm text-text-3`,children:`Zurückspielen geht nur auf der Box selbst.`}),e[72]=a.data,e[73]=H,e[74]=Ee):Ee=e[74];let De;e[75]!==G||e[76]!==we||e[77]!==Ee?(De=(0,O.jsxs)(b,{titel:`Sicherungen`,rechts:we,children:[Te,Ee,G]}),e[75]=G,e[76]=we,e[77]=Ee,e[78]=De):De=e[78];let Oe;e[79]!==xe||e[80]!==De?(Oe=(0,O.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[xe,De]}),e[79]=xe,e[80]=De,e[81]=Oe):Oe=e[81];let ke=x?.art===`alle`,Ae;e[82]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=()=>S(null),e[82]=Ae):Ae=e[82];let je;e[83]!==x?.art||e[84]!==u?(je=()=>{x?.art===`alle`&&u.mutate(`alle`),S(null)},e[83]=x?.art,e[84]=u,e[85]=je):je=e[85];let $;e[86]!==B||e[87]!==ke||e[88]!==je?($=(0,O.jsx)(y,{offen:ke,titel:`Alles jetzt aktualisieren?`,text:`Motor, llama-swap, Hermes und Betriebssystem werden nacheinander aktualisiert, soweit es Neues gibt, und danach geprüft. Motor und llama-swap holen bei Problemen ihren alten Stand von selbst zurück, vor Hermes wird gesichert. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,gesperrt:B,onNein:Ae,onJa:je}),e[86]=B,e[87]=ke,e[88]=je,e[89]=$):$=e[89];let Me=x?.art===`einzeln`,Ne=x?.art===`einzeln`?`${x.name} aktualisieren?`:``,Pe=x?.art===`einzeln`?A[x.id]??``:``,Fe;e[90]===Symbol.for(`react.memo_cache_sentinel`)?(Fe=()=>S(null),e[90]=Fe):Fe=e[90];let Ie;e[91]!==x||e[92]!==u?(Ie=()=>{x?.art===`einzeln`&&u.mutate(x.id),S(null)},e[91]=x,e[92]=u,e[93]=Ie):Ie=e[93];let Le;e[94]!==B||e[95]!==Me||e[96]!==Ne||e[97]!==Pe||e[98]!==Ie?(Le=(0,O.jsx)(y,{offen:Me,titel:Ne,text:Pe,knopf:`Aktualisieren`,gesperrt:B,onNein:Fe,onJa:Ie}),e[94]=B,e[95]=Me,e[96]=Ne,e[97]=Pe,e[98]=Ie,e[99]=Le):Le=e[99];let Re=x?.art===`freigeben`,ze=x?.art===`freigeben`?`${x.name} freigeben?`:``,Be=x?.art===`freigeben`?`Festgehalten wurde ${x.name}, weil: ${x.grund}. Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`:``,Ve;e[100]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=()=>S(null),e[100]=Ve):Ve=e[100];let He;e[101]!==x||e[102]!==h?(He=()=>{x?.art===`freigeben`&&h.mutate(x.id),S(null)},e[101]=x,e[102]=h,e[103]=He):He=e[103];let Ue;e[104]!==h.isPending||e[105]!==Re||e[106]!==ze||e[107]!==Be||e[108]!==He?(Ue=(0,O.jsx)(y,{offen:Re,titel:ze,text:Be,knopf:`Freigeben`,gesperrt:h.isPending,onNein:Ve,onJa:He}),e[104]=h.isPending,e[105]=Re,e[106]=ze,e[107]=Be,e[108]=He,e[109]=Ue):Ue=e[109];let We=x?.art===`zurueck`,Ge=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${x?.art===`zurueck`?x.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,Ke;e[110]===Symbol.for(`react.memo_cache_sentinel`)?(Ke=()=>S(null),e[110]=Ke):Ke=e[110];let qe;e[111]!==x||e[112]!==v?(qe=()=>{x?.art===`zurueck`&&v.mutate(x.datei),S(null)},e[111]=x,e[112]=v,e[113]=qe):qe=e[113];let Je;e[114]!==We||e[115]!==Ge||e[116]!==qe||e[117]!==v.isPending?(Je=(0,O.jsx)(y,{offen:We,gefahr:!0,titel:`Sicherung zurückspielen?`,text:Ge,knopf:`Zurückspielen`,gesperrt:v.isPending,onNein:Ke,onJa:qe}),e[114]=We,e[115]=Ge,e[116]=qe,e[117]=v.isPending,e[118]=Je):Je=e[118];let Ye;return e[119]!==Q||e[120]!==Oe||e[121]!==$||e[122]!==Le||e[123]!==Ue||e[124]!==Je?(Ye=(0,O.jsxs)(O.Fragment,{children:[Q,Oe,$,Le,Ue,Je]}),e[119]=Q,e[120]=Oe,e[121]=$,e[122]=Le,e[123]=Ue,e[124]=Je,e[125]=Ye):Ye=e[125],Ye}function V(e){return(0,O.jsx)(L,{lauf:e},e.start)}function ce(e){return C(e)&&a(e)}function le(e){return e.group===`maintenance`&&a(e)}function ue(e){return e.id}function de(e){return[e.baustein,e]}function fe(e){return[e.id,e.neu]}export{B as UpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/abfragen-pD_qBEtc.js b/frontend/dist/assets/abfragen-CDCgpAto.js similarity index 73% rename from frontend/dist/assets/abfragen-pD_qBEtc.js rename to frontend/dist/assets/abfragen-CDCgpAto.js index 26a8591..f1b1253 100644 --- a/frontend/dist/assets/abfragen-pD_qBEtc.js +++ b/frontend/dist/assets/abfragen-CDCgpAto.js @@ -1 +1 @@ -import{a as e,c as t,i as n,r}from"./dist-aE7UmubC.js";var i=t(e(),1),a=n(),o=i.createContext(void 0),s=e=>{let t=i.useContext(o);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},c=({client:e,children:t})=>(i.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,a.jsx)(o.Provider,{value:e,children:t})),l={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},u=new class{#e=l;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function d(e){setTimeout(e,0)}var f=typeof window>`u`||`Deno`in globalThis;function p(){}function m(e,t){return typeof e==`function`?e(t):e}function h(e){return typeof e==`number`&&e>=0&&e!==1/0}function g(e,t){return Math.max(e+(t||0)-Date.now(),0)}function _(e,t){return typeof e==`function`?e(t):e}function v(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==b(o,t.options))return!1}else if(!S(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function y(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(x(t.options.mutationKey)!==x(a))return!1}else if(!S(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function b(e,t){return(t?.queryKeyHashFn||x)(e)}function x(e){return JSON.stringify(e,(e,t)=>T(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function S(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(Array.isArray(e)&&Array.isArray(t)){if(t.length>e.length)return!1;for(let n=0;n500)return t;let r=te(e)&&te(t);if(!r&&!(T(e)&&T(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l{u.setTimeout(t,e)})}function ie(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:C(e,t)}function ae(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function oe(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var se=Symbol();function ce(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===se?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function le(e,t){return typeof e==`function`?e(...t):!!e}function ue(e,t,n){let r=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var de=()=>f,fe=()=>de(),E=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},D=new class extends E{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},pe=d;function me(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=pe,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var O=me(),k=new class extends E{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function he(e){return Math.min(1e3*2**e,3e4)}function ge(e){return(e??`online`)!==`online`||k.isOnline()}var A=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function _e(e){let t=!1,n=0,r,i=`pending`,a,o,s=new Promise((e,t)=>{a=e,o=t});s.catch(p);let c=()=>i!==`pending`,l=t=>{if(!c()){let n=new A(t);g(n),e.onCancel?.(n)}},u=()=>{t=!0},d=()=>{t=!1},f=()=>D.isFocused()&&(e.networkMode===`always`||k.isOnline())&&e.canRun(),m=()=>ge(e.networkMode)&&e.canRun(),h=e=>{c()||(r?.(),i=`resolved`,a(e))},g=e=>{c()||(r?.(),i=`rejected`,o(e))},_=()=>new Promise(t=>{r=e=>{(c()||f())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,c()||e.onContinue?.()}),v=()=>{if(c())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(h).catch(r=>{if(c())return;let i=e.retry??(fe()?0:3),a=e.retryDelay??he,o=typeof a==`function`?a(n,r):a,s=i===!0||typeof i==`number`&&nf()?void 0:_()).then(()=>{t?g(r):v()})})};return{promise:s,status:()=>i,cancel:l,continue:()=>(r?.(),s),cancelRetry:u,continueRetry:d,canStart:m,start:()=>(m()?v():_().then(v),s)}}var ve=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),h(this.gcTime)&&(this.#e=u.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(fe()?1/0:3e5))}clearGcTimeout(){this.#e!==void 0&&(u.clearTimeout(this.#e),this.#e=void 0)}};function ye(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{ue(e,()=>t.signal,()=>n=!0)},u=ce(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})(),o=await u(a),{maxPages:s}=t.options,c=i?oe:ae;return{pages:c(e.pages,o,s),pageParams:c(e.pageParams,r,s)}};if(i&&a.length){let e=i===`backward`,t=e?xe:be,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:be(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(ct.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):l}}}function be(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function xe(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var Se=class extends ve{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#r=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=Te(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=Te(this.options);e.data!==void 0&&(this.setState(we(e.data,e.dataUpdatedAt)),this.#t=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#r.remove(this)}setData(e,t){let n=ie(this.state.data,e,this.options);return this.#c({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#c({type:`setState`,state:e})}cancel(e){let t=this.#a?.promise;return this.#a?.cancel(e),t?t.then(p).catch(p):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>_(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===se||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>_(e.options.staleTime,this)===`static`)}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!g(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){let t=this.observers.indexOf(e);t!==-1&&(this.observers.splice(t,1),this.observers.length||(this.#a&&(this.#s||this.state.fetchStatus===`paused`&&this.state.status===`pending`?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#r.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#c({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#a?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#s=!0,n.signal)})},i=()=>{let e=ce(this.options,t),n=(()=>{let e={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#s=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:i};return r(e),e})();(this.#e===`infinite`?ye(this.options.pages):this.options.behavior)?.onFetch(a,this),this.#n=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#c({type:`fetch`,meta:a.fetchOptions?.meta});let o=this.#a=_e({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof A&&e.revert&&this.setState({...this.#n,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#c({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#c({type:`pause`})},onContinue:()=>{this.#c({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await o.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof A){if(e.silent)return this.#a.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#c({type:`error`,error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.#a===o&&(this.#a=void 0),this.scheduleGc()}}#c(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Ce(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...we(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),O.batch(()=>{this.observers.slice().forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:`updated`,action:e})})}};function Ce(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:ge(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function we(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function Te(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Ee=class extends E{#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p=new Set;constructor(e,t){super(),this.options=t,this.#e=e,this.#o=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),Oe(this.#t,this.options)?this.#m():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return j(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return j(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof _(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!w(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&ke(this.#t,n,this.options,t)&&this.#m(),this.updateResult(),r&&(this.#t!==n||_(this.options.enabled,this.#t)!==_(t.enabled,this.#t)||_(this.options.staleTime,this.#t)!==_(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||_(this.options.enabled,this.#t)!==_(t.enabled,this.#t)||i!==this.#f)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return w(this.getCurrentResult(),n)||(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),Reflect.get(e,n))})}trackProp(e){this.#p.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t),r=()=>{},i,a=new Promise(e=>{i=e,r=this.#e.getQueryCache().subscribe(i=>{i.type===`updated`&&i.query.queryHash===n.queryHash&&n.state.data!==void 0&&(r(),e(this.createResult(n,t)))})});return Promise.race([n.fetch().then(()=>{let e=this.createResult(n,t);return i?.(e),e}).finally(()=>{r()}),a])}fetch(e){return this.#m({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#m(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(p)),t}#h(e){return!fe()&&_(this.options.enabled,this.#t)!==!1&&h(e)}#g(){this.#b();let e=_(this.options.staleTime,this.#t);if(this.#r.isStale||!this.#h(e))return;let t=g(this.#r.dataUpdatedAt,e)+1;this.#u=u.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return _(this.options.refetchInterval,this.#t)??!1}#v(e){this.#x(),this.#f=e,this.#f!==0&&this.#h(this.#f)&&(this.#d=u.setInterval(()=>{(this.options.refetchIntervalInBackground||D.isFocused())&&this.#m()},this.#f))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#u!==void 0&&(u.clearTimeout(this.#u),this.#u=void 0)}#x(){this.#d!==void 0&&(u.clearInterval(this.#d),this.#d=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&Oe(e,t),o=i&&ke(e,n,t,r);(a||o)&&(l={...l,...Ce(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#l?.state.data,this.#l):t.placeholderData,e!==void 0&&(m=`success`,d=ie(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h){if(i&&d===a?.data&&t.select===this.#s)d=this.#c;else try{this.#s=t.select,d=t.select(d),d=ie(i?.data,d,t),this.#c=d,this.#o=null}catch(e){this.#o=e}}else d===void 0&&(this.#o=null);this.#o&&(f=this.#o,d=this.#c,p=Date.now(),m=`error`,u=!1);let g=l.fetchStatus===`fetching`,v=m===`pending`,y=m===`error`,b=v&&g,x=d!==void 0;return{status:m,fetchStatus:l.fetchStatus,isPending:v,isSuccess:m===`success`,isError:y,isInitialLoading:b,isLoading:b,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!v,isLoadingError:y&&!x,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:y&&x,isStale:M(e,t),refetch:this.refetch,isEnabled:_(t.enabled,e)!==!1}}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);if(this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#l=this.#t),w(t,e))return;this.#r=t;let n=(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#p.size)return!0;let r=new Set(n??this.#p);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})();O.batch(()=>{n&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}};function De(e,t){return _(t.enabled,e)!==!1&&e.state.data===void 0&&(e.state.status!==`error`||_(t.retryOnMount,e)!==!1)}function Oe(e,t){return De(e,t)||e.state.data!==void 0&&j(e,t,t.refetchOnMount)}function j(e,t,n){if(_(t.enabled,e)!==!1&&_(t.staleTime,e)!==`static`){let r=_(n,e);return r===`always`||r!==!1&&M(e,t)}return!1}function ke(e,t,n,r){return(e!==t||_(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&M(e,n)}function M(e,t){return _(t.enabled,e)!==!1&&e.isStaleByTime(_(t.staleTime,e))}var Ae=class extends ve{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||je(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??(this.state.status===`pending`?this.execute(this.state.variables):Promise.resolve())}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey},r=this.#r=_e({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)}),i=this.state.status===`pending`,a=!r.canStart();try{if(i)t();else{this.#i({type:`pending`,variables:e,isPaused:a}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:a})}let o=await r.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,n),await this.options.onSuccess?.(o,e,this.state.context,n),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(o,null,e,this.state.context,n),this.#i({type:`success`,data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#r===r&&(this.#r=void 0),this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),O.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function je(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var Me=class extends E{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),w(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&x(t.mutationKey)!==x(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??je();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){O.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}};function Ne(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}var Pe=class extends E{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,O.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!w(e,n)});(o||s)&&(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(Ne(e,n).forEach(e=>{e.destroy()}),Ne(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){let n=new Set;return t.map((r,i)=>{let a=e[i];return r.defaultedQueryOptions.notifyOnChangeProps?a:r.observer.trackResult(a,e=>{n.has(e)||(n.add(e),t.forEach(t=>{t.observer.trackProp(e)}))})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=C(this.#a,t(e))),this.#a}return e}#f(){return!this.#r?.combine||this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new Ee(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=this.#t.slice(),this.#t[n]=t,this.#h())}#h(){if(this.hasListeners()){let e=this.#f(),t=this.#a,n=e?t:this.#d(this.#u(this.#t,this.#l),this.#r?.combine);(e||t!==n)&&O.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},Fe=i.createContext(!1),Ie=()=>i.useContext(Fe);Fe.Provider;function Le(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Re=i.createContext(Le()),ze=()=>i.useContext(Re),Be=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?le(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||r)&&(t.isReset()||(e.retryOnMount=!1))},Ve=e=>{i.useEffect(()=>{e.clearReset()},[e])},He=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||le(n,[e.error,r])),Ue=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},N=(e,t)=>e?.suspense&&t.isPending,We=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function Ge({queries:e,...t},n){let r=s(n),a=Ie(),o=ze(),c=t.subscribed!==!1,l=i.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=a?`isRestoring`:c?`optimistic`:void 0,t}),[e,r,a,c]);l.forEach(e=>{Ue(e);let t=r.getQueryCache().get(e.queryHash);Be(e,o,t)}),Ve(o);let[u]=i.useState(()=>new Pe(r,l,t)),[d,f,m]=u.getOptimisticResult(l,t.combine),h=!a&&c;i.useSyncExternalStore(i.useCallback(e=>h?u.subscribe(O.batchCalls(e)):p,[u,h]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),i.useEffect(()=>{u.setQueries(l,t)},[l,t,u]);let g=d.some((e,t)=>N(l[t],e))?d.flatMap((e,t)=>{let n=l[t];return n&&N(n,e)?We(n,new Ee(r,n),o):[]}):[];if(g.length>0)throw Promise.all(g);let _=d.find((e,t)=>{let n=l[t];return n&&He({result:e,errorResetBoundary:o,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(_)throw _.error;return f(m())}function Ke(e,t,n){let r=Ie(),a=ze(),o=s(n),c=o.defaultQueryOptions(e),l=o.getQueryCache().get(c.queryHash),u=e.subscribed!==!1;c._optimisticResults=r?`isRestoring`:u?`optimistic`:void 0,Ue(c),Be(c,a,l),Ve(a);let[d]=i.useState(()=>new t(o,c)),f=d.getOptimisticResult(c),m=!r&&u;if(i.useSyncExternalStore(i.useCallback(e=>{let t=m?d.subscribe(O.batchCalls(e)):p;return d.updateResult(),t},[d,m]),()=>d.getCurrentResult(),()=>d.getCurrentResult()),i.useEffect(()=>{d.setOptions(c)},[c,d]),N(c,f))throw We(c,d,a);if(He({result:f,errorResetBoundary:a,throwOnError:c.throwOnError,query:l,suspense:c.suspense}))throw f.error;return c.notifyOnChangeProps?f:d.trackResult(f)}function P(e,t){return Ke(e,Ee,t)}function qe(e,t){let n=s(t),[r]=i.useState(()=>new Me(n,e));i.useEffect(()=>{r.setOptions(e)},[r,e]);let a=i.useSyncExternalStore(i.useCallback(e=>r.subscribe(O.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=i.useCallback((...e)=>{r.mutate(e[0],e[1]).catch(p)},[r]);if(a.error&&le(r.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:o,mutateAsync:a.mutate}}var F=r(),Je=[`/api/instanz`,`/api/partner`,`/api/health`],Ye=(e,t)=>e===t||e.startsWith(`${t}/`)||e.startsWith(`${t}?`);function Xe(e,t){return!e.startsWith(`/api/`)||Je.some(t=>Ye(e,t))||(Ye(e,`/api/homelab`)?`homelab`:`box`)===t?e:`/api/partner${e.slice(4)}`}var I=null;function Ze(){return I??=fetch(`/api/instanz`,{headers:{Accept:`application/json`}}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))).then(e=>e.rolle===`homelab`?`homelab`:`box`).catch(()=>(I=null,`box`)),I}var L=class extends Error{status;detail;constructor(e,t){super(t),this.status=e,this.detail=t,this.name=`ApiFehler`}};function Qe(e,t){if(e&&typeof e==`object`&&`detail`in e){let t=e.detail;if(typeof t==`string`)return t;if(Array.isArray(t))return t.map(e=>e.msg??String(e)).join(`; `)}return`Die Box antwortet mit Fehler ${t}.`}async function R(e,t={}){let n=Xe(e,await Ze()),r;try{r=await fetch(n,{...t,headers:{"Content-Type":`application/json`,Accept:`application/json`,...t.headers}})}catch{throw new L(0,`MC2 ist nicht erreichbar. Läuft die Box?`)}let i=await r.text(),a=i?$e(i):null;if(!r.ok)throw new L(r.status,Qe(a,r.status));if(typeof a==`string`)throw new L(r.status,`Die Box antwortet nicht mit Daten.`);return a}function $e(e){try{return JSON.parse(e)}catch{return e}}var z=(e,t)=>R(e,{method:`POST`,body:t===void 0?void 0:JSON.stringify(t)}),et=100,tt=95,nt=210,B=240;function rt(e,t){let n=e*Math.PI/180;return[et+t*Math.cos(n),tt-t*Math.sin(n)]}var V=e=>Math.round(e*100)/100;function it(e,t,n){let r=Math.max(0,Math.min(1,e)),i=Math.max(r,Math.min(1,t)),[a,o]=rt(nt-B*r,n),[s,c]=rt(nt-B*i,n),l=+((i-r)*B>180);return`M ${V(a)} ${V(o)} A ${n} ${n} 0 ${l} 1 ${V(s)} ${V(c)}`}function at(e){return e==null?`var(--text-3)`:e>=85?`var(--rot)`:e>=70?`var(--bernstein)`:`var(--box)`}function ot(e){if(!e.waechter_wach)return{art:`stumm`,oben:`Wächter`,mitte:`Schweigt`,unten:`Seit über 5 Minuten kein Prüflauf`};if(e.update_laeuft)return{art:`info`,oben:`Wartung`,mitte:`Update läuft`,unten:`Hinweise ruhen bis zum Ende`};if(e.anzahl===0)return{art:`ok`,oben:`Alles`,mitte:`In Ordnung`,unten:`Keine offenen Hinweise`};let t=`${e.anzahl} Hinweis${e.anzahl===1?``:`e`}`;return e.stufe===`rot`?{art:`rot`,oben:`Störung`,mitte:t,unten:`Drücken zum Ansehen`}:{art:`gelb`,oben:`Achtung`,mitte:t,unten:`Drücken zum Ansehen`}}function st(e,t){let n=`„${e.titel}“:`;switch(t.id){case`protokoll`:return null;case`neustart`:return e.id.startsWith(`timer:`)?{titel:`${t.label}?`,text:`${n} Der Dienst läuft sofort noch einmal.`,knopf:t.label}:{titel:`${t.label}?`,text:`${n} Der Dienst wird ${/^starten/i.test(t.label)?`gestartet`:`neu gestartet`} und ist dabei kurz nicht erreichbar.`,knopf:t.label};case`job-wiederholen`:return{titel:`Job erneut ausführen?`,text:`${n} Hermes führt den Job sofort noch einmal aus, mit allem, was er sonst auch tut — etwa Nachrichten verschicken.`,knopf:t.label};case`freigeben`:return{titel:`Update freigeben?`,text:`${n} Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`,knopf:t.label};default:return{titel:`${t.label}?`,text:`${n} ${t.label}.`,knopf:t.label}}}function H(e){return e?.status===`busy`?e.running?`Es läuft schon ein Update („${e.running}“). Warte, bis es fertig ist.`:`Es läuft schon ein Update. Warte, bis es fertig ist.`:e?.detail||e?.err||e?.error||e?.text||`Das hat nicht geklappt.`}var U=e=>e.state===`running`||e.state===`queued`;function ct(e){let t=e.aliases.map(e=>e.toLowerCase());return t.includes(`hermes`)||t.includes(`fast`)?`hirn`:t.includes(`coder`)?`coder`:null}var lt={neu:`Neu`,wartet:`Wartet`,getestet:`Gemessen`,bestanden:`Bestanden`,durchgefallen:`Durchgefallen`,uebernommen:`Übernommen`,verworfen:`Verworfen`};function ut(e,t=``){if(e==null||e===``)return`–`;let n=typeof e==`number`?e.toLocaleString(`de-DE`,{maximumFractionDigits:+(e<10)}):String(e);return t?`${n} ${t}`:n}var W=[],dt=1,G=new Set,ft=()=>G.forEach(e=>e());function K(e,t){let n=dt++;W=[...W,{id:n,art:e,text:t}].slice(-4),ft(),e!==`fehler`&&window.setTimeout(()=>pt(n),6e3)}function pt(e){W=W.filter(t=>t.id!==e),ft()}var mt=()=>(0,i.useSyncExternalStore)(ht,gt);function ht(e){return G.add(e),()=>{G.delete(e)}}function gt(){return W}var q=2e3,_t=3e4,vt=2e4,J=`verbinde`,yt=null,bt=new Set,xt=()=>bt.forEach(e=>e());function St(e){return bt.add(e),()=>{bt.delete(e)}}var Ct=()=>J===`live`,wt=()=>(0,i.useSyncExternalStore)(St,Dt),Tt=()=>(0,i.useSyncExternalStore)(St,Ot);function Y(e){e!==J&&(J=e,xt())}function Et(){let e=s();(0,i.useEffect)(()=>{let t=null,n,r,i=Date.now(),a=q,o=!1;function s(){o||(window.clearTimeout(n),n=window.setTimeout(l,a),a=Math.min(a*2,_t))}function c(){i=Date.now(),window.clearTimeout(r),r=window.setTimeout(()=>{t?.close(),Y(`getrennt`),s()},vt)}function l(){window.clearTimeout(n),window.clearTimeout(r),t?.close();let i=new EventSource(`/api/stream`);t=i,i.onopen=()=>{a=q,Y(`live`),c(),e.invalidateQueries()},i.onerror=()=>{Y(`getrennt`),i.readyState===EventSource.CLOSED&&(window.clearTimeout(r),s())},i.addEventListener(`invalidate`,t=>{c();try{let n=JSON.parse(t.data)?.keys??[];for(let t of n)e.invalidateQueries({queryKey:[t]})}catch{}}),i.addEventListener(`metrik`,e=>{c();try{yt=JSON.parse(e.data),xt()}catch{}})}let u=()=>{o||document.visibilityState!==`visible`||(t?.readyState===EventSource.CLOSED||Date.now()-i>5e3)&&(a=q,l())};return l(),window.addEventListener(`online`,u),document.addEventListener(`visibilitychange`,u),()=>{o=!0,window.clearTimeout(n),window.clearTimeout(r),window.removeEventListener(`online`,u),document.removeEventListener(`visibilitychange`,u),t?.close(),Y(`getrennt`)}},[e])}function Dt(){return J}function Ot(){return yt}var X=`Europe/Berlin`,kt=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:X}),At=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:X}),jt=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:X}),Mt=new Intl.DateTimeFormat(`en-CA`,{timeZone:X});function Z(e){return Mt.format(e)}function Nt(e,t=new Date){let n=new Date(e);if(Number.isNaN(n.getTime()))return`–`;let r=Z(t),i=Z(new Date(t.getTime()-864e5)),a=Z(new Date(t.getTime()+864e5)),o=Z(n),s=kt.format(n);return o===r?`HEUTE ${s}`:o===i?`GESTERN ${s}`:o===a?`MORGEN ${s}`:Math.abs(n.getTime()-t.getTime())<5616e5?`${At.format(n).replace(`.`,``).toUpperCase()} ${s}`:`${jt.format(n)} ${s}`}function Pt(e,t=new Date){let n=new Date(e*1e3);return Z(n)===Z(t)?`seit heute ${kt.format(n)}`:`seit ${jt.format(n)}, ${kt.format(n)}`}function Ft(e,t=Date.now()){let n=Math.max(0,Math.round(t/1e3-e));if(n<60)return`vor ${n} s`;if(n<3600)return`vor ${Math.round(n/60)} min`;if(n<86400)return`vor ${Math.round(n/3600)} h`;let r=Math.round(n/86400);return`vor ${r} ${r===1?`Tag`:`Tagen`}`}function It(e){return e==null||e<0?null:[Math.floor(e/86400),Math.floor(e%86400/3600)]}var Lt=e=>e==null?null:e/1024**3;function Rt(e,t=0){let n=Lt(e);return n==null?`–`:n>=1e3?`${(n/1024).toFixed(1).replace(`.`,`,`)} TB`:`${n.toFixed(t).replace(`.`,`,`)} GB`}var zt=e=>e.toLocaleString(`de-DE`),Q=e=>()=>Ct()?e*5:e;function Bt(e,t){let n=e.getQueryData([`jobs`])?.jobs??[],r=t.filter(e=>!U(e)&&n.some(t=>t.id===e.id&&U(t)));if(r.length===0)return;let i=new Set([`start`]);for(let e of r){let t=e.group===`download`||/^download\s/i.test(e.label);for(let e of t?[`models`,`aufraeumen`]:[`update-details`,`updates-verlauf`,`sicherungen`])i.add(e)}for(let t of i)e.invalidateQueries({queryKey:[t]})}var Vt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`start`],queryFn:or,refetchInterval:sr},e[0]=t):t=e[0],P(t)},Ht=()=>{let e=(0,F.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`models`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:cr,refetchInterval:Q(3e4)},e[1]=n):n=e[1],P(n)},Ut=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`nutzung`],queryFn:lr,refetchInterval:6e5},e[0]=t):t=e[0],P(t)},Wt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`radar`],queryFn:ur,retry:!1,refetchInterval:3e5},e[0]=t):t=e[0],P(t)},Gt=()=>{let e=(0,F.c)(3),t=s(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`jobs`],e[0]=n):n=e[0];let r;return e[1]===t?r=e[2]:(r={queryKey:n,queryFn:async()=>{let e=await R(`/api/jobs`);return Bt(t,e.jobs),e},refetchInterval:dr},e[1]=t,e[2]=r),P(r)},Kt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`sicherungen`],queryFn:fr},e[0]=t):t=e[0],P(t)},qt=e=>{let t=(0,F.c)(4),n;t[0]===e?n=t[1]:(n=e.map(pr),t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r={queries:n},t[2]=n,t[3]=r),Ge(r)},Jt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`updates-verlauf`],queryFn:mr},e[0]=t):t=e[0],P(t)},Yt=e=>{let t=(0,F.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):(n=[`protokoll`,e],r=()=>R(`/api/maintenance/logs?service=${encodeURIComponent(e??``)}&lines=200`),t[0]=e,t[1]=n,t[2]=r);let i=!!e,a;return t[3]!==n||t[4]!==r||t[5]!==i?(a={queryKey:n,queryFn:r,enabled:i},t[3]=n,t[4]=r,t[5]=i,t[6]=a):a=t[6],P(a)},Xt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`ablaeufe`],queryFn:hr,refetchInterval:6e4},e[0]=t):t=e[0],P(t)},Zt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`dienste`],queryFn:gr,refetchInterval:1e4},e[0]=t):t=e[0],P(t)};function $(e,t){let n=(0,F.c)(6),r=s(),i;n[0]!==t||n[1]!==r?(i=(e,n)=>{let i=e;i&&i.ok===!1?K(`fehler`,t.fehler?.(n,i)??H(i)):t.erfolg(n,e)&&K(`erfolg`,t.erfolg(n,e));for(let e of t.neuLaden)r.invalidateQueries({queryKey:[e]})},n[0]=t,n[1]=r,n[2]=i):i=n[2];let a;return n[3]!==e||n[4]!==i?(a={mutationFn:e,onSuccess:i,onError:Qt},n[3]=e,n[4]=i,n[5]=a):a=n[5],qe(a)}function Qt(e){return K(`fehler`,e.message)}var $t=e=>{let t=(0,F.c)(4),n=e===void 0?`/api/hinweise`:e,r;t[0]===n?r=t[1]:(r=e=>{let{hinweis:t,aktion:r}=e;return z(`${n}/${encodeURIComponent(t)}/aktion/${r}`)},t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i={erfolg:_r,neuLaden:n===`/api/hinweise`?[`start`]:[`homelab-hinweise`]},t[2]=n,t[3]=i),$(r,i)},en=new Set([`gesehen`,`stumm`,`laut`]),tn={alle:`/api/maintenance/update-all`,pruefen:`/api/maintenance/check-updates`,os:`/api/maintenance/os-update`,engine:`/api/maintenance/engine-update`,swap:`/api/maintenance/swap-update`,hermes:`/api/maintenance/hermes-update`},nn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:yr,neuLaden:[`jobs`,`start`]},e[0]=t):t=e[0],$(vr,t)},rn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:xr,fehler:Sr,neuLaden:[`jobs`]},e[0]=t):t=e[0],$(br,t)},an=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:wr,neuLaden:[`jobs`]},e[0]=t):t=e[0],$(Cr,t)},on=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Er,neuLaden:[`jobs`,`models`]},e[0]=t):t=e[0],$(Tr,t)},sn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`aufraeumen`],queryFn:Dr,staleTime:6e4},e[0]=t):t=e[0],P(t)},cn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:kr,neuLaden:[`aufraeumen`,`models`,`start`]},e[0]=t):t=e[0],$(Or,t)},ln=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:jr,neuLaden:[`start`]},e[0]=t):t=e[0],$(Ar,t)},un=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Nr,fehler:Pr,neuLaden:[`sicherungen`,`start`]},e[0]=t):t=e[0],$(Mr,t)},dn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ir,neuLaden:[`sicherungen`]},e[0]=t):t=e[0],$(Fr,t)},fn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Rr,neuLaden:[`models`,`start`]},e[0]=t):t=e[0],$(Lr,t)},pn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Br,neuLaden:[`radar`,`models`,`start`]},e[0]=t):t=e[0],$(zr,t)},mn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Hr,neuLaden:[`radar`,`jobs`]},e[0]=t):t=e[0],$(Vr,t)},hn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Wr,neuLaden:[`jobs`]},e[0]=t):t=e[0],$(Ur,t)},gn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`instanz`],queryFn:Gr,staleTime:1/0},e[0]=t):t=e[0],P(t)},_n=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`partner`],queryFn:Kr,refetchInterval:3e4},e[0]=t):t=e[0],P(t)},vn=()=>{let e=(0,F.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`ziele-box`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:qr,refetchInterval:Q(3e4)},e[1]=n):n=e[1],P(n)},yn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Jr,enabled:e,refetchInterval:3e4},t[1]=e,t[2]=r),P(r)},bn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-laeufe`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Yr,enabled:e,refetchInterval:Zr},t[1]=e,t[2]=r),P(r)},xn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:$r,neuLaden:[`homelab`,`homelab-laeufe`,`ziele-box`,`jobs`,`start`]},e[0]=t):t=e[0],$(Qr,t)},Sn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-hinweise`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:ei,enabled:e,refetchInterval:r},t[2]=e,t[3]=i),P(i)},Cn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:ti,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},wn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ri,neuLaden:[`einstellungen`,`start`]},e[0]=t):t=e[0],$(ni,t)},Tn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ai,neuLaden:[`einstellungen`,`start`,`radar`]},e[0]=t):t=e[0],$(ii,t)},En=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:si,neuLaden:[]},e[0]=t):t=e[0],$(oi,t)},Dn=(e,t)=>{let n=(0,F.c)(9),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`stand`,`hier`],n[0]=r):r=n[0];let i;n[1]===e?i=n[2]:(i={queryKey:r,queryFn:ci,enabled:e},n[1]=e,n[2]=i);let a;n[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=[`stand`,`partner`],n[3]=a):a=n[3];let o=e&&t,s;n[4]===o?s=n[5]:(s={queryKey:a,queryFn:li,enabled:o,retry:!1},n[4]=o,n[5]=s);let c;return n[6]!==i||n[7]!==s?(c={queries:[i,s]},n[6]=i,n[7]=s,n[8]=c):c=n[8],Ge(c)},On=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`altreste`],queryFn:ui,staleTime:6e4},e[0]=t):t=e[0],P(t)},kn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:fi,neuLaden:[`altreste`,`start`]},e[0]=t):t=e[0],$(di,t)},An={"1h":6e4,"24h":3e5,"7d":9e5},jn=(e,t)=>{let n=(0,F.c)(8),r=t===void 0||t,i,a;n[0]===e?(i=n[1],a=n[2]):(i=[`messwerte`,`box`,e],a=()=>R(`/api/messwerte?zeitraum=${e}`),n[0]=e,n[1]=i,n[2]=a);let o=An[e],s;return n[3]!==r||n[4]!==i||n[5]!==a||n[6]!==o?(s={queryKey:i,queryFn:a,enabled:r,refetchInterval:o,placeholderData:pi,retry:!1},n[3]=r,n[4]=i,n[5]=a,n[6]=o,n[7]=s):s=n[7],P(s)},Mn=(e,t)=>{let n=(0,F.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):(r=[`messwerte`,`homelab`,e],i=()=>R(`/api/homelab/messwerte?zeitraum=${e}`),n[0]=e,n[1]=r,n[2]=i);let a=An[e],o;return n[3]!==t||n[4]!==r||n[5]!==i||n[6]!==a?(o={queryKey:r,queryFn:i,enabled:t,refetchInterval:a,placeholderData:mi,retry:!1},n[3]=t,n[4]=r,n[5]=i,n[6]=a,n[7]=o):o=n[7],P(o)},Nn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammelplan`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:hi,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},Pn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammellauf`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:gi,enabled:e,refetchInterval:_i,retry:!1},t[1]=e,t[2]=r),P(r)},Fn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:yi,neuLaden:[`homelab-sammellauf`,`homelab-laeufe`,`homelab`]},e[0]=t):t=e[0],$(vi,t)},In=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:xi,neuLaden:[`homelab-sammellauf`]},e[0]=t):t=e[0],$(bi,t)},Ln=(e,t,n)=>{let r=(0,F.c)(9),i=n===void 0?null:n,a,o;r[0]!==t||r[1]!==i?(a=[`homelab-protokoll`,t,i],o=()=>R(`/api/homelab/protokoll?grenze=300&berichte=${+!!t}${i?`&ziel=${encodeURIComponent(i)}`:``}`),r[0]=t,r[1]=i,r[2]=a,r[3]=o):(a=r[2],o=r[3]);let s;r[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=Q(3e4),r[4]=s):s=r[4];let c;return r[5]!==e||r[6]!==a||r[7]!==o?(c={queryKey:a,queryFn:o,enabled:e,refetchInterval:s,retry:!1},r[5]=e,r[6]=a,r[7]=o,r[8]=c):c=r[8],P(c)},Rn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-speicher`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Si,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},zn=(e,t,n)=>{let r=(0,F.c)(8),i,a;r[0]!==t||r[1]!==e?(i=[`homelab-neuerungen`,e,t],a=()=>R(`/api/homelab/ziele/${e}/neuerungen?baustein=${encodeURIComponent(t)}`),r[0]=t,r[1]=e,r[2]=i,r[3]=a):(i=r[2],a=r[3]);let o;return r[4]!==n||r[5]!==i||r[6]!==a?(o={queryKey:i,queryFn:a,enabled:n,staleTime:6e5,retry:!1},r[4]=n,r[5]=i,r[6]=a,r[7]=o):o=r[7],P(o)},Bn=e=>{let t=(0,F.c)(3),n=e===void 0||e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`lucy-autonomie`],t[0]=r):r=t[0];let i;return t[1]===n?i=t[2]:(i={queryKey:r,queryFn:Ci,enabled:n,retry:!1},t[1]=n,t[2]=i),P(i)},Vn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ti,neuLaden:[`lucy-autonomie`]},e[0]=t):t=e[0],$(wi,t)},Hn=e=>{let t=(0,F.c)(4),n=e===void 0||e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`rueckfragen`],t[0]=r):r=t[0];let i;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=Q(3e4),t[1]=i):i=t[1];let a;return t[2]===n?a=t[3]:(a={queryKey:r,queryFn:Ei,enabled:n,refetchInterval:i,retry:!1},t[2]=n,t[3]=a),P(a)},Un=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Oi,neuLaden:[`rueckfragen`,`start`,`jobs`,`homelab`,`homelab-laeufe`]},e[0]=t):t=e[0],$(Di,t)},Wn=e=>{let t=(0,F.c)(3),n=e===void 0||e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`wochenbericht`],t[0]=r):r=t[0];let i;return t[1]===n?i=t[2]:(i={queryKey:r,queryFn:ki,enabled:n,retry:!1},t[1]=n,t[2]=i),P(i)},Gn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ji,neuLaden:[`wochenbericht`,`rueckfragen`]},e[0]=t):t=e[0],$(Ai,t)},Kn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-wartung`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Mi,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},qn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Pi,neuLaden:[`homelab-wartung`]},e[0]=t):t=e[0],$(Ni,t)},Jn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ii,neuLaden:[`homelab`,`homelab-wartung`]},e[0]=t):t=e[0],$(Fi,t)},Yn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-neu`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Li,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},Xn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-docker`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Ri,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},Zn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Bi,neuLaden:[`homelab-neu`,`homelab`]},e[0]=t):t=e[0],$(zi,t)},Qn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-zertifikate`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(3e5),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Vi,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},$n=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab`,`snapshots`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Hi,enabled:e,refetchInterval:Wi,retry:!1},t[1]=e,t[2]=r),P(r)},er=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ki,neuLaden:[`homelab-speicher`]},e[0]=t):t=e[0],$(Gi,t)},tr=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ji,neuLaden:[`homelab`,`homelab-laeufe`]},e[0]=t):t=e[0],$(qi,t)},nr=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Yi,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},rr=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Zi,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],$(Xi,t)},ir=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:$i,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],$(Qi,t)},ar=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ta,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],$(ea,t)};function or(){return R(`/api/start`)}function sr(e){return e.state.data&&!e.state.data.updates.gelesen?4e3:Q(2e4)()}function cr(){return R(`/api/models`)}function lr(){return R(`/api/modelle/nutzung`)}function ur(){return R(`/api/radar`)}function dr(e){return e.state.data?.jobs.some(U)?2e3:Q(3e4)()}function fr(){return R(`/api/zeitmaschine`)}function pr(e){return{queryKey:[`update-details`,e],queryFn:()=>R(`/api/maintenance/update-details?kind=${encodeURIComponent(e)}`),staleTime:6e5}}function mr(){return R(`/api/updates/verlauf`)}function hr(){return R(`/api/system/ablaeufe`)}function gr(){return R(`/api/system/services`)}function _r(e,t){return(e.aktion===`freigeben`||en.has(e.aktion))&&t.text?t.text:`${e.label}: erledigt. Der Wächter prüft in einer Minute nach.`}function vr(e){return z(tn[e])}function yr(e){return e===`pruefen`?`Die Suche nach Neuem läuft. Den Fortschritt siehst du unten bei den Aufträgen.`:`Das Update läuft. Den Fortschritt siehst du unten bei den Aufträgen.`}function br(e){let{id:t}=e;return z(`/api/jobs/${encodeURIComponent(t)}/cancel`)}function xr(e){return`${e.titel}: wird abgebrochen.`}function Sr(e){return`${e.titel} lief schon nicht mehr.`}function Cr(e){return z(`/api/jobs/${encodeURIComponent(e)}/quittieren`)}function wr(){return``}function Tr(e){let{repo:t,quant:n,rolle:r}=e;return z(`/api/models/install`,{repo:t,quant:n,role:r})}function Er(e,t){return`${e.repo} (${e.quant}) wird heruntergeladen${t.total_bytes?`, ${Rt(t.total_bytes,1)}`:``}. Den Fortschritt siehst du unter Aufträge.`}function Dr(){return R(`/api/modelle/aufraeumen`)}function Or(e){return z(`/api/modelle/aufraeumen/loeschen`,{art:e.art,name:e.name})}function kr(e,t){return t.text??`Gelöscht.`}function Ar(e){return z(`/api/updates/festgehalten/${encodeURIComponent(e)}/freigeben`)}function jr(e,t){return t.text??`Freigegeben.`}function Mr(){return z(`/api/system/backup`)}function Nr(e,t){return t.size_mb==null?`Sicherung erstellt.`:`Sicherung erstellt (${t.size_mb.toLocaleString(`de-DE`)} MB).`}function Pr(e,t){return`Die Sicherung ging nicht: ${H(t)}`}function Fr(e){return z(`/api/zeitmaschine/restore`,{file:e})}function Ir(){return`Zurückspielen läuft. Die Dienste starten gleich neu.`}function Lr(e){return z(`/api/models/${encodeURIComponent(e)}/load`)}function Rr(e){return`${e} wird geladen.`}function zr(e){let{id:t,aktion:n}=e;return z(`/api/radar/${encodeURIComponent(t)}/${n}`)}function Br(e){return e.aktion===`uebernehmen`?`${e.name} übernommen.`:`${e.name} verworfen.`}function Vr(e){let{id:t}=e;return z(`/api/radar/${encodeURIComponent(t)}/testen`)}function Hr(e,t){return t.text??`Der Test von ${e.name} läuft.`}function Ur(){return z(`/api/radar/suche`)}function Wr(e,t){return t.text??`Das Radar sucht jetzt nach neuen Modellen.`}function Gr(){return R(`/api/instanz`)}function Kr(){return R(`/api/partner`)}function qr(){return R(`/api/ziele`)}function Jr(){return R(`/api/homelab/ziele`)}function Yr(){return R(`/api/homelab/laeufe`)}function Xr(e){return e.status===`laeuft`}function Zr(e){return e.state.data?.laeufe.some(Xr)?3e3:3e4}function Qr(e){return R(e.pfad,{method:e.methode})}function $r(e){return`${e.label}: gestartet. Das Ergebnis kommt als Meldung.`}function ei(){return R(`/api/homelab/hinweise`)}function ti(){return R(`/api/einstellungen`)}function ni(e){return z(`/api/einstellungen/update-fenster`,e)}function ri(e,t){return t.text??`Gespeichert.`}function ii(e){return z(`/api/einstellungen/radar`,{an:e})}function ai(e,t){return t.text??`Geschaltet.`}function oi(e){return z(e===`homelab`?`/api/homelab/einstellungen/telegram-test`:`/api/einstellungen/telegram-test`)}function si(e,t){return t.text??`Die Testmeldung ist raus.`}function ci(){return R(`/api/instanz`)}function li(){return R(`/api/partner/instanz`)}function ui(){return R(`/api/aufraeumen/altreste`)}function di(e){return z(`/api/aufraeumen/altreste/loeschen`,{id:e.id})}function fi(e,t){return t.text??`Gelöscht.`}function pi(e){return e}function mi(e){return e}function hi(){return R(`/api/homelab/alle/plan`)}function gi(){return R(`/api/homelab/sammellauf`)}function _i(e){return e.state.data?.sammellauf?.status===`laeuft`?5e3:6e4}function vi(){return z(`/api/homelab/alle`)}function yi(){return`Alle aktualisieren: gestartet. Die Schritte laufen nacheinander; das Ergebnis kommt als Meldung.`}function bi(e){return z(`/api/homelab/sammellauf/${encodeURIComponent(e)}/quittieren`)}function xi(){return``}function Si(){return R(`/api/homelab/speicher`)}function Ci(){return R(`/api/lucy/autonomie`)}function wi(e){return z(`/api/lucy/autonomie`,{stufen:e})}function Ti(e,t){return t.text??`Gespeichert.`}function Ei(){return R(`/api/rueckfragen`)}function Di(e){let{nr:t,ja:n}=e;return z(`/api/rueckfragen/${t}/${n?`ja`:`nein`}`)}function Oi(e,t){return t.text??`Erledigt.`}function ki(){return R(`/api/lucy/wochenbericht`)}function Ai(){return z(`/api/lucy/wochenbericht`)}function ji(e,t){return t.text??`Der Wochenbericht ist unterwegs.`}function Mi(){return R(`/api/homelab/wartung`)}function Ni(e){return z(`/api/homelab/wartung`,e)}function Pi(e,t){return t.text??`Gespeichert.`}function Fi(e){let{zid:t,version:n}=e;return n===null?R(`/api/homelab/ziele/${t}/ueberspringen`,{method:`DELETE`}):z(`/api/homelab/ziele/${t}/ueberspringen`,{baustein:`app`,version:n})}function Ii(e,t){return t.text??`Erledigt.`}function Li(){return R(`/api/homelab/neu`)}function Ri(){return R(`/api/homelab/docker`)}function zi(e){let{id:t,wahl:n}=e;return z(`/api/homelab/neu/${t}`,{wahl:n})}function Bi(e,t){return t.text??`Übernommen.`}function Vi(){return R(`/api/homelab/zertifikate`)}function Hi(){return R(`/api/homelab/snapshots`)}function Ui(e){return e.laeuft}function Wi(e){return e.state.data?.geraete.some(Ui)?3e3:3e4}function Gi(){return z(`/api/homelab/sicherungen/probe`)}function Ki(){return`Probe gestartet. Das Ergebnis steht in etwa einer Minute bei den Geräten.`}function qi(e){return R(e.pfad,{method:e.methode})}function Ji(e){return`${e.label}: gestartet. Das Ergebnis steht gleich beim Gerät.`}function Yi(){return R(`/api/homelab/einstellungen`)}function Xi(e){return e===null?R(`/api/homelab/einstellungen/arcane-schluessel`,{method:`DELETE`}):z(`/api/homelab/einstellungen/arcane-schluessel`,{schluessel:e})}function Zi(e,t){return t.text??(e===null?`Arcane-Schlüssel entfernt.`:`Arcane-Schlüssel gespeichert.`)}function Qi(e){return e===null?R(`/api/homelab/einstellungen/adguard-zugang`,{method:`DELETE`}):z(`/api/homelab/einstellungen/adguard-zugang`,e)}function $i(e,t){return t.text??(e===null?`AdGuard-Zugang entfernt.`:`AdGuard-Zugang gespeichert.`)}function ea(e){return z(`/api/homelab/einstellungen/arcane-echt`,{an:e})}function ta(e){return e?`Docker-Updates über Arcane laufen jetzt echt.`:`Docker-Updates über Arcane sind wieder nur ein Probelauf.`}export{er as $,S as $t,an as A,H as At,_n as B,P as Bt,$n as C,Et as Ct,gn as D,mt as Dt,on as E,K as Et,Ht as F,ct as Ft,hn as G,D as Gt,Wt as H,Se as Ht,Yn as I,at as It,Hn as J,x as Jt,mn as K,E as Kt,Zn as L,L as Lt,Bn as M,st as Mt,Vn as N,U as Nt,un as O,lt as Ot,fn as P,ut as Pt,Kt as Q,p as Qt,zn as R,R as Rt,Ln as S,Tt as St,Qn as T,pt as Tt,pn as U,k as Ut,Yt as V,Ae as Vt,Tn as W,O as Wt,Pn as X,y as Xt,Nn as Y,b as Yt,In as Z,v as Zt,Xn as _,Rt as _t,On as a,qt as at,bn as b,Ft as bt,sn as c,Jt as ct,vn as d,Wn as dt,_ as en,tr as et,Zt as f,Gn as ft,yn as g,Lt as gt,$t as h,Nt as ht,kn as i,Jn as it,Gt as j,ot as jt,rn as k,it as kt,cn as l,Kn as lt,ln as m,dn as mt,ir as n,c as nn,Vt as nt,ar as o,wn as ot,Cn as p,xn as pt,Un as q,m as qt,Fn as r,s as rn,En as rt,rr as s,nn as st,Xt as t,se as tn,Dn as tt,jn as u,qn as ut,nr as v,It as vt,Rn as w,wt,Mn as x,zt as xt,Sn as y,Pt as yt,Ut as z,z as zt}; \ No newline at end of file +import{a as e,c as t,i as n,r}from"./dist-aE7UmubC.js";var i=t(e(),1),a=n(),o=i.createContext(void 0),s=e=>{let t=i.useContext(o);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},c=({client:e,children:t})=>(i.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,a.jsx)(o.Provider,{value:e,children:t})),l={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},u=new class{#e=l;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function d(e){setTimeout(e,0)}var f=typeof window>`u`||`Deno`in globalThis;function p(){}function m(e,t){return typeof e==`function`?e(t):e}function h(e){return typeof e==`number`&&e>=0&&e!==1/0}function g(e,t){return Math.max(e+(t||0)-Date.now(),0)}function _(e,t){return typeof e==`function`?e(t):e}function v(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==b(o,t.options))return!1}else if(!S(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function y(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(x(t.options.mutationKey)!==x(a))return!1}else if(!S(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function b(e,t){return(t?.queryKeyHashFn||x)(e)}function x(e){return JSON.stringify(e,(e,t)=>T(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function S(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(Array.isArray(e)&&Array.isArray(t)){if(t.length>e.length)return!1;for(let n=0;n500)return t;let r=te(e)&&te(t);if(!r&&!(T(e)&&T(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l{u.setTimeout(t,e)})}function ie(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:C(e,t)}function ae(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function oe(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var se=Symbol();function ce(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===se?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function le(e,t){return typeof e==`function`?e(...t):!!e}function ue(e,t,n){let r=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var de=()=>f,fe=()=>de(),E=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},D=new class extends E{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},pe=d;function me(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=pe,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var O=me(),k=new class extends E{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function he(e){return Math.min(1e3*2**e,3e4)}function ge(e){return(e??`online`)!==`online`||k.isOnline()}var A=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function _e(e){let t=!1,n=0,r,i=`pending`,a,o,s=new Promise((e,t)=>{a=e,o=t});s.catch(p);let c=()=>i!==`pending`,l=t=>{if(!c()){let n=new A(t);g(n),e.onCancel?.(n)}},u=()=>{t=!0},d=()=>{t=!1},f=()=>D.isFocused()&&(e.networkMode===`always`||k.isOnline())&&e.canRun(),m=()=>ge(e.networkMode)&&e.canRun(),h=e=>{c()||(r?.(),i=`resolved`,a(e))},g=e=>{c()||(r?.(),i=`rejected`,o(e))},_=()=>new Promise(t=>{r=e=>{(c()||f())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,c()||e.onContinue?.()}),v=()=>{if(c())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(h).catch(r=>{if(c())return;let i=e.retry??(fe()?0:3),a=e.retryDelay??he,o=typeof a==`function`?a(n,r):a,s=i===!0||typeof i==`number`&&nf()?void 0:_()).then(()=>{t?g(r):v()})})};return{promise:s,status:()=>i,cancel:l,continue:()=>(r?.(),s),cancelRetry:u,continueRetry:d,canStart:m,start:()=>(m()?v():_().then(v),s)}}var ve=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),h(this.gcTime)&&(this.#e=u.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(fe()?1/0:3e5))}clearGcTimeout(){this.#e!==void 0&&(u.clearTimeout(this.#e),this.#e=void 0)}};function ye(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{ue(e,()=>t.signal,()=>n=!0)},u=ce(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})(),o=await u(a),{maxPages:s}=t.options,c=i?oe:ae;return{pages:c(e.pages,o,s),pageParams:c(e.pageParams,r,s)}};if(i&&a.length){let e=i===`backward`,t=e?xe:be,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:be(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(ct.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):l}}}function be(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function xe(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var Se=class extends ve{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#r=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=Te(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=Te(this.options);e.data!==void 0&&(this.setState(we(e.data,e.dataUpdatedAt)),this.#t=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#r.remove(this)}setData(e,t){let n=ie(this.state.data,e,this.options);return this.#c({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#c({type:`setState`,state:e})}cancel(e){let t=this.#a?.promise;return this.#a?.cancel(e),t?t.then(p).catch(p):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>_(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===se||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>_(e.options.staleTime,this)===`static`)}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!g(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){let t=this.observers.indexOf(e);t!==-1&&(this.observers.splice(t,1),this.observers.length||(this.#a&&(this.#s||this.state.fetchStatus===`paused`&&this.state.status===`pending`?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#r.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#c({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#a?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#s=!0,n.signal)})},i=()=>{let e=ce(this.options,t),n=(()=>{let e={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#s=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:i};return r(e),e})();(this.#e===`infinite`?ye(this.options.pages):this.options.behavior)?.onFetch(a,this),this.#n=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#c({type:`fetch`,meta:a.fetchOptions?.meta});let o=this.#a=_e({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof A&&e.revert&&this.setState({...this.#n,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#c({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#c({type:`pause`})},onContinue:()=>{this.#c({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await o.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof A){if(e.silent)return this.#a.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#c({type:`error`,error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.#a===o&&(this.#a=void 0),this.scheduleGc()}}#c(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Ce(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...we(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),O.batch(()=>{this.observers.slice().forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:`updated`,action:e})})}};function Ce(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:ge(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function we(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function Te(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Ee=class extends E{#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p=new Set;constructor(e,t){super(),this.options=t,this.#e=e,this.#o=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),Oe(this.#t,this.options)?this.#m():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return j(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return j(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof _(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!w(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&ke(this.#t,n,this.options,t)&&this.#m(),this.updateResult(),r&&(this.#t!==n||_(this.options.enabled,this.#t)!==_(t.enabled,this.#t)||_(this.options.staleTime,this.#t)!==_(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||_(this.options.enabled,this.#t)!==_(t.enabled,this.#t)||i!==this.#f)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return w(this.getCurrentResult(),n)||(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),Reflect.get(e,n))})}trackProp(e){this.#p.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t),r=()=>{},i,a=new Promise(e=>{i=e,r=this.#e.getQueryCache().subscribe(i=>{i.type===`updated`&&i.query.queryHash===n.queryHash&&n.state.data!==void 0&&(r(),e(this.createResult(n,t)))})});return Promise.race([n.fetch().then(()=>{let e=this.createResult(n,t);return i?.(e),e}).finally(()=>{r()}),a])}fetch(e){return this.#m({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#m(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(p)),t}#h(e){return!fe()&&_(this.options.enabled,this.#t)!==!1&&h(e)}#g(){this.#b();let e=_(this.options.staleTime,this.#t);if(this.#r.isStale||!this.#h(e))return;let t=g(this.#r.dataUpdatedAt,e)+1;this.#u=u.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return _(this.options.refetchInterval,this.#t)??!1}#v(e){this.#x(),this.#f=e,this.#f!==0&&this.#h(this.#f)&&(this.#d=u.setInterval(()=>{(this.options.refetchIntervalInBackground||D.isFocused())&&this.#m()},this.#f))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#u!==void 0&&(u.clearTimeout(this.#u),this.#u=void 0)}#x(){this.#d!==void 0&&(u.clearInterval(this.#d),this.#d=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&Oe(e,t),o=i&&ke(e,n,t,r);(a||o)&&(l={...l,...Ce(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#l?.state.data,this.#l):t.placeholderData,e!==void 0&&(m=`success`,d=ie(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h){if(i&&d===a?.data&&t.select===this.#s)d=this.#c;else try{this.#s=t.select,d=t.select(d),d=ie(i?.data,d,t),this.#c=d,this.#o=null}catch(e){this.#o=e}}else d===void 0&&(this.#o=null);this.#o&&(f=this.#o,d=this.#c,p=Date.now(),m=`error`,u=!1);let g=l.fetchStatus===`fetching`,v=m===`pending`,y=m===`error`,b=v&&g,x=d!==void 0;return{status:m,fetchStatus:l.fetchStatus,isPending:v,isSuccess:m===`success`,isError:y,isInitialLoading:b,isLoading:b,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!v,isLoadingError:y&&!x,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:y&&x,isStale:M(e,t),refetch:this.refetch,isEnabled:_(t.enabled,e)!==!1}}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);if(this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#l=this.#t),w(t,e))return;this.#r=t;let n=(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#p.size)return!0;let r=new Set(n??this.#p);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})();O.batch(()=>{n&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}};function De(e,t){return _(t.enabled,e)!==!1&&e.state.data===void 0&&(e.state.status!==`error`||_(t.retryOnMount,e)!==!1)}function Oe(e,t){return De(e,t)||e.state.data!==void 0&&j(e,t,t.refetchOnMount)}function j(e,t,n){if(_(t.enabled,e)!==!1&&_(t.staleTime,e)!==`static`){let r=_(n,e);return r===`always`||r!==!1&&M(e,t)}return!1}function ke(e,t,n,r){return(e!==t||_(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&M(e,n)}function M(e,t){return _(t.enabled,e)!==!1&&e.isStaleByTime(_(t.staleTime,e))}var Ae=class extends ve{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||je(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??(this.state.status===`pending`?this.execute(this.state.variables):Promise.resolve())}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey},r=this.#r=_e({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)}),i=this.state.status===`pending`,a=!r.canStart();try{if(i)t();else{this.#i({type:`pending`,variables:e,isPaused:a}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:a})}let o=await r.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,n),await this.options.onSuccess?.(o,e,this.state.context,n),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(o,null,e,this.state.context,n),this.#i({type:`success`,data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#r===r&&(this.#r=void 0),this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),O.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function je(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var Me=class extends E{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),w(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&x(t.mutationKey)!==x(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??je();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){O.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}};function Ne(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}var Pe=class extends E{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,O.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!w(e,n)});(o||s)&&(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(Ne(e,n).forEach(e=>{e.destroy()}),Ne(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){let n=new Set;return t.map((r,i)=>{let a=e[i];return r.defaultedQueryOptions.notifyOnChangeProps?a:r.observer.trackResult(a,e=>{n.has(e)||(n.add(e),t.forEach(t=>{t.observer.trackProp(e)}))})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=C(this.#a,t(e))),this.#a}return e}#f(){return!this.#r?.combine||this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new Ee(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=this.#t.slice(),this.#t[n]=t,this.#h())}#h(){if(this.hasListeners()){let e=this.#f(),t=this.#a,n=e?t:this.#d(this.#u(this.#t,this.#l),this.#r?.combine);(e||t!==n)&&O.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},Fe=i.createContext(!1),Ie=()=>i.useContext(Fe);Fe.Provider;function Le(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Re=i.createContext(Le()),ze=()=>i.useContext(Re),Be=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?le(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||r)&&(t.isReset()||(e.retryOnMount=!1))},Ve=e=>{i.useEffect(()=>{e.clearReset()},[e])},He=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||le(n,[e.error,r])),Ue=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},N=(e,t)=>e?.suspense&&t.isPending,We=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function Ge({queries:e,...t},n){let r=s(n),a=Ie(),o=ze(),c=t.subscribed!==!1,l=i.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=a?`isRestoring`:c?`optimistic`:void 0,t}),[e,r,a,c]);l.forEach(e=>{Ue(e);let t=r.getQueryCache().get(e.queryHash);Be(e,o,t)}),Ve(o);let[u]=i.useState(()=>new Pe(r,l,t)),[d,f,m]=u.getOptimisticResult(l,t.combine),h=!a&&c;i.useSyncExternalStore(i.useCallback(e=>h?u.subscribe(O.batchCalls(e)):p,[u,h]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),i.useEffect(()=>{u.setQueries(l,t)},[l,t,u]);let g=d.some((e,t)=>N(l[t],e))?d.flatMap((e,t)=>{let n=l[t];return n&&N(n,e)?We(n,new Ee(r,n),o):[]}):[];if(g.length>0)throw Promise.all(g);let _=d.find((e,t)=>{let n=l[t];return n&&He({result:e,errorResetBoundary:o,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(_)throw _.error;return f(m())}function Ke(e,t,n){let r=Ie(),a=ze(),o=s(n),c=o.defaultQueryOptions(e),l=o.getQueryCache().get(c.queryHash),u=e.subscribed!==!1;c._optimisticResults=r?`isRestoring`:u?`optimistic`:void 0,Ue(c),Be(c,a,l),Ve(a);let[d]=i.useState(()=>new t(o,c)),f=d.getOptimisticResult(c),m=!r&&u;if(i.useSyncExternalStore(i.useCallback(e=>{let t=m?d.subscribe(O.batchCalls(e)):p;return d.updateResult(),t},[d,m]),()=>d.getCurrentResult(),()=>d.getCurrentResult()),i.useEffect(()=>{d.setOptions(c)},[c,d]),N(c,f))throw We(c,d,a);if(He({result:f,errorResetBoundary:a,throwOnError:c.throwOnError,query:l,suspense:c.suspense}))throw f.error;return c.notifyOnChangeProps?f:d.trackResult(f)}function P(e,t){return Ke(e,Ee,t)}function qe(e,t){let n=s(t),[r]=i.useState(()=>new Me(n,e));i.useEffect(()=>{r.setOptions(e)},[r,e]);let a=i.useSyncExternalStore(i.useCallback(e=>r.subscribe(O.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=i.useCallback((...e)=>{r.mutate(e[0],e[1]).catch(p)},[r]);if(a.error&&le(r.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:o,mutateAsync:a.mutate}}var F=r(),Je=[`/api/instanz`,`/api/partner`,`/api/health`],Ye=(e,t)=>e===t||e.startsWith(`${t}/`)||e.startsWith(`${t}?`);function Xe(e,t){return!e.startsWith(`/api/`)||Je.some(t=>Ye(e,t))||(Ye(e,`/api/homelab`)?`homelab`:`box`)===t?e:`/api/partner${e.slice(4)}`}var I=null;function Ze(){return I??=fetch(`/api/instanz`,{headers:{Accept:`application/json`}}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))).then(e=>e.rolle===`homelab`?`homelab`:`box`).catch(()=>(I=null,`box`)),I}var L=class extends Error{status;detail;constructor(e,t){super(t),this.status=e,this.detail=t,this.name=`ApiFehler`}};function Qe(e,t){if(e&&typeof e==`object`&&`detail`in e){let t=e.detail;if(typeof t==`string`)return t;if(Array.isArray(t))return t.map(e=>e.msg??String(e)).join(`; `)}return`Die Box antwortet mit Fehler ${t}.`}async function R(e,t={}){let n=Xe(e,await Ze()),r;try{r=await fetch(n,{...t,headers:{"Content-Type":`application/json`,Accept:`application/json`,...t.headers}})}catch{throw new L(0,`MC2 ist nicht erreichbar. Läuft die Box?`)}let i=await r.text(),a=i?$e(i):null;if(!r.ok)throw new L(r.status,Qe(a,r.status));if(typeof a==`string`)throw new L(r.status,`Die Box antwortet nicht mit Daten.`);return a}function $e(e){try{return JSON.parse(e)}catch{return e}}var z=(e,t)=>R(e,{method:`POST`,body:t===void 0?void 0:JSON.stringify(t)}),et=100,tt=95,nt=210,B=240;function rt(e,t){let n=e*Math.PI/180;return[et+t*Math.cos(n),tt-t*Math.sin(n)]}var V=e=>Math.round(e*100)/100;function it(e,t,n){let r=Math.max(0,Math.min(1,e)),i=Math.max(r,Math.min(1,t)),[a,o]=rt(nt-B*r,n),[s,c]=rt(nt-B*i,n),l=+((i-r)*B>180);return`M ${V(a)} ${V(o)} A ${n} ${n} 0 ${l} 1 ${V(s)} ${V(c)}`}function at(e){return e==null?`var(--text-3)`:e>=85?`var(--rot)`:e>=70?`var(--bernstein)`:`var(--box)`}function ot(e){if(!e.waechter_wach)return{art:`stumm`,oben:`Wächter`,mitte:`Schweigt`,unten:`Seit über 5 Minuten kein Prüflauf`};if(e.update_laeuft)return{art:`info`,oben:`Wartung`,mitte:`Update läuft`,unten:`Hinweise ruhen bis zum Ende`};if(e.anzahl===0)return{art:`ok`,oben:`Alles`,mitte:`In Ordnung`,unten:`Keine offenen Hinweise`};let t=`${e.anzahl} Hinweis${e.anzahl===1?``:`e`}`;return e.stufe===`rot`?{art:`rot`,oben:`Störung`,mitte:t,unten:`Drücken zum Ansehen`}:{art:`gelb`,oben:`Achtung`,mitte:t,unten:`Drücken zum Ansehen`}}function st(e,t){let n=`„${e.titel}“:`;switch(t.id){case`protokoll`:return null;case`neustart`:return e.id.startsWith(`timer:`)?{titel:`${t.label}?`,text:`${n} Der Dienst läuft sofort noch einmal.`,knopf:t.label}:{titel:`${t.label}?`,text:`${n} Der Dienst wird ${/^starten/i.test(t.label)?`gestartet`:`neu gestartet`} und ist dabei kurz nicht erreichbar.`,knopf:t.label};case`job-wiederholen`:return{titel:`Job erneut ausführen?`,text:`${n} Hermes führt den Job sofort noch einmal aus, mit allem, was er sonst auch tut — etwa Nachrichten verschicken.`,knopf:t.label};case`freigeben`:return{titel:`Update freigeben?`,text:`${n} Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`,knopf:t.label};default:return{titel:`${t.label}?`,text:`${n} ${t.label}.`,knopf:t.label}}}function H(e){return e?.status===`busy`?e.running?`Es läuft schon ein Update („${e.running}“). Warte, bis es fertig ist.`:`Es läuft schon ein Update. Warte, bis es fertig ist.`:e?.detail||e?.err||e?.error||e?.text||`Das hat nicht geklappt.`}var U=e=>e.state===`running`||e.state===`queued`;function ct(e){let t=e.aliases.map(e=>e.toLowerCase());return t.includes(`hermes`)||t.includes(`fast`)?`hirn`:t.includes(`coder`)?`coder`:null}var lt={neu:`Neu`,wartet:`Wartet`,getestet:`Gemessen`,bestanden:`Bestanden`,durchgefallen:`Durchgefallen`,uebernommen:`Übernommen`,verworfen:`Verworfen`};function ut(e,t=``){if(e==null||e===``)return`–`;let n=typeof e==`number`?e.toLocaleString(`de-DE`,{maximumFractionDigits:+(e<10)}):String(e);return t?`${n} ${t}`:n}var W=[],dt=1,G=new Set,ft=()=>G.forEach(e=>e());function K(e,t){let n=dt++;W=[...W,{id:n,art:e,text:t}].slice(-4),ft(),e!==`fehler`&&window.setTimeout(()=>pt(n),6e3)}function pt(e){W=W.filter(t=>t.id!==e),ft()}var mt=()=>(0,i.useSyncExternalStore)(ht,gt);function ht(e){return G.add(e),()=>{G.delete(e)}}function gt(){return W}var q=2e3,_t=3e4,vt=2e4,J=`verbinde`,yt=null,bt=new Set,xt=()=>bt.forEach(e=>e());function St(e){return bt.add(e),()=>{bt.delete(e)}}var Ct=()=>J===`live`,wt=()=>(0,i.useSyncExternalStore)(St,Dt),Tt=()=>(0,i.useSyncExternalStore)(St,Ot);function Y(e){e!==J&&(J=e,xt())}function Et(){let e=s();(0,i.useEffect)(()=>{let t=null,n,r,i=Date.now(),a=q,o=!1;function s(){o||(window.clearTimeout(n),n=window.setTimeout(l,a),a=Math.min(a*2,_t))}function c(){i=Date.now(),window.clearTimeout(r),r=window.setTimeout(()=>{t?.close(),Y(`getrennt`),s()},vt)}function l(){window.clearTimeout(n),window.clearTimeout(r),t?.close();let i=new EventSource(`/api/stream`);t=i,i.onopen=()=>{a=q,Y(`live`),c(),e.invalidateQueries()},i.onerror=()=>{Y(`getrennt`),i.readyState===EventSource.CLOSED&&(window.clearTimeout(r),s())},i.addEventListener(`invalidate`,t=>{c();try{let n=JSON.parse(t.data)?.keys??[];for(let t of n)e.invalidateQueries({queryKey:[t]})}catch{}}),i.addEventListener(`metrik`,e=>{c();try{yt=JSON.parse(e.data),xt()}catch{}})}let u=()=>{o||document.visibilityState!==`visible`||(t?.readyState===EventSource.CLOSED||Date.now()-i>5e3)&&(a=q,l())};return l(),window.addEventListener(`online`,u),document.addEventListener(`visibilitychange`,u),()=>{o=!0,window.clearTimeout(n),window.clearTimeout(r),window.removeEventListener(`online`,u),document.removeEventListener(`visibilitychange`,u),t?.close(),Y(`getrennt`)}},[e])}function Dt(){return J}function Ot(){return yt}var X=`Europe/Berlin`,kt=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:X}),At=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:X}),jt=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:X}),Mt=new Intl.DateTimeFormat(`en-CA`,{timeZone:X});function Z(e){return Mt.format(e)}function Nt(e,t=new Date){let n=new Date(e);if(Number.isNaN(n.getTime()))return`–`;let r=Z(t),i=Z(new Date(t.getTime()-864e5)),a=Z(new Date(t.getTime()+864e5)),o=Z(n),s=kt.format(n);return o===r?`HEUTE ${s}`:o===i?`GESTERN ${s}`:o===a?`MORGEN ${s}`:Math.abs(n.getTime()-t.getTime())<5616e5?`${At.format(n).replace(`.`,``).toUpperCase()} ${s}`:`${jt.format(n)} ${s}`}function Pt(e,t=new Date){let n=new Date(e*1e3);return Z(n)===Z(t)?`seit heute ${kt.format(n)}`:`seit ${jt.format(n)}, ${kt.format(n)}`}function Ft(e,t=Date.now()){let n=Math.max(0,Math.round(t/1e3-e));if(n<60)return`vor ${n} s`;if(n<3600)return`vor ${Math.round(n/60)} min`;if(n<86400)return`vor ${Math.round(n/3600)} h`;let r=Math.round(n/86400);return`vor ${r} ${r===1?`Tag`:`Tagen`}`}function It(e){return e==null||e<0?null:[Math.floor(e/86400),Math.floor(e%86400/3600)]}var Lt=e=>e==null?null:e/1024**3;function Rt(e,t=0){let n=Lt(e);return n==null?`–`:n>=1e3?`${(n/1024).toFixed(1).replace(`.`,`,`)} TB`:`${n.toFixed(t).replace(`.`,`,`)} GB`}var zt=e=>e.toLocaleString(`de-DE`),Q=e=>()=>Ct()?e*5:e;function Bt(e,t){let n=e.getQueryData([`jobs`])?.jobs??[],r=t.filter(e=>!U(e)&&n.some(t=>t.id===e.id&&U(t)));if(r.length===0)return;let i=new Set([`start`]);for(let e of r){let t=e.group===`download`||/^download\s/i.test(e.label);for(let e of t?[`models`,`aufraeumen`]:[`update-details`,`updates-verlauf`,`sicherungen`])i.add(e)}for(let t of i)e.invalidateQueries({queryKey:[t]})}var Vt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`start`],queryFn:lr,refetchInterval:ur},e[0]=t):t=e[0],P(t)},Ht=()=>{let e=(0,F.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`models`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:dr,refetchInterval:Q(3e4)},e[1]=n):n=e[1],P(n)},Ut=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`nutzung`],queryFn:fr,refetchInterval:6e5},e[0]=t):t=e[0],P(t)},Wt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`radar`],queryFn:pr,retry:!1,refetchInterval:3e5},e[0]=t):t=e[0],P(t)},Gt=()=>{let e=(0,F.c)(3),t=s(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`jobs`],e[0]=n):n=e[0];let r;return e[1]===t?r=e[2]:(r={queryKey:n,queryFn:async()=>{let e=await R(`/api/jobs`);return Bt(t,e.jobs),e},refetchInterval:mr},e[1]=t,e[2]=r),P(r)},Kt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`sicherungen`],queryFn:hr},e[0]=t):t=e[0],P(t)},qt=e=>{let t=(0,F.c)(4),n;t[0]===e?n=t[1]:(n=e.map(gr),t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r={queries:n},t[2]=n,t[3]=r),Ge(r)},Jt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`updates-verlauf`],queryFn:_r},e[0]=t):t=e[0],P(t)},Yt=e=>{let t=(0,F.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):(n=[`protokoll`,e],r=()=>R(`/api/maintenance/logs?service=${encodeURIComponent(e??``)}&lines=200`),t[0]=e,t[1]=n,t[2]=r);let i=!!e,a;return t[3]!==n||t[4]!==r||t[5]!==i?(a={queryKey:n,queryFn:r,enabled:i},t[3]=n,t[4]=r,t[5]=i,t[6]=a):a=t[6],P(a)},Xt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`ablaeufe`],queryFn:vr,refetchInterval:6e4},e[0]=t):t=e[0],P(t)},Zt=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`dienste`],queryFn:yr,refetchInterval:1e4},e[0]=t):t=e[0],P(t)};function $(e,t){let n=(0,F.c)(6),r=s(),i;n[0]!==t||n[1]!==r?(i=(e,n)=>{let i=e;i&&i.ok===!1?K(`fehler`,t.fehler?.(n,i)??H(i)):t.erfolg(n,e)&&K(`erfolg`,t.erfolg(n,e));for(let e of t.neuLaden)r.invalidateQueries({queryKey:[e]})},n[0]=t,n[1]=r,n[2]=i):i=n[2];let a;return n[3]!==e||n[4]!==i?(a={mutationFn:e,onSuccess:i,onError:Qt},n[3]=e,n[4]=i,n[5]=a):a=n[5],qe(a)}function Qt(e){return K(`fehler`,e.message)}var $t=e=>{let t=(0,F.c)(4),n=e===void 0?`/api/hinweise`:e,r;t[0]===n?r=t[1]:(r=e=>{let{hinweis:t,aktion:r}=e;return z(`${n}/${encodeURIComponent(t)}/aktion/${r}`)},t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i={erfolg:br,neuLaden:n===`/api/hinweise`?[`start`]:[`homelab-hinweise`]},t[2]=n,t[3]=i),$(r,i)},en=new Set([`gesehen`,`stumm`,`laut`]),tn={alle:`/api/maintenance/update-all`,pruefen:`/api/maintenance/check-updates`,os:`/api/maintenance/os-update`,engine:`/api/maintenance/engine-update`,swap:`/api/maintenance/swap-update`,hermes:`/api/maintenance/hermes-update`},nn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Sr,neuLaden:[`jobs`,`start`]},e[0]=t):t=e[0],$(xr,t)},rn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:wr,fehler:Tr,neuLaden:[`jobs`]},e[0]=t):t=e[0],$(Cr,t)},an=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Dr,neuLaden:[`jobs`]},e[0]=t):t=e[0],$(Er,t)},on=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:kr,neuLaden:[`jobs`,`models`]},e[0]=t):t=e[0],$(Or,t)},sn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`aufraeumen`],queryFn:Ar,staleTime:6e4},e[0]=t):t=e[0],P(t)},cn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Mr,neuLaden:[`aufraeumen`,`models`,`start`]},e[0]=t):t=e[0],$(jr,t)},ln=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Pr,neuLaden:[`start`]},e[0]=t):t=e[0],$(Nr,t)},un=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ir,fehler:Lr,neuLaden:[`sicherungen`,`start`]},e[0]=t):t=e[0],$(Fr,t)},dn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:zr,neuLaden:[`sicherungen`]},e[0]=t):t=e[0],$(Rr,t)},fn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Vr,neuLaden:[`models`,`start`]},e[0]=t):t=e[0],$(Br,t)},pn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ur,neuLaden:[`radar`,`models`,`start`]},e[0]=t):t=e[0],$(Hr,t)},mn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Gr,neuLaden:[`radar`,`jobs`]},e[0]=t):t=e[0],$(Wr,t)},hn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:qr,neuLaden:[`jobs`]},e[0]=t):t=e[0],$(Kr,t)},gn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`instanz`],queryFn:Jr,staleTime:1/0},e[0]=t):t=e[0],P(t)},_n=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`partner`],queryFn:Yr,refetchInterval:3e4},e[0]=t):t=e[0],P(t)},vn=()=>{let e=(0,F.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`ziele-box`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:Xr,refetchInterval:Q(3e4)},e[1]=n):n=e[1],P(n)},yn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Zr,enabled:e,refetchInterval:3e4},t[1]=e,t[2]=r),P(r)},bn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-laeufe`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Qr,enabled:e,refetchInterval:ei},t[1]=e,t[2]=r),P(r)},xn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ni,neuLaden:[`homelab`,`homelab-laeufe`,`ziele-box`,`jobs`,`start`]},e[0]=t):t=e[0],$(ti,t)},Sn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-hinweise`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:ri,enabled:e,refetchInterval:r},t[2]=e,t[3]=i),P(i)},Cn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:ii,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},wn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:oi,neuLaden:[`einstellungen`,`start`]},e[0]=t):t=e[0],$(ai,t)},Tn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ci,neuLaden:[`einstellungen`,`start`,`radar`]},e[0]=t):t=e[0],$(si,t)},En=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ui,neuLaden:[]},e[0]=t):t=e[0],$(li,t)},Dn=(e,t)=>{let n=(0,F.c)(9),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`stand`,`hier`],n[0]=r):r=n[0];let i;n[1]===e?i=n[2]:(i={queryKey:r,queryFn:di,enabled:e},n[1]=e,n[2]=i);let a;n[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=[`stand`,`partner`],n[3]=a):a=n[3];let o=e&&t,s;n[4]===o?s=n[5]:(s={queryKey:a,queryFn:fi,enabled:o,retry:!1},n[4]=o,n[5]=s);let c;return n[6]!==i||n[7]!==s?(c={queries:[i,s]},n[6]=i,n[7]=s,n[8]=c):c=n[8],Ge(c)},On=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`altreste`],queryFn:pi,staleTime:6e4},e[0]=t):t=e[0],P(t)},kn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:hi,neuLaden:[`altreste`,`start`]},e[0]=t):t=e[0],$(mi,t)},An={"1h":6e4,"24h":3e5,"7d":9e5},jn=(e,t)=>{let n=(0,F.c)(8),r=t===void 0||t,i,a;n[0]===e?(i=n[1],a=n[2]):(i=[`messwerte`,`box`,e],a=()=>R(`/api/messwerte?zeitraum=${e}`),n[0]=e,n[1]=i,n[2]=a);let o=An[e],s;return n[3]!==r||n[4]!==i||n[5]!==a||n[6]!==o?(s={queryKey:i,queryFn:a,enabled:r,refetchInterval:o,placeholderData:gi,retry:!1},n[3]=r,n[4]=i,n[5]=a,n[6]=o,n[7]=s):s=n[7],P(s)},Mn=(e,t)=>{let n=(0,F.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):(r=[`messwerte`,`homelab`,e],i=()=>R(`/api/homelab/messwerte?zeitraum=${e}`),n[0]=e,n[1]=r,n[2]=i);let a=An[e],o;return n[3]!==t||n[4]!==r||n[5]!==i||n[6]!==a?(o={queryKey:r,queryFn:i,enabled:t,refetchInterval:a,placeholderData:_i,retry:!1},n[3]=t,n[4]=r,n[5]=i,n[6]=a,n[7]=o):o=n[7],P(o)},Nn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammelplan`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:vi,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},Pn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammellauf`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:yi,enabled:e,refetchInterval:bi,retry:!1},t[1]=e,t[2]=r),P(r)},Fn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Si,neuLaden:[`homelab-sammellauf`,`homelab-laeufe`,`homelab`]},e[0]=t):t=e[0],$(xi,t)},In=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:wi,neuLaden:[`homelab-sammellauf`]},e[0]=t):t=e[0],$(Ci,t)},Ln=(e,t,n)=>{let r=(0,F.c)(9),i=n===void 0?null:n,a,o;r[0]!==t||r[1]!==i?(a=[`homelab-protokoll`,t,i],o=()=>R(`/api/homelab/protokoll?grenze=300&berichte=${+!!t}${i?`&ziel=${encodeURIComponent(i)}`:``}`),r[0]=t,r[1]=i,r[2]=a,r[3]=o):(a=r[2],o=r[3]);let s;r[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=Q(3e4),r[4]=s):s=r[4];let c;return r[5]!==e||r[6]!==a||r[7]!==o?(c={queryKey:a,queryFn:o,enabled:e,refetchInterval:s,retry:!1},r[5]=e,r[6]=a,r[7]=o,r[8]=c):c=r[8],P(c)},Rn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-speicher`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Ti,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},zn=(e,t,n)=>{let r=(0,F.c)(8),i,a;r[0]!==t||r[1]!==e?(i=[`homelab-neuerungen`,e,t],a=()=>R(`/api/homelab/ziele/${e}/neuerungen?baustein=${encodeURIComponent(t)}`),r[0]=t,r[1]=e,r[2]=i,r[3]=a):(i=r[2],a=r[3]);let o;return r[4]!==n||r[5]!==i||r[6]!==a?(o={queryKey:i,queryFn:a,enabled:n,staleTime:6e5,retry:!1},r[4]=n,r[5]=i,r[6]=a,r[7]=o):o=r[7],P(o)},Bn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`platten`],queryFn:Ei,refetchInterval:6e5,retry:!1},e[0]=t):t=e[0],P(t)},Vn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-platten`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Di,enabled:e,refetchInterval:6e5,retry:!1},t[1]=e,t[2]=r),P(r)},Hn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ki,neuLaden:[`homelab-einstellungen`,`homelab-platten`]},e[0]=t):t=e[0],$(Oi,t)},Un=e=>{let t=(0,F.c)(3),n=e===void 0||e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`lucy-autonomie`],t[0]=r):r=t[0];let i;return t[1]===n?i=t[2]:(i={queryKey:r,queryFn:Ai,enabled:n,retry:!1},t[1]=n,t[2]=i),P(i)},Wn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Mi,neuLaden:[`lucy-autonomie`]},e[0]=t):t=e[0],$(ji,t)},Gn=e=>{let t=(0,F.c)(4),n=e===void 0||e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`rueckfragen`],t[0]=r):r=t[0];let i;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=Q(3e4),t[1]=i):i=t[1];let a;return t[2]===n?a=t[3]:(a={queryKey:r,queryFn:Ni,enabled:n,refetchInterval:i,retry:!1},t[2]=n,t[3]=a),P(a)},Kn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Fi,neuLaden:[`rueckfragen`,`start`,`jobs`,`homelab`,`homelab-laeufe`]},e[0]=t):t=e[0],$(Pi,t)},qn=e=>{let t=(0,F.c)(3),n=e===void 0||e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`wochenbericht`],t[0]=r):r=t[0];let i;return t[1]===n?i=t[2]:(i={queryKey:r,queryFn:Ii,enabled:n,retry:!1},t[1]=n,t[2]=i),P(i)},Jn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ri,neuLaden:[`wochenbericht`,`rueckfragen`]},e[0]=t):t=e[0],$(Li,t)},Yn=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-wartung`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:zi,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},Xn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Vi,neuLaden:[`homelab-wartung`]},e[0]=t):t=e[0],$(Bi,t)},Zn=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ui,neuLaden:[`homelab`,`homelab-wartung`]},e[0]=t):t=e[0],$(Hi,t)},Qn=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-neu`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Wi,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},$n=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-docker`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Gi,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},er=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:qi,neuLaden:[`homelab-neu`,`homelab`]},e[0]=t):t=e[0],$(Ki,t)},tr=e=>{let t=(0,F.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-zertifikate`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Q(3e5),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:Ji,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),P(i)},nr=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab`,`snapshots`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Yi,enabled:e,refetchInterval:Zi,retry:!1},t[1]=e,t[2]=r),P(r)},rr=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:$i,neuLaden:[`homelab-speicher`]},e[0]=t):t=e[0],$(Qi,t)},ir=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ta,neuLaden:[`homelab`,`homelab-laeufe`]},e[0]=t):t=e[0],$(ea,t)},ar=e=>{let t=(0,F.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:na,enabled:e,retry:!1},t[1]=e,t[2]=r),P(r)},or=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ia,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],$(ra,t)},sr=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:oa,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],$(aa,t)},cr=()=>{let e=(0,F.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ca,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],$(sa,t)};function lr(){return R(`/api/start`)}function ur(e){return e.state.data&&!e.state.data.updates.gelesen?4e3:Q(2e4)()}function dr(){return R(`/api/models`)}function fr(){return R(`/api/modelle/nutzung`)}function pr(){return R(`/api/radar`)}function mr(e){return e.state.data?.jobs.some(U)?2e3:Q(3e4)()}function hr(){return R(`/api/zeitmaschine`)}function gr(e){return{queryKey:[`update-details`,e],queryFn:()=>R(`/api/maintenance/update-details?kind=${encodeURIComponent(e)}`),staleTime:6e5}}function _r(){return R(`/api/updates/verlauf`)}function vr(){return R(`/api/system/ablaeufe`)}function yr(){return R(`/api/system/services`)}function br(e,t){return(e.aktion===`freigeben`||e.aktion===`bekannt`||en.has(e.aktion))&&t.text?t.text:`${e.label}: erledigt. Der Wächter prüft in einer Minute nach.`}function xr(e){return z(tn[e])}function Sr(e){return e===`pruefen`?`Die Suche nach Neuem läuft. Den Fortschritt siehst du unten bei den Aufträgen.`:`Das Update läuft. Den Fortschritt siehst du unten bei den Aufträgen.`}function Cr(e){let{id:t}=e;return z(`/api/jobs/${encodeURIComponent(t)}/cancel`)}function wr(e){return`${e.titel}: wird abgebrochen.`}function Tr(e){return`${e.titel} lief schon nicht mehr.`}function Er(e){return z(`/api/jobs/${encodeURIComponent(e)}/quittieren`)}function Dr(){return``}function Or(e){let{repo:t,quant:n,rolle:r}=e;return z(`/api/models/install`,{repo:t,quant:n,role:r})}function kr(e,t){return`${e.repo} (${e.quant}) wird heruntergeladen${t.total_bytes?`, ${Rt(t.total_bytes,1)}`:``}. Den Fortschritt siehst du unter Aufträge.`}function Ar(){return R(`/api/modelle/aufraeumen`)}function jr(e){return z(`/api/modelle/aufraeumen/loeschen`,{art:e.art,name:e.name})}function Mr(e,t){return t.text??`Gelöscht.`}function Nr(e){return z(`/api/updates/festgehalten/${encodeURIComponent(e)}/freigeben`)}function Pr(e,t){return t.text??`Freigegeben.`}function Fr(){return z(`/api/system/backup`)}function Ir(e,t){return t.size_mb==null?`Sicherung erstellt.`:`Sicherung erstellt (${t.size_mb.toLocaleString(`de-DE`)} MB).`}function Lr(e,t){return`Die Sicherung ging nicht: ${H(t)}`}function Rr(e){return z(`/api/zeitmaschine/restore`,{file:e})}function zr(){return`Zurückspielen läuft. Die Dienste starten gleich neu.`}function Br(e){return z(`/api/models/${encodeURIComponent(e)}/load`)}function Vr(e){return`${e} wird geladen.`}function Hr(e){let{id:t,aktion:n}=e;return z(`/api/radar/${encodeURIComponent(t)}/${n}`)}function Ur(e){return e.aktion===`uebernehmen`?`${e.name} übernommen.`:`${e.name} verworfen.`}function Wr(e){let{id:t}=e;return z(`/api/radar/${encodeURIComponent(t)}/testen`)}function Gr(e,t){return t.text??`Der Test von ${e.name} läuft.`}function Kr(){return z(`/api/radar/suche`)}function qr(e,t){return t.text??`Das Radar sucht jetzt nach neuen Modellen.`}function Jr(){return R(`/api/instanz`)}function Yr(){return R(`/api/partner`)}function Xr(){return R(`/api/ziele`)}function Zr(){return R(`/api/homelab/ziele`)}function Qr(){return R(`/api/homelab/laeufe`)}function $r(e){return e.status===`laeuft`}function ei(e){return e.state.data?.laeufe.some($r)?3e3:3e4}function ti(e){return R(e.pfad,{method:e.methode})}function ni(e){return`${e.label}: gestartet. Das Ergebnis kommt als Meldung.`}function ri(){return R(`/api/homelab/hinweise`)}function ii(){return R(`/api/einstellungen`)}function ai(e){return z(`/api/einstellungen/update-fenster`,e)}function oi(e,t){return t.text??`Gespeichert.`}function si(e){return z(`/api/einstellungen/radar`,{an:e})}function ci(e,t){return t.text??`Geschaltet.`}function li(e){return z(e===`homelab`?`/api/homelab/einstellungen/telegram-test`:`/api/einstellungen/telegram-test`)}function ui(e,t){return t.text??`Die Testmeldung ist raus.`}function di(){return R(`/api/instanz`)}function fi(){return R(`/api/partner/instanz`)}function pi(){return R(`/api/aufraeumen/altreste`)}function mi(e){return z(`/api/aufraeumen/altreste/loeschen`,{id:e.id})}function hi(e,t){return t.text??`Gelöscht.`}function gi(e){return e}function _i(e){return e}function vi(){return R(`/api/homelab/alle/plan`)}function yi(){return R(`/api/homelab/sammellauf`)}function bi(e){return e.state.data?.sammellauf?.status===`laeuft`?5e3:6e4}function xi(){return z(`/api/homelab/alle`)}function Si(){return`Alle aktualisieren: gestartet. Die Schritte laufen nacheinander; das Ergebnis kommt als Meldung.`}function Ci(e){return z(`/api/homelab/sammellauf/${encodeURIComponent(e)}/quittieren`)}function wi(){return``}function Ti(){return R(`/api/homelab/speicher`)}function Ei(){return R(`/api/platten`)}function Di(){return R(`/api/homelab/platten`)}function Oi(e){return e===null?R(`/api/homelab/einstellungen/nas-snmp`,{method:`DELETE`}):z(`/api/homelab/einstellungen/nas-snmp`,e)}function ki(e,t){return t.text??(e===null?`SNMP-Zugang entfernt.`:`SNMP-Zugang gespeichert.`)}function Ai(){return R(`/api/lucy/autonomie`)}function ji(e){return z(`/api/lucy/autonomie`,{stufen:e})}function Mi(e,t){return t.text??`Gespeichert.`}function Ni(){return R(`/api/rueckfragen`)}function Pi(e){let{nr:t,ja:n}=e;return z(`/api/rueckfragen/${t}/${n?`ja`:`nein`}`)}function Fi(e,t){return t.text??`Erledigt.`}function Ii(){return R(`/api/lucy/wochenbericht`)}function Li(){return z(`/api/lucy/wochenbericht`)}function Ri(e,t){return t.text??`Der Wochenbericht ist unterwegs.`}function zi(){return R(`/api/homelab/wartung`)}function Bi(e){return z(`/api/homelab/wartung`,e)}function Vi(e,t){return t.text??`Gespeichert.`}function Hi(e){let{zid:t,version:n}=e;return n===null?R(`/api/homelab/ziele/${t}/ueberspringen`,{method:`DELETE`}):z(`/api/homelab/ziele/${t}/ueberspringen`,{baustein:`app`,version:n})}function Ui(e,t){return t.text??`Erledigt.`}function Wi(){return R(`/api/homelab/neu`)}function Gi(){return R(`/api/homelab/docker`)}function Ki(e){let{id:t,wahl:n}=e;return z(`/api/homelab/neu/${t}`,{wahl:n})}function qi(e,t){return t.text??`Übernommen.`}function Ji(){return R(`/api/homelab/zertifikate`)}function Yi(){return R(`/api/homelab/snapshots`)}function Xi(e){return e.laeuft}function Zi(e){return e.state.data?.geraete.some(Xi)?3e3:3e4}function Qi(){return z(`/api/homelab/sicherungen/probe`)}function $i(){return`Probe gestartet. Das Ergebnis steht in etwa einer Minute bei den Geräten.`}function ea(e){return R(e.pfad,{method:e.methode})}function ta(e){return`${e.label}: gestartet. Das Ergebnis steht gleich beim Gerät.`}function na(){return R(`/api/homelab/einstellungen`)}function ra(e){return e===null?R(`/api/homelab/einstellungen/arcane-schluessel`,{method:`DELETE`}):z(`/api/homelab/einstellungen/arcane-schluessel`,{schluessel:e})}function ia(e,t){return t.text??(e===null?`Arcane-Schlüssel entfernt.`:`Arcane-Schlüssel gespeichert.`)}function aa(e){return e===null?R(`/api/homelab/einstellungen/adguard-zugang`,{method:`DELETE`}):z(`/api/homelab/einstellungen/adguard-zugang`,e)}function oa(e,t){return t.text??(e===null?`AdGuard-Zugang entfernt.`:`AdGuard-Zugang gespeichert.`)}function sa(e){return z(`/api/homelab/einstellungen/arcane-echt`,{an:e})}function ca(e){return e?`Docker-Updates über Arcane laufen jetzt echt.`:`Docker-Updates über Arcane sind wieder nur ein Probelauf.`}export{Pn as $,y as $t,un as A,mt as At,er as B,L as Bt,Vn as C,Ft as Ct,tr as D,wt as Dt,Rn as E,Et,Wn as F,st as Ft,Wt as G,Se as Gt,Ut as H,z as Ht,fn as I,U as It,hn as J,D as Jt,pn as K,k as Kt,Ht as L,ut as Lt,an as M,it as Mt,Gt as N,H as Nt,on as O,pt as Ot,Un as P,ot as Pt,Nn as Q,b as Qt,Hn as R,ct as Rt,Mn as S,Pt as St,nr as T,Tt,_n as U,P as Ut,zn as V,R as Vt,Yt as W,Ae as Wt,Kn as X,m as Xt,mn as Y,E as Yt,Gn as Z,x as Zt,yn as _,dn as _t,On as a,c as an,Vt as at,Sn as b,Rt as bt,sn as c,qt as ct,Bn as d,Jt as dt,v as en,In as et,vn as f,Yn as ft,$t as g,xn as gt,ln as h,Jn as ht,kn as i,se as in,Dn as it,rn as j,lt as jt,gn as k,K as kt,cn as l,wn as lt,Cn as m,qn as mt,sr as n,S as nn,rr as nt,cr as o,s as on,En as ot,Zt as p,Xn as pt,Tn as q,O as qt,Fn as r,_ as rn,ir as rt,or as s,Zn as st,Xt as t,p as tn,Kt as tt,jn as u,nn as ut,$n as v,Nt as vt,Ln as w,zt as wt,bn as x,It as xt,ar as y,Lt as yt,Qn as z,at as zt}; \ No newline at end of file diff --git a/frontend/dist/assets/index-B_hvuxH0.js b/frontend/dist/assets/index-B_hvuxH0.js deleted file mode 100644 index ccb03b8..0000000 --- a/frontend/dist/assets/index-B_hvuxH0.js +++ /dev/null @@ -1,11 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MenueSchublade-DGFi9TOj.js","assets/dist-aE7UmubC.js","assets/sheet-DG7u1mB-.js","assets/dist-CakcBaML.js","assets/button-BHVKhtQ6.js","assets/Befehlssuche-B-_a3tYu.js","assets/abfragen-pD_qBEtc.js","assets/Start-vq5R-eQh.js","assets/Lagekopf-Cap3dqRY.js","assets/Updates-D8iDMVee.js","assets/chevron-right-DF8ikrVh.js","assets/Auftraege-DLT4O34-.js","assets/Modelle-BlSp1533.js","assets/useSelector-DBNxxw17.js","assets/useMatch-DDVpPKJI.js","assets/breite-k-QN6GPl.js","assets/Monitoring-D00MRslA.js","assets/useRouterState-DJr4hrdj.js","assets/Dienste-Yc2LKSv8.js","assets/Homelab-CbrbD7vJ.js","assets/undo-2-B8COJmAr.js","assets/HomelabSnapshots-CvlkzLGV.js","assets/HomelabProtokoll-2honFTFl.js","assets/Handy-DAtqWcjC.js","assets/Einstellungen-CRRpjSwU.js"])))=>i.map(i=>d[i]); -import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s}from"./dist-aE7UmubC.js";import{a as c,c as l,i as u,l as d,n as f,o as p,r as m,s as h,t as g}from"./dist-CakcBaML.js";import{$t as _,B as v,Ct as y,D as b,Dt as x,F as S,Ft as C,Gt as w,Ht as T,J as E,Jt as D,Kt as O,Qt as k,St as A,Tt as ee,Ut as te,Vt as ne,Wt as j,Xt as re,Yt as ie,Zt as ae,b as oe,bt as M,ct as se,d as ce,en as le,g as ue,ht as de,nn as fe,nt as pe,q as me,qt as he,tn as ge,u as N,w as P,wt as _e,x as ve,y as ye}from"./abfragen-pD_qBEtc.js";import{_ as be,a as xe,c as F,d as Se,f as Ce,g as we,h as Te,i as Ee,l as De,m as Oe,n as ke,o as Ae,p as je,r as Me,s as Ne,t as Pe,u as Fe,v as Ie,y as Le}from"./useSelector-DBNxxw17.js";import{i as Re,r as ze,t as Be}from"./useMatch-DDVpPKJI.js";import{t as Ve}from"./useRouterState-DJr4hrdj.js";import{t as He}from"./button-BHVKhtQ6.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ue=i((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&ee(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ee(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function ee(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,ee(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),We=i(((e,t)=>{t.exports=Ue()})),Ge=i((t=>{var n=We(),r=e(),i=d();function a(e){var t=`https://react.dev/errors/`+e;if(1ye||(e.current=ve[ye],ve[ye]=null,ye--)}function F(e,t){ye++,ve[ye]=e.current,e.current=t}var Se=be(null),Ce=be(null),we=be(null),Te=be(null);function Ee(e,t){switch(F(we,t),F(Ce,e),F(Se,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}xe(Se),F(Se,e)}function De(){xe(Se),xe(Ce),xe(we)}function Oe(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,F(Te,e)),t=Se.current;var n=dp(t,e.type);t!==n&&(F(Ce,e),F(Se,n))}function ke(e){Ce.current===e&&(xe(Se),xe(Ce)),Te.current===e&&(xe(Te),sh._currentValue=_e)}var Ae,je;function Me(e){if(Ae===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ae=t&&t[1]||``,je=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ne=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Me(n):``}function Fe(e,t){switch(e.tag){case 26:case 27:case 5:return Me(e.type);case 16:return Me(`Lazy`);case 13:return e.child!==t&&t!==null?Me(`Suspense Fallback`):Me(`Suspense`);case 19:return Me(`SuspenseList`);case 0:case 15:return Pe(e.type,!1);case 11:return Pe(e.type.render,!1);case 1:return Pe(e.type,!0);case 31:return Me(`Activity`);case 30:return Me(`ViewTransition`);default:return``}}function Ie(e){try{var t=``,n=null;do t+=Fe(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var Le=Object.prototype.hasOwnProperty,Re=n.unstable_scheduleCallback,ze=n.unstable_cancelCallback,Be=n.unstable_shouldYield,Ve=n.unstable_requestPaint,He=n.unstable_now,Ue=n.unstable_getCurrentPriorityLevel,Ge=n.unstable_ImmediatePriority,Ke=n.unstable_UserBlockingPriority,qe=n.unstable_NormalPriority,Je=n.unstable_LowPriority,Ye=n.unstable_IdlePriority,Xe=n.log,I=n.unstable_setDisableYieldValue,Ze=null,Qe=null;function $e(e){if(typeof Xe==`function`&&I(e),Qe&&typeof Qe.setStrictMode==`function`)try{Qe.setStrictMode(Ze,e)}catch{}}var et=Math.clz32?Math.clz32:rt,tt=Math.log,nt=Math.LN2;function rt(e){return e>>>=0,e===0?32:31-(tt(e)/nt|0)|0}var it=256,at=262144,ot=4194304;function st(e){var t=e&42;if(t!==0)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ct(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=st(n))):i=st(o):i=st(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=st(n))):i=st(o)):i=st(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function lt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ut(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function mt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ht(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=mr),_r=` `,vr=!1;function yr(e,t){switch(e){case`keyup`:return fr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function br(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var xr=!1;function Sr(e,t){switch(e){case`compositionend`:return br(t);case`keypress`:return t.which===32?(vr=!0,_r):null;case`textInput`:return e=t.data,e===_r&&vr?null:e;default:return null}}function Cr(e,t){if(xr)return e===`compositionend`||!pr&&yr(e,t)?(e=Fn(),Pn=Nn=Mn=null,xr=!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:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Gr(n)}}function qr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Wr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Yr(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`)}var Xr=kn&&`documentMode`in document&&11>=document.documentMode,Zr=null,Qr=null,$r=null,ei=!1;function ti(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ei||Zr==null||Zr!==Wr(r)||(r=Zr,`selectionStart`in r&&Yr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),$r&&Ur($r,r)||($r=r,r=Jf(Qr,`onSelect`),0>=o,i-=o,Zi=1<<32-et(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),V&&Qi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),V&&Qi(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return V&&Qi(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),V&&Qi(i,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===A&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case O:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===A){if(r.tag===7){n(e,r.sibling),c=i(r,o.props.children),so(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===M&&eo(l)===r.type){n(e,r.sibling),c=i(r,o.props),so(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===A?(c=Ri(o.props.children,e.mode,c,o.key),so(c,o),c.return=e,e=c):(c=Li(o.type,o.key,o.props,null,e.mode,c),so(c,o),c.return=e,e=c)}return s(e);case k:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=i(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Vi(o,e.mode,c),c.return=e,e=c}return s(e);case M:return o=eo(o),_(e,r,o,c)}if(ge(o))return h(e,r,o,c);if(pe(o)){if(l=pe(o),typeof l!=`function`)throw Error(a(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,oo(o),c);if(o.$$typeof===j)return _(e,r,Ta(e,o),c);co(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,o),c.return=e,e=c):(n(e,r),c=zi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ao=0;var i=_(e,t,n,r);return io=null,i}catch(t){if(t===Ja||t===Xa)throw t;var a=Ni(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var uo=lo(!0),fo=lo(!1),po=!1;function mo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ho(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function go(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function _o(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ai(e),ki(e,null,n),t}return Ei(e,r,t,n),Ai(e)}function vo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,_t(e,n)}}function yo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var bo=!1;function xo(){if(bo){var e=za;if(e!==null)throw e}}function So(e,t,n,r){bo=!1;var i=e.updateQueue;po=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===Ra&&(bo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=E({},d,f);break a;case 2:po=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),od|=o,e.lanes=o,e.memoizedState=d}}function Co(e,t){if(typeof e!=`function`)throw Error(a(191,e));e.call(t)}function wo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=N.T,s={};s.types=o===null?null:o.types,N.T=s,uc(e,!1,t,n);try{var c=i(),l=N.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?lc(e,t,Ha(c,r),jd(e)):lc(e,t,r,jd(e))}catch(n){lc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{P.p=a,o!==null&&s.types!==null&&(o.types=s.types),N.T=o}}function $s(){}function ec(e,t,n,r){if(e.tag!==5)throw Error(a(476));var i=tc(e).queue;Qs(e,i,t,_e,n===null?$s:function(){return nc(e),n(r)})}function tc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:_e,baseState:_e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ds,lastRenderedState:_e},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ds,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function nc(e){var t=tc(e);t.next===null&&(t=e.alternate.memoizedState),lc(e,t.next.queue,{},jd())}function rc(){return wa(sh)}function ic(){return os().memoizedState}function ac(){return os().memoizedState}function oc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=go(n);var r=_o(t,e,n);r!==null&&(Pd(r,t,n),vo(r,t,n)),t={cache:ja()},e.payload=t;return}t=t.return}}function sc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},dc(e)?fc(t,n):(n=Di(e,t,n,r),n!==null&&(Pd(n,e,r),pc(n,t,r)))}function cc(e,t,n){lc(e,t,n,jd())}function lc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(dc(e))fc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Hr(s,o))return Ei(e,t,i,0),q===null&&Ti(),!1}catch{}if(n=Di(e,t,i,r),n!==null)return Pd(n,e,r),pc(n,t,r),!0}return!1}function uc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},dc(e)){if(t)throw Error(a(479))}else t=Di(e,n,r,2),t!==null&&Pd(t,e,2)}function dc(e){var t=e.alternate;return e===H||t!==null&&t===H}function fc(e,t){Wo=Uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function pc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,_t(e,n)}}var mc={readContext:wa,use:ls,useCallback:Xo,useContext:Xo,useEffect:Xo,useImperativeHandle:Xo,useLayoutEffect:Xo,useInsertionEffect:Xo,useMemo:Xo,useReducer:Xo,useRef:Xo,useState:Xo,useDebugValue:Xo,useDeferredValue:Xo,useTransition:Xo,useSyncExternalStore:Xo,useId:Xo,useHostTransitionStatus:Xo,useFormState:Xo,useActionState:Xo,useOptimistic:Xo,useMemoCache:Xo,useCacheRefresh:Xo,useEffectEvent:Xo},hc={readContext:wa,use:ls,useCallback:function(e,t){return as().memoizedState=[e,t===void 0?null:t],e},useContext:wa,useEffect:zs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ls(4194308,4,Gs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ls(4194308,4,e,t)},useInsertionEffect:function(e,t){Ls(4,2,e,t)},useMemo:function(e,t){var n=as();t=t===void 0?null:t;var r=e();if(Go){$e(!0);try{e()}finally{$e(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=as();if(n!==void 0){var i=n(t);if(Go){$e(!0);try{n(t)}finally{$e(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=sc.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var t=as();return e={current:e},t.memoizedState=e},useState:function(e){e=xs(e);var t=e.queue,n=cc.bind(null,H,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:qs,useDeferredValue:function(e,t){return Xs(as(),e,t)},useTransition:function(){var e=xs(!1);return e=Qs.bind(null,H,e.queue,!0,!1),as().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=H,i=as();if(V){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),q===null)throw Error(a(349));Y&127||gs(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,zs(vs.bind(null,r,o,e),[e]),r.flags|=2048,Fs(9,{destroy:void 0},_s.bind(null,r,o,n,t),null),n},useId:function(){var e=as(),t=q.identifierPrefix;if(V){var n=z,r=Zi;n=(r&~(1<<32-et(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Ko++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(i,{is:r.is}):s.createElement(i)}}o[wt]=t,o[Tt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&pl(t)}}return W(t),t.subtreeFlags&=-33554433,ml(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&pl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(a(166));if(e=we.current,ua(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=ra,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[wt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||sa(t,!0)}else e=lp(e).createTextNode(r),e[wt]=t,t.stateNode=e}return W(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=ua(t),n!==null){if(e===null){if(!r)throw Error(a(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(a(557));e[wt]=t}else da(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else n=fa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Io(t),t):(Io(t),null);if(t.flags&128)throw Error(a(558))}return W(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=ua(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(a(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(a(317));i[wt]=t}else da(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),i=!1}else i=fa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Io(t),t):(Io(t),null)}return Io(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),gl(t,t.updateQueue),W(t),null);case 4:return De(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,W(t),null;case 10:return va(t.type),W(t),null;case 19:if(zo(t),r=t.memoizedState,r===null)return W(t),null;if(i=!!(t.flags&128),o=r.rendering,o===null){if(i)_l(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Bo(e),o!==null){for(t.flags|=128,_l(r,!1),e=o.updateQueue,t.updateQueue=e,gl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ii(n,e),n=n.sibling;return Ro(t,Lo.current&1|2),V&&Qi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&He()>gd&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}}else{if(!i){if(e=Bo(o),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,gl(t,e),_l(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!V)return W(t),null}else 2*He()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=He(),e.sibling=null,o=Lo.current,o=i?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||V?Ro(t,o):(n=o,F(Ao,t),F(Lo,n),jo===null&&(jo=t)),V&&Qi(t,r.treeForkCount),e}return W(t),null;case 22:case 23:return Io(t),ko(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),n=t.updateQueue,n!==null&&gl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&xe(Wa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),va(Aa),W(t),null;case 25:return null;case 30:return t.flags|=33554432,W(t),null}throw Error(a(156,t.tag))}function yl(e,t){switch(ta(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return va(Aa),De(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ke(t),null;case 31:if(t.memoizedState!==null){if(Io(t),t.alternate===null)throw Error(a(340));da()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Io(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));da()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return zo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return De(),null;case 10:return va(t.type),null;case 22:case 23:return Io(t),ko(),e!==null&&xe(Wa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return va(Aa),null;case 25:return null;default:return null}}function bl(e,t){switch(ta(t),t.tag){case 3:va(Aa),De();break;case 26:case 27:case 5:ke(t);break;case 4:De();break;case 31:t.memoizedState!==null&&Io(t);break;case 13:Io(t);break;case 19:zo(t);break;case 10:va(t.type);break;case 22:case 23:Io(t),ko(),e!==null&&xe(Wa);break;case 24:va(Aa)}}function xl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Sl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Cl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{wo(t,n)}catch(t){Z(e,e.return,t)}}}function wl(e,t,n){n.props=Sc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Tl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=vi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);m(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function El(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Dl(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[wt]=e,Rt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,i).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Kr(s,h),v=Kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,N.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,K&6)throw Error(a(331));var c=K;if(K|=4,Yu(o.current),Vu(o,o.current,s,n),K=c,Df(0,!1),Qe&&typeof Qe.onPostCommitFiberRoot==`function`)try{Qe.onPostCommitFiberRoot(Ze,o)}catch{}return!0}finally{P.p=i,N.T=r,uf(e,t)}}function pf(e,t,n){t=Ui(n,t),t=Oc(e.stateNode,t,2),e=_o(e,t,2),e!==null&&(mt(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Ui(n,e),n=kc(2),r=_o(t,n,2),r!==null&&(Ac(n,r,t,e),mt(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $u;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>He()-md?K&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=ft()),e=Oi(e,t),e!==null&&(mt(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(a(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Re(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-et(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=ct(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||lt(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=He(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=an(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Rt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+an(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+an(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+an(n.imageSizes)+`"]`)):i+=`[href="`+an(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=E({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Mt]=!0,o.onload=o.onerror=function(){zt(o)}),Rt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+an(r)+`"][href="`+an(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=E({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Rt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Lt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=E({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Rt(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=E({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=E({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var i=(i=we.current)?bm(i):null;if(!i)throw Error(a(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=Lt(i).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=Lt(i).hoistableStyles,s=o.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=i.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(i,e,o,s.state))),t&&r===null)throw Error(a(528,``));return s}if(t&&r!==null)throw Error(a(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=Lt(i).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(a(444,e))}}function Pm(e){return`href="`+an(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return E({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Mt]){r.loading=1;return}}else t=e.createElement(`link`),t[Mt]=!0,t.onload=t.onerror=zt.bind(null,t),np(t,`link`,n),Rt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+an(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+an(n.href)+`"]`);if(r)return t.instance=r,Rt(r),r;var i=E({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Rt(r),np(r,`style`,i),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Pm(n.href);var o=e.querySelector(Fm(i));if(o)return t.state.loading|=4,t.instance=o,Rt(o),o;r=Im(n),(i=vm.get(i))&&Hm(r,i),o=(e.ownerDocument||e).createElement(`link`),Rt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(i=e.querySelector(zm(o)))?(t.instance=i,Rt(i),i):(r=n,(i=vm.get(o))&&(r=E({},n),Um(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),Rt(i),np(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(a(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Rt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Rt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Ge()})),qe=class extends O{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new ne({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=Je(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=Je(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=Je(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=Je(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){j.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>re(t,e))}findAll(e={}){return this.getAll().filter(t=>re(e,t))}notify(e){j.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return j.batch(()=>Promise.all(e.map(e=>e.continue().catch(k))))}};function Je(e){return e.options.scope?.id}var Ye=class extends O{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??ie(r,t),a=this.get(i);return a||(a=new T({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){this.#e.get(e.queryHash)===e&&(e.destroy(),this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){j.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ae(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>ae(e,t)):t}notify(e){j.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){j.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){j.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},Xe=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new Ye,this.#t=e.mutationCache||new qe,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=w.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=te.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(le(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=he(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return j.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;j.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return j.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=j.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(k).catch(k)}invalidateQueries(e,t={}){return j.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=j.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(k)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(k)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(le(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(le(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(k).catch(k)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(k).catch(k)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return te.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(D(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{_(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(D(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{_(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=ie(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===ge&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},I=t(e(),1),Ze=I.use,Qe=I.useLayoutEffect;function $e(e){return e.replace(/\/{2,}/g,`/`)}function et(e){return e===`/`?e:e.replace(/^\/+/,``)}function tt(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/+$/,``):e}function nt(e){return tt(et(e))}function rt(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function it(e,t,n=`never`,r){if(t.includes(`//`)&&(t=$e(t)),t.startsWith(`/`))return t.length===1||n===`preserve`?t:n===`always`?t.endsWith(`/`)?t:`${t}/`:t.endsWith(`/`)?t.slice(0,-1):t;let i=t===`.`,a;if(r){a=i?e:e+`\0`+t;let n=r.get(a);if(n)return n}let o;if(i)o=e.split(`/`);else{for(e.includes(`//`)&&(e=$e(e)),o=e.split(`/`);o.length>1&&we(o)===``;)o.pop();let n=t.split(`/`);for(let e=0,t=n.length;e1?o.pop():o=[``]:r===`.`||o.push(r)}}o.length>1&&(we(o)===``?n===`never`&&o.pop():n===`always`&&o.push(``));let s=o.join(`/`),c=(i?$e(s):s)||`/`;return a&&r&&r.set(a,c),c}function at(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=new RegExp([...t.keys()].join(`|`).replace(/[.*()]/g,`\\$&`),`g`);return e=>e.replace(n,e=>t.get(e)??e)}function ot(e){return e==null||e===``}function st(e,t,n){if(typeof t!=`string`)return``+(t??void 0);let r=e===`_splat`;if(r&&(!t||/^[a-zA-Z0-9\-._~!/]*$/.test(t)))return t;let i=encodeURIComponent(t);return r&&(i=i.replaceAll(`%2F`,`/`)),n?n(i):i}function ct(e,t,n,r,i){let a=e.endsWith(`/`)?`/`:``,o=``;for(let e of t){if(typeof e==`string`){o+=e;continue}let[t,s,c,l]=e,u=t===2,d=u&&l!==void 0?l+a:l,f=n[s];if(t!==3||f!=null){if(i&&(i[s]=f,u&&(i[`*`]=f)),u&&ot(f)){if(c===`/`&&!d)continue;f=``}o+=c+st(s,f,r)+(d||``)}}return o+a||`/`}function lt(e){return e?.isNotFound===!0}function ut(){try{return sessionStorage}catch{return}}var dt=`tsr-scroll-restoration-v1_3`,ft=ut();function pt(){try{return JSON.parse(ft?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function mt(){try{ft?.setItem(dt,JSON.stringify(ht))}catch{}}var ht=pt(),gt=`data-scroll-restoration-id`,_t=e=>e.state.__TSR_key||e.href;function vt(e){let t=e.getAttribute(gt);if(t)return`[${gt}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var yt=!1,bt=`window`;function xt(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function St(e){let t=new Set;for(let n of e){if(n===bt)continue;let e=xt(n);e&&t.add(e)}return t}function Ct(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||_t,a=new Set,o=e=>{let t=ht[e]||={};for(let e of a)e===document?t[bt]={scrollX,scrollY}:e.isConnected&&(t[vt(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,yt=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{yt||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),mt()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=ht[d];if(e){let t=ht[u];for(let n in e){if(n===bt){if(s)continue}else{let e=xt(n);if(!e||s&&o&&(l??=St(o),l.has(e)))continue}t||=ht[u]={},t[n]??=e[n]}}}yt=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=St(o));let t=e&&i&&c,s=r.restoring?ht[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===bt){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=xt(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{yt=!1}}))}function wt(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function Tt(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function Et(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Tt(r):Array.isArray(t)?t.push(Tt(r)):n[e]=[t,Tt(r)]}return n}var Dt=/^(?:\s|["[{\d-]|fa|nu|tr)/,Ot=At(JSON.parse),kt=jt(JSON.stringify,JSON.parse);function At(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=Et(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!Dt.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function jt(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!Dt.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=wt(e,r);return t?`?${t}`:``}}var Mt=`__root__`;function Nt(e){e.statusCode=e.statusCode||e.code||307;let t=new Headers(e.headers);e.href&&t.get(`Location`)===null&&t.set(`Location`,e.href);let n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}function Pt(e){return e instanceof Response&&!!e.options}function Ft(e){let t=new Map,n,r;return{get(e){let n=t.get(e);if(n)return n.visited=!0,n.value},set(i,a){let o=t.get(i);if(o){o.value=a;return}if(t.size>=e){let e=n?.next().value;for(;!e||e.visited;)e?e.visited=!1:n=t.values(),e=n.next().value;e===r&&(n=void 0),t.delete(e.key)}let s={key:i,value:a,visited:!1};r=s,t.set(i,s)},clear(){t.clear(),n=void 0,r=void 0}}}var It=4,Lt=5;function Rt(e){let t=e.names;if(t)return t;let n=[];for(let t of e)typeof t!=`string`&&n.push(t[1]);return e.names=n}function zt(e,t,n){let r=e.substring(t,n);if(r.charCodeAt(0)===36)return r.length===1?[2,`_splat`,``,void 0]:[1,r.substring(1),``,``];let i=r.indexOf(`{`);if(i>=0){let a=r.indexOf(`}`,i),o=r.charCodeAt(i+1)===45,s=i+(o?3:2);if(a>=0&&r.charCodeAt(s-1)===36&&(!o||s!e.parse&&e.caseSensitive===_&&e.prefix===h&&e.suffix===g);if(y)c=y;else{let e=Ht(r,t,_,h,g);c=e,v.push(e),v.length===2&&i?.push(v)}}r=c}p&&m=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!r||!_&&(n.caseSensitive?v:y??=v.toLowerCase()).startsWith(r)){if(a){if(_)continue;let e=t.slice(u).join(`/`),i=e.slice(-a.length);if((n.caseSensitive?i:i.toLowerCase())!==a||e.length-a.length=0;t--){let n=i.optional[t];s.push({node:n,index:u,skipped:e,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}if(!_)for(let e=i.optional.length-1;e>=0;e--){let t=i.optional[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.pathless[e];s.push({node:t,index:u,skipped:d,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===It)>(e.node.kind===It)||t.node.kind===It==(e.node.kind===It)&&t.node.depth>e.node.depth)))}function nn(e,t,n){let r=nt(e),i=`/${r}`,a=t?i:i.toLowerCase(),o=`${a}/`,s={input:({url:e})=>{let n=t?e.pathname:e.pathname.toLowerCase();return n===a?e.pathname=`/`:n.startsWith(o)&&(e.pathname=e.pathname.slice(i.length)),e},output:({url:e})=>(e.pathname=$e(`/${r}${e.pathname}`),e)};return n?{input:({url:e})=>rn(n,s.input({url:e})),output:({url:e})=>s.output({url:an(n,e)})}:s}function rn(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function an(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function on(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),d=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function f(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let p={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:d,getMatchStore:f,setMatches:m};function m(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{xe(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=f(t.routeId);e.get()!==t&&e.set(t)}})}return p}var sn=`__TSR_index`,cn=`popstate`,ln=`beforeunload`,un=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function dn(e){let t=un.exec(e);return t?`/`+e.slice(t[0].length):e}function fn(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>` -\r`.includes(e)?``:encodeURIComponent(e))),dn(e)}function pn(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=gn(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[sn];i=mn(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[sn];i=mn(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[sn]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function mn(e,t){let n=_n();return{...t,key:n,__TSR_key:n,[sn]:e}}function hn(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>fn(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>gn(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=_n();t.history.replaceState({[sn]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=gn(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[sn]-l.state[sn],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=pn({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(ln,x,{capture:!0}),t.removeEventListener(cn,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(ln,x,{capture:!0}),t.addEventListener(cn,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function gn(e,t){let n=fn(e),r=n.indexOf(`#`),i=n.indexOf(`?`);if(!t){let e=_n();t={[sn]:0,key:e,__TSR_key:e}}return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t}}function _n(){return(Math.random()+1).toString(36).substring(7)}function vn(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function yn(e){return e.pathname+e.search+e.hash}function bn(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function xn(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function Sn({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function Cn(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function wn(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var Tn=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options;this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:hn()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`;let n=this.options.basepath??`/`,r=this.options.rewrite,i=this.basepath!==n||t?.rewrite!==r||t?.caseSensitive!==this.options.caseSensitive;if(i&&(this.basepath=n,this.rewrite=n!==`/`&&nt(n)?nn(n,this.options.caseSensitive,r):r),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;e=this.buildRouteTree(),this.setRoutes(e)}if(this.stores)i&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=on(this.latestLocation,e),Ct(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=qt(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&Ut(this.options.routeMasks,e.processedTree),{...e,resolvePathCache:Ft(1e3)}},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i},a)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),o=this.options.stringifySearch(i);return{href:e+o+r,publicHref:e+o+r,pathname:Ne(e),external:!1,searchStr:o,search:be(t?.search,i),hash:Ne(r.slice(1)),state:Le(t?.state,a)}}let o=rn(this.rewrite,new URL(i,this.origin)),s=this.options.parseSearch(o.search),c=this.options.stringifySearch(s);return o.search=c,{href:o.href.replace(o.origin,``),publicHref:i,pathname:Ne(dn(o.pathname)),external:!!this.rewrite&&vn(o,this.origin),searchStr:c,search:be(t?.search,s),hash:Ne(o.hash.slice(1)),state:Le(t?.state,a)}},r=n(e,e.state),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i,{...i.state,__tempLocation:void 0,key:r.state.key,__TSR_key:r.state.__TSR_key});return e.maskedLocation=r,e}return r},this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=Kt(tt(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=e=>{{let t=this.staticLocations.get(e);if(t)return t}let t=!1,n=(n={})=>{if(n.href){let e=gn(n.href,{});n={...n,to:rn(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let r=n._fromLocation||this._pendingLocation||this.latestLocation,i,a=()=>(t=!0,r),o=()=>(t=!0,i??=this.matchRoutesLightweight(r)),s=n.to?`${n.to}`:`.`,c=it(s[0]===`/`?``:n.unsafeRelative===`path`?a().pathname:n.from??o()[1],s,this.options.trailingSlash,this.resolvePathCache),l=this.routesByPath[tt(c)],u=c.includes(`$`),d;if(l)d=l._branch??=Yt(l);else if(u)d=[];else{let[e,t,n]=this.getMatchedRoutes(c);d=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(d=[...d,this.options.notFoundRoute])}let f=u?l?._interpolation??Bt(!1,{fullPath:c},0):void 0,p;for(let e of d){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){let e=o()[3];if(p??=An(n.params,e),!Ce(p))break;p===e&&(p=Object.assign(Ae(),p));try{Object.assign(p,t(p))}catch{}}}p??=An(n.params,jn(n.params,f)?o()[3]:Mn);let m=e.leaveParams?c:dn(Ne(f?ct(c,f,p,this.pathParamsDecoder):c)),h=Nn(d,e._includeValidateSearch),g=()=>{let t=o()[2];if(e._includeValidateSearch&&this.options.search?.strict){let e={};d.forEach(n=>{if(n.options.validateSearch)try{Object.assign(e,kn(n.options.validateSearch,{...e,...t}))}catch{}}),t=e}return t},_=h.length?Pn(h,g(),n):n.search===!0?g():typeof n.search==`function`?n.search(g()):n.search||Mn,v=this.options.stringifySearch(_),y=n.hash===!0?a().hash:typeof n.hash==`function`?n.hash(a().hash):n.hash||void 0,b=y?`#${y}`:``,x=n.state?n.state===!0?a().state:typeof n.state==`function`?n.state(a().state):n.state:Mn,S=`${m}${v}${b}`,C,w,T=!1;if(this.rewrite){let e=new URL(S,this.origin),t=e.origin,n=an(this.rewrite,e);C=yn(e),vn(n,t)?(w=n.href,T=!0):w=dn(yn(n))}else C=De(S),w=C;return{publicHref:w,href:C,pathname:m,search:_,searchStr:v,state:x,hash:y??``,external:T,unmaskOnReload:n.unmaskOnReload}},r=n(e);if(e.mask)r.maskedLocation=n({from:e.from,...e.mask});else if(this.options.routeMasks){let t=Wt(r.pathname,this.processedTree);if(t){let i=Object.assign(Ae(),t.rawParams),{from:a,params:o,...s}=t.route,c=An(o,i);r.maskedLocation=n({from:e.from,...s,params:c})}}return!t&&e._fromLocation&&!r.maskedLocation&&this.staticLocations.set(e,r),r},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return En(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=tt(this.latestLocation.href)===tt(n.href)&&F(Sn(n.state),Sn(this.latestLocation.state)),o=this._commitPromise,s,c=new Promise(e=>{s=e});if(c.resolve=()=>{s(),o?.resolve()},this._commitPromise=c,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state={...o.state,__hashScrollIntoViewOptions:a??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?Se(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return En(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await Er(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(xn(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set,a=e=>{(!n||n(e))&&i.add(e.id)};t.forEach(a),this._cache.forEach(a),r?.forEach(e=>e.forEach(a)),this._tx?.[3].forEach(a);let o=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),o.push(e));let s=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&bn(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(s);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of o)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(Ie.test(n)||(r=Se(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:vn(e,this.origin)||(n=yn(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=zn,this.preloadRoute=e=>Dr(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?it(e.from||``,e.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=Gt(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!F(o.rawParams,e.params,!0)?!1:t?.includeSearch??!0?F(a.search,r.search,!0)?o.rawParams:!1:o.rawParams},this.getStoreConfig=t,e.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=at(e.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??kt,parseSearch:e.parseSearch??Ot,protocolAllowlist:e.protocolAllowlist??Ee}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(e){Object.assign(this,e),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;let t=this.options.notFoundRoute;t&&(t.init(99999999999),this.routesById[t.id]!==t&&(t._interpolation=Bt(!1,t,0)),this.routesById[t.id]=t)}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,o=!1;(i?i.path!==`/`&&r[`**`]:tt(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:o=!0);let s=o?Fn(this.options.notFoundMode,a):void 0,c=Array(a.length),l=this._committed,u=(e,t)=>{let n=l[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?l.find(t=>t.routeId===e.id):void 0},d;for(let n=0;ntypeof t!=`string`&&!je.call(e,t[1]))}var Mn=Object.freeze({});function Nn(e,t){let n=[];for(let r=0;r{let n=t(i.preSearchFilters?i.preSearchFilters.reduce((e,t)=>t(e),e):e);return i.postSearchFilters?i.postSearchFilters.reduce((e,t)=>t(e),n):n});let a=i.validateSearch;t&&a&&n.push(({search:e,next:t,meta:n})=>{let r=t(e);try{let e=kn(a,r);if(n&&e)for(let t in e)t in r||(n.defaulted||=new Map).set(t,e[t]);return{...r,...e}}catch{}return r})}return n}function Pn(e,t,n){let r=(t,i,a)=>{if(t>=e.length){if(!n.search)return{};if(n.search===!0)return i;let e=Fe(n.search,i);return a&&(a.explicit=e),e}return e[t]({search:i,next:(e,n)=>{if(n){let n=a||{};return{search:r(t+1,e,n),meta:n}}return r(t+1,e,a)},meta:a})};return r(0,t)}function Fn(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return Mt}function In(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Ln(e,t){return e.options[t]?.preload?.()}function Rn(e,t){let n=Ln(e,`component`),r=Ln(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function zn(e,t,n){let r=()=>t===!1?void 0:t?Ln(e,t):Rn(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function Bn(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function Jn(e,t){return e.routesById[t.routeId]}function Yn(e,t,n){return Pt(e)?[Wn,e]:lt(e)?(e.routeId||=n,[Un,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[Hn,e]):[Vn,e]}function Xn(e,t){let n=Yn(t,!0,e.id);if(n[0]!==Hn)return n;try{e.options.onError?.(n[1])}catch(t){n=Yn(t,!0,e.id)}return n}function Zn(e,t,n,r,i){return i[0].signal.aborted?Gn:pr(e,t,n,Xn(n,r),i)}async function Qn(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;ie.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return er(e,r),[i,Zn(e,t,u,a,n)]}if(c.aborted)return[i,Gn];let p=r.paramsError??r.searchError;if(p!==void 0)return er(e,r),[i,Zn(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{rr(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?qn(a,c):a);if(c.aborted)return[i,Gn];let s=pr(e,t,u,Yn(o,!1,u.id),n);if(s[0]!==Vn)return er(e,r),[i,s];r.context={...r.context,...o}}catch(a){return er(e,r),[i,Zn(e,t,u,a,n)]}finally{r.status=h,rr(e,r,!1,n[0])}}i()}function $n(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function er(e,t){let n=t._flight;t._flight=void 0,$n(e,t,n)?.abort()}function tr(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=$n(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function nr(e){for(let t of e){let e=t._flight;e&&e[2]++}}function rr(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function ir(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function ar(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return Gn;if(!i)return[Vn,void 0];let l=n._flight;rr(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(ir(e,t,n,r,s,a,!!o[3]))).then(e=>Yn(e,!1,r.id),e=>Yn(e,!0,r.id)).then(t=>(t[0]!==Vn&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===Hn&&l[2]?Xn(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],pr(e,t,r,await qn(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return er(e,n),Gn}finally{rr(e,n,!1,s)}}function or(e,t,n){t[0]!==Wn&&(e.status=`success`,e.error=void 0,t[0]===Vn?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function sr(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&er(e,r)}function cr(e,t){return t[0]===Hn||t[0]===Un?{...e,status:t[0]===Hn?`error`:`notFound`,error:t[1],_flight:void 0}:e}function lr(e,t,n,r,i,a,o){let s=t[1][n],c=Jn(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(ir(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=Gn)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,er(e,s),p=Zn(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,$n(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?ar(e,t,s,c,g,i,a).then(t=>(or(s,t,l),t[0]===Vn&&(m&&!a[0].signal.aborted&&sr(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[Vn,s.loaderData]),T=(async()=>{try{let e=zn(c,void 0,C);e&&await qn(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,Zn(e,t,c,r,a)]}let r=await w;x&&r[0]===Vn&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>cr(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let D=ar(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,or(E,e,!1),e));return(t[2]??=[]).push([n,D,T,E]),D.then(e=>cr(E,e))}async function ur(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=Jn(e,t[n]);try{let e=zn(i,!1);e&&await qn(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function dr(e,t){t[2]&&=(tr(e,t[2].map(e=>e[3])),void 0)}async function fr(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=Wn)throw[a,t];!i&&t[0]!==Vn&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===Wn)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function pr(e,t,n,r,i,a){for(;r[0]===Wn;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[Wn,t]:[Wn,t,a]}return[Wn,o,n]}catch(e){r=a?[Hn,e]:Xn(n,e),a=!0}}return r}async function mr(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Un?ur(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=Wn)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==Vn&&t[0]=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=Wn){let n=s[1];if(n[0]!==Wn||n[1].options.reloadDocument||n[2])return dr(e,t),n;c=!0,s=[0,[Hn,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===Hn?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=Jn(e,u);try{await qn(i?Promise.resolve().then(()=>zn(m,l===Hn?`errorComponent`:`notFoundComponent`)):Promise.all([zn(m),zn(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return dr(e,t),Gn}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),dr(e,t),tr(e,o),p()):u.status=`success`}return t}async function hr(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;te._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await ur(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l{for(let t=d;t=Wn&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=mr(e,i,u,r[0],fr(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=fr(i[2],void 0,void 0,h.then(e=>Kn(e)?0:Bn(n).length,()=>0))),o=await h}catch(t){if(dr(e,i),t===a&&a.aborted)return Gn;throw t}return Kn(o)?o:hr(e,o,a,r[6]===n.length?r[6]:0)}function _r(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a0){i[3]=setTimeout(()=>_r(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function vr(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function yr(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!Bn(t[3]).some(e=>e.id===n[1]))return;let i;try{await qn(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function br(e,t){e._committed=t,e.stores.setMatches(t)}function xr(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=Bn(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=Cn(n);br(e,n),tr(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),wn(e,i,n,a,l,t)}async function Sr(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function Cr(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function wr(e,t,n,r,i){let a=n.map(e=>({...e}));nr(a);for(let t of r)er(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await mr(e,o,r,t[0],i)}catch(t){throw tr(e,a),t}if(Kn(s)){tr(e,a),s[0]===Wn&&e._tx===t&&e._committed===n&&await Cr(e,t,s);return}if(await hr(e,s,t[0].signal),e._tx!==t||e._committed!==n){tr(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),er(e,n))}br(e,a),tr(e,n,a)}async function Tr(e,t,n,r,i,a){let o=await gr(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(Kn(o)){let n=o[0]===Wn&&e._tx===t;if((!n||o[1].options.reloadDocument)&&vr(e,t),tr(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){vr(e,t);return}await Cr(e,t,o);return}let s=o[1];if(e._tx===t&&await yr(e,t),e._tx!==t){vr(e,t),tr(e,s),dr(e,o);return}let c=t[2],l=xn(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await yr(e,t),e._tx!==t){vr(e,t),tr(e,s),dr(e,o);return}let n=await e.startTransition(()=>{vr(e,t),xr(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){dr(e,o);return}u?.length&&wr(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function Er(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=xn(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await Sr(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});nr(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){tr(e,m),await Sr(e,n);return}e._preflight=void 0;let g,_=()=>Tr(e,y,f,()=>_r(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>Sr(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&rr(e,t,!1)}n[0].abort(),tr(e,n[3],y[3],!0)}if(e._tx!==y){tr(e,y[3]),y[3]=[],g?.(),await Sr(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&_r(e,y),g?.(_()),await y[5]}async function Dr(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),nr(a),o=(e._preloads??=new Map).set(i,a),s=await gr(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),tr(e,a)),i.abort()}if(!Kn(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){lt(e)||console.error(e);return}}}var Or=`Error preloading route! ☝️`,kr=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{this.originalIndex=e,this._branch=void 0;let t=this.options,n=!t?.path&&!t?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=Mt:this.parentRoute||Re();let r=n?Mt:t?.path;r&&r!==`/`&&(r=et(r));let i=t?.id||r,a=n?Mt:$e((this.parentRoute.id===`__root__`?``:this.parentRoute.id)+`/`+(i??``));r===`__root__`&&(r=`/`);let o=a===`__root__`?`/`:r===void 0?this.parentRoute.fullPath:$e(this.parentRoute.fullPath+`/`+r);this._path=r,this._id=a,this._fullPath=o,this._to=tt(o)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e==`object`&&e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>Nt({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!e?.getParentRoute,e?.id&&e?.path)throw Error(`Route cannot have both an 'id' and a 'path' option.`)}},Ar=class extends kr{constructor(e){super(e)}},R=n(),jr=class extends I.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?I.createElement(this.props.errorComponent??Mr,{error:e[0],reset:this.reset}):this.props.children}};function Mr({error:e}){let[t,n]=I.useState(!1);return(0,R.jsxs)(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[(0,R.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[(0,R.jsx)(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),(0,R.jsx)(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),(0,R.jsx)(`div`,{style:{height:`.25rem`}}),t?(0,R.jsx)(`div`,{children:(0,R.jsx)(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?(0,R.jsx)(`code`,{children:e.message}):null})}):null]})}var Nr=()=>!0,Pr=()=>!1;function Fr({children:e,fallback:t=null}){return(0,R.jsx)(I.Fragment,{children:Ir()?e:t})}function Ir(e=!0){return I.useSyncExternalStore(Lr,Nr,e?Pr:Nr)}function Lr(){return()=>{}}function Rr({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function zr(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var Br=[],Vr=0,{link:Hr,unlink:Ur,propagate:Wr,checkDirty:Gr,shallowPropagate:Kr}=Rr({update(e){return e._update()},notify(e){Br[Jr++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Qr(e))}}),qr=0,Jr=0,Yr,Xr=0;function Zr(e){try{++Xr,e()}finally{--Xr||$r()}}function Qr(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Ur(n,e)}function $r(){if(!(Xr>0)){for(;qr{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Yr,o=t?.compare??Object.is;if(n)Yr=i,++Vr,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Yr=a,n&&(i.flags&=-5),Qr(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&Gr(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Kr(e)}}else e&32&&(i.flags=e&-33);return Yr!==void 0&&Hr(i,Yr,Vr),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Wr(e),Kr(e),$r())}},i}function ti(e){let t=()=>{let t=Yr;Yr=n,++Vr,n.depsTail=void 0,n.flags=6;try{return e()}finally{Yr=t,n.flags&=-5,Qr(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&Gr(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Qr(this)}};return t(),n}function ni(e){return Be({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.loaderData):t.loaderData})}function ri(e){let{select:t,...n}=e;return Be({...n,select:e=>t?t(e.loaderDeps):e.loaderDeps})}function ii(e){return Be({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:t=>{let n=e.strict===!1?t.params:t._strictParams;return e.select?e.select(n):n}})}function ai(e){return Be({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.search):t.search})}function oi(e){let t=ke();return I.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function si(e){let t=ke(),n=oi(),r=I.useRef(null);return Qe(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function ci(e){return Be({...e,select:t=>e.select?e.select(t.context):t.context})}function li(...e){let t=I.useRef(e),n=t.current;return e.forEach((e,t)=>{F(n[t],e,!1,!0)||(n[t]=e)}),t.current}function ui(e,t){e.preloadRoute(t).catch(e=>{console.warn(e),console.warn(Or)})}var di={compare:(e,t)=>e[0]===t[0]&&e[1]===t[1]};function fi(e,t){let n=typeof e==`string`&&Se(e);if(n)return t.has(n)?e:null}function pi(e,t,n,r,i){let a=rt(e.pathname,r),o=rt(t.pathname,r);return(n?.exact?a!==o:!a.startsWith(o)||a.length!==o.length&&a[o.length]!==`/`)||(n?.includeSearch??!0)&&!F(e.search,t.search,!n?.exact,n?.explicitUndefined)?!1:!n?.includeHash||i&&e.hash===t.hash}function mi(e,t,n){let r=ke(),i=I.useRef(null),a=I.useCallback(e=>{if(i.current=e,typeof t==`function`)return t(e);t&&(t.current=e)},[t]),{activeOptions:o,to:s,preload:c,preloadDelay:l,hashScrollIntoView:u,replace:d,startTransition:f,resetScroll:p,viewTransition:m,ignoreBlocker:h,disabled:g,target:_,onClick:v,onBlur:y,onFocus:b,onMouseEnter:x,onMouseLeave:S,onTouchStart:C}=e,w=Ir(!!o?.includeHash),[T,E,D]=li(e.search,e.params,o),[O,k]=I.useMemo(()=>[e,{...e}],[r,e.from,e._fromLocation,e.hash,e.to,T,E,e.state,e.mask,e.unsafeRelative]),A=I.useCallback(e=>{let t=fi(s,r.protocolAllowlist);if(t!==void 0)return[t??void 0];O._fromLocation||(k._fromLocation=e);let n=r.buildLocation(k),i=Ci(n,r,g);return[i,!g&&(!i||Se(i))?void 0:pi(e,n,D,r.basepath,w)]},[D,g,w,O,k,r,s]),[ee,te]=Pe(r.stores.location,A,di),ne=te===void 0?ee:void 0,j=g||ee===void 0,re=I.useRef(!1),ie=e.reloadDocument||ne||j?!1:c??r.options.defaultPreload,ae=l??r.options.defaultPreloadDelay??0,oe=I.useCallback(e=>{let t=e?.isIntersecting;if(!(t??ie===`intent`)){t===!1&&xi(i);return}if(!ae){ui(r,O);return}bi.has(i)||bi.set(i,setTimeout(()=>{bi.delete(i),ui(r,O)},ae))},[r,O,i,ie,ae]);I.useEffect(()=>{ie===`render`&&!re.current&&(re.current=!0,ui(r,O));let e;return ie===`viewport`&&i.current&&typeof IntersectionObserver==`function`&&(e=new IntersectionObserver(e=>oe(e.pop()),{rootMargin:`100px`}),e.observe(i.current)),()=>{e?.disconnect(),xi(i)}},[r,O,ie,oe,i]);let M=vi(e,n);if(M.ref=t?a:i,ne)return M.href=ne,M;let se=e=>{let t=_??e.currentTarget.getAttribute(`target`);!j&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(!t||t===`_self`)&&e.button===0&&(e.preventDefault(),r.navigate({...O,replace:d,resetScroll:p,hashScrollIntoView:u,startTransition:f,viewTransition:m,ignoreBlocker:h}))},ce=()=>{ie===`intent`&&ui(r,O)},le=()=>{ie===`intent`&&xi(i)};return M.onClick=Si(v,se),M.onBlur=Si(y,le),M.onFocus=Si(b,oe),M.onMouseEnter=Si(x,oe),M.onMouseLeave=Si(S,le),M.onTouchStart=Si(C,ce),yi(M,e,te,ee,j,n)}var hi={},gi={className:`active`},_i=new Set([`to`,`params`,`search`,`hash`,`state`,`mask`,`from`,`unsafeRelative`,`_fromLocation`,`reloadDocument`,`preload`,`preloadDelay`,`preloadIntentProximity`,`hashScrollIntoView`,`replace`,`startTransition`,`resetScroll`,`viewTransition`,`ignoreBlocker`,`activeProps`,`inactiveProps`,`activeOptions`,`_asChild`]);function vi(e,t){let n={};for(let r in e)_i.has(r)||r===`type`&&t!==void 0||r===`disabled`&&t===`a`||(n[r]=e[r]);return n}function yi(e,t,n,r,i,a){let{activeProps:o,inactiveProps:s,className:c,style:l,target:u}=t,d=Fe(n?o:s,{})??(n?gi:hi);Object.assign(e,d),e.href=r,a!==`a`&&(e.disabled=i),e.target=u;let f=d.style;(l||f)&&(e.style=l&&f?{...l,...f}:l||f);let p=d.className;return(c||p)&&(e.className=c?p?`${c} ${p}`:c:p),i&&(e.role=`link`,e[`aria-disabled`]=!0),n&&(e[`data-status`]=`active`,e[`aria-current`]=`page`),e}var bi=new WeakMap,xi=e=>{clearTimeout(bi.get(e)),bi.delete(e)},Si=(e,t)=>e?n=>n.defaultPrevented||(e(n),n.defaultPrevented||t(n)):t;function Ci(e,t,n){if(n)return;let r=e.maskedLocation??e,i=r.external?r.publicHref:t.history.createHref(r.publicHref)||`/`;if(!r.external&&i===r.publicHref||!Oe(i,t.protocolAllowlist))return i}var wi=I.memo(I.forwardRef((e,t)=>{let n=e._asChild||`a`,r=mi(e,t,n),i=typeof e.children==`function`?e.children({isActive:r[`data-status`]===`active`}):e.children;return I.createElement(n,r,i)}),Ti);function Ti(e,t){let n=0;for(let r in t)if(n++,e[r]!==t[r]&&(!_i.has(r)||!F(e[r],t[r],!1,!0)))return!1;for(let t in e)n--;return n===0}var Ei=class extends kr{constructor(e){super(e),this.useMatch=e=>Be({...e,from:this.id}),this.useRouteContext=e=>ci({...e,from:this.id}),this.useSearch=e=>ai({...e,from:this.id}),this.useParams=e=>ii({...e,from:this.id}),this.useLoaderDeps=e=>ri({...e,from:this.id}),this.useLoaderData=e=>ni({...e,from:this.id}),this.useNavigate=()=>oi({from:this.fullPath}),this.Link=I.forwardRef((e,t)=>(0,R.jsx)(wi,{ref:t,from:this.fullPath,...e}))}};function Di(e){return new Ei(e)}var Oi=class extends Ar{constructor(e){super(e),this.useMatch=e=>Be({...e,from:this.id}),this.useRouteContext=e=>ci({...e,from:this.id}),this.useSearch=e=>ai({...e,from:this.id}),this.useParams=e=>ii({...e,from:this.id}),this.useLoaderDeps=e=>ri({...e,from:this.id}),this.useLoaderData=e=>ni({...e,from:this.id}),this.useNavigate=()=>oi({from:this.fullPath}),this.Link=I.forwardRef((e,t)=>(0,R.jsx)(wi,{ref:t,from:this.fullPath,...e}))}};function ki(e){return new Oi(e)}function Ai(e,t){let n,r,i,a=()=>(n||=(i=void 0,e().then(e=>{n=void 0,o.preload=void 0,r=e[t??`default`]}).catch(e=>{n=void 0,i=e})),n),o=function(e){if(i){if(Te(i)&&typeof sessionStorage<`u`){let e=`tanstack_router_reload:${i.message}`;if(!sessionStorage.getItem(e))throw sessionStorage.setItem(e,`1`),window.location.reload(),new Promise(()=>{})}throw i}if(!r){if(Ze)Ze(a());else throw a()}return I.createElement(r,e)};return o.preload=a,o}function ji(e){let t=ke(),n=`not-found-${Pe(t.stores.location,e=>e.pathname)}-${Pe(t.stores.status)}`;return(0,R.jsx)(jr,{getResetKey:()=>n,onCatch:(t,n)=>{if(lt(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(lt(t))return e.fallback?.(t);throw t},children:e.children})}function Mi(){return(0,R.jsx)(`p`,{children:`Not Found`})}function Ni(e){return(0,R.jsx)(R.Fragment,{children:e.children})}function Pi(e,t,n){return t.options.notFoundComponent?(0,R.jsx)(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?(0,R.jsx)(e.options.defaultNotFoundComponent,{...n}):(0,R.jsx)(Mi,{})}function Fi(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?(0,R.jsx)(n,{}):null}var Ii=(e,t)=>e[0]===t[0]&&e[1]===t[1],Li=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,Ri=I.memo(function({routeId:e}){let t=ke();return(0,R.jsx)(zi,{router:t,match:Pe(t.stores.getMatchStore(e))})});function zi({router:e,match:t}){let n=e.routesById[t.routeId],r=Fi(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=Li(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s))?I.Suspense:Ni,l=i?jr:Ni,u=o?ji:Ni;return(0,R.jsxs)(n.isRoot?n.options.shellComponent??Ni:Ni,{children:[(0,R.jsx)(ze.Provider,{value:t.routeId,children:(0,R.jsx)(c,{fallback:r,children:(0,R.jsx)(l,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(lt(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:(0,R.jsx)(u,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return I.createElement(o,e)},children:s?(0,R.jsx)(Fr,{fallback:r,children:(0,R.jsx)(Bi,{match:t})}):(0,R.jsx)(Bi,{match:t})})})})}),null]})}var Bi=I.memo(function({match:e}){let t=ke(),n=e.routeId,r=t.routesById[n],i=I.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=I.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?(0,R.jsx)(e,{},i):(0,R.jsx)(Vi,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!Li(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return Fi(t,r)}if(e.status===`notFound`)return Pi(t,r,e.error);if(e.status===`error`)throw e.error;return a}),Vi=I.memo(function(){let e=ke(),t=I.useContext(ze),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=Pe(a,e=>[!!e._notFound,e.error],{compare:Ii}),i=Pe(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return Pi(e,e.routesById[t],r);if(!i)return null;let a=(0,R.jsx)(Ri,{routeId:i});return t===`__root__`?(0,R.jsx)(I.Suspense,{fallback:Fi(e),children:a}):a});function Hi(e,t){let n=e[1];e.length=0,n?.(t)}function Ui({t:e}){let t=ke(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Hi(n,!1),n.push(i,a),e(t),I.startTransition(r)}),Qe(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(tt(r.publicHref)!==tt(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...xn(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function Wi(){let e=ke(),t=e.routesById[Mt],n=Fi(e,t),r=e.ssr?Ni:I.Suspense,i=(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Ui,{t:I.useState()[1]}),(0,R.jsx)(r,{fallback:n,children:(0,R.jsx)(Gi,{})})]});return e.options.InnerWrap?(0,R.jsx)(e.options.InnerWrap,{children:i}):i}function Gi(){let e=ke(),t=e._rendered,n=Pe(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;Qe(()=>{t[0]===n&&Hi(t,!0)},[t,n]);let a=i?(0,R.jsx)(Ri,{routeId:i}):null;return(0,R.jsx)(ze.Provider,{value:i,children:e.options.disableGlobalCatchBoundary?a:(0,R.jsx)(jr,{getResetKey:()=>r,onCatch:void 0,children:a})})}var Ki=e=>({createMutableStore:ei,createReadonlyStore:ei,batch:Zr}),qi=e=>new Ji(e),Ji=class extends Tn{constructor(e){super(e,Ki)}};function Yi({router:e,children:t,...n}){Ce(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,R.jsx)(Me.Provider,{value:e,children:t});return e.options.Wrap?(0,R.jsx)(e.options.Wrap,{children:r}):r}function Xi({router:e,...t}){return(0,R.jsx)(Yi,{router:e,...t,children:(0,R.jsx)(Wi,{})})}var Zi=Ke(),z=a();function Qi(e){let t=(0,z.c)(6),{error:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`p`,{className:`text-lg font-semibold text-rot-text`,children:`Diese Ansicht ist abgestürzt`}),t[0]=r):r=t[0];let i=n instanceof Error?n.message:String(n),a;t[1]===i?a=t[2]:(a=(0,R.jsx)(`p`,{className:`text-[15px]`,children:i}),t[1]=i,t[2]=a);let o;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsx)(`button`,{type:`button`,onClick:$i,className:`h-11 rounded-xl border border-rot/40 bg-rot/10 px-5 text-sm font-semibold text-rot-text hover:bg-rot/[0.18]`,children:`Neu laden`}),t[3]=o):o=t[3];let s;return t[4]===a?s=t[5]:(s=(0,R.jsxs)(`div`,{role:`alert`,className:`flex flex-col items-start gap-3 rounded-2xl border border-rot-rand bg-rot-grund p-6 text-rot-text`,children:[r,a,o]}),t[4]=a,t[5]=s),s}function $i(){return window.location.reload()}var ea={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};ea.node;var ta=r(ea),na={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};na.node;var ra=r(na),B={name:`audio-lines`,size:24,node:[[`path`,{d:`M2 10v3`,key:`1fnikh`}],[`path`,{d:`M6 6v11`,key:`11sgs0`}],[`path`,{d:`M10 3v18`,key:`yhl04a`}],[`path`,{d:`M14 8v7`,key:`3a1oy3`}],[`path`,{d:`M18 5v13`,key:`123xd1`}],[`path`,{d:`M22 10v3`,key:`154ddg`}]]};B.node;var V=r(B),ia={name:`bird`,size:24,node:[[`path`,{d:`M16 7h.01`,key:`1kdx03`}],[`path`,{d:`M3.4 18H12a8 8 0 0 0 8-8V7a4 4 0 0 0-7.28-2.3L2 20`,key:`oj1oa8`}],[`path`,{d:`m20 7 2 .5-2 .5`,key:`12nv4d`}],[`path`,{d:`M10 18v3`,key:`1yea0a`}],[`path`,{d:`M14 17.75V21`,key:`1pymcb`}],[`path`,{d:`M7 18a6 6 0 0 0 3.84-10.61`,key:`1npnn0`}]]};ia.node;var aa=r(ia),oa={name:`bot`,size:24,node:[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]};oa.node;var sa=r(oa),ca={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};ca.node;var la=r(ca),ua={name:`brain-circuit`,size:24,node:[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]};ua.node;var da=r(ua),fa={name:`calendar-clock`,size:24,node:[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`path`,{d:`M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338`,key:`7hb8p4`}],[`path`,{d:`M3 9h5.859`,key:`numkqi`}],[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]};fa.node;var pa=r(fa),ma={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};ma.node;var ha=r(ma),ga={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};ga.node;var _a=r(ga),va={name:`clapperboard`,size:24,node:[[`path`,{d:`m12.296 3.464 3.02 3.956`,key:`qash78`}],[`path`,{d:`M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z`,key:`1h7j8b`}],[`path`,{d:`M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`4lm6w1`}],[`path`,{d:`m6.18 5.276 3.1 3.899`,key:`zjj9t3`}]]};va.node;var ya=r(va),ba={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};ba.node;var xa=r(ba),Sa={name:`container`,size:24,node:[[`path`,{d:`M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z`,key:`1t2lqe`}],[`path`,{d:`M10 21.9V14L2.1 9.1`,key:`o7czzq`}],[`path`,{d:`m10 14 11.9-6.9`,key:`zm5e20`}],[`path`,{d:`M14 19.8v-8.1`,key:`159ecu`}],[`path`,{d:`M18 17.5V9.4`,key:`11uown`}]]};Sa.node;var Ca=r(Sa),wa={name:`cpu`,size:24,node:[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]};wa.node;var Ta=r(wa),Ea={name:`database-backup`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 12a9 3 0 0 0 5 2.69`,key:`1ui2ym`}],[`path`,{d:`M21 9.3V5`,key:`6k6cib`}],[`path`,{d:`M3 5v14a9 3 0 0 0 6.47 2.88`,key:`i62tjy`}],[`path`,{d:`M12 12v4h4`,key:`1bxaet`}],[`path`,{d:`M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16`,key:`1f4ei9`}]]};Ea.node;var Da=r(Ea),Oa={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Oa.node;var ka=r(Oa),Aa={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};Aa.node;var ja=r(Aa),Ma={name:`file-code-corner`,size:24,node:[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]],aliases:[`file-code-2`]};Ma.node;var Na=r(Ma),Pa={name:`gauge`,size:24,node:[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]};Pa.node;var Fa=r(Pa),Ia={name:`git-branch`,size:24,node:[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]};Ia.node;var La=r(Ia),Ra={name:`hard-drive`,size:24,node:[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]};Ra.node;var za=r(Ra),Ba={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};Ba.node;var Va=r(Ba),Ha={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};Ha.node;var Ua=r(Ha),Wa={name:`layout-dashboard`,size:24,node:[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]};Wa.node;var Ga=r(Wa),Ka={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};Ka.node;var qa=r(Ka),Ja={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};Ja.node;var Ya=r(Ja),Xa={name:`message-circle-question-mark`,size:24,node:[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`message-circle-question`]};Xa.node;var Za=r(Xa),Qa={name:`mic`,size:24,node:[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]};Qa.node;var $a=r(Qa),eo={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};eo.node;var to=r(eo),no={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};no.node;var ro=r(no),io={name:`rotate-ccw-clock`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]],aliases:[`history`]};io.node;var ao=r(io),oo={name:`route`,size:24,node:[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]};oo.node;var so=r(oo),co={name:`scroll-text`,size:24,node:[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]};co.node;var lo=r(co),uo={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};uo.node;var fo=r(uo),po={name:`server`,size:24,node:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]};po.node;var mo=r(po),ho={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};ho.node;var go=r(ho),_o={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};_o.node;var vo=r(_o),yo={name:`shuffle`,size:24,node:[[`path`,{d:`m18 14 4 4-4 4`,key:`10pe0f`}],[`path`,{d:`m18 2 4 4-4 4`,key:`pucp1d`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`,key:`1ailkh`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`,key:`km57vx`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`,key:`os18l9`}]]};yo.node;var bo=r(yo),xo={name:`smartphone`,size:24,node:[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]};xo.node;var So=r(xo),Co={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};Co.node;var wo=r(Co),To={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};To.node;var Eo=r(To),Do={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};Do.node;var Oo=r(Do);function ko(e){return e?.text?e.zeit?`${e.text} ${M(e.zeit)}`:e.text:null}var Ao={"ki-box":`KI-Box`,"proxmox-host":`Proxmox-Host`,container:`Container`,vm:`VM`};function jo(e){let t=e.id.match(/-(\d+)$/)?.[1],n=Ao[e.art]??e.art;return t?`${n} ${t}`:n}var Mo={"Proxmox-Host":`Proxmox`,"AdGuard Home":`AdGuard`,"PVE Scripts Local":`PVE Scripts`,"Proxmox Backup Server":`PBS`,"Arcane (Docker)":`Arcane`},No=e=>Mo[e.name]??e.name,Po=new Set([`app`,`arcane`]),Fo=e=>e.bausteine.find(e=>Po.has(e.id))??null,Io=e=>e.bausteine.find(e=>!Po.has(e.id))??null;function Lo(e){let t=e.flatMap(e=>e.bausteine.filter(e=>e.zustand===`neu`).map(t=>({ziel:e,baustein:t})));return[...t.filter(e=>e.baustein.aktion),...t.filter(e=>!e.baustein.aktion)]}function Ro(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);return t.some(e=>e.aktion)?0:t.length>0?1:e.bausteine.some(e=>e.zustand===`unbekannt`)?2:3}function zo(e){let t=e.rueckweg_art??Bo(e.rueckweg);return t===`snapshot`?`Snapshot vorher, bei Rot zurück`:t===`sicherung`?`Sicherung vorher, bei Rot zurück`:e.art===`proxmox-host`?`Kein Rückweg, Neustart getrennt`:`Kein automatischer Rückweg`}function Bo(e){let t=(e??``).toLowerCase();return t.startsWith(`snapshot vor`)?`snapshot`:t.startsWith(`sicherung`)?`sicherung`:`keiner`}var Vo=e=>Po.has(e.id),H=e=>e.replace(/^Image vom /,``);function U(e){return Vo(e)&&e.verfuegbar?e.verfuegbar:`${e.kurz||e.verfuegbar||`neu`}${Ho(e)}`}function Ho(e){return e.sicherheit?` · ${e.sicherheit} Sicherheit`:``}function Uo(e){let t=e.platte;return t&&t.gesamt>0?t.belegt/t.gesamt:null}function Wo(e,t){let n=No(e),r=Uo(e);if(e.erreichbar===!1)return{id:e.id,label:n,zustand:`fehler`,wert:`antwortet nicht`};if(r!==null&&r>=.9)return{id:e.id,label:n,zustand:`fehler`,wert:`Platte voll`};if(t)return{id:e.id,label:n,zustand:`info`,wert:`Update läuft`};if(r!==null&&r>=.8)return{id:e.id,label:n,zustand:`warn`,wert:`Platte ${Math.round(r*100)} %`};let i=e.bausteine.filter(e=>e.zustand===`neu`);if(i.length>0){let t=i.find(e=>Po.has(e.id))??i[0];return{id:e.id,label:n,zustand:`info`,wert:Po.has(t.id)&&t.verfuegbar?`→ ${t.verfuegbar}`:U(t)}}let a=Fo(e);return{id:e.id,label:n,zustand:`ok`,wert:a?.installiert?H(a.installiert):`aktuell`}}var Go=e=>`${e} Hinweis${e===1?``:`e`}`;function Ko(e,t,n,r){let i=t.filter(e=>e.zustand!==`stumm`);if(e.wartung?.laeuft)return{art:`info`,oben:`Wartung`,mitte:`Fenster läuft`,unten:`${e.wartung.fenster} · Meldung am Ende`,ziel:`updates`};let a=e.ziele.filter(e=>e.erreichbar===!1);if(a.length>0)return{art:`rot`,oben:`Störung`,mitte:a.length===1?`1 Gerät stumm`:`${a.length} Geräte stumm`,unten:a.map(No).join(`, `),ziel:`geraete`};if(i.some(e=>e.stufe===`rot`))return{art:`rot`,oben:`Störung`,mitte:Go(i.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(!e.ausfuehrer.verbunden)return{art:`gelb`,oben:`Achtung`,mitte:`Ausführer stumm`,unten:`Die Geräte zeigen den letzten Stand`,ziel:null};if(i.length>0)return{art:`gelb`,oben:`Achtung`,mitte:Go(i.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(n>0)return{art:`info`,oben:`Wartung`,mitte:`Update läuft`,unten:`Das Ergebnis kommt als Meldung`,ziel:`updates`};let o=Lo(e.ziele).filter(e=>e.baustein.aktion).length;return o>0?{art:`info`,oben:`Homelab`,mitte:`${o} Update${o===1?``:`s`}`,unten:`Drücken zum Ansehen`,ziel:`updates`}:{art:`ok`,oben:`Homelab`,mitte:`Alles aktuell`,unten:r?`Stand ${r}`:`Keine offenen Updates`,ziel:null}}function qo(e){return e?.match(/vom (\d{2}\.\d{2}\.\d{4})/)?.[1]??null}var Jo=[{id:`box`,name:`KI-Box`},{id:`homelab`,name:`Homelab`}],Yo=[{to:`/`,label:`Übersicht`,Icon:qa,ort:`uebersicht`},{to:`/handy`,label:`Handy-Ansicht`,Icon:So,ort:`uebersicht`},{to:`/box`,label:`Cockpit`,Icon:Fa,ort:`box`},{to:`/box/updates`,label:`Updates`,Icon:ro,ort:`box`,zaehlt:!0},{to:`/box/modelle`,label:`Modelle`,Icon:Ta,ort:`box`},{to:`/box/monitoring`,label:`Monitoring`,Icon:ta,ort:`box`},{to:`/box/dienste`,label:`Dienste und Protokolle`,Icon:lo,ort:`box`},{to:`/homelab`,label:`Cockpit`,Icon:Fa,ort:`homelab`},{to:`/homelab/updates`,label:`Updates`,Icon:ro,ort:`homelab`,zaehlt:!0},{to:`/homelab/snapshots`,label:`Snapshots`,Icon:ao,ort:`homelab`},{to:`/homelab/monitoring`,label:`Monitoring`,Icon:ta,ort:`homelab`},{to:`/homelab/protokoll`,label:`Protokoll`,Icon:lo,ort:`homelab`},{to:`/einstellungen`,label:`Einstellungen`,Icon:go,ort:`system`}],Xo={uebersicht:`Auf einen Blick`,box:`KI-Box`,homelab:`Homelab`,system:`Beide Instanzen`};function Zo(){let e=(0,z.c)(2),t=Ve({select:Qo}).replace(/\/+$/,``)||`/`,n;return e[0]===t?n=e[1]:(n=Yo.find(e=>e.to===t)??Yo[0],e[0]=t,e[1]=n),n}function Qo(e){return e.location.pathname}function $o(){let e=(0,z.c)(19),t=b(),n=v(),r=_e(),i=t.data?.rolle===`homelab`?`homelab`:`box`,a=r===`live`?`online`:r,o=n.data,s=o?o.eingerichtet?o.erreichbar?`online`:`getrennt`:`fehlt`:`verbinde`,c;e[0]!==a||e[1]!==s||e[2]!==i?(c=i===`box`?{box:a,homelab:s}:{box:s,homelab:a},e[0]=a,e[1]=s,e[2]=i,e[3]=c):c=e[3];let l=c,u=ce(),d=ue(l.homelab===`online`),f;e[4]===u.data?.ziele?f=e[5]:(f=u.data?.ziele??[],e[4]=u.data?.ziele,e[5]=f);let p;e[6]===f?p=e[7]:(p=f.reduce(ts,0),e[6]=f,e[7]=p);let m=p,h;e[8]===d.data?.ziele?h=e[9]:(h=Lo(d.data?.ziele??[]).filter(es),e[8]=d.data?.ziele,e[9]=h);let g=h.length,_;e[10]!==m||e[11]!==l.box?(_={verbindung:l.box,updates:m},e[10]=m,e[11]=l.box,e[12]=_):_=e[12];let y;e[13]!==g||e[14]!==l.homelab?(y={verbindung:l.homelab,updates:g},e[13]=g,e[14]=l.homelab,e[15]=y):y=e[15];let x;return e[16]!==_||e[17]!==y?(x={box:_,homelab:y},e[16]=_,e[17]=y,e[18]=x):x=e[18],x}function es(e){return e.baustein.aktion}function ts(e,t){return e+t.bausteine.filter(ns).length}function ns(e){return e.zustand===`neu`&&e.aktion}var rs={erfolg:`border-gruen-rand bg-gruen-grund text-gruen-text`,fehler:`border-rot-rand bg-rot-grund text-rot-text`,info:`border-cyan-rand bg-cyan-grund text-cyan-text`};function is(){let e=(0,z.c)(4),t=x(),n;e[0]===t?n=e[1]:(n=t.map(as),e[0]=t,e[1]=n);let r;return e[2]===n?r=e[3]:(r=(0,R.jsx)(`div`,{"aria-live":`polite`,className:`pointer-events-none fixed right-4 bottom-24 left-4 z-50 flex flex-col items-end gap-2 md:left-auto md:w-[420px] lg:bottom-6`,children:n}),e[2]=n,e[3]=r),r}function as(e){return(0,R.jsxs)(`div`,{role:e.art===`fehler`?`alert`:`status`,className:s(`pointer-events-auto flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-[15px] shadow-lg`,rs[e.art]),children:[(0,R.jsx)(`span`,{className:`min-w-0 flex-1`,children:e.text}),(0,R.jsx)(`button`,{type:`button`,onClick:()=>ee(e.id),"aria-label":`Meldung schließen`,className:`-m-2 p-2 opacity-70 hover:opacity-100`,children:(0,R.jsx)(l,{className:`size-4`})})]},e.id)}var os={online:{punkt:`bg-gruen shadow-[0_0_8px_var(--gruen)]`,text:`online`},verbinde:{punkt:`bg-bernstein`,text:`verbinde`},getrennt:{punkt:`bg-rot shadow-[0_0_8px_var(--rot)]`,text:`getrennt`},fehlt:{punkt:`bg-text-3`,text:`nicht eingerichtet`}},ss={uebersicht:`data-[status=active]:from-bernstein/[0.16] before:bg-bernstein before:shadow-[0_0_12px_var(--bernstein)] data-[status=active]:[&>svg]:text-bernstein`,box:`data-[status=active]:from-box/[0.2] before:bg-box before:shadow-[0_0_12px_var(--box)] data-[status=active]:[&>svg]:text-box`,homelab:`data-[status=active]:from-lab/[0.2] before:bg-lab before:shadow-[0_0_12px_var(--lab)] data-[status=active]:[&>svg]:text-lab`,system:`data-[status=active]:from-white/[0.08] before:bg-text-2 data-[status=active]:[&>svg]:text-foreground`},cs={box:{text:`text-box-text`,kachel:`from-box/30 to-box/[0.05] ring-box/35 text-box`,Icon:da},homelab:{text:`text-lab-text`,kachel:`from-lab/30 to-lab/[0.05] ring-lab/35 text-lab`,Icon:mo}},ls=`group relative flex h-10 items-center gap-3 rounded-xl pr-3 pl-3.5 text-[14.5px] text-text-2 transition-colors hover:bg-white/[0.045] hover:text-foreground bg-gradient-to-r to-transparent data-[status=active]:text-foreground before:absolute before:top-2.5 before:bottom-2.5 before:left-0 before:w-[3px] before:rounded-full before:opacity-0 before:transition-opacity data-[status=active]:before:opacity-100`;function us(){let e=(0,z.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsxs)(`span`,{className:`relative shrink-0`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-1 rounded-xl bg-bernstein/35 blur-xl`}),(0,R.jsx)(`img`,{src:`/favicon.svg`,alt:``,width:40,height:40,className:`relative size-10`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,R.jsxs)(`div`,{className:`flex items-center gap-3 px-1.5`,children:[t,(0,R.jsxs)(`span`,{className:`flex flex-col leading-none`,children:[(0,R.jsx)(`span`,{className:`text-[19px] font-semibold tracking-[0.01em]`,children:`Homelab`}),(0,R.jsx)(`span`,{className:`etikett mt-1.5 text-[10.5px] tracking-[0.32em] text-text-3`,children:`Orchestrator`})]})]}),e[1]=n):n=e[1],n}function ds(e){let t=(0,z.c)(16),{s:n,zahl:r,onGewaehlt:i}=e,a=n.to,o=ss[n.ort],c;t[0]===o?c=t[1]:(c=s(ls,o),t[0]=o,t[1]=c);let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l={exact:!0},t[2]=l):l=t[2];let u;t[3]===n.Icon?u=t[4]:(u=(0,R.jsx)(n.Icon,{className:`size-[18px] shrink-0 text-text-3 transition-colors group-hover:text-text-2`,"aria-hidden":!0}),t[3]=n.Icon,t[4]=u);let d;t[5]===n.label?d=t[6]:(d=(0,R.jsx)(`span`,{className:`flex-1`,children:n.label}),t[5]=n.label,t[6]=d);let f;t[7]===r?f=t[8]:(f=!!r&&(0,R.jsxs)(`span`,{className:`ziffern rounded-full bg-cyan/12 px-2 text-[11.5px] leading-5 font-medium text-cyan-text ring-1 ring-cyan/30 ring-inset`,children:[r,(0,R.jsxs)(`span`,{className:`sr-only`,children:[` `,r===1?`Update`:`Updates`,` bereit`]})]}),t[7]=r,t[8]=f);let p;return t[9]!==i||t[10]!==n.to||t[11]!==c||t[12]!==u||t[13]!==d||t[14]!==f?(p=(0,R.jsxs)(wi,{to:a,onClick:i,className:c,activeOptions:l,children:[u,d,f]}),t[9]=i,t[10]=n.to,t[11]=c,t[12]=u,t[13]=d,t[14]=f,t[15]=p):p=t[15],p}function fs(e){let t=(0,z.c)(20),{onGewaehlt:n}=e,r=$o(),i=b().data?.rolle!==`homelab`,a=ps,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=a(`/`),t[0]=o):o=t[0];let c;t[1]===n?c=t[2]:(c=(0,R.jsx)(ds,{s:o,onGewaehlt:n}),t[1]=n,t[2]=c);let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=a(`/handy`),t[3]=l):l=t[3];let u;t[4]===n?u=t[5]:(u=(0,R.jsx)(`div`,{className:`lg:hidden`,children:(0,R.jsx)(ds,{s:l,onGewaehlt:n})}),t[4]=n,t[5]=u);let d;t[6]!==c||t[7]!==u?(d=(0,R.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[c,u]}),t[6]=c,t[7]=u,t[8]=d):d=t[8];let f;t[9]!==i||t[10]!==n||t[11]!==r?(f=Jo.map(e=>{let t=os[r[e.id].verbindung],a=cs[e.id];return(0,R.jsxs)(`section`,{"aria-label":e.name,className:`flex flex-col gap-0.5`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pr-2 pb-2 pl-1`,children:[(0,R.jsxs)(`h2`,{className:s(`etikett flex items-center gap-2.5 text-[12px] tracking-[0.16em]`,a.text),children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`flex size-6 items-center justify-center rounded-lg bg-gradient-to-br ring-1 ring-inset`,a.kachel),children:(0,R.jsx)(a.Icon,{className:`size-3.5`,strokeWidth:2})}),e.name]}),(0,R.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[12px] text-text-3`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-1.5 rounded-full`,t.punkt)}),t.text]})]}),Yo.filter(t=>t.ort===e.id).map(t=>(0,R.jsx)(ds,{s:t,zahl:t.zaehlt?r[e.id].updates:0,onGewaehlt:n},t.to)),e.id===`box`&&i&&(0,R.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:ls,children:[(0,R.jsx)(ja,{className:`size-[18px] shrink-0 text-text-3`,"aria-hidden":!0}),`Hermes-Dashboard`]})]},e.id)}),t[9]=i,t[10]=n,t[11]=r,t[12]=f):f=t[12];let p;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(p=a(`/einstellungen`),t[13]=p):p=t[13];let m;t[14]===n?m=t[15]:(m=(0,R.jsx)(`div`,{className:`mt-auto border-t border-white/[0.06] pt-4`,children:(0,R.jsx)(ds,{s:p,onGewaehlt:n})}),t[14]=n,t[15]=m);let h;return t[16]!==d||t[17]!==f||t[18]!==m?(h=(0,R.jsxs)(`nav`,{"aria-label":`Hauptnavigation`,className:`flex flex-1 flex-col gap-7`,children:[d,f,m]}),t[16]=d,t[17]=f,t[18]=m,t[19]=h):h=t[19],h}function ps(e){return Yo.find(t=>t.to===e)}var ms=`modulepreload`,hs=function(e){return`/`+e},gs={},_s=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=hs(t,n),t=s(t),t in gs)return;gs[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:ms,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},vs=(0,I.lazy)(()=>_s(()=>import(`./MenueSchublade-DGFi9TOj.js`).then(e=>({default:e.MenueSchublade})),__vite__mapDeps([0,1,2,3,4]))),ys=(0,I.lazy)(()=>_s(()=>import(`./Befehlssuche-B-_a3tYu.js`).then(e=>({default:e.Befehlssuche})),__vite__mapDeps([5,1,6]))),bs=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),xs=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:`Europe/Berlin`}),Ss=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`});function Cs(){let e=(0,z.c)(21),[t,n]=(0,I.useState)(ws),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=window.setInterval(()=>n(new Date),2e4);return()=>window.clearInterval(e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,I.useEffect)(r,i);let a;e[2]===t?a=e[3]:(a=bs.format(t),e[2]=t,e[3]=a);let o;e[4]===a?o=e[5]:(o=(0,R.jsx)(`span`,{className:`ziffern text-[20px] leading-none font-medium sm:text-[22px]`,children:a}),e[4]=a,e[5]=o);let s;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,R.jsx)(`span`,{"aria-hidden":!0,className:`hidden h-7 w-px bg-white/10 sm:block`}),e[6]=s):s=e[6];let c;e[7]===t?c=e[8]:(c=xs.format(t).replace(`.`,``),e[7]=t,e[8]=c);let l;e[9]===c?l=e[10]:(l=(0,R.jsx)(`span`,{children:c}),e[9]=c,e[10]=l);let u;e[11]===t?u=e[12]:(u=Ss.format(t),e[11]=t,e[12]=u);let d;e[13]===u?d=e[14]:(d=(0,R.jsx)(`span`,{className:`ziffern tracking-normal`,children:u}),e[13]=u,e[14]=d);let f;e[15]!==l||e[16]!==d?(f=(0,R.jsxs)(`span`,{className:`etikett hidden flex-col text-[10.5px] leading-[1.35] text-text-3 sm:flex`,children:[l,d]}),e[15]=l,e[16]=d,e[17]=f):f=e[17];let p;return e[18]!==o||e[19]!==f?(p=(0,R.jsxs)(`div`,{className:`flaeche flex items-center gap-3 rounded-2xl px-3 py-2 sm:px-4`,children:[o,s,f]}),e[18]=o,e[19]=f,e[20]=p):p=e[20],p}function ws(){return new Date}function Ts(){let e=(0,z.c)(14),t=_e(),n=t===`live`,r=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,i=n?`text-text-3`:`text-bernstein`,a;e[0]===i?a=e[1]:(a=s(`etikett flex items-center gap-1.5 text-[11px] tracking-[0.12em]`,i),e[0]=i,e[1]=a);let o=n?`bg-gruen shadow-[0_0_8px_var(--gruen)]`:`bg-bernstein`,c;e[2]===o?c=e[3]:(c=s(`size-2 rounded-full`,o),e[2]=o,e[3]=c);let l;e[4]===c?l=e[5]:(l=(0,R.jsx)(`span`,{"aria-hidden":!0,className:c}),e[4]=c,e[5]=l);let u=n?`sr-only`:void 0,d=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,f;e[6]!==u||e[7]!==d?(f=(0,R.jsx)(`span`,{className:u,children:d}),e[6]=u,e[7]=d,e[8]=f):f=e[8];let p;return e[9]!==r||e[10]!==a||e[11]!==l||e[12]!==f?(p=(0,R.jsxs)(`span`,{role:`status`,title:r,className:a,children:[l,f]}),e[9]=r,e[10]=a,e[11]=l,e[12]=f,e[13]=p):p=e[13],p}var Es={uebersicht:`text-bernstein`,box:`text-box-text`,homelab:`text-lab-text`,system:`text-text-3`};function Ds(e){let t=(0,z.c)(3),n,r;t[0]===e?(n=t[1],r=t[2]):(n=()=>{let t=t=>{(t.ctrlKey||t.metaKey)&&!t.altKey&&t.key.toLowerCase()===`k`&&(t.preventDefault(),e())};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},r=[e],t[0]=e,t[1]=n,t[2]=r),(0,I.useEffect)(n,r)}function Os(){let e=(0,z.c)(33);y();let[t,n]=(0,I.useState)(!1),[r,i]=(0,I.useState)(!1),a=Zo(),o;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>i(!0),e[0]=o):o=e[0],Ds(o);let c;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsxs)(`aside`,{className:`sticky top-0 hidden h-dvh flex-col gap-9 overflow-y-auto border-r border-white/[0.06] bg-[rgb(8_11_17/0.72)] px-4 py-7 backdrop-blur-xl lg:flex`,children:[(0,R.jsx)(us,{}),(0,R.jsx)(fs,{})]}),e[1]=c):c=e[1];let l;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>n(!0),e[2]=l):l=e[2];let u;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,R.jsx)(`button`,{type:`button`,onClick:l,className:`-ml-2 flex size-11 shrink-0 items-center justify-center rounded-lg text-text-2 hover:bg-white/[0.06] hover:text-foreground lg:hidden`,"aria-label":`Menü öffnen`,children:(0,R.jsx)(Ya,{className:`size-6`})}),e[3]=u):u=e[3];let d=Es[a.ort],f;e[4]===d?f=e[5]:(f=s(`etikett truncate text-[11.5px] tracking-[0.22em] whitespace-nowrap`,d),e[4]=d,e[5]=f);let p=Xo[a.ort],m;e[6]!==f||e[7]!==p?(m=(0,R.jsx)(`span`,{className:f,children:p}),e[6]=f,e[7]=p,e[8]=m):m=e[8];let h;e[9]===a.label?h=e[10]:(h=(0,R.jsx)(`h1`,{className:`truncate text-[26px] leading-none font-semibold tracking-[-0.01em] md:text-[32px]`,children:a.label}),e[9]=a.label,e[10]=h);let g;e[11]!==m||e[12]!==h?(g=(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[u,(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5`,children:[m,h]})]}),e[11]=m,e[12]=h,e[13]=g):g=e[13];let _;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,R.jsx)(`span`,{className:`lg:hidden`,children:(0,R.jsx)(Ts,{})}),e[14]=_):_=e[14];let v;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(v=()=>i(!0),e[15]=v):v=e[15];let b;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,R.jsxs)(`div`,{className:`flex items-center gap-3 sm:gap-4`,children:[_,(0,R.jsxs)(`button`,{type:`button`,onClick:v,className:`flex size-11 shrink-0 items-center justify-center gap-2 rounded-xl text-text-2 hover:bg-white/[0.06] hover:text-foreground md:w-auto md:px-3`,"aria-label":`Suchen (Strg+K)`,title:`Suchen (Strg+K)`,children:[(0,R.jsx)(fo,{className:`size-5`,"aria-hidden":!0}),(0,R.jsx)(`kbd`,{className:`hidden rounded-md border border-white/10 px-1.5 py-0.5 font-sans text-[11px] text-text-3 md:block`,children:`Strg K`})]}),(0,R.jsx)(Cs,{})]}),e[16]=b):b=e[16];let x;e[17]===g?x=e[18]:(x=(0,R.jsxs)(`header`,{className:`flex items-center justify-between gap-4 md:pb-1`,children:[g,b]}),e[17]=g,e[18]=x);let S;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,R.jsx)(`main`,{className:`flex min-w-0 flex-col gap-5 md:gap-6`,children:(0,R.jsx)(Vi,{})}),e[19]=S):S=e[19];let C;e[20]===x?C=e[21]:(C=(0,R.jsxs)(`div`,{className:`mx-auto flex w-full max-w-[1360px] min-w-0 flex-col gap-5 px-4 pt-4 pb-12 sm:px-6 md:gap-6 md:px-10 md:pt-8`,children:[x,S]}),e[20]=x,e[21]=C);let w;e[22]===t?w=e[23]:(w=t&&(0,R.jsx)(vs,{onSchliessen:()=>n(!1)}),e[22]=t,e[23]=w);let T;e[24]===r?T=e[25]:(T=r&&(0,R.jsx)(ys,{onSchliessen:()=>i(!1)}),e[24]=r,e[25]=T);let E;e[26]!==w||e[27]!==T?(E=(0,R.jsxs)(I.Suspense,{fallback:null,children:[w,T]}),e[26]=w,e[27]=T,e[28]=E):E=e[28];let D;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,R.jsx)(is,{}),e[29]=D):D=e[29];let O;return e[30]!==C||e[31]!==E?(O=(0,R.jsxs)(`div`,{className:`min-h-dvh lg:grid lg:grid-cols-[272px_minmax(0,1fr)]`,children:[c,C,E,D]}),e[30]=C,e[31]=E,e[32]=O):O=e[32],O}var ks={gruen:`bg-gruen/10 text-gruen ring-gruen/30`,bernstein:`bg-bernstein/10 text-bernstein ring-bernstein/35`,cyan:`bg-cyan/10 text-cyan-text ring-cyan/30`,rot:`bg-rot/12 text-rot-text ring-rot/40`,grau:`bg-white/[0.04] text-text-2 ring-white/12`};function As(e){let t=(0,z.c)(6),{art:n,children:r}=e,i=ks[n===void 0?`grau`:n],a;t[0]===i?a=t[1]:(a=s(`etikett inline-flex h-6 items-center gap-1.5 rounded-full px-2.5 text-[11px] tracking-[0.08em] whitespace-nowrap ring-1 ring-inset`,i),t[0]=i,t[1]=a);let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 shrink-0 rounded-full bg-current opacity-90`}),t[2]=o):o=t[2];let c;return t[3]!==r||t[4]!==a?(c=(0,R.jsxs)(`span`,{className:a,children:[o,r]}),t[3]=r,t[4]=a,t[5]=c):c=t[5],c}function js(e){let t=(0,z.c)(6),{fehler:n,text:r}=e,i=n?`alert`:`status`,a=n?`border border-rot-rand bg-rot-grund text-rot-text`:`flaeche text-text-2`,o;t[0]===a?o=t[1]:(o=s(`rounded-2xl px-5 py-8 text-center text-[15px]`,a),t[0]=a,t[1]=o);let c;return t[2]!==i||t[3]!==o||t[4]!==r?(c=(0,R.jsx)(`div`,{role:i,className:o,children:r}),t[2]=i,t[3]=o,t[4]=r,t[5]=c):c=t[5],c}var Ms=new Set(`actual-budget.adguard-home.affine.alpine-linux.ansible.appflowy.apprise.arcane.audiobookshelf.authelia.authentik.baserow.bazarr.beszel.bitwarden.bookstack.borgmatic.caddy.calibre-web.changedetection.checkmk.claude.cloudflare.cockpit.comfyui.crafty-controller.crowdsec.debian.deluge.docker.dockge.docmost.dozzle.draw-io.duplicati.elasticsearch.element.emby.esphome.excalidraw.firefly-iii.flatnotes.forgejo.freshrss.frigate.gatus.gitea.github.gitlab.glance.glances.go2rtc.gotify.grafana.grocy.harbor.headscale.healthchecks.hedgedoc.heimdall.hermes-agent.homarr.home-assistant.homebridge.homepage.immich.immich-kiosk.influxdb.it-tools.jellyfin.jellyseerr.jenkins.jitsi-meet.joplin.kavita.keycloak.komga.komodo.kopia.kubernetes.librenms.librespeed.lidarr.linkding.linux.linux-containers-lxc.linuxserver-io.llama-cpp.logseq.loki.mariadb.matomo.matrix.mattermost.mealie.minecraft.miniflux.minio.mongodb.mosquitto.n8n.navidrome.netbird.netdata.nextcloud.nginx.nginx-proxy-manager.nocodb.node-red.ntfy.nzbget.obsidian.ollama.onlyoffice.open-webui.openai.openmediavault.openwrt.opnsense.outline.overseerr.paperless-ngx.penpot.pfsense.photoprism.pi-hole.pingvin-share.piwigo.planka.plausible.plex.portainer.postgresql.privatebin.prometheus.prowlarr.proxmox.proxmox-helper-scripts.pterodactyl.qbittorrent.qnap.rabbitmq.radarr.rancher.rclone.readarr.redis.rocket-chat.rustdesk.sabnzbd.scrutiny.scrypted.seafile.searxng.semaphore.sonarr.speedtest-tracker.stirling-pdf.syncthing.synology.tailscale.tautulli.telegram.traefik.transmission.ubuntu.umami.unraid.uptime-kuma.vaultwarden.vikunja.wallabag.watchtower.webmin.wekan.wiki-js.wireguard.woodpecker-ci.wordpress.zabbix.zigbee2mqtt`.split(`.`)),Ns={ok:`bg-gruen shadow-[0_0_8px_var(--gruen)]`,warn:`bg-bernstein shadow-[0_0_8px_var(--bernstein)]`,rot:`bg-rot shadow-[0_0_8px_var(--rot)]`,info:`bg-cyan shadow-[0_0_8px_var(--cyan)]`,aus:`bg-text-3`},Ps=[[/adguard|pi-?hole/i,vo],[/npm|nginx proxy/i,so,`nginx-proxy-manager`],[/traefik|caddy/i,so],[/netbird|wireguard|tailscale/i,aa],[/gitea|forgejo|gitlab/i,La],[/backup server|\bpbs\b/i,Da,`proxmox`],[/arcane|docker|portainer|dockge|komodo/i,Ca],[/pve scripts|helper.?scripts|community.?scripts/i,Na,`proxmox-helper-scripts`],[/scripts/i,Na],[/home ?assistant/i,Va],[/jellyfin|plex|emby/i,ya],[/\bnas\b|qnap|truenas|synology/i,za],[/postgres/i,ka,`postgresql`],[/mariadb|mysql|mongo|redis|valkey/i,ka]];function Fs(e){return e.toLowerCase().replace(/\(.*?\)/g,``).trim().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)}function Is(e,t){if(t&&Ms.has(t))return t;let n=Fs(e);if(Ms.has(n))return n;let r=n.split(`-`)[0];return r.length>2&&Ms.has(r)?r:void 0}function Ls(e){if(e.art===`ki-box`)return{Icon:da,bereich:`box`};if(e.art===`proxmox-host`)return{Icon:mo,bereich:`homelab`,logo:Is(`proxmox`)};let t=Ps.find(([t])=>t.test(e.name));return{Icon:t?.[1]??(e.art===`vm`?to:la),bereich:`homelab`,logo:Is(e.name,t?.[2])}}var Rs={os:[Ua,`ubuntu`],engine:[Oo,`llama-cpp`],motor:[Oo,`llama-cpp`],swap:[bo],hermes:[sa,`hermes-agent`],hirn:[da],coder:[xa],jobs:[Eo],sicherung:[Da],platte:[za],updates:[ro]},zs=[[/^hermes/,sa,`hermes-agent`],[/^llama-swap/,bo],[/^mc2-gateway/,so],[/^mc2-steward/,vo],[/^mission-control/,Ga],[/^voice/,$a],[/^lucy-stimme/,V]];function Bs(e){let t=zs.find(([t])=>t.test(e)),n=t?.[2];return{Icon:t?.[1]??la,bereich:`box`,logo:n&&Ms.has(n)?n:void 0}}function Vs(e){let[t,n]=Rs[e]??[la];return{Icon:t,bereich:`box`,logo:n&&Ms.has(n)?n:void 0}}var Hs={box:`from-box/30 to-box/[0.05] ring-box/35 text-box-text`,homelab:`from-lab/30 to-lab/[0.05] ring-lab/35 text-lab-text`},Us={box:`from-white/[0.1] to-white/[0.03] ring-box/30`,homelab:`from-white/[0.1] to-white/[0.03] ring-lab/30`},Ws={box:`shadow-[0_0_28px_-6px_var(--box)]`,homelab:`shadow-[0_0_28px_-6px_var(--lab)]`},Gs={sm:{kachel:`size-8 rounded-[10px]`,icon:`size-4`,logo:`size-5`,punkt:`size-2.5`},md:{kachel:`size-10 rounded-xl`,icon:`size-5`,logo:`size-6`,punkt:`size-2.5`},lg:{kachel:`size-12 rounded-2xl`,icon:`size-6`,logo:`size-7`,punkt:`size-3`}};function Ks(e){let t=(0,z.c)(17),{bild:n,groesse:r,punkt:i,leuchtet:a,className:o}=e,c=r===void 0?`md`:r,l=a!==void 0&&a,u=Gs[c],d=n.logo?Us[n.bereich]:Hs[n.bereich],f=l&&Ws[n.bereich],p;t[0]!==o||t[1]!==u.kachel||t[2]!==d||t[3]!==f?(p=s(`relative inline-flex shrink-0 items-center justify-center bg-gradient-to-br ring-1 ring-inset`,d,u.kachel,f,o),t[0]=o,t[1]=u.kachel,t[2]=d,t[3]=f,t[4]=p):p=t[4];let m;t[5]!==n.Icon||t[6]!==n.logo||t[7]!==u.icon||t[8]!==u.logo?(m=n.logo?(0,R.jsx)(`img`,{src:`/logos/${n.logo}.svg`,alt:``,className:s(`object-contain`,u.logo),loading:`lazy`,draggable:!1}):(0,R.jsx)(n.Icon,{className:u.icon,strokeWidth:1.75}),t[5]=n.Icon,t[6]=n.logo,t[7]=u.icon,t[8]=u.logo,t[9]=m):m=t[9];let h;t[10]!==u.punkt||t[11]!==i?(h=i&&(0,R.jsx)(`span`,{className:s(`absolute -right-0.5 -bottom-0.5 rounded-full ring-2 ring-[#0b0f16]`,u.punkt,Ns[i])}),t[10]=u.punkt,t[11]=i,t[12]=h):h=t[12];let g;return t[13]!==p||t[14]!==m||t[15]!==h?(g=(0,R.jsxs)(`span`,{"aria-hidden":!0,className:p,children:[m,h]}),t[13]=p,t[14]=m,t[15]=h,t[16]=g):g=t[16],g}var qs=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Js=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0});function Ys(e){return e<1e3?`${Js.format(e)} B/s`:e<1e6?`${qs.format(e/1e3)} KB/s`:e<1e9?`${qs.format(e/1e6)} MB/s`:`${qs.format(e/1e9)} GB/s`}function Xs(e,t){return e==null||Number.isNaN(e)?`–`:t===`prozent`?`${Js.format(e)} %`:t===`grad`?`${Js.format(e)} °C`:t===`bytes_s`?Ys(e):Js.format(e)}function Zs(e){if(!e)return null;for(let t=e.length-1;t>=0;t--){let n=e[t][1];if(n!==null)return n}return null}function Qs(e,t){if(t===`prozent`)return 100;let n=0;for(let t of e)for(let[,e]of t??[])e!==null&&e>n&&(n=e);if(t===`grad`)return Math.max(60,Math.ceil((n+5)/10)*10);if(n<=0)return 1;let r=10**Math.floor(Math.log10(n));for(let e of[1,2,2.5,5,10])if(e*r>=n)return e*r;return 10*r}function $s(e,t,n){return e===null?`ruhig`:e>=n?`rot`:e>=t?`gelb`:`ruhig`}var ec=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),tc=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function nc(e,t){let n=new Date(e*1e3);return(t?tc:ec).format(n).replace(`,`,``)}function rc(e){if(!e||e<0)return`–`;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t} T ${n} h`:n>0?`${n} h ${r} min`:`${r} min`}function ic(e){return e<1?`in weniger als einem Tag`:e<1.5?`in etwa einem Tag`:e<21?`in etwa ${Math.round(e)} Tagen`:e<90?`in etwa ${Math.round(e/7)} Wochen`:e<365?`in etwa ${Math.round(e/30)} Monaten`:`frühestens in einem Jahr`}function ac(e){return e?.tage==null?`ok`:e.tage<3?`rot`:e.tage<14?`gelb`:`ok`}function oc(e,t=1/0){return e?.tage==null||e.tage>=t?null:`voll ${ic(e.tage)}`}function sc(e){return e?.rate==null?null:`+${e.rate.toFixed(1).replace(`.`,`,`)} % am Tag`}var cc={ok:`text-text-3`,gelb:`text-bernstein`,rot:`text-rot-text`};function lc(e){let t=oc(e,60);return t?{text:t,stufe:ac(e)}:null}function uc(e,t,n){let r=``,i=!1;for(let[a,o]of e){if(o===null){i=!1;continue}r+=`${i?`L`:`M`}${t(a).toFixed(1)},${n(o).toFixed(1)}`,i=!0}return r}function dc(e,t,n,r){let i=``,a=[],o=()=>{a.length>1&&(i+=`M${a[0][0].toFixed(1)},${r}`+a.map(([e,t])=>`L${e.toFixed(1)},${t.toFixed(1)}`).join(``)+`L${a[a.length-1][0].toFixed(1)},${r}Z`),a=[]};for(let[r,i]of e)i===null?o():a.push([t(r),n(i)]);return o(),i}function fc(e){if(!Number.isFinite(e)||e<=0)return[0,1];for(let t=0;;t++)for(let n of[1,2,2.5,5]){let r=n*10**t;if(!Number.isInteger(r))continue;let i=Math.ceil(e/r);if(i<=4)return Array.from({length:i+1},(e,t)=>t*r)}}var pc=e=>Number(e.toFixed(1));function mc(e,t,n,r,i=4){let a=Math.max(0,Math.min(i,n/2,r));return`M${pc(e)},${pc(t+r)}V${pc(t+a)}Q${pc(e)},${pc(t)} ${pc(e+a)},${pc(t)}H${pc(e+n-a)}Q${pc(e+n)},${pc(t)} ${pc(e+n)},${pc(t+a)}V${pc(t+r)}Z`}function hc(e,t,n=2){let r=[],i=0;e.forEach((e,a)=>{if(!(e>0))return;let o=t(i);i+=e;let s=t(i);r.push({index:a,y:s,hoehe:Math.max(0,o-s-(r.length?n:0)),oben:!1})});let a=r.filter(e=>e.hoehe>=1).at(-1);return a&&(a.oben=!0),r}function gc(e){let t=(0,z.c)(26),{punkte:n,max:r,farbe:i,hoehe:a,beschriftung:o}=e,s=i===void 0?`var(--reihe-1)`:i,c=a===void 0?36:a,l=n[0]?.[0]??0,u=n[n.length-1]?.[0]??1,d;t[0]!==l||t[1]!==u?(d=e=>u>l?(e-l)/(u-l)*100:0,t[0]=l,t[1]=u,t[2]=d):d=t[2];let f=d,p;t[3]!==c||t[4]!==r?(p=e=>c-2-Math.min(e,r)/(r||1)*(c-4),t[3]=c,t[4]=r,t[5]=p):p=t[5];let m=p,h;t[6]===n?h=t[7]:(h=n.some(_c),t[6]=n,t[7]=h);let g=h,_=(0,I.useId)(),v;if(t[8]!==_){let e;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=/[^a-zA-Z0-9_-]/g,t[10]=e):e=t[10],v=_.replace(e,``),t[8]=_,t[9]=v}else v=t[9];let y=`sl${v}`,b=`0 0 100 ${c}`,x;t[11]===c?x=t[12]:(x={height:c},t[11]=c,t[12]=x);let S;t[13]!==s||t[14]!==g||t[15]!==c||t[16]!==n||t[17]!==y||t[18]!==f||t[19]!==m?(S=g&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`defs`,{children:(0,R.jsxs)(`linearGradient`,{id:y,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,R.jsx)(`stop`,{offset:`0`,stopColor:s,stopOpacity:.3}),(0,R.jsx)(`stop`,{offset:`1`,stopColor:s,stopOpacity:0})]})}),(0,R.jsx)(`path`,{d:dc(n,f,m,c),fill:`url(#${y})`}),(0,R.jsx)(`path`,{d:uc(n,f,m),fill:`none`,stroke:s,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,vectorEffect:`non-scaling-stroke`})]}),t[13]=s,t[14]=g,t[15]=c,t[16]=n,t[17]=y,t[18]=f,t[19]=m,t[20]=S):S=t[20];let C;return t[21]!==o||t[22]!==S||t[23]!==b||t[24]!==x?(C=(0,R.jsx)(`svg`,{role:`img`,"aria-label":o,viewBox:b,preserveAspectRatio:`none`,className:`block w-full`,style:x,children:S}),t[21]=o,t[22]=S,t[23]=b,t[24]=x,t[25]=C):C=t[25],C}function _c(e){let[,t]=e;return t!==null}var vc={ruhig:{wert:`text-foreground`,marke:null},gelb:{wert:`text-bernstein`,marke:`hoch`},rot:{wert:`text-rot-text`,marke:`kritisch`}},yc=48,bc=37,xc=2*Math.PI*bc,Sc=xc*.75;function Cc(e,t){let n=(135+270*e)*Math.PI/180;return{x:yc+t*Math.cos(n),y:yc+t*Math.sin(n)}}function wc(e){let t=(0,z.c)(49),{label:n,wert:r,einheit:i,punkte:a,zustand:o,bereich:c,grenzen:l,max:u,zeitraumText:d,i:f,hinweis:p}=e,m=o===void 0?`ruhig`:o,h=u===void 0?100:u,g=f===void 0?0:f,_=vc[m],v=m===`rot`?`var(--rot)`:m===`gelb`?`var(--bernstein)`:c===`box`?`var(--box)`:`var(--lab)`,y=r==null?0:Math.min(Math.max(r/h,0),1),b;t[0]!==i||t[1]!==r?(b=Xs(r,i).split(` `),t[0]=i,t[1]=r,t[2]=b):b=t[2];let[x,S]=b,C;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,R.jsx)(`circle`,{cx:yc,cy:yc,r:bc,fill:`none`,stroke:`rgb(255 255 255 / 0.07)`,strokeWidth:7,strokeLinecap:`round`,strokeDasharray:`${Sc} ${xc}`,transform:`rotate(135 ${yc} ${yc})`}),t[3]=C):C=t[3];let w;if(t[4]!==l||t[5]!==h){let e;t[7]===h?e=t[8]:(e=(e,t)=>{let n=Cc(Math.min(e/h,1),43),r=Cc(Math.min(e/h,1),46.5);return(0,R.jsx)(`line`,{x1:n.x,y1:n.y,x2:r.x,y2:r.y,strokeWidth:1.5,strokeLinecap:`round`,stroke:t===0?`var(--bernstein)`:`var(--rot)`,opacity:.55},e)},t[7]=h,t[8]=e),w=l.map(e),t[4]=l,t[5]=h,t[6]=w}else w=t[6];let T;t[9]!==y||t[10]!==v||t[11]!==g||t[12]!==r?(T=r!=null&&y>0&&(0,R.jsx)(`circle`,{cx:yc,cy:yc,r:bc,fill:`none`,stroke:v,strokeWidth:7,strokeLinecap:`round`,strokeDasharray:`${Math.max(Sc*y,.5)} ${xc}`,transform:`rotate(135 ${yc} ${yc})`,className:`ring-fuellt transition-[stroke-dasharray] duration-700`,style:{"--i":g,filter:`drop-shadow(0 0 5px color-mix(in srgb, ${v} 65%, transparent))`}}),t[9]=y,t[10]=v,t[11]=g,t[12]=r,t[13]=T):T=t[13];let E;t[14]!==w||t[15]!==T?(E=(0,R.jsxs)(`svg`,{viewBox:`0 0 96 96`,className:`size-full`,"aria-hidden":!0,children:[C,w,T]}),t[14]=w,t[15]=T,t[16]=E):E=t[16];let D;t[17]===_.wert?D=t[18]:(D=s(`font-anzeige text-[26px] leading-none font-semibold tabular-nums`,_.wert),t[17]=_.wert,t[18]=D);let O;t[19]!==D||t[20]!==x?(O=(0,R.jsx)(`span`,{className:D,children:x}),t[19]=D,t[20]=x,t[21]=O):O=t[21];let k;t[22]===S?k=t[23]:(k=S&&(0,R.jsx)(`span`,{className:`ml-0.5 self-center pt-1.5 text-[12px] font-medium text-text-3`,children:S}),t[22]=S,t[23]=k);let A;t[24]!==O||t[25]!==k?(A=(0,R.jsxs)(`span`,{className:`absolute inset-0 flex items-center justify-center pt-1`,children:[O,k]}),t[24]=O,t[25]=k,t[26]=A):A=t[26];let ee;t[27]!==A||t[28]!==E?(ee=(0,R.jsxs)(`div`,{className:`relative size-[88px]`,children:[E,A]}),t[27]=A,t[28]=E,t[29]=ee):ee=t[29];let te;t[30]!==_.marke||t[31]!==_.wert?(te=_.marke&&(0,R.jsxs)(`span`,{className:_.wert,children:[`· `,_.marke]}),t[30]=_.marke,t[31]=_.wert,t[32]=te):te=t[32];let ne;t[33]!==n||t[34]!==te?(ne=(0,R.jsxs)(`span`,{className:`etikett -mt-1 flex items-center gap-1.5 text-[10.5px] text-text-3`,children:[n,te]}),t[33]=n,t[34]=te,t[35]=ne):ne=t[35];let j;t[36]!==v||t[37]!==n||t[38]!==h||t[39]!==a||t[40]!==d?(j=(0,R.jsx)(`div`,{className:`w-full px-1`,children:a&&a.length>1?(0,R.jsx)(gc,{punkte:a,max:h,farbe:v,hoehe:20,beschriftung:`${n}, ${d}`}):(0,R.jsx)(`span`,{className:`block h-5`,"aria-hidden":!0})}),t[36]=v,t[37]=n,t[38]=h,t[39]=a,t[40]=d,t[41]=j):j=t[41];let re;t[42]===p?re=t[43]:(re=p&&(0,R.jsx)(`span`,{className:s(`text-center text-[11px] leading-tight`,cc[p.stufe]),children:p.text}),t[42]=p,t[43]=re);let ie;return t[44]!==ee||t[45]!==ne||t[46]!==j||t[47]!==re?(ie=(0,R.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col items-center gap-1 rounded-2xl px-2 pt-2.5 pb-2`,children:[ee,ne,j,re]}),t[44]=ee,t[45]=ne,t[46]=j,t[47]=re,t[48]=ie):ie=t[48],ie}function Tc(e){let t=(0,z.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,R.jsx)(g,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function Ec(e){let t=(0,z.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,R.jsx)(p,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function Dc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(c,{"data-slot":`dialog-overlay`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Oc(e){let t=(0,z.c)(15),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({className:r,children:n,showCloseButton:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o=a===void 0||a,c;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsx)(Dc,{}),t[5]=c):c=t[5];let u;t[6]===r?u=t[7]:(u=s(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,r),t[6]=r,t[7]=u);let d;t[8]===o?d=t[9]:(d=o&&(0,R.jsx)(f,{"data-slot":`dialog-close`,asChild:!0,children:(0,R.jsxs)(He,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,R.jsx)(l,{}),(0,R.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[8]=o,t[9]=d);let p;return t[10]!==n||t[11]!==i||t[12]!==u||t[13]!==d?(p=(0,R.jsxs)(Ec,{children:[c,(0,R.jsxs)(m,{"data-slot":`dialog-content`,className:u,...i,children:[n,d]})]}),t[10]=n,t[11]=i,t[12]=u,t[13]=d,t[14]=p):p=t[14],p}function kc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`flex flex-col gap-2`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(`div`,{"data-slot":`dialog-header`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Ac(e){let t=(0,z.c)(14),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({className:r,showCloseButton:a,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o=a!==void 0&&a,c;t[5]===r?c=t[6]:(c=s(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,r),t[5]=r,t[6]=c);let l;t[7]===o?l=t[8]:(l=o&&(0,R.jsx)(f,{asChild:!0,children:(0,R.jsx)(He,{variant:`outline`,children:`Schließen`})}),t[7]=o,t[8]=l);let u;return t[9]!==n||t[10]!==i||t[11]!==c||t[12]!==l?(u=(0,R.jsxs)(`div`,{"data-slot":`dialog-footer`,className:c,...i,children:[n,l]}),t[9]=n,t[10]=i,t[11]=c,t[12]=l,t[13]=u):u=t[13],u}function jc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(h,{"data-slot":`dialog-title`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Mc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(u,{"data-slot":`dialog-description`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Nc=o({Bestaetigen:()=>Pc});function Pc(e){let t=(0,z.c)(32),{offen:n,titel:r,text:i,knopf:a,neinKnopf:o,gefahr:s,gesperrt:c,onJa:l,onNein:u,children:d}=e,f=o===void 0?`Abbrechen`:o,p;t[0]===u?p=t[1]:(p=e=>!e&&u(),t[0]=u,t[1]=p);let m;t[2]===r?m=t[3]:(m=(0,R.jsx)(jc,{className:`pr-10 text-[19px] leading-snug font-semibold break-words`,children:r}),t[2]=r,t[3]=m);let h;t[4]===i?h=t[5]:(h=(0,R.jsx)(Mc,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=h);let g;t[6]!==m||t[7]!==h?(g=(0,R.jsxs)(kc,{children:[m,h]}),t[6]=m,t[7]=h,t[8]=g):g=t[8];let _;t[9]!==f||t[10]!==u?(_=(0,R.jsx)(He,{variant:`outline`,onClick:u,children:f}),t[9]=f,t[10]=u,t[11]=_):_=t[11];let v=s?`gefahr`:`default`,y=c||void 0,b;t[12]!==c||t[13]!==l?(b=()=>{c||l()},t[12]=c,t[13]=l,t[14]=b):b=t[14];let x;t[15]!==c||t[16]!==a||t[17]!==v||t[18]!==y||t[19]!==b?(x=(0,R.jsx)(He,{variant:v,disabled:c,"aria-busy":y,onClick:b,children:a}),t[15]=c,t[16]=a,t[17]=v,t[18]=y,t[19]=b,t[20]=x):x=t[20];let S;t[21]!==x||t[22]!==_?(S=(0,R.jsxs)(Ac,{className:`sticky bottom-0 mb-0 gap-2 bg-[#121722] sm:gap-2`,children:[_,x]}),t[21]=x,t[22]=_,t[23]=S):S=t[23];let C;t[24]!==d||t[25]!==S||t[26]!==g?(C=(0,R.jsxs)(Oc,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-white/10 bg-[#0e121a] pb-0 sm:max-w-lg`,children:[g,d,S]}),t[24]=d,t[25]=S,t[26]=g,t[27]=C):C=t[27];let w;return t[28]!==n||t[29]!==C||t[30]!==p?(w=(0,R.jsx)(Tc,{open:n,onOpenChange:p,children:C}),t[28]=n,t[29]=C,t[30]=p,t[31]=w):w=t[31],w}function Fc(e){let t=(0,z.c)(12),{titel:n,rechts:r,children:i,className:a,id:o,symbol:c}=e,l;t[0]===a?l=t[1]:(l=s(`flaeche flex min-w-0 flex-col gap-4 rounded-2xl p-5 sm:p-6`,a),t[0]=a,t[1]=l);let u;t[2]!==c||t[3]!==r||t[4]!==n?(u=(n||r)&&(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n&&(0,R.jsxs)(`h2`,{className:`flex items-center gap-2.5 text-[17px] leading-tight font-semibold tracking-[0.005em] text-foreground`,children:[c&&(0,R.jsx)(c,{className:`size-[18px] text-text-3`,"aria-hidden":!0}),n]}),r]}),t[2]=c,t[3]=r,t[4]=n,t[5]=u):u=t[5];let d;return t[6]!==i||t[7]!==o||t[8]!==l||t[9]!==u||t[10]!==n?(d=(0,R.jsxs)(`section`,{id:o,"aria-label":n,className:l,children:[u,i]}),t[6]=i,t[7]=o,t[8]=l,t[9]=u,t[10]=n,t[11]=d):d=t[11],d}var Ic={lucy:`Lucy`,waechter:`Wächter`,wochenbericht:`Wochenbericht`,wartung:`Wartungsfenster`},Lc={offen:`offen`,laeuft:`läuft`,erledigt:`ausgeführt`,fehler:`gescheitert`,abgelehnt:`abgelehnt`,abgelaufen:`abgelaufen`,hinfaellig:`hatte sich erledigt`},Rc=e=>Ic[e]??e;function zc(e,t=Date.now()){let n=Math.max(0,Math.round(e-t/1e3));return n>=3600?`gilt noch ${Math.floor(n/3600)} h`:`gilt noch ${Math.max(1,Math.round(n/60))} min`}function Bc(e){let t=e.antwort?e.antwort.wer===`oberflaeche`?`hier`:e.antwort.wer===`lucy`?`per Telegram`:e.antwort.wer:null,n=[Lc[e.status]??e.status];return t&&e.status!==`abgelaufen`&&n.push(t),e.nachgeprueft===`besteht`&&n.push(`der Hinweis blieb`),n.join(` · `)}function Vc(e){let t=(0,z.c)(34),{r:n,gesperrt:r,onJa:i,onNein:a}=e,o=n.stufe===`dringend`&&`ring-1 ring-rot/40 ring-inset`,c;t[0]===o?c=t[1]:(c=s(`flaeche-innen flex flex-col gap-3 rounded-2xl p-4`,o),t[0]=o,t[1]=c);let l=n.nr,u;t[2]===n.von?u=t[3]:(u=Rc(n.von),t[2]=n.von,t[3]=u);let d;t[4]===n.zeit?d=t[5]:(d=M(n.zeit),t[4]=n.zeit,t[5]=d);let f;t[6]===n.ablauf?f=t[7]:(f=zc(n.ablauf),t[6]=n.ablauf,t[7]=f);let p;t[8]!==n.nr||t[9]!==u||t[10]!==d||t[11]!==f?(p=(0,R.jsxs)(`span`,{className:`etikett text-[10.5px] text-text-3`,children:[`Rückfrage `,l,` · `,u,` · `,d,` · `,f]}),t[8]=n.nr,t[9]=u,t[10]=d,t[11]=f,t[12]=p):p=t[12];let m;t[13]===n.frage?m=t[14]:(m=(0,R.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.frage}),t[13]=n.frage,t[14]=m);let h;t[15]===n.text?h=t[16]:(h=n.text&&(0,R.jsx)(`span`,{className:`text-sm break-words text-text-2`,children:n.text}),t[15]=n.text,t[16]=h);let g;t[17]!==p||t[18]!==m||t[19]!==h?(g=(0,R.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[p,m,h]}),t[17]=p,t[18]=m,t[19]=h,t[20]=g):g=t[20];let _;t[21]!==r||t[22]!==i?(_=(0,R.jsx)(He,{size:`sm`,disabled:r,onClick:i,children:`Ja, ausführen`}),t[21]=r,t[22]=i,t[23]=_):_=t[23];let v;t[24]!==r||t[25]!==a?(v=(0,R.jsx)(He,{variant:`outline`,size:`sm`,disabled:r,onClick:a,children:`Nein`}),t[24]=r,t[25]=a,t[26]=v):v=t[26];let y;t[27]!==_||t[28]!==v?(y=(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[_,v]}),t[27]=_,t[28]=v,t[29]=y):y=t[29];let b;return t[30]!==g||t[31]!==y||t[32]!==c?(b=(0,R.jsxs)(`li`,{className:c,children:[g,y]}),t[30]=g,t[31]=y,t[32]=c,t[33]=b):b=t[33],b}function Hc(e){let t=(0,z.c)(24),{leerText:n}=e,r=E(),i=me(),[a,o]=(0,I.useState)(null),s;t[0]===r.data?.offen?s=t[1]:(s=r.data?.offen??[],t[0]=r.data?.offen,t[1]=s);let c=s;if(c.length===0){let e;return t[2]===n?e=t[3]:(e=n?(0,R.jsx)(`p`,{className:`text-sm text-text-2`,children:n}):null,t[2]=n,t[3]=e),e}let l;if(t[4]!==i||t[5]!==c){let e;t[7]===i?e=t[8]:(e=e=>(0,R.jsx)(Vc,{r:e,gesperrt:i.isPending,onJa:()=>o(e),onNein:()=>i.mutate({nr:e.nr,ja:!1})},e.nr),t[7]=i,t[8]=e),l=c.map(e),t[4]=i,t[5]=c,t[6]=l}else l=t[6];let u;t[9]===l?u=t[10]:(u=(0,R.jsx)(`ul`,{className:`m-0 grid list-none gap-3 p-0 md:grid-cols-2`,children:l}),t[9]=l,t[10]=u);let d=!!a,f=a?a.frage:``,p=a?`${a.text?`${a.text} `:``}Das führt genau diese Aktion aus — wie „ja ${a.nr}“ in Telegram.`:``,m;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>o(null),t[11]=m):m=t[11];let h;t[12]!==i||t[13]!==a?(h=()=>{a&&i.mutate({nr:a.nr,ja:!0}),o(null)},t[12]=i,t[13]=a,t[14]=h):h=t[14];let g;t[15]!==i.isPending||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==h?(g=(0,R.jsx)(Pc,{offen:d,titel:f,text:p,knopf:`Ja, ausführen`,gesperrt:i.isPending,onNein:m,onJa:h}),t[15]=i.isPending,t[16]=d,t[17]=f,t[18]=p,t[19]=h,t[20]=g):g=t[20];let _;return t[21]!==u||t[22]!==g?(_=(0,R.jsxs)(R.Fragment,{children:[u,g]}),t[21]=u,t[22]=g,t[23]=_):_=t[23],_}function Uc(){let e=(0,z.c)(4),t=E().data?.offen.length??0;if(t===0)return null;let n=t===1?`Eine Rückfrage an dich`:`${t} Rückfragen an dich`,r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Lucy wartet auf dein Ja. In Telegram reicht „ja“ mit der Nummer — oder hier ein Klick.`}),i=(0,R.jsx)(Hc,{}),e[0]=r,e[1]=i):(r=e[0],i=e[1]);let a;return e[2]===n?a=e[3]:(a=(0,R.jsxs)(Fc,{titel:n,symbol:Za,id:`rueckfragen`,children:[r,i]}),e[2]=n,e[3]=a),a}function Wc(){let e=(0,z.c)(8),t=E(),n,r,i;if(e[0]!==t.data?.zuletzt){i=Symbol.for(`react.early_return_sentinel`);bb0:{let a=(t.data?.zuletzt??[]).slice(0,8);if(a.length===0){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsx)(`p`,{className:`text-sm text-text-3`,children:`Noch keine beantwortete Rückfrage.`}),e[4]=t):t=e[4],i=t;break bb0}n=`m-0 flex list-none flex-col p-0`,r=a.map(Gc)}e[0]=t.data?.zuletzt,e[1]=n,e[2]=r,e[3]=i}else n=e[1],r=e[2],i=e[3];if(i!==Symbol.for(`react.early_return_sentinel`))return i;let a;return e[5]!==n||e[6]!==r?(a=(0,R.jsx)(`ul`,{className:n,children:r}),e[5]=n,e[6]=r,e[7]=a):a=e[7],a}function Gc(e){return(0,R.jsxs)(`li`,{className:`flex flex-col gap-0.5 border-t border-white/[0.06] py-2 first:border-t-0`,children:[(0,R.jsx)(`span`,{className:`text-sm break-words`,children:e.frage}),(0,R.jsxs)(`span`,{className:`text-xs text-text-3`,children:[`Rückfrage `,e.nr,` · `,Rc(e.von),` · `,M(e.zeit),` · `,Bc(e),e.status===`fehler`&&e.ergebnis?` — ${e.ergebnis}`:``]})]},e.nr)}var Kc={ok:`var(--gruen)`,rot:`var(--rot)`,aus:`rgb(135 146 164 / 0.45)`},qc={ok:`erreichbar`,rot:`antwortet nicht`,aus:`kein Stand`},Jc=90,Yc=72,Xc=9,Zc=2*Math.PI*Yc;function Qc(e){let t=(0,z.c)(32),{segmente:n,glut:r}=e,i=Math.max(n.length,1),a=Zc/i,o=i>1?14:0,s=Math.max(a-o,.5),c;t[0]===n?c=t[1]:(c=n.filter($c),t[0]=n,t[1]=c);let l=c.length,u=`drop-shadow(0 0 14px color-mix(in srgb, ${r} 40%, transparent))`,d;t[2]===u?d=t[3]:(d={filter:u},t[2]=u,t[3]=d);let f,p,m;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,R.jsx)(`g`,{className:`kreist`,children:(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:86,fill:`none`,stroke:`rgb(255 255 255 / 0.13)`,strokeWidth:1,strokeDasharray:`1.2 5.6`})}),p=(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:Yc,fill:`none`,stroke:`rgb(255 255 255 / 0.05)`,strokeWidth:Xc}),m=(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:58,fill:`none`,stroke:`rgb(255 255 255 / 0.06)`,strokeWidth:1}),t[4]=f,t[5]=p,t[6]=m):(f=t[4],p=t[5],m=t[6]);let h;if(t[7]!==s||t[8]!==o||t[9]!==n||t[10]!==a){let e;t[12]!==s||t[13]!==o||t[14]!==a?(e=(e,t)=>(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:Yc,fill:`none`,stroke:Kc[e.zustand],strokeWidth:Xc,strokeLinecap:`round`,strokeDasharray:`${s} ${Zc-s}`,strokeDashoffset:-(t*a+o/2),className:`ring-fuellt`,style:{"--i":t},children:(0,R.jsx)(`title`,{children:`${e.name}: ${qc[e.zustand]}`})},e.id),t[12]=s,t[13]=o,t[14]=a,t[15]=e):e=t[15],h=n.map(e),t[7]=s,t[8]=o,t[9]=n,t[10]=a,t[11]=h}else h=t[11];let g;t[16]===h?g=t[17]:(g=(0,R.jsx)(`g`,{transform:`rotate(-90 ${Jc} ${Jc})`,children:h}),t[16]=h,t[17]=g);let _;t[18]!==d||t[19]!==g?(_=(0,R.jsxs)(`svg`,{viewBox:`0 0 180 180`,className:`size-full`,"aria-hidden":!0,style:d,children:[f,p,m,g]}),t[18]=d,t[19]=g,t[20]=_):_=t[20];let v;t[21]===n.length?v=t[22]:(v=(0,R.jsxs)(`span`,{className:`text-text-3`,children:[`/`,n.length]}),t[21]=n.length,t[22]=v);let y;t[23]!==l||t[24]!==v?(y=(0,R.jsxs)(`span`,{className:`font-anzeige text-[38px] leading-none font-semibold tabular-nums sm:text-[46px]`,children:[l,v]}),t[23]=l,t[24]=v,t[25]=y):y=t[25];let b;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,R.jsxs)(`span`,{className:`etikett mt-1.5 flex flex-col items-center text-[9.5px] leading-[1.35] text-text-3 sm:text-[10px]`,children:[(0,R.jsx)(`span`,{children:`Geräte`}),(0,R.jsx)(`span`,{children:`erreichbar`})]}),t[26]=b):b=t[26];let x;t[27]===y?x=t[28]:(x=(0,R.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center`,children:[y,b]}),t[27]=y,t[28]=x);let S;return t[29]!==x||t[30]!==_?(S=(0,R.jsxs)(`div`,{className:`relative size-[132px] shrink-0 sm:size-[168px]`,children:[_,x]}),t[29]=x,t[30]=_,t[31]=S):S=t[31],S}function $c(e){return e.zustand===`ok`}var el=new Set([`snapshot-anlegen`,`snapshot-loeschen`,`snapshot-zurueck`,`sicherung-loeschen`]),tl=e=>el.has(e.baustein),nl={update:{chip:`vor Update`,text:`Rückweg vor einem Update`},knopf:{chip:`per Knopf`,text:`Hier per Knopf angelegt`},proxmox:{chip:`von Hand`,text:`Von Hand in Proxmox angelegt`}};function rl(e,t){return e===null?`Zeitpunkt unbekannt`:de(new Date(e*1e3).toISOString(),new Date(t*1e3))}function il(e,t){return e===null?``:M(e,t*1e3)}function al(e){return e===null||e<=0?null:e<1e9?`${Math.round(e/1e6)} MB`:`${(e/1e9).toFixed(1).replace(`.`,`,`)} GB`}function ol(e,t){let n=e.startsWith(`${t}: `)?e.slice(t.length+2):e;return n.charAt(0).toUpperCase()+n.slice(1)}function sl(e){let t=[`${e.snapshots} ${e.snapshots===1?`Snapshot`:`Snapshots`}`];return e.sicherungen>0&&t.push(`${e.sicherungen} ${e.sicherungen===1?`Sicherung`:`Sicherungen`}`),t.join(` · `)}var cl=(e,t=1)=>e.toFixed(t).replace(`.`,`,`);function ll(e){return e==null?`–`:e>=0xe8d4a51000?`${cl(e/0xe8d4a51000)} TB`:e>=1e10?`${Math.round(e/1e9)} GB`:`${cl(e/1e9)} GB`}function ul(e){return e?/^\s*\d{1,2}:\d{2}\s*$/.test(e)?`täglich ${e.trim()}`:`Zeitplan „${e}“`:`ohne Zeitplan`}function dl(e){return e.jobs.length===0?`Kein Sicherungsauftrag in Proxmox`:e.jobs.map(e=>`${ul(e.zeitplan)} auf ${e.speicher??`?`}`).join(`, `)}var fl={ok:`in Ordnung`,gelb:`wird knapp`,rot:`fast voll`};function pl(e){if(e.aktion)return null;let t=e.grund??``,n=t.match(/erst ab (\d{2}\.\d{2}\.(?:\d{4})? ?\d{2}:\d{2})/)?.[1];return n?`ab ${n}`:/eigene Oberfläche|eigenen Oberfläche|eigenes Update/i.test(t)?`über die App`:null}function ml(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);if(t.length===0)return null;let n=[],r=Fo(e);if(r?.zustand===`neu`){let e=pl(r);n.push(`App → ${r.verfuegbar??`neu`}${e?` (${e})`:``}`)}let i=Io(e);i?.zustand===`neu`&&n.push(`${i.kurz||(i.id===`docker`?`Images`:`Pakete`)}${Ho(i)}`);for(let e of t)e!==r&&e!==i&&n.push(`${e.name}${e.kurz?` · ${e.kurz}`:``}`);return{id:e.id,name:e.name,teile:n,knopf:t.some(e=>!!e.aktion)}}function hl(e){return e.getrennt.length>0?{stufe:`rot`,titel:`Verbindung weg`,text:`${e.getrennt.join(` und `)} antwortet nicht.`}:e.stumm.length>0||e.hinweiseRot>0?{stufe:`rot`,titel:`Störung`,text:`${e.stumm.length>0?`${e.stumm.join(`, `)} antwortet nicht`:`Ein roter Hinweis wartet`}.`}:e.hinweise>0?{stufe:`gelb`,titel:e.hinweise===1?`1 Hinweis`:`${e.hinweise} Hinweise`,text:`Bei Gelegenheit ansehen.`}:e.updates>0?{stufe:`info`,titel:`Alles läuft`,text:`${e.updates} ${e.updates===1?`Update steht`:`Updates stehen`} bereit.`}:{stufe:`ok`,titel:`Alles läuft`,text:`Keine Hinweise, keine offenen Updates.`}}var gl={ok:{glut:`var(--gruen)`,titel:`text-foreground`,symbol:`text-gruen`,Symbol:_a},info:{glut:`var(--gruen)`,titel:`text-foreground`,symbol:`text-gruen`,Symbol:_a},gelb:{glut:`var(--bernstein)`,titel:`text-bernstein`,symbol:`text-bernstein`,Symbol:ha},rot:{glut:`var(--rot)`,titel:`text-rot-text`,symbol:`text-rot`,Symbol:wo}},_l={online:{punkt:`ok`,text:`online`},verbinde:{punkt:`warn`,text:`verbinde`},getrennt:{punkt:`rot`,text:`getrennt`},fehlt:{punkt:`aus`,text:`nicht eingerichtet`}},W={box:{name:`KI-Box`,rand:`[--rand:color-mix(in_srgb,var(--box)_32%,transparent)]`,text:`text-box-text`,pille:`bg-box/10 text-box-text ring-box/30 hover:bg-box/20`,glut:`var(--box)`,cockpit:`/box`},homelab:{name:`Homelab`,rand:`[--rand:color-mix(in_srgb,var(--lab)_32%,transparent)]`,text:`text-lab-text`,pille:`bg-lab/10 text-lab-text ring-lab/30 hover:bg-lab/20`,glut:`var(--lab)`,cockpit:`/homelab`}},vl=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),yl=e=>({"--i":e}),bl={cyan:{kachel:`bg-cyan/10 text-cyan ring-cyan/25`,wert:`text-cyan`},gruen:{kachel:`bg-gruen/10 text-gruen ring-gruen/25`,wert:`text-gruen`},bernstein:{kachel:`bg-bernstein/10 text-bernstein ring-bernstein/30`,wert:`text-bernstein`},rot:{kachel:`bg-rot/12 text-rot ring-rot/35`,wert:`text-rot-text`},grau:{kachel:`bg-white/[0.05] text-text-2 ring-white/12`,wert:`text-foreground`}};function xl(e){let t=(0,z.c)(23),{Icon:n,label:r,wert:i,art:a,children:o}=e,c=bl[a],l;t[0]===c.kachel?l=t[1]:(l=s(`flex size-10 shrink-0 items-center justify-center rounded-xl ring-1 ring-inset`,c.kachel),t[0]=c.kachel,t[1]=l);let u;t[2]===n?u=t[3]:(u=(0,R.jsx)(n,{className:`size-[18px]`}),t[2]=n,t[3]=u);let d;t[4]!==l||t[5]!==u?(d=(0,R.jsx)(`span`,{"aria-hidden":!0,className:l,children:u}),t[4]=l,t[5]=u,t[6]=d):d=t[6];let f;t[7]===r?f=t[8]:(f=(0,R.jsx)(`span`,{className:`etikett text-[10.5px] text-text-3`,children:r}),t[7]=r,t[8]=f);let p;t[9]===o?p=t[10]:(p=(0,R.jsx)(`span`,{className:`truncate text-[13px] text-text-2`,children:o}),t[9]=o,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;t[14]===c.wert?h=t[15]:(h=s(`font-anzeige text-[30px] leading-none font-semibold tabular-nums`,c.wert),t[14]=c.wert,t[15]=h);let g;t[16]!==h||t[17]!==i?(g=(0,R.jsx)(`span`,{className:h,children:i}),t[16]=h,t[17]=i,t[18]=g):g=t[18];let _;return t[19]!==d||t[20]!==m||t[21]!==g?(_=(0,R.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 items-center gap-3.5 rounded-2xl px-4 py-3`,children:[d,m,g]}),t[19]=d,t[20]=m,t[21]=g,t[22]=_):_=t[22],_}function Sl(e){let t=(0,z.c)(12),{bereich:n,verbindung:r}=e,i=W[n],a=_l[r],o=i.cockpit,c;t[0]===i.pille?c=t[1]:(c=s(`inline-flex h-8 items-center gap-2 rounded-full px-3 text-[13px] ring-1 ring-inset transition-colors`,i.pille),t[0]=i.pille,t[1]=c);let l=Ns[a.punkt],u;t[2]===l?u=t[3]:(u=s(`size-2 rounded-full`,l),t[2]=l,t[3]=u);let d;t[4]===u?d=t[5]:(d=(0,R.jsx)(`span`,{"aria-hidden":!0,className:u}),t[4]=u,t[5]=d);let f;return t[6]!==i.cockpit||t[7]!==i.name||t[8]!==c||t[9]!==d||t[10]!==a.text?(f=(0,R.jsxs)(wi,{to:o,className:c,children:[d,i.name,` `,a.text]}),t[6]=i.cockpit,t[7]=i.name,t[8]=c,t[9]=d,t[10]=a.text,t[11]=f):f=t[11],f}function Cl(e){let t=(0,z.c)(22),{bereich:n,titel:r,unterzeile:i,werte:a,basis:o}=e,c=W[n],l;t[0]===c.text?l=t[1]:(l=s(`etikett text-[11.5px] tracking-[0.16em]`,c.text),t[0]=c.text,t[1]=l);let u;t[2]!==l||t[3]!==r?(u=(0,R.jsx)(`h3`,{className:l,children:r}),t[2]=l,t[3]=r,t[4]=u):u=t[4];let d;t[5]===i?d=t[6]:(d=i&&(0,R.jsx)(`span`,{className:`truncate text-[12.5px] text-text-3`,children:i}),t[5]=i,t[6]=d);let f;t[7]!==u||t[8]!==d?(f=(0,R.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 px-0.5`,children:[u,d]}),t[7]=u,t[8]=d,t[9]=f):f=t[9];let p;if(t[10]!==o||t[11]!==n||t[12]!==a){let e;t[14]!==o||t[15]!==n?(e=(e,t)=>(0,R.jsx)(wc,{label:e.label,wert:e.wert,einheit:e.einheit,punkte:e.punkte,bereich:n,grenzen:[e.gelb,e.rot],zustand:$s(e.wert??null,e.gelb,e.rot),zeitraumText:`letzte Stunde`,i:o+t,hinweis:e.hinweis},e.label),t[14]=o,t[15]=n,t[16]=e):e=t[16],p=a.map(e),t[10]=o,t[11]=n,t[12]=a,t[13]=p}else p=t[13];let m;t[17]===p?m=t[18]:(m=(0,R.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-4`,children:p}),t[17]=p,t[18]=m);let h;return t[19]!==f||t[20]!==m?(h=(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[f,m]}),t[19]=f,t[20]=m,t[21]=h):h=t[21],h}function wl(e){let t=(0,z.c)(40),{homelabAktiv:n}=e,r=pe(),i=N(`1h`),a=A(),o=ve(`1h`,n),s=i.data?.reihen,c=r.data?.box,l=a?.ram??(c?.ram_used&&c.ram_total?c.ram_used/c.ram_total*100:null),u;if(t[0]!==c||t[1]!==n||t[2]!==o.data?.geraete||t[3]!==a?.cpu||t[4]!==a?.disk||t[5]!==a?.temp_cpu||t[6]!==i.data?.aktuell||t[7]!==i.data?.prognose?.platte||t[8]!==s?.cpu||t[9]!==s?.platte||t[10]!==s?.ram||t[11]!==s?.temp_cpu||t[12]!==l){let e=o.data?.geraete.find(Tl),r;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(r=yl(1),t[14]=r):r=t[14];let d;t[15]===c?d=t[16]:(d=c?.uptime_s?`läuft seit ${rc(c.uptime_s)}`:null,t[15]=c,t[16]=d);let f=a?.cpu??i.data?.aktuell.cpu,p=s?.cpu,m;t[17]!==f||t[18]!==p?(m={label:`CPU`,wert:f,einheit:`prozent`,punkte:p,gelb:85,rot:95},t[17]=f,t[18]=p,t[19]=m):m=t[19];let h=s?.ram,g;t[20]!==l||t[21]!==h?(g={label:`Speicher`,wert:l,einheit:`prozent`,punkte:h,gelb:85,rot:95},t[20]=l,t[21]=h,t[22]=g):g=t[22];let _=a?.temp_cpu??c?.temp_cpu,v=s?.temp_cpu,y;t[23]!==v||t[24]!==_?(y={label:`Temp.`,wert:_,einheit:`grad`,punkte:v,gelb:80,rot:90},t[23]=v,t[24]=_,t[25]=y):y=t[25];let b=a?.disk??c?.platte?.percent,x=s?.platte,S=i.data?.prognose?.platte??c?.platte?.vorhersage,C;t[26]===S?C=t[27]:(C=lc(S),t[26]=S,t[27]=C);let w;t[28]!==b||t[29]!==x||t[30]!==C?(w={label:`Platte`,wert:b,einheit:`prozent`,punkte:x,gelb:80,rot:90,hinweis:C},t[28]=b,t[29]=x,t[30]=C,t[31]=w):w=t[31];let T;t[32]!==y||t[33]!==w||t[34]!==m||t[35]!==g?(T=[m,g,y,w],t[32]=y,t[33]=w,t[34]=m,t[35]=g,t[36]=T):T=t[36];let E;t[37]!==T||t[38]!==d?(E=(0,R.jsx)(Cl,{bereich:`box`,titel:`KI-Box`,basis:0,unterzeile:d,werte:T}),t[37]=T,t[38]=d,t[39]=E):E=t[39],u=(0,R.jsxs)(`section`,{"aria-label":`Instrumente`,className:`auftauchen flaeche grid gap-6 rounded-3xl p-5 sm:p-6 xl:grid-cols-2 xl:gap-8`,style:r,children:[E,n?(0,R.jsx)(Cl,{bereich:`homelab`,titel:`Proxmox-Host`,basis:4,unterzeile:e?.aktuell.uptime_s?`läuft seit ${rc(e.aktuell.uptime_s)}`:null,werte:[{label:`CPU`,wert:e?.aktuell.cpu,einheit:`prozent`,punkte:e?.reihen.cpu,gelb:85,rot:95},{label:`Speicher`,wert:e?.aktuell.ram,einheit:`prozent`,punkte:e?.reihen.ram,gelb:90,rot:95},{label:`Temp.`,wert:e?.aktuell.temp_cpu,einheit:`grad`,punkte:e?.reihen.temp_cpu,gelb:80,rot:90},{label:`Platte`,wert:e?.aktuell.platte,einheit:`prozent`,punkte:e?.reihen.platte,gelb:80,rot:90,hinweis:lc(e?.prognose?.platte)}]}):(0,R.jsx)(`p`,{className:`self-center text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht; hier steht nichts Veraltetes.`})]}),t[0]=c,t[1]=n,t[2]=o.data?.geraete,t[3]=a?.cpu,t[4]=a?.disk,t[5]=a?.temp_cpu,t[6]=i.data?.aktuell,t[7]=i.data?.prognose?.platte,t[8]=s?.cpu,t[9]=s?.platte,t[10]=s?.ram,t[11]=s?.temp_cpu,t[12]=l,t[13]=u}else u=t[13];return u}function Tl(e){return e.art===`proxmox-host`}function El(e){let t=(0,z.c)(5),{titel:n,rechts:r}=e,i;t[0]===n?i=t[1]:(i=(0,R.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-3`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function Dl(e){let t=(0,z.c)(42),{bereich:n,verbindung:r,unterzeile:i,i:a,children:o}=e,c=W[n],l=_l[r],u=n===`box`?`ki-box`:`proxmox-host`,d;t[0]!==c.name||t[1]!==u?(d=Ls({art:u,name:c.name}),t[0]=c.name,t[1]=u,t[2]=d):d=t[2];let f;t[3]===d?f=t[4]:(f={...d,logo:void 0},t[3]=d,t[4]=f);let p=f,m=c.name,h;t[5]===c.rand?h=t[6]:(h=s(`auftauchen flaeche relative flex min-w-0 flex-col overflow-hidden rounded-3xl`,c.rand),t[5]=c.rand,t[6]=h);let g;t[7]===a?g=t[8]:(g=yl(a),t[7]=a,t[8]=g);let _=`radial-gradient(closest-side, color-mix(in srgb, ${c.glut} 20%, transparent), transparent)`,v;t[9]===_?v=t[10]:(v=(0,R.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute -top-44 -left-36 size-[460px] rounded-full`,style:{background:_}}),t[9]=_,t[10]=v);let y=c.cockpit,b;t[11]===p?b=t[12]:(b=(0,R.jsx)(Ks,{bild:p,groesse:`lg`,leuchtet:!0}),t[11]=p,t[12]=b);let x;t[13]===c.name?x=t[14]:(x=(0,R.jsx)(`span`,{className:`text-[21px] leading-none font-semibold`,children:c.name}),t[13]=c.name,t[14]=x);let S=Ns[l.punkt],C;t[15]===S?C=t[16]:(C=s(`size-2 shrink-0 rounded-full`,S),t[15]=S,t[16]=C);let w;t[17]===C?w=t[18]:(w=(0,R.jsx)(`span`,{"aria-hidden":!0,className:C}),t[17]=C,t[18]=w);let T;t[19]!==w||t[20]!==i||t[21]!==l.text?(T=(0,R.jsxs)(`span`,{className:`flex items-center gap-2 truncate text-[13px] text-text-3`,children:[w,l.text,` · `,i]}),t[19]=w,t[20]=i,t[21]=l.text,t[22]=T):T=t[22];let E;t[23]!==x||t[24]!==T?(E=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[x,T]}),t[23]=x,t[24]=T,t[25]=E):E=t[25];let D;t[26]!==b||t[27]!==E?(D=(0,R.jsxs)(`span`,{className:`flex min-w-0 items-center gap-3.5`,children:[b,E]}),t[26]=b,t[27]=E,t[28]=D):D=t[28];let O;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,R.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 rounded-full px-3 py-1.5 text-[13px] text-text-2 ring-1 ring-white/10 transition-colors ring-inset group-hover:bg-white/[0.06] group-hover:text-foreground`,children:[`Cockpit `,(0,R.jsx)(ra,{className:`size-3.5 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]}),t[29]=O):O=t[29];let k;t[30]!==c.cockpit||t[31]!==D?(k=(0,R.jsxs)(wi,{to:y,className:`group relative flex items-center justify-between gap-3 px-5 pt-5 pb-4 sm:px-6 sm:pt-6`,children:[D,O]}),t[30]=c.cockpit,t[31]=D,t[32]=k):k=t[32];let A;t[33]===o?A=t[34]:(A=(0,R.jsx)(`div`,{className:`relative flex flex-1 flex-col gap-6 px-5 pb-6 sm:px-6`,children:o}),t[33]=o,t[34]=A);let ee;return t[35]!==c.name||t[36]!==k||t[37]!==A||t[38]!==h||t[39]!==g||t[40]!==v?(ee=(0,R.jsxs)(`section`,{"aria-label":m,className:h,style:g,children:[v,k,A]}),t[35]=c.name,t[36]=k,t[37]=A,t[38]=h,t[39]=g,t[40]=v,t[41]=ee):ee=t[41],ee}function Ol(e){let t=(0,z.c)(12),{hinweise:n,ziel:r}=e,i,a,o,c;if(t[0]!==n||t[1]!==r){c=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(Al);if(e.length===0){c=null;break bb0}let l=[...e].sort(kl);i=`Hinweise`,a=`m-0 flex list-none flex-col gap-1.5 p-0`;let u;t[6]===r?u=t[7]:(u=e=>{let t=e.stufe===`rot`,n=t?wo:ha;return(0,R.jsx)(`li`,{children:(0,R.jsxs)(wi,{to:r,className:s(`flex items-start gap-2.5 rounded-xl px-3 py-2.5 text-[14px] ring-1 ring-inset transition-colors`,t?`bg-rot/10 text-rot-text ring-rot/35 hover:bg-rot/15`:`bg-bernstein/[0.08] text-bernstein ring-bernstein/30 hover:bg-bernstein/[0.13]`),children:[(0,R.jsx)(n,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}),(0,R.jsx)(`span`,{className:`min-w-0 flex-1`,children:e.titel}),(0,R.jsx)(`span`,{className:`etikett shrink-0 pt-0.5 text-[10px] opacity-80`,children:t?`Störung`:`Hinweis`})]})},e.id)},t[6]=r,t[7]=u),o=l.slice(0,3).map(u)}t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=c}else i=t[2],a=t[3],o=t[4],c=t[5];if(c!==Symbol.for(`react.early_return_sentinel`))return c;let l;return t[8]!==i||t[9]!==a||t[10]!==o?(l=(0,R.jsx)(`ul`,{"aria-label":i,className:a,children:o}),t[8]=i,t[9]=a,t[10]=o,t[11]=l):l=t[11],l}function kl(e,t){return Number(t.stufe===`rot`)-Number(e.stufe===`rot`)}function Al(e){return e.zustand!==`stumm`}var jl=e=>/\((ab |über die App)/.test(e);function Ml(e){let t=(0,z.c)(27),{to:n,bild:r,name:i,unter:a,punkt:o,zustandText:c,rechts:l,updates:u,knopf:d}=e,f;t[0]===u?f=t[1]:(f=u===void 0?[]:u,t[0]=u,t[1]=f);let p=f,m=d!==void 0&&d,h;t[2]!==r||t[3]!==o?(h=(0,R.jsx)(Ks,{bild:r,punkt:o}),t[2]=r,t[3]=o,t[4]=h):h=t[4];let g;t[5]!==l||t[6]!==c?(g=c&&!l&&(0,R.jsxs)(`span`,{className:`sr-only`,children:[`, `,c]}),t[5]=l,t[6]=c,t[7]=g):g=t[7];let _;t[8]!==i||t[9]!==g?(_=(0,R.jsxs)(`span`,{className:`truncate text-[14.5px] leading-snug font-medium`,children:[i,g]}),t[8]=i,t[9]=g,t[10]=_):_=t[10];let v;t[11]===l?v=t[12]:(v=l&&(0,R.jsx)(`span`,{className:`shrink-0 text-[12px]`,children:l}),t[11]=l,t[12]=v);let y;t[13]!==_||t[14]!==v?(y=(0,R.jsxs)(`span`,{className:`flex min-w-0 items-baseline justify-between gap-2`,children:[_,v]}),t[13]=_,t[14]=v,t[15]=y):y=t[15];let b;t[16]!==m||t[17]!==a||t[18]!==p?(b=p.length>0?(0,R.jsx)(`span`,{className:`flex min-w-0 flex-wrap gap-x-2 text-[12.5px] leading-snug`,children:p.map(e=>(0,R.jsxs)(`span`,{className:s(`truncate`,m&&!jl(e)?`text-cyan-text`:`text-text-3`),children:[m&&!jl(e)&&(0,R.jsx)(ro,{className:`mr-1 inline size-3 -translate-y-px`,"aria-hidden":!0}),e]},e))}):(0,R.jsx)(`span`,{className:`truncate text-[12.5px] leading-snug text-text-3`,children:a}),t[16]=m,t[17]=a,t[18]=p,t[19]=b):b=t[19];let x;t[20]!==y||t[21]!==b?(x=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[y,b]}),t[20]=y,t[21]=b,t[22]=x):x=t[22];let S;return t[23]!==x||t[24]!==h||t[25]!==n?(S=(0,R.jsxs)(wi,{to:n,className:`flaeche-innen group flex h-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 transition-colors hover:border-white/20 hover:bg-white/[0.05]`,children:[h,x]}),t[23]=x,t[24]=h,t[25]=n,t[26]=S):S=t[26],S}var Nl={ok:`ok`,aus:`aus`,warn:`warn`,info:`info`,fehler:`rot`};function Pl(e){return e.zustand===`neu`?{updates:[e.kurz||(e.verfuegbar?`→ ${e.verfuegbar}`:`neu`)],unter:``}:e.zustand===`festgehalten`?{updates:[],unter:`${e.installiert??`–`} · festgehalten`}:{updates:[],unter:e.installiert??`–`}}function Fl(e){let t=(0,z.c)(6),{eintraege:n}=e;if(n.length===0){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,R.jsx)(`p`,{className:`text-sm text-text-3`,children:`Nichts geplant.`}),t[0]=e):e=t[0],e}let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`span`,{"aria-hidden":!0,className:`absolute top-3 bottom-3 left-[5px] w-px bg-gradient-to-b from-white/20 to-white/0`}),t[1]=r):r=t[1];let i;t[2]===n?i=t[3]:(i=n.map(Il),t[2]=n,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,R.jsxs)(`ol`,{className:`relative m-0 flex list-none flex-col p-0`,children:[r,i]}),t[4]=i,t[5]=a),a}function Il(e){let[t,n]=Ll(de(e.zeit)),r=/update/i.test(e.titel);return(0,R.jsxs)(`li`,{className:`relative grid grid-cols-[11px_minmax(0,1fr)_auto] items-center gap-x-3 py-1.5`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-[11px] rounded-full ring-[3px] ring-[#0d1119]`,r?`bg-cyan`:`bg-white/25`)}),(0,R.jsx)(`span`,{className:`truncate text-[14.5px]`,children:e.titel}),(0,R.jsxs)(`span`,{className:`ziffern text-[12.5px] whitespace-nowrap text-text-3`,children:[t&&(0,R.jsx)(`span`,{className:`etikett mr-1.5 text-[10px] tracking-[0.1em]`,children:t}),n]})]},`${e.titel}-${e.zeit}`)}function Ll(e){let t=e.match(/^(.*) (\d{2}:\d{2})$/);return t?[t[1].toLowerCase(),t[2]]:[``,e]}function Rl(e){let t=(0,z.c)(85),{verbindung:n}=e,r=pe(),i=ce(),a=S(),o,s,c,l,u,d,f,p,m,h,g,_;if(t[0]!==a.data?.models||t[1]!==a.data?.running||t[2]!==r.data||t[3]!==n||t[4]!==i.data?.ziele){let e=i.data?.ziele.find(Hl)?.bausteine??[],v=e.filter(Vl),y,b,x,S;if(t[17]!==a.data?.models||t[18]!==a.data?.running||t[19]!==r.data||t[20]!==n){let e=a.data?.models??[],i;t[32]===a.data?.running?i=t[33]:(i=a.data?.running??[],t[32]=a.data?.running,t[33]=i);let c=i,l=[`hirn`,`coder`].map(t=>({rolle:t,m:e.find(e=>C(e)===t)})),u;t[34]===r.data?.lampen?u=t[35]:(u=r.data?.lampen??[],t[34]=r.data?.lampen,t[35]=u);let d=u,f;t[36]===d?f=t[37]:(f=e=>d.find(t=>t.id===e),t[36]=d,t[37]=f),s=f,o=Dl,p=`box`,m=n,h=2,t[38]===r.data?g=t[39]:(g=r.data?.box.ram_total?`${Math.round(r.data.box.ram_total/1073741824)} GB gemeinsamer Speicher`:`Strix Halo`,t[38]=r.data,t[39]=g);let v;t[40]===r.data?.hinweise?v=t[41]:(v=r.data?.hinweise??[],t[40]=r.data?.hinweise,t[41]=v),t[42]===v?_=t[43]:(_=(0,R.jsx)(Ol,{hinweise:v,ziel:`/box`}),t[42]=v,t[43]=_),x=`flex flex-col gap-2.5`,t[44]===c.length?S=t[45]:(S=(0,R.jsx)(El,{titel:`Modelle`,rechts:(0,R.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[c.length,` geladen`]})}),t[44]=c.length,t[45]=S),y=`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-2`,b=l.map(e=>{let{rolle:t,m:n}=e,r=!!n&&c.includes(n.name);return(0,R.jsx)(`li`,{children:(0,R.jsx)(Ml,{to:`/box/modelle`,bild:Vs(t),name:t===`hirn`?`Hirn`:`Coder`,unter:n?.name??`nicht belegt`,punkt:r?`ok`:`aus`,rechts:(0,R.jsx)(`span`,{className:r?`text-gruen-text`:`text-text-3`,children:r?`geladen`:`auf Abruf`})})},t)}),t[17]=a.data?.models,t[18]=a.data?.running,t[19]=r.data,t[20]=n,t[21]=o,t[22]=s,t[23]=y,t[24]=b,t[25]=x,t[26]=S,t[27]=p,t[28]=m,t[29]=h,t[30]=g,t[31]=_}else o=t[21],s=t[22],y=t[23],b=t[24],x=t[25],S=t[26],p=t[27],m=t[28],h=t[29],g=t[30],_=t[31];let w;t[46]!==y||t[47]!==b?(w=(0,R.jsx)(`ul`,{className:y,children:b}),t[46]=y,t[47]=b,t[48]=w):w=t[48],t[49]!==x||t[50]!==S||t[51]!==w?(l=(0,R.jsxs)(`div`,{className:x,children:[S,w]}),t[49]=x,t[50]=S,t[51]=w,t[52]=l):l=t[52],d=`flex flex-col gap-2.5`;let T=v.length?(0,R.jsxs)(As,{art:`cyan`,children:[v.length,` bereit`]}):(0,R.jsx)(As,{children:`aktuell`});t[53]===T?f=t[54]:(f=(0,R.jsx)(El,{titel:`Bausteine`,rechts:T}),t[53]=T,t[54]=f),c=`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-2`;let E;t[55]===s?E=t[56]:(E=e=>{let t=Pl(e),n=s(e.id===`engine`?`motor`:e.id);return(0,R.jsx)(`li`,{children:(0,R.jsx)(Ml,{to:`/box/updates`,bild:Vs(e.id),name:e.name.replace(/ \(llama\.cpp\)$/,``),unter:t.unter,updates:t.updates,knopf:!!e.aktion,punkt:n?Nl[n.zustand]:null,zustandText:n?.wert})},e.id)},t[55]=s,t[56]=E),u=e.map(E),t[0]=a.data?.models,t[1]=a.data?.running,t[2]=r.data,t[3]=n,t[4]=i.data?.ziele,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h,t[15]=g,t[16]=_}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14],g=t[15],_=t[16];let v;t[57]!==c||t[58]!==u?(v=(0,R.jsx)(`ul`,{className:c,children:u}),t[57]=c,t[58]=u,t[59]=v):v=t[59];let y;t[60]!==v||t[61]!==d||t[62]!==f?(y=(0,R.jsxs)(`div`,{className:d,children:[f,v]}),t[60]=v,t[61]=d,t[62]=f,t[63]=y):y=t[63];let b;t[64]===s?b=t[65]:(b=(0,R.jsx)(El,{titel:`Als Nächstes`,rechts:[`jobs`,`sicherung`].map(e=>s(e)).filter(Bl).map(zl)}),t[64]=s,t[65]=b);let x;t[66]===r.data?.flugplan.geplant?x=t[67]:(x=r.data?.flugplan.geplant??[],t[66]=r.data?.flugplan.geplant,t[67]=x);let w;t[68]===x?w=t[69]:(w=x.slice(0,4),t[68]=x,t[69]=w);let T;t[70]===w?T=t[71]:(T=(0,R.jsx)(Fl,{eintraege:w}),t[70]=w,t[71]=T);let E;t[72]!==b||t[73]!==T?(E=(0,R.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[b,T]}),t[72]=b,t[73]=T,t[74]=E):E=t[74];let D;return t[75]!==o||t[76]!==l||t[77]!==y||t[78]!==E||t[79]!==p||t[80]!==m||t[81]!==h||t[82]!==g||t[83]!==_?(D=(0,R.jsxs)(o,{bereich:p,verbindung:m,i:h,unterzeile:g,children:[_,l,y,E]}),t[75]=o,t[76]=l,t[77]=y,t[78]=E,t[79]=p,t[80]=m,t[81]=h,t[82]=g,t[83]=_,t[84]=D):D=t[84],D}function zl(e){return(0,R.jsxs)(`span`,{className:`hidden items-center gap-1.5 text-[12.5px] text-text-3 sm:flex`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-1.5 rounded-full`,Ns[Nl[e.zustand]])}),e.label,` `,e.wert]},e.id)}function Bl(e){return!!e}function Vl(e){return e.zustand===`neu`}function Hl(e){return e.art===`ki-box`}var Ul={ok:`bg-lab`,gelb:`bg-bernstein`,rot:`bg-rot`,keine:`bg-text-3`};function Wl(e){let t=(0,z.c)(31),{speicher:n}=e;if(!n)return null;let r;t[0]===n.pools?r=t[1]:(r=n.pools.find(Kl)??n.pools[0],t[0]=n.pools,t[1]=r);let i=r,a=n.nas[0],o=n.sicherungen,s;if(t[2]!==a||t[3]!==i||t[4]!==o.stufe||t[5]!==o.zuletzt){if(s=[],i){let e=i.anteil,n;t[7]===i.anteil?n=t[8]:(n=Math.round(i.anteil*100),t[7]=i.anteil,t[8]=n);let r;t[9]===i.frei?r=t[10]:(r=ll(i.frei),t[9]=i.frei,t[10]=r);let a=`${n} % · ${r} frei`,o;t[11]!==i.anteil||t[12]!==i.stufe||t[13]!==a?(o={label:`Speicherpool`,anteil:e,text:a,stufe:i.stufe},t[11]=i.anteil,t[12]=i.stufe,t[13]=a,t[14]=o):o=t[14],s.push(o)}if(a){let e=a.gesamt!=null&&a.belegt!=null?a.gesamt-a.belegt:null,n;t[15]!==e||t[16]!==a.anteil||t[17]!==a.problem?(n=a.anteil==null?a.problem??`kein Stand`:`${Math.round(a.anteil*100)} % · ${ll(e)} frei`,t[15]=e,t[16]=a.anteil,t[17]=a.problem,t[18]=n):n=t[18];let r;t[19]!==a.anteil||t[20]!==a.stufe||t[21]!==n?(r={label:`NAS`,anteil:a.anteil,stufe:a.stufe,text:n},t[19]=a.anteil,t[20]=a.stufe,t[21]=n,t[22]=r):r=t[22],s.push(r)}let e;t[23]===o.zuletzt?e=t[24]:(e=o.zuletzt?de(new Date(o.zuletzt*1e3).toISOString()).toLowerCase():`noch keine`,t[23]=o.zuletzt,t[24]=e);let n;t[25]!==o.stufe||t[26]!==e?(n={label:`Sicherungen`,anteil:null,stufe:o.stufe,text:e},t[25]=o.stufe,t[26]=e,t[27]=n):n=t[27],s.push(n),t[2]=a,t[3]=i,t[4]=o.stufe,t[5]=o.zuletzt,t[6]=s}else s=t[6];let c;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsx)(El,{titel:`Speicher und Sicherungen`}),t[28]=c):c=t[28];let l;return t[29]===s?l=t[30]:(l=(0,R.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[c,(0,R.jsx)(`ul`,{className:`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-3`,children:s.map(Gl)})]}),t[29]=s,t[30]=l),l}function Gl(e){return(0,R.jsx)(`li`,{children:(0,R.jsxs)(wi,{to:`/homelab`,className:`flaeche-innen flex h-full flex-col gap-2 rounded-xl px-3 py-2.5 transition-colors hover:border-white/20 hover:bg-white/[0.05]`,children:[(0,R.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,R.jsx)(`span`,{className:`text-[13.5px] font-medium`,children:e.label}),(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-1.5 rounded-full`,Ul[e.stufe])})]}),(0,R.jsx)(`span`,{className:`truncate text-[12.5px] text-text-3`,children:e.text}),e.anteil!=null&&(0,R.jsx)(`span`,{"aria-hidden":!0,className:`h-1 overflow-hidden rounded-full bg-white/[0.08]`,children:(0,R.jsx)(`span`,{className:s(`block h-full rounded-full`,e.stufe===`ok`?`bg-lab/80`:Ul[e.stufe]),style:{width:`${Math.max(2,Math.round(e.anteil*100))}%`}})})]})},e.label)}function Kl(e){return e.aktiv}function ql(e){let t=(0,z.c)(17),{verbindung:n}=e,r=n===`online`,i=ue(r),a=ye(r),o=P(r),s;t[0]===i.data?.ziele?s=t[1]:(s=i.data?.ziele??[],t[0]=i.data?.ziele,t[1]=s);let c=s,l;t[2]===c?l=t[3]:(l=c.filter(Xl),t[2]=c,t[3]=l);let u=l.length,d;t[4]===c?d=t[5]:(d=c.filter(Yl),t[4]=c,t[5]=d);let f=d.length,p=c.length?`Proxmox VE · ${f} Gäste`:`Proxmox VE`,m;t[6]!==r||t[7]!==u||t[8]!==a||t[9]!==i.isPending||t[10]!==o||t[11]!==c?(m=r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Ol,{hinweise:a.data?.hinweise??[],ziel:`/homelab`}),(0,R.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,R.jsx)(El,{titel:`Geräte`,rechts:(0,R.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[u,` von `,c.length,` erreichbar`]})}),i.isPending&&c.length===0&&(0,R.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wird gelesen …`}),(0,R.jsx)(`ul`,{className:`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-2`,children:c.map(Jl)})]}),(0,R.jsx)(Wl,{speicher:o.data})]}):(0,R.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht; die Karte zeigt nichts Veraltetes.`}),t[6]=r,t[7]=u,t[8]=a,t[9]=i.isPending,t[10]=o,t[11]=c,t[12]=m):m=t[12];let h;return t[13]!==p||t[14]!==m||t[15]!==n?(h=(0,R.jsx)(Dl,{bereich:`homelab`,verbindung:n,i:3,unterzeile:p,children:m}),t[13]=p,t[14]=m,t[15]=n,t[16]=h):h=t[16],h}function Jl(e){let t=ml(e),n=e.erreichbar===!1?`rot`:e.erreichbar?`ok`:`aus`;return(0,R.jsx)(`li`,{children:(0,R.jsx)(Ml,{to:t?`/homelab/updates`:`/homelab`,bild:Ls(e),name:No(e),unter:ko(e.kennzahl)??jo(e),punkt:n,zustandText:e.erreichbar===!1?`antwortet nicht`:e.erreichbar?`erreichbar`:`kein Stand`,updates:t?.teile??[],knopf:t?.knopf??!1})},e.id)}function Yl(e){return e.art!==`proxmox-host`}function Xl(e){return e.erreichbar}var Zl={eingespielt:`gruen`,gruen:`gruen`,zurueckgerollt:`bernstein`,gelb:`bernstein`,fehler:`rot`,rot:`rot`,neustart:`cyan`,info:`cyan`,aufgeraeumt:`gruen`},Ql={zurueckgerollt:`zurückgerollt`,aufgeraeumt:`aufgeräumt`,neustart:`Neustart`,fehler:`Fehler`,zurueckgesetzt:`zurückgesetzt`,geloescht:`gelöscht`},$l={gruen:`bg-gruen`,bernstein:`bg-bernstein`,rot:`bg-rot`,cyan:`bg-cyan`,grau:`bg-white/30`};function eu(e){let t=(0,z.c)(5),{homelabAktiv:n}=e,r=se(),i=oe(n),a;if(t[0]!==r.data?.laeufe||t[1]!==i.data?.laeufe){let e=[...(r.data?.laeufe??[]).slice(0,8).map(iu),...(i.data?.laeufe??[]).filter(ru).slice(0,8).map(nu)].sort(tu).slice(0,8),n;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(n=yl(4),t[3]=n):n=t[3];let o;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,R.jsx)(`h2`,{className:`text-[17px] leading-tight font-semibold`,children:`Zuletzt eingespielt`}),(0,R.jsx)(`span`,{className:`hidden text-[13px] text-text-3 sm:inline`,children:`beide Bereiche, neueste zuerst`})]}),t[4]=o):o=t[4],a=(0,R.jsxs)(`section`,{"aria-label":`Zuletzt eingespielt`,className:`auftauchen flaeche flex flex-col gap-4 rounded-3xl p-5 sm:p-6`,style:n,children:[o,e.length===0?(0,R.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Updates aufgezeichnet.`}):(0,R.jsx)(`ol`,{className:`m-0 grid list-none gap-x-8 p-0 lg:grid-flow-col lg:grid-cols-2 lg:grid-rows-[repeat(var(--zeilen),auto)]`,style:{"--zeilen":Math.ceil(e.length/2)},children:e.map((t,n)=>(0,R.jsxs)(`li`,{className:s(`grid grid-cols-[10px_minmax(0,1fr)_auto] items-center gap-x-3 border-t border-white/[0.06] py-2.5`,n===0&&`border-t-0`,n===Math.ceil(e.length/2)&&`lg:border-t-0`),children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-2.5 rounded-full`,$l[t.art])}),(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,R.jsxs)(`span`,{className:`truncate text-[14.5px]`,children:[(0,R.jsx)(`span`,{className:s(`etikett mr-2 text-[10px] tracking-[0.12em]`,W[t.bereich].text),children:W[t.bereich].name}),t.titel]}),(0,R.jsx)(`span`,{className:`ziffern text-[12px] text-text-3`,children:de(new Date(t.zeit).toISOString()).toLowerCase()})]}),(0,R.jsx)(As,{art:t.art,children:t.chip})]},`${t.bereich}-${t.zeit}-${t.titel}`))})]}),t[0]=r.data?.laeufe,t[1]=i.data?.laeufe,t[2]=a}else a=t[2];return a}function tu(e,t){return t.zeit-e.zeit}function nu(e){return{zeit:e.start*1e3,bereich:`homelab`,titel:e.name,chip:e.ergebnis?Ql[e.ergebnis]??e.ergebnis:`unterbrochen`,art:(e.ergebnis?Zl[e.ergebnis]:`grau`)??`grau`}}function ru(e){return e.status!==`laeuft`&&!tl(e)&&e.baustein!==`probe`}function iu(e){return{zeit:new Date(e.start).getTime(),bereich:`box`,titel:e.anlass,chip:e.titel,art:Zl[e.stufe]??`grau`}}function G(){let e=(0,z.c)(121),t=$o(),n=pe(),r=ce(),i=t.homelab.verbindung===`online`,a=ue(i),o=ye(i);if(n.isPending&&!n.data){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsx)(js,{text:`Die Übersicht sammelt sich gleich …`}),e[0]=t):t=e[0],t}let c,l,u,d,f,p,m,h,g,_;if(e[1]!==r.data?.ziele||e[2]!==a.data?.ziele||e[3]!==i||e[4]!==o.data?.hinweise||e[5]!==t.box.updates||e[6]!==t.box.verbindung||e[7]!==t.homelab.updates||e[8]!==t.homelab.verbindung||e[9]!==n.data||e[10]!==n.isError){let s=[...t.box.verbindung===`getrennt`&&n.isError?[`Die KI-Box`]:[],...t.homelab.verbindung===`getrennt`?[`Der Homelab-Teil`]:[]],v=a.data?.ziele??[],y=v.filter(uu).map(lu),b;e[21]===n.data?.hinweise?b=e[22]:(b=n.data?.hinweise??[],e[21]=n.data?.hinweise,e[22]=b);let x;e[23]===o.data?.hinweise?x=e[24]:(x=o.data?.hinweise??[],e[23]=o.data?.hinweise,e[24]=x);let S;e[25]!==b||e[26]!==x?(S=[...b,...x].filter(cu),e[25]=b,e[26]=x,e[27]=S):S=e[27],c=S,h=c.some(su),_=t.box.updates+t.homelab.updates;let C;e[28]===c?C=e[29]:(C=c.filter(ou),e[28]=c,e[29]=C),d=hl({getrennt:s,stumm:y,hinweiseRot:C.length,hinweise:c.length,updates:_}),u=gl[d.stufe],p=n.data?.flugplan.geplant[0];let w;e[30]===p?w=e[31]:(w=p?Ll(de(p.zeit)):[``,`–`],e[30]=p,e[31]=w),[m,f]=w,l=n.data?.zustand.stand;let T;e[32]===r.data?.ziele?T=e[33]:(T=r.data?.ziele.find(au),e[32]=r.data?.ziele,e[33]=T);let E=T?.name??`KI-Box`,D=n.isError?`rot`:n.data?`ok`:`aus`,O;e[34]!==E||e[35]!==D?(O={id:`ki-box`,name:E,zustand:D},e[34]=E,e[35]=D,e[36]=O):O=e[36];let k;e[37]===i?k=e[38]:(k=e=>({id:e.id,name:e.name,zustand:i?e.erreichbar===!1?`rot`:e.erreichbar?`ok`:`aus`:`aus`}),e[37]=i,e[38]=k),g=[O,...v.map(k)],e[1]=r.data?.ziele,e[2]=a.data?.ziele,e[3]=i,e[4]=o.data?.hinweise,e[5]=t.box.updates,e[6]=t.box.verbindung,e[7]=t.homelab.updates,e[8]=t.homelab.verbindung,e[9]=n.data,e[10]=n.isError,e[11]=c,e[12]=l,e[13]=u,e[14]=d,e[15]=f,e[16]=p,e[17]=m,e[18]=h,e[19]=g,e[20]=_}else c=e[11],l=e[12],u=e[13],d=e[14],f=e[15],p=e[16],m=e[17],h=e[18],g=e[19],_=e[20];let v=g,y;e[39]===Symbol.for(`react.memo_cache_sentinel`)?(y=yl(0),e[39]=y):y=e[39];let b=`radial-gradient(closest-side, color-mix(in srgb, ${u.glut} 20%, transparent), transparent)`,x;e[40]===b?x=e[41]:(x=(0,R.jsx)(`div`,{"aria-hidden":!0,className:`glut-atmet pointer-events-none absolute -top-48 -left-40 size-[560px] rounded-full`,style:{background:b}}),e[40]=b,e[41]=x);let S;e[42]!==u.glut||e[43]!==v?(S=(0,R.jsx)(Qc,{segmente:v,glut:u.glut}),e[42]=u.glut,e[43]=v,e[44]=S):S=e[44];let C=u.Symbol,w;e[45]===u.symbol?w=e[46]:(w=s(`size-4`,u.symbol),e[45]=u.symbol,e[46]=w);let T;e[47]!==u.Symbol||e[48]!==w?(T=(0,R.jsx)(C,{className:w,"aria-hidden":!0}),e[47]=u.Symbol,e[48]=w,e[49]=T):T=e[49];let E;e[50]===l?E=e[51]:(E=l?` · geprüft ${vl.format(new Date(l*1e3))}`:``,e[50]=l,e[51]=E);let D;e[52]!==T||e[53]!==E?(D=(0,R.jsxs)(`span`,{className:`etikett flex items-center gap-2 text-[11px] text-text-3`,children:[T,`Gesamtlage`,E]}),e[52]=T,e[53]=E,e[54]=D):D=e[54];let O;e[55]===u.titel?O=e[56]:(O=s(`text-[32px] leading-[1.05] font-semibold tracking-[-0.015em] sm:text-[44px]`,u.titel),e[55]=u.titel,e[56]=O);let k;e[57]!==d.titel||e[58]!==O?(k=(0,R.jsx)(`h2`,{className:O,children:d.titel}),e[57]=d.titel,e[58]=O,e[59]=k):k=e[59];let A;e[60]===d.text?A=e[61]:(A=(0,R.jsx)(`p`,{className:`text-[15px] text-text-2 sm:text-base`,children:d.text}),e[60]=d.text,e[61]=A);let ee;e[62]===t.box.verbindung?ee=e[63]:(ee=(0,R.jsx)(Sl,{bereich:`box`,verbindung:t.box.verbindung}),e[62]=t.box.verbindung,e[63]=ee);let te;e[64]===t.homelab.verbindung?te=e[65]:(te=(0,R.jsx)(Sl,{bereich:`homelab`,verbindung:t.homelab.verbindung}),e[64]=t.homelab.verbindung,e[65]=te);let ne;e[66]!==ee||e[67]!==te?(ne=(0,R.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2`,children:[ee,te]}),e[66]=ee,e[67]=te,e[68]=ne):ne=e[68];let j;e[69]!==k||e[70]!==A||e[71]!==ne||e[72]!==D?(j=(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2.5`,children:[D,k,A,ne]}),e[69]=k,e[70]=A,e[71]=ne,e[72]=D,e[73]=j):j=e[73];let re;e[74]!==j||e[75]!==S?(re=(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-5 sm:gap-8`,children:[S,j]}),e[74]=j,e[75]=S,e[76]=re):re=e[76];let ie=String(_),ae=_?`cyan`:`grau`,oe;e[77]===t.box.updates?oe=e[78]:(oe=(0,R.jsxs)(wi,{to:`/box/updates`,className:`hover:text-foreground`,children:[`KI-Box `,t.box.updates]}),e[77]=t.box.updates,e[78]=oe);let M;e[79]===t.homelab.updates?M=e[80]:(M=(0,R.jsxs)(wi,{to:`/homelab/updates`,className:`hover:text-foreground`,children:[`Homelab `,t.homelab.updates]}),e[79]=t.homelab.updates,e[80]=M);let se;e[81]!==ie||e[82]!==ae||e[83]!==oe||e[84]!==M?(se=(0,R.jsxs)(xl,{Icon:ro,label:`Updates bereit`,wert:ie,art:ae,children:[oe,` · `,M]}),e[81]=ie,e[82]=ae,e[83]=oe,e[84]=M,e[85]=se):se=e[85];let le=h?wo:ha,fe=String(c.length),me=h?`rot`:c.length?`bernstein`:`grau`,he=c.length?`stehen oben in den Karten`:`nichts offen`,ge;e[86]!==le||e[87]!==fe||e[88]!==me||e[89]!==he?(ge=(0,R.jsx)(xl,{Icon:le,label:`Hinweise`,wert:fe,art:me,children:he}),e[86]=le,e[87]=fe,e[88]=me,e[89]=he,e[90]=ge):ge=e[90];let N=p?`${p.titel}${m&&m!==`heute`?` · ${m}`:``}`:`nichts geplant`,P;e[91]!==f||e[92]!==N?(P=(0,R.jsx)(xl,{Icon:pa,label:`Als Nächstes`,wert:f,art:`grau`,children:N}),e[91]=f,e[92]=N,e[93]=P):P=e[93];let _e;e[94]!==se||e[95]!==ge||e[96]!==P?(_e=(0,R.jsxs)(`div`,{className:`grid gap-2.5 sm:grid-cols-3 xl:grid-cols-1`,children:[se,ge,P]}),e[94]=se,e[95]=ge,e[96]=P,e[97]=_e):_e=e[97];let ve;e[98]!==re||e[99]!==_e?(ve=(0,R.jsxs)(`div`,{className:`relative grid gap-6 p-5 sm:p-7 xl:grid-cols-[minmax(0,1fr)_minmax(0,340px)] xl:items-center xl:gap-10`,children:[re,_e]}),e[98]=re,e[99]=_e,e[100]=ve):ve=e[100];let be;e[101]!==x||e[102]!==ve?(be=(0,R.jsxs)(`section`,{"aria-label":`Gesamtlage`,className:`auftauchen flaeche relative overflow-hidden rounded-3xl`,style:y,children:[x,ve]}),e[101]=x,e[102]=ve,e[103]=be):be=e[103];let xe;e[104]===Symbol.for(`react.memo_cache_sentinel`)?(xe=(0,R.jsx)(Uc,{}),e[104]=xe):xe=e[104];let F;e[105]===i?F=e[106]:(F=(0,R.jsx)(wl,{homelabAktiv:i}),e[105]=i,e[106]=F);let Se;e[107]===t.box.verbindung?Se=e[108]:(Se=(0,R.jsx)(Rl,{verbindung:t.box.verbindung}),e[107]=t.box.verbindung,e[108]=Se);let Ce;e[109]===t.homelab.verbindung?Ce=e[110]:(Ce=(0,R.jsx)(ql,{verbindung:t.homelab.verbindung}),e[109]=t.homelab.verbindung,e[110]=Ce);let we;e[111]!==Se||e[112]!==Ce?(we=(0,R.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[Se,Ce]}),e[111]=Se,e[112]=Ce,e[113]=we):we=e[113];let Te;e[114]===i?Te=e[115]:(Te=(0,R.jsx)(eu,{homelabAktiv:i}),e[114]=i,e[115]=Te);let Ee;return e[116]!==be||e[117]!==F||e[118]!==we||e[119]!==Te?(Ee=(0,R.jsxs)(R.Fragment,{children:[be,xe,F,we,Te]}),e[116]=be,e[117]=F,e[118]=we,e[119]=Te,e[120]=Ee):Ee=e[120],Ee}function au(e){return e.art===`ki-box`}function ou(e){return e.stufe===`rot`}function su(e){return e.stufe===`rot`}function cu(e){return e.zustand!==`stumm`}function lu(e){return e.name}function uu(e){return e.erreichbar===!1}var du=ki({component:Os,notFoundComponent:()=>(0,R.jsx)(si,{to:`/`})}),fu=Di({getParentRoute:()=>du,path:`/`,component:G}),pu=Di({getParentRoute:()=>du,path:`/box`,component:Ai(()=>_s(()=>import(`./Start-vq5R-eQh.js`),__vite__mapDeps([7,1,6,4,8])),`StartSeite`)}),mu=Di({getParentRoute:()=>du,path:`/box/updates`,component:Ai(()=>_s(()=>import(`./Updates-D8iDMVee.js`),__vite__mapDeps([9,1,6,10,4,11])),`UpdatesSeite`)}),hu=Di({getParentRoute:()=>du,path:`/box/modelle`,component:Ai(()=>_s(()=>import(`./Modelle-BlSp1533.js`),__vite__mapDeps([12,1,6,13,14,10,4,2,3,11,15])),`ModelleSeite`)}),gu=Di({getParentRoute:()=>du,path:`/box/monitoring`,component:Ai(()=>_s(()=>import(`./Monitoring-D00MRslA.js`),__vite__mapDeps([16,1,6,17,13,14,15])),`BoxMonitoringSeite`)}),_u=Di({getParentRoute:()=>du,path:`/box/dienste`,component:Ai(()=>_s(()=>import(`./Dienste-Yc2LKSv8.js`),__vite__mapDeps([18,1,6,4])),`DiensteSeite`)}),vu=Di({getParentRoute:()=>du,path:`/homelab`,component:Ai(()=>_s(()=>import(`./Homelab-CbrbD7vJ.js`),__vite__mapDeps([19,1,6,10,20,4,8])),`HomelabSeite`)}),yu=Di({getParentRoute:()=>du,path:`/homelab/updates`,component:Ai(()=>_s(()=>import(`./Homelab-CbrbD7vJ.js`),__vite__mapDeps([19,1,6,10,20,4,8])),`HomelabUpdatesSeite`)}),bu=Di({getParentRoute:()=>du,path:`/homelab/snapshots`,component:Ai(()=>_s(()=>import(`./HomelabSnapshots-CvlkzLGV.js`),__vite__mapDeps([21,1,6,20,4])),`HomelabSnapshotsSeite`)}),xu=Di({getParentRoute:()=>du,path:`/homelab/monitoring`,component:Ai(()=>_s(()=>import(`./Monitoring-D00MRslA.js`),__vite__mapDeps([16,1,6,17,13,14,15])),`HomelabMonitoringSeite`)}),Su=Di({getParentRoute:()=>du,path:`/homelab/protokoll`,component:Ai(()=>_s(()=>import(`./HomelabProtokoll-2honFTFl.js`),__vite__mapDeps([22,1,6,17,13,14,10])),`HomelabProtokollSeite`)}),Cu=Di({getParentRoute:()=>du,path:`/handy`,component:Ai(()=>_s(()=>import(`./Handy-DAtqWcjC.js`),__vite__mapDeps([23,1,6,4])),`HandySeite`)}),wu=Di({getParentRoute:()=>du,path:`/einstellungen`,component:Ai(()=>_s(()=>import(`./Einstellungen-CRRpjSwU.js`),__vite__mapDeps([24,1,6,4])),`EinstellungenSeite`)}),Tu=Di({getParentRoute:()=>du,path:`/updates`,beforeLoad:()=>{throw Nt({to:`/box/updates`})}}),Eu=Di({getParentRoute:()=>du,path:`/modelle`,beforeLoad:({location:e})=>{throw Nt({to:`/box/modelle`,hash:e.hash||void 0})}}),Du=qi({routeTree:du.addChildren([fu,pu,mu,hu,gu,_u,vu,yu,xu,Su,wu,Tu,Eu,bu,Cu]),defaultPreload:`intent`,defaultErrorComponent:Qi}),Ou=`mc_neuladen_wegen_version`;function ku(){window.addEventListener(`vite:preloadError`,e=>{sessionStorage.getItem(Ou)||(e.preventDefault(),sessionStorage.setItem(Ou,`1`),window.location.reload())}),window.addEventListener(`load`,()=>{window.setTimeout(()=>sessionStorage.removeItem(Ou),5e3)})}ku();var Au=new Xe({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1,staleTime:5e3}}});(0,Zi.createRoot)(document.getElementById(`root`)).render((0,R.jsx)(I.StrictMode,{children:(0,R.jsx)(fe,{client:Au,children:(0,R.jsx)(Xi,{router:Du})})}));export{No as $,oc as A,Bs as B,uc as C,cc as D,fc as E,Xs as F,us as G,As as H,nc as I,Yo as J,fs as K,$s as L,rc as M,Zs as N,lc as O,Qs as P,ko as Q,Ks as R,dc as S,hc as T,js as U,Ls as V,_s as W,Fo as X,$o as Y,jo as Z,Tc as _,ha as _t,nl as a,zo as at,jc as b,oi as bt,tl as c,H as ct,ol as d,ao as dt,Ko as et,Hc as f,ro as ft,Nc as g,_a as gt,Pc as h,ja as ht,ll as i,Uo as it,ac as j,sc as k,sl as l,wo as lt,Fc as m,Fa as mt,fl as n,qo as nt,il as o,Io as ot,Wc as p,qa as pt,Xo as q,dl as r,Lo as rt,al as s,Ro as st,hl as t,Wo as tt,rl as u,fo as ut,Oc as v,ra as vt,mc as w,gc as x,Mc as y,wi as yt,Vs as z}; \ No newline at end of file diff --git a/frontend/dist/assets/index-CuG_RlEw.js b/frontend/dist/assets/index-CuG_RlEw.js new file mode 100644 index 0000000..9296205 --- /dev/null +++ b/frontend/dist/assets/index-CuG_RlEw.js @@ -0,0 +1,11 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MenueSchublade-mFJEpUye.js","assets/dist-aE7UmubC.js","assets/sheet-DG7u1mB-.js","assets/dist-CakcBaML.js","assets/button-BHVKhtQ6.js","assets/Befehlssuche-BqZBO0pG.js","assets/abfragen-CDCgpAto.js","assets/Start-X1vycEEP.js","assets/Plattenliste-g8leg5Tm.js","assets/Updates-C1DGAQzb.js","assets/chevron-right-DF8ikrVh.js","assets/Auftraege-Dwy9GTde.js","assets/Modelle-qcKJnyDK.js","assets/useSelector-DBNxxw17.js","assets/useMatch-DDVpPKJI.js","assets/breite-k-QN6GPl.js","assets/Monitoring-CpuY6nlC.js","assets/useRouterState-DJr4hrdj.js","assets/Dienste-BnFvX5-a.js","assets/Homelab-B_yJb4MW.js","assets/undo-2-B8COJmAr.js","assets/HomelabSnapshots-3N_oyI54.js","assets/HomelabProtokoll-Dc7ImWeS.js","assets/Handy-DBkH-dQc.js","assets/Einstellungen-DaFSM6VU.js"])))=>i.map(i=>d[i]); +import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s}from"./dist-aE7UmubC.js";import{a as c,c as l,i as u,l as d,n as f,o as p,r as m,s as h,t as g}from"./dist-CakcBaML.js";import{$t as _,At as v,Ct as y,Dt as b,E as x,Et as S,Gt as C,Jt as w,Kt as T,L as E,Ot as D,Qt as O,Rt as k,S as A,Tt as j,U as ee,Wt as te,X as M,Xt as ne,Yt as re,Z as ie,Zt as ae,_ as oe,an as se,at as ce,b as le,dt as ue,en as de,f as fe,in as pe,k as me,nn as he,qt as ge,rn as N,tn as P,u as _e,vt as ve,x as ye}from"./abfragen-CDCgpAto.js";import{_ as be,a as xe,c as F,d as Se,f as Ce,g as we,h as Te,i as Ee,l as De,m as Oe,n as ke,o as Ae,p as je,r as Me,s as Ne,t as Pe,u as Fe,v as Ie,y as Le}from"./useSelector-DBNxxw17.js";import{i as Re,r as ze,t as Be}from"./useMatch-DDVpPKJI.js";import{t as Ve}from"./useRouterState-DJr4hrdj.js";import{t as He}from"./button-BHVKhtQ6.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ue=i((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),We=i(((e,t)=>{t.exports=Ue()})),Ge=i((t=>{var n=We(),r=e(),i=d();function a(e){var t=`https://react.dev/errors/`+e;if(1ye||(e.current=ve[ye],ve[ye]=null,ye--)}function F(e,t){ye++,ve[ye]=e.current,e.current=t}var Se=be(null),Ce=be(null),we=be(null),Te=be(null);function Ee(e,t){switch(F(we,t),F(Ce,e),F(Se,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}xe(Se),F(Se,e)}function De(){xe(Se),xe(Ce),xe(we)}function Oe(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,F(Te,e)),t=Se.current;var n=dp(t,e.type);t!==n&&(F(Ce,e),F(Se,n))}function ke(e){Ce.current===e&&(xe(Se),xe(Ce)),Te.current===e&&(xe(Te),sh._currentValue=_e)}var Ae,je;function Me(e){if(Ae===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ae=t&&t[1]||``,je=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ne=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Me(n):``}function Fe(e,t){switch(e.tag){case 26:case 27:case 5:return Me(e.type);case 16:return Me(`Lazy`);case 13:return e.child!==t&&t!==null?Me(`Suspense Fallback`):Me(`Suspense`);case 19:return Me(`SuspenseList`);case 0:case 15:return Pe(e.type,!1);case 11:return Pe(e.type.render,!1);case 1:return Pe(e.type,!0);case 31:return Me(`Activity`);case 30:return Me(`ViewTransition`);default:return``}}function Ie(e){try{var t=``,n=null;do t+=Fe(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Le=Object.prototype.hasOwnProperty,Re=n.unstable_scheduleCallback,ze=n.unstable_cancelCallback,Be=n.unstable_shouldYield,Ve=n.unstable_requestPaint,He=n.unstable_now,Ue=n.unstable_getCurrentPriorityLevel,Ge=n.unstable_ImmediatePriority,Ke=n.unstable_UserBlockingPriority,qe=n.unstable_NormalPriority,Je=n.unstable_LowPriority,Ye=n.unstable_IdlePriority,Xe=n.log,I=n.unstable_setDisableYieldValue,Ze=null,Qe=null;function $e(e){if(typeof Xe==`function`&&I(e),Qe&&typeof Qe.setStrictMode==`function`)try{Qe.setStrictMode(Ze,e)}catch{}}var et=Math.clz32?Math.clz32:rt,tt=Math.log,nt=Math.LN2;function rt(e){return e>>>=0,e===0?32:31-(tt(e)/nt|0)|0}var it=256,at=262144,ot=4194304;function st(e){var t=e&42;if(t!==0)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ct(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=st(n))):i=st(o):i=st(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=st(n))):i=st(o)):i=st(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function lt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ut(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function mt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ht(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=mr),_r=` `,vr=!1;function yr(e,t){switch(e){case`keyup`:return fr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function br(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var xr=!1;function Sr(e,t){switch(e){case`compositionend`:return br(t);case`keypress`:return t.which===32?(vr=!0,_r):null;case`textInput`:return e=t.data,e===_r&&vr?null:e;default:return null}}function Cr(e,t){if(xr)return e===`compositionend`||!pr&&yr(e,t)?(e=Fn(),Pn=Nn=Mn=null,xr=!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:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Gr(n)}}function qr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Wr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Yr(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`)}var Xr=kn&&`documentMode`in document&&11>=document.documentMode,Zr=null,Qr=null,$r=null,ei=!1;function ti(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ei||Zr==null||Zr!==Wr(r)||(r=Zr,`selectionStart`in r&&Yr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),$r&&Ur($r,r)||($r=r,r=Jf(Qr,`onSelect`),0>=o,i-=o,Zi=1<<32-et(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),V&&Qi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),V&&Qi(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return V&&Qi(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),V&&Qi(i,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===A&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case O:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===A){if(r.tag===7){n(e,r.sibling),c=i(r,o.props.children),so(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===oe&&eo(l)===r.type){n(e,r.sibling),c=i(r,o.props),so(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===A?(c=Ri(o.props.children,e.mode,c,o.key),so(c,o),c.return=e,e=c):(c=Li(o.type,o.key,o.props,null,e.mode,c),so(c,o),c.return=e,e=c)}return s(e);case k:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=i(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Vi(o,e.mode,c),c.return=e,e=c}return s(e);case oe:return o=eo(o),_(e,r,o,c)}if(ge(o))return h(e,r,o,c);if(pe(o)){if(l=pe(o),typeof l!=`function`)throw Error(a(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,oo(o),c);if(o.$$typeof===M)return _(e,r,Ta(e,o),c);co(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,o),c.return=e,e=c):(n(e,r),c=zi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ao=0;var i=_(e,t,n,r);return io=null,i}catch(t){if(t===Ja||t===Xa)throw t;var a=Ni(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var uo=lo(!0),fo=lo(!1),po=!1;function mo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ho(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function go(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function _o(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ai(e),ki(e,null,n),t}return Ei(e,r,t,n),Ai(e)}function vo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,_t(e,n)}}function yo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var bo=!1;function xo(){if(bo){var e=za;if(e!==null)throw e}}function So(e,t,n,r){bo=!1;var i=e.updateQueue;po=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===Ra&&(bo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=E({},d,f);break a;case 2:po=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),od|=o,e.lanes=o,e.memoizedState=d}}function Co(e,t){if(typeof e!=`function`)throw Error(a(191,e));e.call(t)}function wo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=N.T,s={};s.types=o===null?null:o.types,N.T=s,uc(e,!1,t,n);try{var c=i(),l=N.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?lc(e,t,Ha(c,r),jd(e)):lc(e,t,r,jd(e))}catch(n){lc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{P.p=a,o!==null&&s.types!==null&&(o.types=s.types),N.T=o}}function $s(){}function ec(e,t,n,r){if(e.tag!==5)throw Error(a(476));var i=tc(e).queue;Qs(e,i,t,_e,n===null?$s:function(){return nc(e),n(r)})}function tc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:_e,baseState:_e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ds,lastRenderedState:_e},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ds,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function nc(e){var t=tc(e);t.next===null&&(t=e.alternate.memoizedState),lc(e,t.next.queue,{},jd())}function rc(){return wa(sh)}function ic(){return os().memoizedState}function ac(){return os().memoizedState}function oc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=go(n);var r=_o(t,e,n);r!==null&&(Pd(r,t,n),vo(r,t,n)),t={cache:ja()},e.payload=t;return}t=t.return}}function sc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},dc(e)?fc(t,n):(n=Di(e,t,n,r),n!==null&&(Pd(n,e,r),pc(n,t,r)))}function cc(e,t,n){lc(e,t,n,jd())}function lc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(dc(e))fc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Hr(s,o))return Ei(e,t,i,0),q===null&&Ti(),!1}catch{}if(n=Di(e,t,i,r),n!==null)return Pd(n,e,r),pc(n,t,r),!0}return!1}function uc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},dc(e)){if(t)throw Error(a(479))}else t=Di(e,n,r,2),t!==null&&Pd(t,e,2)}function dc(e){var t=e.alternate;return e===H||t!==null&&t===H}function fc(e,t){Wo=Uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function pc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,_t(e,n)}}var mc={readContext:wa,use:ls,useCallback:Xo,useContext:Xo,useEffect:Xo,useImperativeHandle:Xo,useLayoutEffect:Xo,useInsertionEffect:Xo,useMemo:Xo,useReducer:Xo,useRef:Xo,useState:Xo,useDebugValue:Xo,useDeferredValue:Xo,useTransition:Xo,useSyncExternalStore:Xo,useId:Xo,useHostTransitionStatus:Xo,useFormState:Xo,useActionState:Xo,useOptimistic:Xo,useMemoCache:Xo,useCacheRefresh:Xo,useEffectEvent:Xo},hc={readContext:wa,use:ls,useCallback:function(e,t){return as().memoizedState=[e,t===void 0?null:t],e},useContext:wa,useEffect:zs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ls(4194308,4,Gs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ls(4194308,4,e,t)},useInsertionEffect:function(e,t){Ls(4,2,e,t)},useMemo:function(e,t){var n=as();t=t===void 0?null:t;var r=e();if(Go){$e(!0);try{e()}finally{$e(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=as();if(n!==void 0){var i=n(t);if(Go){$e(!0);try{n(t)}finally{$e(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=sc.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var t=as();return e={current:e},t.memoizedState=e},useState:function(e){e=xs(e);var t=e.queue,n=cc.bind(null,H,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:qs,useDeferredValue:function(e,t){return Xs(as(),e,t)},useTransition:function(){var e=xs(!1);return e=Qs.bind(null,H,e.queue,!0,!1),as().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=H,i=as();if(V){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),q===null)throw Error(a(349));Y&127||gs(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,zs(vs.bind(null,r,o,e),[e]),r.flags|=2048,Fs(9,{destroy:void 0},_s.bind(null,r,o,n,t),null),n},useId:function(){var e=as(),t=q.identifierPrefix;if(V){var n=z,r=Zi;n=(r&~(1<<32-et(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Ko++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(i,{is:r.is}):s.createElement(i)}}o[wt]=t,o[Tt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&pl(t)}}return W(t),t.subtreeFlags&=-33554433,ml(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&pl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(a(166));if(e=we.current,ua(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=ra,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[wt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||sa(t,!0)}else e=lp(e).createTextNode(r),e[wt]=t,t.stateNode=e}return W(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=ua(t),n!==null){if(e===null){if(!r)throw Error(a(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(a(557));e[wt]=t}else da(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else n=fa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Io(t),t):(Io(t),null);if(t.flags&128)throw Error(a(558))}return W(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=ua(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(a(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(a(317));i[wt]=t}else da(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),i=!1}else i=fa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Io(t),t):(Io(t),null)}return Io(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),gl(t,t.updateQueue),W(t),null);case 4:return De(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,W(t),null;case 10:return va(t.type),W(t),null;case 19:if(zo(t),r=t.memoizedState,r===null)return W(t),null;if(i=!!(t.flags&128),o=r.rendering,o===null){if(i)_l(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Bo(e),o!==null){for(t.flags|=128,_l(r,!1),e=o.updateQueue,t.updateQueue=e,gl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ii(n,e),n=n.sibling;return Ro(t,Lo.current&1|2),V&&Qi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&He()>gd&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}}else{if(!i){if(e=Bo(o),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,gl(t,e),_l(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!V)return W(t),null}else 2*He()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=He(),e.sibling=null,o=Lo.current,o=i?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||V?Ro(t,o):(n=o,F(Ao,t),F(Lo,n),jo===null&&(jo=t)),V&&Qi(t,r.treeForkCount),e}return W(t),null;case 22:case 23:return Io(t),ko(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),n=t.updateQueue,n!==null&&gl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&xe(Wa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),va(Aa),W(t),null;case 25:return null;case 30:return t.flags|=33554432,W(t),null}throw Error(a(156,t.tag))}function yl(e,t){switch(ta(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return va(Aa),De(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ke(t),null;case 31:if(t.memoizedState!==null){if(Io(t),t.alternate===null)throw Error(a(340));da()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Io(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));da()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return zo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return De(),null;case 10:return va(t.type),null;case 22:case 23:return Io(t),ko(),e!==null&&xe(Wa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return va(Aa),null;case 25:return null;default:return null}}function bl(e,t){switch(ta(t),t.tag){case 3:va(Aa),De();break;case 26:case 27:case 5:ke(t);break;case 4:De();break;case 31:t.memoizedState!==null&&Io(t);break;case 13:Io(t);break;case 19:zo(t);break;case 10:va(t.type);break;case 22:case 23:Io(t),ko(),e!==null&&xe(Wa);break;case 24:va(Aa)}}function xl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Sl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Cl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{wo(t,n)}catch(t){Z(e,e.return,t)}}}function wl(e,t,n){n.props=Sc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Tl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=vi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);m(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function El(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Dl(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[wt]=e,Rt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,i).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Kr(s,h),v=Kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,N.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,K&6)throw Error(a(331));var c=K;if(K|=4,Yu(o.current),Vu(o,o.current,s,n),K=c,Df(0,!1),Qe&&typeof Qe.onPostCommitFiberRoot==`function`)try{Qe.onPostCommitFiberRoot(Ze,o)}catch{}return!0}finally{P.p=i,N.T=r,uf(e,t)}}function pf(e,t,n){t=Ui(n,t),t=Oc(e.stateNode,t,2),e=_o(e,t,2),e!==null&&(mt(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Ui(n,e),n=kc(2),r=_o(t,n,2),r!==null&&(Ac(n,r,t,e),mt(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $u;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>He()-md?K&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=ft()),e=Oi(e,t),e!==null&&(mt(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(a(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Re(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-et(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=ct(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||lt(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=He(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=an(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Rt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+an(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+an(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+an(n.imageSizes)+`"]`)):i+=`[href="`+an(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=E({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Mt]=!0,o.onload=o.onerror=function(){zt(o)}),Rt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+an(r)+`"][href="`+an(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=E({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Rt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Lt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=E({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Rt(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=E({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=E({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var i=(i=we.current)?bm(i):null;if(!i)throw Error(a(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=Lt(i).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=Lt(i).hoistableStyles,s=o.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=i.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(i,e,o,s.state))),t&&r===null)throw Error(a(528,``));return s}if(t&&r!==null)throw Error(a(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=Lt(i).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(a(444,e))}}function Pm(e){return`href="`+an(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return E({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Mt]){r.loading=1;return}}else t=e.createElement(`link`),t[Mt]=!0,t.onload=t.onerror=zt.bind(null,t),np(t,`link`,n),Rt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+an(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+an(n.href)+`"]`);if(r)return t.instance=r,Rt(r),r;var i=E({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Rt(r),np(r,`style`,i),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Pm(n.href);var o=e.querySelector(Fm(i));if(o)return t.state.loading|=4,t.instance=o,Rt(o),o;r=Im(n),(i=vm.get(i))&&Hm(r,i),o=(e.ownerDocument||e).createElement(`link`),Rt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(i=e.querySelector(zm(o)))?(t.instance=i,Rt(i),i):(r=n,(i=vm.get(o))&&(r=E({},n),Um(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),Rt(i),np(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(a(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Rt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Rt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Ge()})),qe=class extends re{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new te({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=Je(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=Je(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=Je(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=Je(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){ge.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>_(t,e))}findAll(e={}){return this.getAll().filter(t=>_(e,t))}notify(e){ge.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return ge.batch(()=>Promise.all(e.map(e=>e.continue().catch(P))))}};function Je(e){return e.options.scope?.id}var Ye=class extends re{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??O(r,t),a=this.get(i);return a||(a=new C({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){this.#e.get(e.queryHash)===e&&(e.destroy(),this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){ge.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>de(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>de(e,t)):t}notify(e){ge.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){ge.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){ge.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},Xe=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new Ye,this.#t=e.mutationCache||new qe,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=w.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=T.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(N(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=ne(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return ge.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;ge.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return ge.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=ge.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(P).catch(P)}invalidateQueries(e,t={}){return ge.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=ge.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(P)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(P)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(N(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(N(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(P).catch(P)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(P).catch(P)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return T.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(ae(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{he(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(ae(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{he(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=O(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===pe&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},I=t(e(),1),Ze=I.use,Qe=I.useLayoutEffect;function $e(e){return e.replace(/\/{2,}/g,`/`)}function et(e){return e===`/`?e:e.replace(/^\/+/,``)}function tt(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/+$/,``):e}function nt(e){return tt(et(e))}function rt(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function it(e,t,n=`never`,r){if(t.includes(`//`)&&(t=$e(t)),t.startsWith(`/`))return t.length===1||n===`preserve`?t:n===`always`?t.endsWith(`/`)?t:`${t}/`:t.endsWith(`/`)?t.slice(0,-1):t;let i=t===`.`,a;if(r){a=i?e:e+`\0`+t;let n=r.get(a);if(n)return n}let o;if(i)o=e.split(`/`);else{for(e.includes(`//`)&&(e=$e(e)),o=e.split(`/`);o.length>1&&we(o)===``;)o.pop();let n=t.split(`/`);for(let e=0,t=n.length;e1?o.pop():o=[``]:r===`.`||o.push(r)}}o.length>1&&(we(o)===``?n===`never`&&o.pop():n===`always`&&o.push(``));let s=o.join(`/`),c=(i?$e(s):s)||`/`;return a&&r&&r.set(a,c),c}function at(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=new RegExp([...t.keys()].join(`|`).replace(/[.*()]/g,`\\$&`),`g`);return e=>e.replace(n,e=>t.get(e)??e)}function ot(e){return e==null||e===``}function st(e,t,n){if(typeof t!=`string`)return``+(t??void 0);let r=e===`_splat`;if(r&&(!t||/^[a-zA-Z0-9\-._~!/]*$/.test(t)))return t;let i=encodeURIComponent(t);return r&&(i=i.replaceAll(`%2F`,`/`)),n?n(i):i}function ct(e,t,n,r,i){let a=e.endsWith(`/`)?`/`:``,o=``;for(let e of t){if(typeof e==`string`){o+=e;continue}let[t,s,c,l]=e,u=t===2,d=u&&l!==void 0?l+a:l,f=n[s];if(t!==3||f!=null){if(i&&(i[s]=f,u&&(i[`*`]=f)),u&&ot(f)){if(c===`/`&&!d)continue;f=``}o+=c+st(s,f,r)+(d||``)}}return o+a||`/`}function lt(e){return e?.isNotFound===!0}function ut(){try{return sessionStorage}catch{return}}var dt=`tsr-scroll-restoration-v1_3`,ft=ut();function pt(){try{return JSON.parse(ft?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function mt(){try{ft?.setItem(dt,JSON.stringify(ht))}catch{}}var ht=pt(),gt=`data-scroll-restoration-id`,_t=e=>e.state.__TSR_key||e.href;function vt(e){let t=e.getAttribute(gt);if(t)return`[${gt}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var yt=!1,bt=`window`;function xt(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function St(e){let t=new Set;for(let n of e){if(n===bt)continue;let e=xt(n);e&&t.add(e)}return t}function Ct(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||_t,a=new Set,o=e=>{let t=ht[e]||={};for(let e of a)e===document?t[bt]={scrollX,scrollY}:e.isConnected&&(t[vt(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,yt=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{yt||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),mt()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=ht[d];if(e){let t=ht[u];for(let n in e){if(n===bt){if(s)continue}else{let e=xt(n);if(!e||s&&o&&(l??=St(o),l.has(e)))continue}t||=ht[u]={},t[n]??=e[n]}}}yt=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=St(o));let t=e&&i&&c,s=r.restoring?ht[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===bt){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=xt(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{yt=!1}}))}function wt(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function Tt(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function Et(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Tt(r):Array.isArray(t)?t.push(Tt(r)):n[e]=[t,Tt(r)]}return n}var Dt=/^(?:\s|["[{\d-]|fa|nu|tr)/,Ot=At(JSON.parse),kt=jt(JSON.stringify,JSON.parse);function At(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=Et(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!Dt.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function jt(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!Dt.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=wt(e,r);return t?`?${t}`:``}}var Mt=`__root__`;function Nt(e){e.statusCode=e.statusCode||e.code||307;let t=new Headers(e.headers);e.href&&t.get(`Location`)===null&&t.set(`Location`,e.href);let n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}function Pt(e){return e instanceof Response&&!!e.options}function Ft(e){let t=new Map,n,r;return{get(e){let n=t.get(e);if(n)return n.visited=!0,n.value},set(i,a){let o=t.get(i);if(o){o.value=a;return}if(t.size>=e){let e=n?.next().value;for(;!e||e.visited;)e?e.visited=!1:n=t.values(),e=n.next().value;e===r&&(n=void 0),t.delete(e.key)}let s={key:i,value:a,visited:!1};r=s,t.set(i,s)},clear(){t.clear(),n=void 0,r=void 0}}}var It=4,Lt=5;function Rt(e){let t=e.names;if(t)return t;let n=[];for(let t of e)typeof t!=`string`&&n.push(t[1]);return e.names=n}function zt(e,t,n){let r=e.substring(t,n);if(r.charCodeAt(0)===36)return r.length===1?[2,`_splat`,``,void 0]:[1,r.substring(1),``,``];let i=r.indexOf(`{`);if(i>=0){let a=r.indexOf(`}`,i),o=r.charCodeAt(i+1)===45,s=i+(o?3:2);if(a>=0&&r.charCodeAt(s-1)===36&&(!o||s!e.parse&&e.caseSensitive===_&&e.prefix===h&&e.suffix===g);if(y)c=y;else{let e=Ht(r,t,_,h,g);c=e,v.push(e),v.length===2&&i?.push(v)}}r=c}p&&m=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!r||!_&&(n.caseSensitive?v:y??=v.toLowerCase()).startsWith(r)){if(a){if(_)continue;let e=t.slice(u).join(`/`),i=e.slice(-a.length);if((n.caseSensitive?i:i.toLowerCase())!==a||e.length-a.length=0;t--){let n=i.optional[t];s.push({node:n,index:u,skipped:e,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}if(!_)for(let e=i.optional.length-1;e>=0;e--){let t=i.optional[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.pathless[e];s.push({node:t,index:u,skipped:d,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===It)>(e.node.kind===It)||t.node.kind===It==(e.node.kind===It)&&t.node.depth>e.node.depth)))}function nn(e,t,n){let r=nt(e),i=`/${r}`,a=t?i:i.toLowerCase(),o=`${a}/`,s={input:({url:e})=>{let n=t?e.pathname:e.pathname.toLowerCase();return n===a?e.pathname=`/`:n.startsWith(o)&&(e.pathname=e.pathname.slice(i.length)),e},output:({url:e})=>(e.pathname=$e(`/${r}${e.pathname}`),e)};return n?{input:({url:e})=>rn(n,s.input({url:e})),output:({url:e})=>s.output({url:an(n,e)})}:s}function rn(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function an(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function on(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),d=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function f(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let p={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:d,getMatchStore:f,setMatches:m};function m(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{xe(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=f(t.routeId);e.get()!==t&&e.set(t)}})}return p}var sn=`__TSR_index`,cn=`popstate`,ln=`beforeunload`,un=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function dn(e){let t=un.exec(e);return t?`/`+e.slice(t[0].length):e}function fn(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>` +\r`.includes(e)?``:encodeURIComponent(e))),dn(e)}function pn(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=gn(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[sn];i=mn(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[sn];i=mn(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[sn]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function mn(e,t){let n=_n();return{...t,key:n,__TSR_key:n,[sn]:e}}function hn(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>fn(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>gn(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=_n();t.history.replaceState({[sn]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=gn(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[sn]-l.state[sn],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=pn({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(ln,x,{capture:!0}),t.removeEventListener(cn,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(ln,x,{capture:!0}),t.addEventListener(cn,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function gn(e,t){let n=fn(e),r=n.indexOf(`#`),i=n.indexOf(`?`);if(!t){let e=_n();t={[sn]:0,key:e,__TSR_key:e}}return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t}}function _n(){return(Math.random()+1).toString(36).substring(7)}function vn(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function yn(e){return e.pathname+e.search+e.hash}function bn(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function xn(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function Sn({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function Cn(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function wn(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var Tn=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options;this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:hn()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`;let n=this.options.basepath??`/`,r=this.options.rewrite,i=this.basepath!==n||t?.rewrite!==r||t?.caseSensitive!==this.options.caseSensitive;if(i&&(this.basepath=n,this.rewrite=n!==`/`&&nt(n)?nn(n,this.options.caseSensitive,r):r),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;e=this.buildRouteTree(),this.setRoutes(e)}if(this.stores)i&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=on(this.latestLocation,e),Ct(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=qt(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&Ut(this.options.routeMasks,e.processedTree),{...e,resolvePathCache:Ft(1e3)}},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i},a)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),o=this.options.stringifySearch(i);return{href:e+o+r,publicHref:e+o+r,pathname:Ne(e),external:!1,searchStr:o,search:be(t?.search,i),hash:Ne(r.slice(1)),state:Le(t?.state,a)}}let o=rn(this.rewrite,new URL(i,this.origin)),s=this.options.parseSearch(o.search),c=this.options.stringifySearch(s);return o.search=c,{href:o.href.replace(o.origin,``),publicHref:i,pathname:Ne(dn(o.pathname)),external:!!this.rewrite&&vn(o,this.origin),searchStr:c,search:be(t?.search,s),hash:Ne(o.hash.slice(1)),state:Le(t?.state,a)}},r=n(e,e.state),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i,{...i.state,__tempLocation:void 0,key:r.state.key,__TSR_key:r.state.__TSR_key});return e.maskedLocation=r,e}return r},this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=Kt(tt(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=e=>{{let t=this.staticLocations.get(e);if(t)return t}let t=!1,n=(n={})=>{if(n.href){let e=gn(n.href,{});n={...n,to:rn(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let r=n._fromLocation||this._pendingLocation||this.latestLocation,i,a=()=>(t=!0,r),o=()=>(t=!0,i??=this.matchRoutesLightweight(r)),s=n.to?`${n.to}`:`.`,c=it(s[0]===`/`?``:n.unsafeRelative===`path`?a().pathname:n.from??o()[1],s,this.options.trailingSlash,this.resolvePathCache),l=this.routesByPath[tt(c)],u=c.includes(`$`),d;if(l)d=l._branch??=Yt(l);else if(u)d=[];else{let[e,t,n]=this.getMatchedRoutes(c);d=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(d=[...d,this.options.notFoundRoute])}let f=u?l?._interpolation??Bt(!1,{fullPath:c},0):void 0,p;for(let e of d){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){let e=o()[3];if(p??=An(n.params,e),!Ce(p))break;p===e&&(p=Object.assign(Ae(),p));try{Object.assign(p,t(p))}catch{}}}p??=An(n.params,jn(n.params,f)?o()[3]:Mn);let m=e.leaveParams?c:dn(Ne(f?ct(c,f,p,this.pathParamsDecoder):c)),h=Nn(d,e._includeValidateSearch),g=()=>{let t=o()[2];if(e._includeValidateSearch&&this.options.search?.strict){let e={};d.forEach(n=>{if(n.options.validateSearch)try{Object.assign(e,kn(n.options.validateSearch,{...e,...t}))}catch{}}),t=e}return t},_=h.length?Pn(h,g(),n):n.search===!0?g():typeof n.search==`function`?n.search(g()):n.search||Mn,v=this.options.stringifySearch(_),y=n.hash===!0?a().hash:typeof n.hash==`function`?n.hash(a().hash):n.hash||void 0,b=y?`#${y}`:``,x=n.state?n.state===!0?a().state:typeof n.state==`function`?n.state(a().state):n.state:Mn,S=`${m}${v}${b}`,C,w,T=!1;if(this.rewrite){let e=new URL(S,this.origin),t=e.origin,n=an(this.rewrite,e);C=yn(e),vn(n,t)?(w=n.href,T=!0):w=dn(yn(n))}else C=De(S),w=C;return{publicHref:w,href:C,pathname:m,search:_,searchStr:v,state:x,hash:y??``,external:T,unmaskOnReload:n.unmaskOnReload}},r=n(e);if(e.mask)r.maskedLocation=n({from:e.from,...e.mask});else if(this.options.routeMasks){let t=Wt(r.pathname,this.processedTree);if(t){let i=Object.assign(Ae(),t.rawParams),{from:a,params:o,...s}=t.route,c=An(o,i);r.maskedLocation=n({from:e.from,...s,params:c})}}return!t&&e._fromLocation&&!r.maskedLocation&&this.staticLocations.set(e,r),r},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return En(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=tt(this.latestLocation.href)===tt(n.href)&&F(Sn(n.state),Sn(this.latestLocation.state)),o=this._commitPromise,s,c=new Promise(e=>{s=e});if(c.resolve=()=>{s(),o?.resolve()},this._commitPromise=c,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state={...o.state,__hashScrollIntoViewOptions:a??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?Se(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return En(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await Er(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(xn(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set,a=e=>{(!n||n(e))&&i.add(e.id)};t.forEach(a),this._cache.forEach(a),r?.forEach(e=>e.forEach(a)),this._tx?.[3].forEach(a);let o=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),o.push(e));let s=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&bn(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(s);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of o)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(Ie.test(n)||(r=Se(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:vn(e,this.origin)||(n=yn(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=zn,this.preloadRoute=e=>Dr(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?it(e.from||``,e.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=Gt(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!F(o.rawParams,e.params,!0)?!1:t?.includeSearch??!0?F(a.search,r.search,!0)?o.rawParams:!1:o.rawParams},this.getStoreConfig=t,e.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=at(e.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??kt,parseSearch:e.parseSearch??Ot,protocolAllowlist:e.protocolAllowlist??Ee}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(e){Object.assign(this,e),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;let t=this.options.notFoundRoute;t&&(t.init(99999999999),this.routesById[t.id]!==t&&(t._interpolation=Bt(!1,t,0)),this.routesById[t.id]=t)}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,o=!1;(i?i.path!==`/`&&r[`**`]:tt(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:o=!0);let s=o?Fn(this.options.notFoundMode,a):void 0,c=Array(a.length),l=this._committed,u=(e,t)=>{let n=l[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?l.find(t=>t.routeId===e.id):void 0},d;for(let n=0;ntypeof t!=`string`&&!je.call(e,t[1]))}var Mn=Object.freeze({});function Nn(e,t){let n=[];for(let r=0;r{let n=t(i.preSearchFilters?i.preSearchFilters.reduce((e,t)=>t(e),e):e);return i.postSearchFilters?i.postSearchFilters.reduce((e,t)=>t(e),n):n});let a=i.validateSearch;t&&a&&n.push(({search:e,next:t,meta:n})=>{let r=t(e);try{let e=kn(a,r);if(n&&e)for(let t in e)t in r||(n.defaulted||=new Map).set(t,e[t]);return{...r,...e}}catch{}return r})}return n}function Pn(e,t,n){let r=(t,i,a)=>{if(t>=e.length){if(!n.search)return{};if(n.search===!0)return i;let e=Fe(n.search,i);return a&&(a.explicit=e),e}return e[t]({search:i,next:(e,n)=>{if(n){let n=a||{};return{search:r(t+1,e,n),meta:n}}return r(t+1,e,a)},meta:a})};return r(0,t)}function Fn(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return Mt}function In(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Ln(e,t){return e.options[t]?.preload?.()}function Rn(e,t){let n=Ln(e,`component`),r=Ln(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function zn(e,t,n){let r=()=>t===!1?void 0:t?Ln(e,t):Rn(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function Bn(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function Jn(e,t){return e.routesById[t.routeId]}function Yn(e,t,n){return Pt(e)?[Wn,e]:lt(e)?(e.routeId||=n,[Un,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[Hn,e]):[Vn,e]}function Xn(e,t){let n=Yn(t,!0,e.id);if(n[0]!==Hn)return n;try{e.options.onError?.(n[1])}catch(t){n=Yn(t,!0,e.id)}return n}function Zn(e,t,n,r,i){return i[0].signal.aborted?Gn:pr(e,t,n,Xn(n,r),i)}async function Qn(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;ie.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return er(e,r),[i,Zn(e,t,u,a,n)]}if(c.aborted)return[i,Gn];let p=r.paramsError??r.searchError;if(p!==void 0)return er(e,r),[i,Zn(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{rr(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?qn(a,c):a);if(c.aborted)return[i,Gn];let s=pr(e,t,u,Yn(o,!1,u.id),n);if(s[0]!==Vn)return er(e,r),[i,s];r.context={...r.context,...o}}catch(a){return er(e,r),[i,Zn(e,t,u,a,n)]}finally{r.status=h,rr(e,r,!1,n[0])}}i()}function $n(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function er(e,t){let n=t._flight;t._flight=void 0,$n(e,t,n)?.abort()}function tr(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=$n(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function nr(e){for(let t of e){let e=t._flight;e&&e[2]++}}function rr(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function ir(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function ar(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return Gn;if(!i)return[Vn,void 0];let l=n._flight;rr(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(ir(e,t,n,r,s,a,!!o[3]))).then(e=>Yn(e,!1,r.id),e=>Yn(e,!0,r.id)).then(t=>(t[0]!==Vn&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===Hn&&l[2]?Xn(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],pr(e,t,r,await qn(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return er(e,n),Gn}finally{rr(e,n,!1,s)}}function or(e,t,n){t[0]!==Wn&&(e.status=`success`,e.error=void 0,t[0]===Vn?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function sr(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&er(e,r)}function cr(e,t){return t[0]===Hn||t[0]===Un?{...e,status:t[0]===Hn?`error`:`notFound`,error:t[1],_flight:void 0}:e}function lr(e,t,n,r,i,a,o){let s=t[1][n],c=Jn(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(ir(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=Gn)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,er(e,s),p=Zn(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,$n(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?ar(e,t,s,c,g,i,a).then(t=>(or(s,t,l),t[0]===Vn&&(m&&!a[0].signal.aborted&&sr(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[Vn,s.loaderData]),T=(async()=>{try{let e=zn(c,void 0,C);e&&await qn(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,Zn(e,t,c,r,a)]}let r=await w;x&&r[0]===Vn&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>cr(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let D=ar(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,or(E,e,!1),e));return(t[2]??=[]).push([n,D,T,E]),D.then(e=>cr(E,e))}async function ur(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=Jn(e,t[n]);try{let e=zn(i,!1);e&&await qn(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function dr(e,t){t[2]&&=(tr(e,t[2].map(e=>e[3])),void 0)}async function fr(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=Wn)throw[a,t];!i&&t[0]!==Vn&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===Wn)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function pr(e,t,n,r,i,a){for(;r[0]===Wn;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[Wn,t]:[Wn,t,a]}return[Wn,o,n]}catch(e){r=a?[Hn,e]:Xn(n,e),a=!0}}return r}async function mr(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Un?ur(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=Wn)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==Vn&&t[0]=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=Wn){let n=s[1];if(n[0]!==Wn||n[1].options.reloadDocument||n[2])return dr(e,t),n;c=!0,s=[0,[Hn,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===Hn?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=Jn(e,u);try{await qn(i?Promise.resolve().then(()=>zn(m,l===Hn?`errorComponent`:`notFoundComponent`)):Promise.all([zn(m),zn(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return dr(e,t),Gn}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),dr(e,t),tr(e,o),p()):u.status=`success`}return t}async function hr(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;te._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await ur(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l{for(let t=d;t=Wn&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=mr(e,i,u,r[0],fr(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=fr(i[2],void 0,void 0,h.then(e=>Kn(e)?0:Bn(n).length,()=>0))),o=await h}catch(t){if(dr(e,i),t===a&&a.aborted)return Gn;throw t}return Kn(o)?o:hr(e,o,a,r[6]===n.length?r[6]:0)}function _r(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a0){i[3]=setTimeout(()=>_r(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function vr(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function yr(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!Bn(t[3]).some(e=>e.id===n[1]))return;let i;try{await qn(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function br(e,t){e._committed=t,e.stores.setMatches(t)}function xr(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=Bn(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=Cn(n);br(e,n),tr(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),wn(e,i,n,a,l,t)}async function Sr(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function Cr(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function wr(e,t,n,r,i){let a=n.map(e=>({...e}));nr(a);for(let t of r)er(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await mr(e,o,r,t[0],i)}catch(t){throw tr(e,a),t}if(Kn(s)){tr(e,a),s[0]===Wn&&e._tx===t&&e._committed===n&&await Cr(e,t,s);return}if(await hr(e,s,t[0].signal),e._tx!==t||e._committed!==n){tr(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),er(e,n))}br(e,a),tr(e,n,a)}async function Tr(e,t,n,r,i,a){let o=await gr(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(Kn(o)){let n=o[0]===Wn&&e._tx===t;if((!n||o[1].options.reloadDocument)&&vr(e,t),tr(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){vr(e,t);return}await Cr(e,t,o);return}let s=o[1];if(e._tx===t&&await yr(e,t),e._tx!==t){vr(e,t),tr(e,s),dr(e,o);return}let c=t[2],l=xn(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await yr(e,t),e._tx!==t){vr(e,t),tr(e,s),dr(e,o);return}let n=await e.startTransition(()=>{vr(e,t),xr(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){dr(e,o);return}u?.length&&wr(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function Er(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=xn(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await Sr(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});nr(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){tr(e,m),await Sr(e,n);return}e._preflight=void 0;let g,_=()=>Tr(e,y,f,()=>_r(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>Sr(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&rr(e,t,!1)}n[0].abort(),tr(e,n[3],y[3],!0)}if(e._tx!==y){tr(e,y[3]),y[3]=[],g?.(),await Sr(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&_r(e,y),g?.(_()),await y[5]}async function Dr(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),nr(a),o=(e._preloads??=new Map).set(i,a),s=await gr(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),tr(e,a)),i.abort()}if(!Kn(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){lt(e)||console.error(e);return}}}var Or=`Error preloading route! ☝️`,kr=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{this.originalIndex=e,this._branch=void 0;let t=this.options,n=!t?.path&&!t?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=Mt:this.parentRoute||Re();let r=n?Mt:t?.path;r&&r!==`/`&&(r=et(r));let i=t?.id||r,a=n?Mt:$e((this.parentRoute.id===`__root__`?``:this.parentRoute.id)+`/`+(i??``));r===`__root__`&&(r=`/`);let o=a===`__root__`?`/`:r===void 0?this.parentRoute.fullPath:$e(this.parentRoute.fullPath+`/`+r);this._path=r,this._id=a,this._fullPath=o,this._to=tt(o)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e==`object`&&e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>Nt({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!e?.getParentRoute,e?.id&&e?.path)throw Error(`Route cannot have both an 'id' and a 'path' option.`)}},Ar=class extends kr{constructor(e){super(e)}},R=n(),jr=class extends I.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?I.createElement(this.props.errorComponent??Mr,{error:e[0],reset:this.reset}):this.props.children}};function Mr({error:e}){let[t,n]=I.useState(!1);return(0,R.jsxs)(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[(0,R.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[(0,R.jsx)(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),(0,R.jsx)(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),(0,R.jsx)(`div`,{style:{height:`.25rem`}}),t?(0,R.jsx)(`div`,{children:(0,R.jsx)(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?(0,R.jsx)(`code`,{children:e.message}):null})}):null]})}var Nr=()=>!0,Pr=()=>!1;function Fr({children:e,fallback:t=null}){return(0,R.jsx)(I.Fragment,{children:Ir()?e:t})}function Ir(e=!0){return I.useSyncExternalStore(Lr,Nr,e?Pr:Nr)}function Lr(){return()=>{}}function Rr({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function zr(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var Br=[],Vr=0,{link:Hr,unlink:Ur,propagate:Wr,checkDirty:Gr,shallowPropagate:Kr}=Rr({update(e){return e._update()},notify(e){Br[Jr++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Qr(e))}}),qr=0,Jr=0,Yr,Xr=0;function Zr(e){try{++Xr,e()}finally{--Xr||$r()}}function Qr(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Ur(n,e)}function $r(){if(!(Xr>0)){for(;qr{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Yr,o=t?.compare??Object.is;if(n)Yr=i,++Vr,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Yr=a,n&&(i.flags&=-5),Qr(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&Gr(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Kr(e)}}else e&32&&(i.flags=e&-33);return Yr!==void 0&&Hr(i,Yr,Vr),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Wr(e),Kr(e),$r())}},i}function ti(e){let t=()=>{let t=Yr;Yr=n,++Vr,n.depsTail=void 0,n.flags=6;try{return e()}finally{Yr=t,n.flags&=-5,Qr(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&Gr(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Qr(this)}};return t(),n}function ni(e){return Be({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.loaderData):t.loaderData})}function ri(e){let{select:t,...n}=e;return Be({...n,select:e=>t?t(e.loaderDeps):e.loaderDeps})}function ii(e){return Be({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:t=>{let n=e.strict===!1?t.params:t._strictParams;return e.select?e.select(n):n}})}function ai(e){return Be({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.search):t.search})}function oi(e){let t=ke();return I.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function si(e){let t=ke(),n=oi(),r=I.useRef(null);return Qe(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function ci(e){return Be({...e,select:t=>e.select?e.select(t.context):t.context})}function li(...e){let t=I.useRef(e),n=t.current;return e.forEach((e,t)=>{F(n[t],e,!1,!0)||(n[t]=e)}),t.current}function ui(e,t){e.preloadRoute(t).catch(e=>{console.warn(e),console.warn(Or)})}var di={compare:(e,t)=>e[0]===t[0]&&e[1]===t[1]};function fi(e,t){let n=typeof e==`string`&&Se(e);if(n)return t.has(n)?e:null}function pi(e,t,n,r,i){let a=rt(e.pathname,r),o=rt(t.pathname,r);return(n?.exact?a!==o:!a.startsWith(o)||a.length!==o.length&&a[o.length]!==`/`)||(n?.includeSearch??!0)&&!F(e.search,t.search,!n?.exact,n?.explicitUndefined)?!1:!n?.includeHash||i&&e.hash===t.hash}function mi(e,t,n){let r=ke(),i=I.useRef(null),a=I.useCallback(e=>{if(i.current=e,typeof t==`function`)return t(e);t&&(t.current=e)},[t]),{activeOptions:o,to:s,preload:c,preloadDelay:l,hashScrollIntoView:u,replace:d,startTransition:f,resetScroll:p,viewTransition:m,ignoreBlocker:h,disabled:g,target:_,onClick:v,onBlur:y,onFocus:b,onMouseEnter:x,onMouseLeave:S,onTouchStart:C}=e,w=Ir(!!o?.includeHash),[T,E,D]=li(e.search,e.params,o),[O,k]=I.useMemo(()=>[e,{...e}],[r,e.from,e._fromLocation,e.hash,e.to,T,E,e.state,e.mask,e.unsafeRelative]),A=I.useCallback(e=>{let t=fi(s,r.protocolAllowlist);if(t!==void 0)return[t??void 0];O._fromLocation||(k._fromLocation=e);let n=r.buildLocation(k),i=Ci(n,r,g);return[i,!g&&(!i||Se(i))?void 0:pi(e,n,D,r.basepath,w)]},[D,g,w,O,k,r,s]),[j,ee]=Pe(r.stores.location,A,di),te=ee===void 0?j:void 0,M=g||j===void 0,ne=I.useRef(!1),re=e.reloadDocument||te||M?!1:c??r.options.defaultPreload,ie=l??r.options.defaultPreloadDelay??0,ae=I.useCallback(e=>{let t=e?.isIntersecting;if(!(t??re===`intent`)){t===!1&&xi(i);return}if(!ie){ui(r,O);return}bi.has(i)||bi.set(i,setTimeout(()=>{bi.delete(i),ui(r,O)},ie))},[r,O,i,re,ie]);I.useEffect(()=>{re===`render`&&!ne.current&&(ne.current=!0,ui(r,O));let e;return re===`viewport`&&i.current&&typeof IntersectionObserver==`function`&&(e=new IntersectionObserver(e=>ae(e.pop()),{rootMargin:`100px`}),e.observe(i.current)),()=>{e?.disconnect(),xi(i)}},[r,O,re,ae,i]);let oe=vi(e,n);if(oe.ref=t?a:i,te)return oe.href=te,oe;let se=e=>{let t=_??e.currentTarget.getAttribute(`target`);!M&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(!t||t===`_self`)&&e.button===0&&(e.preventDefault(),r.navigate({...O,replace:d,resetScroll:p,hashScrollIntoView:u,startTransition:f,viewTransition:m,ignoreBlocker:h}))},ce=()=>{re===`intent`&&ui(r,O)},le=()=>{re===`intent`&&xi(i)};return oe.onClick=Si(v,se),oe.onBlur=Si(y,le),oe.onFocus=Si(b,ae),oe.onMouseEnter=Si(x,ae),oe.onMouseLeave=Si(S,le),oe.onTouchStart=Si(C,ce),yi(oe,e,ee,j,M,n)}var hi={},gi={className:`active`},_i=new Set([`to`,`params`,`search`,`hash`,`state`,`mask`,`from`,`unsafeRelative`,`_fromLocation`,`reloadDocument`,`preload`,`preloadDelay`,`preloadIntentProximity`,`hashScrollIntoView`,`replace`,`startTransition`,`resetScroll`,`viewTransition`,`ignoreBlocker`,`activeProps`,`inactiveProps`,`activeOptions`,`_asChild`]);function vi(e,t){let n={};for(let r in e)_i.has(r)||r===`type`&&t!==void 0||r===`disabled`&&t===`a`||(n[r]=e[r]);return n}function yi(e,t,n,r,i,a){let{activeProps:o,inactiveProps:s,className:c,style:l,target:u}=t,d=Fe(n?o:s,{})??(n?gi:hi);Object.assign(e,d),e.href=r,a!==`a`&&(e.disabled=i),e.target=u;let f=d.style;(l||f)&&(e.style=l&&f?{...l,...f}:l||f);let p=d.className;return(c||p)&&(e.className=c?p?`${c} ${p}`:c:p),i&&(e.role=`link`,e[`aria-disabled`]=!0),n&&(e[`data-status`]=`active`,e[`aria-current`]=`page`),e}var bi=new WeakMap,xi=e=>{clearTimeout(bi.get(e)),bi.delete(e)},Si=(e,t)=>e?n=>n.defaultPrevented||(e(n),n.defaultPrevented||t(n)):t;function Ci(e,t,n){if(n)return;let r=e.maskedLocation??e,i=r.external?r.publicHref:t.history.createHref(r.publicHref)||`/`;if(!r.external&&i===r.publicHref||!Oe(i,t.protocolAllowlist))return i}var wi=I.memo(I.forwardRef((e,t)=>{let n=e._asChild||`a`,r=mi(e,t,n),i=typeof e.children==`function`?e.children({isActive:r[`data-status`]===`active`}):e.children;return I.createElement(n,r,i)}),Ti);function Ti(e,t){let n=0;for(let r in t)if(n++,e[r]!==t[r]&&(!_i.has(r)||!F(e[r],t[r],!1,!0)))return!1;for(let t in e)n--;return n===0}var Ei=class extends kr{constructor(e){super(e),this.useMatch=e=>Be({...e,from:this.id}),this.useRouteContext=e=>ci({...e,from:this.id}),this.useSearch=e=>ai({...e,from:this.id}),this.useParams=e=>ii({...e,from:this.id}),this.useLoaderDeps=e=>ri({...e,from:this.id}),this.useLoaderData=e=>ni({...e,from:this.id}),this.useNavigate=()=>oi({from:this.fullPath}),this.Link=I.forwardRef((e,t)=>(0,R.jsx)(wi,{ref:t,from:this.fullPath,...e}))}};function Di(e){return new Ei(e)}var Oi=class extends Ar{constructor(e){super(e),this.useMatch=e=>Be({...e,from:this.id}),this.useRouteContext=e=>ci({...e,from:this.id}),this.useSearch=e=>ai({...e,from:this.id}),this.useParams=e=>ii({...e,from:this.id}),this.useLoaderDeps=e=>ri({...e,from:this.id}),this.useLoaderData=e=>ni({...e,from:this.id}),this.useNavigate=()=>oi({from:this.fullPath}),this.Link=I.forwardRef((e,t)=>(0,R.jsx)(wi,{ref:t,from:this.fullPath,...e}))}};function ki(e){return new Oi(e)}function Ai(e,t){let n,r,i,a=()=>(n||=(i=void 0,e().then(e=>{n=void 0,o.preload=void 0,r=e[t??`default`]}).catch(e=>{n=void 0,i=e})),n),o=function(e){if(i){if(Te(i)&&typeof sessionStorage<`u`){let e=`tanstack_router_reload:${i.message}`;if(!sessionStorage.getItem(e))throw sessionStorage.setItem(e,`1`),window.location.reload(),new Promise(()=>{})}throw i}if(!r){if(Ze)Ze(a());else throw a()}return I.createElement(r,e)};return o.preload=a,o}function ji(e){let t=ke(),n=`not-found-${Pe(t.stores.location,e=>e.pathname)}-${Pe(t.stores.status)}`;return(0,R.jsx)(jr,{getResetKey:()=>n,onCatch:(t,n)=>{if(lt(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(lt(t))return e.fallback?.(t);throw t},children:e.children})}function Mi(){return(0,R.jsx)(`p`,{children:`Not Found`})}function Ni(e){return(0,R.jsx)(R.Fragment,{children:e.children})}function Pi(e,t,n){return t.options.notFoundComponent?(0,R.jsx)(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?(0,R.jsx)(e.options.defaultNotFoundComponent,{...n}):(0,R.jsx)(Mi,{})}function Fi(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?(0,R.jsx)(n,{}):null}var Ii=(e,t)=>e[0]===t[0]&&e[1]===t[1],Li=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,Ri=I.memo(function({routeId:e}){let t=ke();return(0,R.jsx)(zi,{router:t,match:Pe(t.stores.getMatchStore(e))})});function zi({router:e,match:t}){let n=e.routesById[t.routeId],r=Fi(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=Li(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s))?I.Suspense:Ni,l=i?jr:Ni,u=o?ji:Ni;return(0,R.jsxs)(n.isRoot?n.options.shellComponent??Ni:Ni,{children:[(0,R.jsx)(ze.Provider,{value:t.routeId,children:(0,R.jsx)(c,{fallback:r,children:(0,R.jsx)(l,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(lt(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:(0,R.jsx)(u,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return I.createElement(o,e)},children:s?(0,R.jsx)(Fr,{fallback:r,children:(0,R.jsx)(Bi,{match:t})}):(0,R.jsx)(Bi,{match:t})})})})}),null]})}var Bi=I.memo(function({match:e}){let t=ke(),n=e.routeId,r=t.routesById[n],i=I.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=I.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?(0,R.jsx)(e,{},i):(0,R.jsx)(Vi,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!Li(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return Fi(t,r)}if(e.status===`notFound`)return Pi(t,r,e.error);if(e.status===`error`)throw e.error;return a}),Vi=I.memo(function(){let e=ke(),t=I.useContext(ze),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=Pe(a,e=>[!!e._notFound,e.error],{compare:Ii}),i=Pe(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return Pi(e,e.routesById[t],r);if(!i)return null;let a=(0,R.jsx)(Ri,{routeId:i});return t===`__root__`?(0,R.jsx)(I.Suspense,{fallback:Fi(e),children:a}):a});function Hi(e,t){let n=e[1];e.length=0,n?.(t)}function Ui({t:e}){let t=ke(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Hi(n,!1),n.push(i,a),e(t),I.startTransition(r)}),Qe(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(tt(r.publicHref)!==tt(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...xn(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function Wi(){let e=ke(),t=e.routesById[Mt],n=Fi(e,t),r=e.ssr?Ni:I.Suspense,i=(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Ui,{t:I.useState()[1]}),(0,R.jsx)(r,{fallback:n,children:(0,R.jsx)(Gi,{})})]});return e.options.InnerWrap?(0,R.jsx)(e.options.InnerWrap,{children:i}):i}function Gi(){let e=ke(),t=e._rendered,n=Pe(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;Qe(()=>{t[0]===n&&Hi(t,!0)},[t,n]);let a=i?(0,R.jsx)(Ri,{routeId:i}):null;return(0,R.jsx)(ze.Provider,{value:i,children:e.options.disableGlobalCatchBoundary?a:(0,R.jsx)(jr,{getResetKey:()=>r,onCatch:void 0,children:a})})}var Ki=e=>({createMutableStore:ei,createReadonlyStore:ei,batch:Zr}),qi=e=>new Ji(e),Ji=class extends Tn{constructor(e){super(e,Ki)}};function Yi({router:e,children:t,...n}){Ce(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,R.jsx)(Me.Provider,{value:e,children:t});return e.options.Wrap?(0,R.jsx)(e.options.Wrap,{children:r}):r}function Xi({router:e,...t}){return(0,R.jsx)(Yi,{router:e,...t,children:(0,R.jsx)(Wi,{})})}var Zi=Ke(),z=a();function Qi(e){let t=(0,z.c)(6),{error:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`p`,{className:`text-lg font-semibold text-rot-text`,children:`Diese Ansicht ist abgestürzt`}),t[0]=r):r=t[0];let i=n instanceof Error?n.message:String(n),a;t[1]===i?a=t[2]:(a=(0,R.jsx)(`p`,{className:`text-[15px]`,children:i}),t[1]=i,t[2]=a);let o;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsx)(`button`,{type:`button`,onClick:$i,className:`h-11 rounded-xl border border-rot/40 bg-rot/10 px-5 text-sm font-semibold text-rot-text hover:bg-rot/[0.18]`,children:`Neu laden`}),t[3]=o):o=t[3];let s;return t[4]===a?s=t[5]:(s=(0,R.jsxs)(`div`,{role:`alert`,className:`flex flex-col items-start gap-3 rounded-2xl border border-rot-rand bg-rot-grund p-6 text-rot-text`,children:[r,a,o]}),t[4]=a,t[5]=s),s}function $i(){return window.location.reload()}var ea={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};ea.node;var ta=r(ea),na={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};na.node;var ra=r(na),B={name:`audio-lines`,size:24,node:[[`path`,{d:`M2 10v3`,key:`1fnikh`}],[`path`,{d:`M6 6v11`,key:`11sgs0`}],[`path`,{d:`M10 3v18`,key:`yhl04a`}],[`path`,{d:`M14 8v7`,key:`3a1oy3`}],[`path`,{d:`M18 5v13`,key:`123xd1`}],[`path`,{d:`M22 10v3`,key:`154ddg`}]]};B.node;var V=r(B),ia={name:`bird`,size:24,node:[[`path`,{d:`M16 7h.01`,key:`1kdx03`}],[`path`,{d:`M3.4 18H12a8 8 0 0 0 8-8V7a4 4 0 0 0-7.28-2.3L2 20`,key:`oj1oa8`}],[`path`,{d:`m20 7 2 .5-2 .5`,key:`12nv4d`}],[`path`,{d:`M10 18v3`,key:`1yea0a`}],[`path`,{d:`M14 17.75V21`,key:`1pymcb`}],[`path`,{d:`M7 18a6 6 0 0 0 3.84-10.61`,key:`1npnn0`}]]};ia.node;var aa=r(ia),oa={name:`bot`,size:24,node:[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]};oa.node;var sa=r(oa),ca={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};ca.node;var la=r(ca),ua={name:`brain-circuit`,size:24,node:[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]};ua.node;var da=r(ua),fa={name:`calendar-clock`,size:24,node:[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`path`,{d:`M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338`,key:`7hb8p4`}],[`path`,{d:`M3 9h5.859`,key:`numkqi`}],[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]};fa.node;var pa=r(fa),ma={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};ma.node;var ha=r(ma),ga={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};ga.node;var _a=r(ga),va={name:`clapperboard`,size:24,node:[[`path`,{d:`m12.296 3.464 3.02 3.956`,key:`qash78`}],[`path`,{d:`M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z`,key:`1h7j8b`}],[`path`,{d:`M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`4lm6w1`}],[`path`,{d:`m6.18 5.276 3.1 3.899`,key:`zjj9t3`}]]};va.node;var ya=r(va),ba={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};ba.node;var xa=r(ba),Sa={name:`container`,size:24,node:[[`path`,{d:`M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z`,key:`1t2lqe`}],[`path`,{d:`M10 21.9V14L2.1 9.1`,key:`o7czzq`}],[`path`,{d:`m10 14 11.9-6.9`,key:`zm5e20`}],[`path`,{d:`M14 19.8v-8.1`,key:`159ecu`}],[`path`,{d:`M18 17.5V9.4`,key:`11uown`}]]};Sa.node;var Ca=r(Sa),wa={name:`cpu`,size:24,node:[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]};wa.node;var Ta=r(wa),Ea={name:`database-backup`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 12a9 3 0 0 0 5 2.69`,key:`1ui2ym`}],[`path`,{d:`M21 9.3V5`,key:`6k6cib`}],[`path`,{d:`M3 5v14a9 3 0 0 0 6.47 2.88`,key:`i62tjy`}],[`path`,{d:`M12 12v4h4`,key:`1bxaet`}],[`path`,{d:`M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16`,key:`1f4ei9`}]]};Ea.node;var Da=r(Ea),Oa={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Oa.node;var ka=r(Oa),Aa={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};Aa.node;var ja=r(Aa),Ma={name:`file-code-corner`,size:24,node:[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]],aliases:[`file-code-2`]};Ma.node;var Na=r(Ma),Pa={name:`gauge`,size:24,node:[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]};Pa.node;var Fa=r(Pa),Ia={name:`git-branch`,size:24,node:[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]};Ia.node;var La=r(Ia),Ra={name:`hard-drive`,size:24,node:[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]};Ra.node;var za=r(Ra),Ba={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};Ba.node;var Va=r(Ba),Ha={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};Ha.node;var Ua=r(Ha),Wa={name:`layout-dashboard`,size:24,node:[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]};Wa.node;var Ga=r(Wa),Ka={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};Ka.node;var qa=r(Ka),Ja={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};Ja.node;var Ya=r(Ja),Xa={name:`message-circle-question-mark`,size:24,node:[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`message-circle-question`]};Xa.node;var Za=r(Xa),Qa={name:`mic`,size:24,node:[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]};Qa.node;var $a=r(Qa),eo={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};eo.node;var to=r(eo),no={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};no.node;var ro=r(no),io={name:`rotate-ccw-clock`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]],aliases:[`history`]};io.node;var ao=r(io),oo={name:`route`,size:24,node:[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]};oo.node;var so=r(oo),co={name:`scroll-text`,size:24,node:[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]};co.node;var lo=r(co),uo={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};uo.node;var fo=r(uo),po={name:`server`,size:24,node:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]};po.node;var mo=r(po),ho={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};ho.node;var go=r(ho),_o={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};_o.node;var vo=r(_o),yo={name:`shuffle`,size:24,node:[[`path`,{d:`m18 14 4 4-4 4`,key:`10pe0f`}],[`path`,{d:`m18 2 4 4-4 4`,key:`pucp1d`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`,key:`1ailkh`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`,key:`km57vx`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`,key:`os18l9`}]]};yo.node;var bo=r(yo),xo={name:`smartphone`,size:24,node:[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]};xo.node;var So=r(xo),Co={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};Co.node;var wo=r(Co),To={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};To.node;var Eo=r(To),Do={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};Do.node;var Oo=r(Do);function ko(e){return e?.text?e.zeit?`${e.text} ${y(e.zeit)}`:e.text:null}var Ao={"ki-box":`KI-Box`,"proxmox-host":`Proxmox-Host`,container:`Container`,vm:`VM`};function jo(e){let t=e.id.match(/-(\d+)$/)?.[1],n=Ao[e.art]??e.art;return t?`${n} ${t}`:n}var Mo={"Proxmox-Host":`Proxmox`,"AdGuard Home":`AdGuard`,"PVE Scripts Local":`PVE Scripts`,"Proxmox Backup Server":`PBS`,"Arcane (Docker)":`Arcane`},No=e=>Mo[e.name]??e.name,Po=new Set([`app`,`arcane`]),Fo=e=>e.bausteine.find(e=>Po.has(e.id))??null,Io=e=>e.bausteine.find(e=>!Po.has(e.id))??null;function Lo(e){let t=e.flatMap(e=>e.bausteine.filter(e=>e.zustand===`neu`).map(t=>({ziel:e,baustein:t})));return[...t.filter(e=>e.baustein.aktion),...t.filter(e=>!e.baustein.aktion)]}function Ro(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);return t.some(e=>e.aktion)?0:t.length>0?1:e.bausteine.some(e=>e.zustand===`unbekannt`)?2:3}function zo(e){let t=e.rueckweg_art??Bo(e.rueckweg);return t===`snapshot`?`Snapshot vorher, bei Rot zurück`:t===`sicherung`?`Sicherung vorher, bei Rot zurück`:e.art===`proxmox-host`?`Kein Rückweg, Neustart getrennt`:`Kein automatischer Rückweg`}function Bo(e){let t=(e??``).toLowerCase();return t.startsWith(`snapshot vor`)?`snapshot`:t.startsWith(`sicherung`)?`sicherung`:`keiner`}var Vo=e=>Po.has(e.id),H=e=>e.replace(/^Image vom /,``);function U(e){return Vo(e)&&e.verfuegbar?e.verfuegbar:`${e.kurz||e.verfuegbar||`neu`}${Ho(e)}`}function Ho(e){return e.sicherheit?` · ${e.sicherheit} Sicherheit`:``}function Uo(e){let t=e.platte;return t&&t.gesamt>0?t.belegt/t.gesamt:null}function Wo(e,t){let n=No(e),r=Uo(e);if(e.erreichbar===!1)return{id:e.id,label:n,zustand:`fehler`,wert:`antwortet nicht`};if(r!==null&&r>=.9)return{id:e.id,label:n,zustand:`fehler`,wert:`Platte voll`};if(t)return{id:e.id,label:n,zustand:`info`,wert:`Update läuft`};if(r!==null&&r>=.8)return{id:e.id,label:n,zustand:`warn`,wert:`Platte ${Math.round(r*100)} %`};let i=e.bausteine.filter(e=>e.zustand===`neu`);if(i.length>0){let t=i.find(e=>Po.has(e.id))??i[0];return{id:e.id,label:n,zustand:`info`,wert:Po.has(t.id)&&t.verfuegbar?`→ ${t.verfuegbar}`:U(t)}}let a=Fo(e);return{id:e.id,label:n,zustand:`ok`,wert:a?.installiert?H(a.installiert):`aktuell`}}var Go=e=>`${e} Hinweis${e===1?``:`e`}`;function Ko(e,t,n,r){let i=t.filter(e=>e.zustand!==`stumm`);if(e.wartung?.laeuft)return{art:`info`,oben:`Wartung`,mitte:`Fenster läuft`,unten:`${e.wartung.fenster} · Meldung am Ende`,ziel:`updates`};let a=e.ziele.filter(e=>e.erreichbar===!1);if(a.length>0)return{art:`rot`,oben:`Störung`,mitte:a.length===1?`1 Gerät stumm`:`${a.length} Geräte stumm`,unten:a.map(No).join(`, `),ziel:`geraete`};if(i.some(e=>e.stufe===`rot`))return{art:`rot`,oben:`Störung`,mitte:Go(i.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(!e.ausfuehrer.verbunden)return{art:`gelb`,oben:`Achtung`,mitte:`Ausführer stumm`,unten:`Die Geräte zeigen den letzten Stand`,ziel:null};if(i.length>0)return{art:`gelb`,oben:`Achtung`,mitte:Go(i.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(n>0)return{art:`info`,oben:`Wartung`,mitte:`Update läuft`,unten:`Das Ergebnis kommt als Meldung`,ziel:`updates`};let o=Lo(e.ziele).filter(e=>e.baustein.aktion).length;return o>0?{art:`info`,oben:`Homelab`,mitte:`${o} Update${o===1?``:`s`}`,unten:`Drücken zum Ansehen`,ziel:`updates`}:{art:`ok`,oben:`Homelab`,mitte:`Alles aktuell`,unten:r?`Stand ${r}`:`Keine offenen Updates`,ziel:null}}function qo(e){return e?.match(/vom (\d{2}\.\d{2}\.\d{4})/)?.[1]??null}var Jo=[{id:`box`,name:`KI-Box`},{id:`homelab`,name:`Homelab`}],Yo=[{to:`/`,label:`Übersicht`,Icon:qa,ort:`uebersicht`},{to:`/handy`,label:`Handy-Ansicht`,Icon:So,ort:`uebersicht`},{to:`/box`,label:`Cockpit`,Icon:Fa,ort:`box`},{to:`/box/updates`,label:`Updates`,Icon:ro,ort:`box`,zaehlt:!0},{to:`/box/modelle`,label:`Modelle`,Icon:Ta,ort:`box`},{to:`/box/monitoring`,label:`Monitoring`,Icon:ta,ort:`box`},{to:`/box/dienste`,label:`Dienste und Protokolle`,Icon:lo,ort:`box`},{to:`/homelab`,label:`Cockpit`,Icon:Fa,ort:`homelab`},{to:`/homelab/updates`,label:`Updates`,Icon:ro,ort:`homelab`,zaehlt:!0},{to:`/homelab/snapshots`,label:`Snapshots`,Icon:ao,ort:`homelab`},{to:`/homelab/monitoring`,label:`Monitoring`,Icon:ta,ort:`homelab`},{to:`/homelab/protokoll`,label:`Protokoll`,Icon:lo,ort:`homelab`},{to:`/einstellungen`,label:`Einstellungen`,Icon:go,ort:`system`}],Xo={uebersicht:`Auf einen Blick`,box:`KI-Box`,homelab:`Homelab`,system:`Beide Instanzen`};function Zo(){let e=(0,z.c)(2),t=Ve({select:Qo}).replace(/\/+$/,``)||`/`,n;return e[0]===t?n=e[1]:(n=Yo.find(e=>e.to===t)??Yo[0],e[0]=t,e[1]=n),n}function Qo(e){return e.location.pathname}function $o(){let e=(0,z.c)(19),t=me(),n=ee(),r=b(),i=t.data?.rolle===`homelab`?`homelab`:`box`,a=r===`live`?`online`:r,o=n.data,s=o?o.eingerichtet?o.erreichbar?`online`:`getrennt`:`fehlt`:`verbinde`,c;e[0]!==a||e[1]!==s||e[2]!==i?(c=i===`box`?{box:a,homelab:s}:{box:s,homelab:a},e[0]=a,e[1]=s,e[2]=i,e[3]=c):c=e[3];let l=c,u=fe(),d=oe(l.homelab===`online`),f;e[4]===u.data?.ziele?f=e[5]:(f=u.data?.ziele??[],e[4]=u.data?.ziele,e[5]=f);let p;e[6]===f?p=e[7]:(p=f.reduce(ts,0),e[6]=f,e[7]=p);let m=p,h;e[8]===d.data?.ziele?h=e[9]:(h=Lo(d.data?.ziele??[]).filter(es),e[8]=d.data?.ziele,e[9]=h);let g=h.length,_;e[10]!==m||e[11]!==l.box?(_={verbindung:l.box,updates:m},e[10]=m,e[11]=l.box,e[12]=_):_=e[12];let v;e[13]!==g||e[14]!==l.homelab?(v={verbindung:l.homelab,updates:g},e[13]=g,e[14]=l.homelab,e[15]=v):v=e[15];let y;return e[16]!==_||e[17]!==v?(y={box:_,homelab:v},e[16]=_,e[17]=v,e[18]=y):y=e[18],y}function es(e){return e.baustein.aktion}function ts(e,t){return e+t.bausteine.filter(ns).length}function ns(e){return e.zustand===`neu`&&e.aktion}var rs={erfolg:`border-gruen-rand bg-gruen-grund text-gruen-text`,fehler:`border-rot-rand bg-rot-grund text-rot-text`,info:`border-cyan-rand bg-cyan-grund text-cyan-text`};function is(){let e=(0,z.c)(4),t=v(),n;e[0]===t?n=e[1]:(n=t.map(as),e[0]=t,e[1]=n);let r;return e[2]===n?r=e[3]:(r=(0,R.jsx)(`div`,{"aria-live":`polite`,className:`pointer-events-none fixed right-4 bottom-24 left-4 z-50 flex flex-col items-end gap-2 md:left-auto md:w-[420px] lg:bottom-6`,children:n}),e[2]=n,e[3]=r),r}function as(e){return(0,R.jsxs)(`div`,{role:e.art===`fehler`?`alert`:`status`,className:s(`pointer-events-auto flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-[15px] shadow-lg`,rs[e.art]),children:[(0,R.jsx)(`span`,{className:`min-w-0 flex-1`,children:e.text}),(0,R.jsx)(`button`,{type:`button`,onClick:()=>D(e.id),"aria-label":`Meldung schließen`,className:`-m-2 p-2 opacity-70 hover:opacity-100`,children:(0,R.jsx)(l,{className:`size-4`})})]},e.id)}var os={online:{punkt:`bg-gruen shadow-[0_0_8px_var(--gruen)]`,text:`online`},verbinde:{punkt:`bg-bernstein`,text:`verbinde`},getrennt:{punkt:`bg-rot shadow-[0_0_8px_var(--rot)]`,text:`getrennt`},fehlt:{punkt:`bg-text-3`,text:`nicht eingerichtet`}},ss={uebersicht:`data-[status=active]:from-bernstein/[0.16] before:bg-bernstein before:shadow-[0_0_12px_var(--bernstein)] data-[status=active]:[&>svg]:text-bernstein`,box:`data-[status=active]:from-box/[0.2] before:bg-box before:shadow-[0_0_12px_var(--box)] data-[status=active]:[&>svg]:text-box`,homelab:`data-[status=active]:from-lab/[0.2] before:bg-lab before:shadow-[0_0_12px_var(--lab)] data-[status=active]:[&>svg]:text-lab`,system:`data-[status=active]:from-white/[0.08] before:bg-text-2 data-[status=active]:[&>svg]:text-foreground`},cs={box:{text:`text-box-text`,kachel:`from-box/30 to-box/[0.05] ring-box/35 text-box`,Icon:da},homelab:{text:`text-lab-text`,kachel:`from-lab/30 to-lab/[0.05] ring-lab/35 text-lab`,Icon:mo}},ls=`group relative flex h-10 items-center gap-3 rounded-xl pr-3 pl-3.5 text-[14.5px] text-text-2 transition-colors hover:bg-white/[0.045] hover:text-foreground bg-gradient-to-r to-transparent data-[status=active]:text-foreground before:absolute before:top-2.5 before:bottom-2.5 before:left-0 before:w-[3px] before:rounded-full before:opacity-0 before:transition-opacity data-[status=active]:before:opacity-100`;function us(){let e=(0,z.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsxs)(`span`,{className:`relative shrink-0`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-1 rounded-xl bg-bernstein/35 blur-xl`}),(0,R.jsx)(`img`,{src:`/favicon.svg`,alt:``,width:40,height:40,className:`relative size-10`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,R.jsxs)(`div`,{className:`flex items-center gap-3 px-1.5`,children:[t,(0,R.jsxs)(`span`,{className:`flex flex-col leading-none`,children:[(0,R.jsx)(`span`,{className:`text-[19px] font-semibold tracking-[0.01em]`,children:`Homelab`}),(0,R.jsx)(`span`,{className:`etikett mt-1.5 text-[10.5px] tracking-[0.32em] text-text-3`,children:`Orchestrator`})]})]}),e[1]=n):n=e[1],n}function ds(e){let t=(0,z.c)(16),{s:n,zahl:r,onGewaehlt:i}=e,a=n.to,o=ss[n.ort],c;t[0]===o?c=t[1]:(c=s(ls,o),t[0]=o,t[1]=c);let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l={exact:!0},t[2]=l):l=t[2];let u;t[3]===n.Icon?u=t[4]:(u=(0,R.jsx)(n.Icon,{className:`size-[18px] shrink-0 text-text-3 transition-colors group-hover:text-text-2`,"aria-hidden":!0}),t[3]=n.Icon,t[4]=u);let d;t[5]===n.label?d=t[6]:(d=(0,R.jsx)(`span`,{className:`flex-1`,children:n.label}),t[5]=n.label,t[6]=d);let f;t[7]===r?f=t[8]:(f=!!r&&(0,R.jsxs)(`span`,{className:`ziffern rounded-full bg-cyan/12 px-2 text-[11.5px] leading-5 font-medium text-cyan-text ring-1 ring-cyan/30 ring-inset`,children:[r,(0,R.jsxs)(`span`,{className:`sr-only`,children:[` `,r===1?`Update`:`Updates`,` bereit`]})]}),t[7]=r,t[8]=f);let p;return t[9]!==i||t[10]!==n.to||t[11]!==c||t[12]!==u||t[13]!==d||t[14]!==f?(p=(0,R.jsxs)(wi,{to:a,onClick:i,className:c,activeOptions:l,children:[u,d,f]}),t[9]=i,t[10]=n.to,t[11]=c,t[12]=u,t[13]=d,t[14]=f,t[15]=p):p=t[15],p}function fs(e){let t=(0,z.c)(20),{onGewaehlt:n}=e,r=$o(),i=me().data?.rolle!==`homelab`,a=ps,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=a(`/`),t[0]=o):o=t[0];let c;t[1]===n?c=t[2]:(c=(0,R.jsx)(ds,{s:o,onGewaehlt:n}),t[1]=n,t[2]=c);let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=a(`/handy`),t[3]=l):l=t[3];let u;t[4]===n?u=t[5]:(u=(0,R.jsx)(`div`,{className:`lg:hidden`,children:(0,R.jsx)(ds,{s:l,onGewaehlt:n})}),t[4]=n,t[5]=u);let d;t[6]!==c||t[7]!==u?(d=(0,R.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[c,u]}),t[6]=c,t[7]=u,t[8]=d):d=t[8];let f;t[9]!==i||t[10]!==n||t[11]!==r?(f=Jo.map(e=>{let t=os[r[e.id].verbindung],a=cs[e.id];return(0,R.jsxs)(`section`,{"aria-label":e.name,className:`flex flex-col gap-0.5`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pr-2 pb-2 pl-1`,children:[(0,R.jsxs)(`h2`,{className:s(`etikett flex items-center gap-2.5 text-[12px] tracking-[0.16em]`,a.text),children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`flex size-6 items-center justify-center rounded-lg bg-gradient-to-br ring-1 ring-inset`,a.kachel),children:(0,R.jsx)(a.Icon,{className:`size-3.5`,strokeWidth:2})}),e.name]}),(0,R.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[12px] text-text-3`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-1.5 rounded-full`,t.punkt)}),t.text]})]}),Yo.filter(t=>t.ort===e.id).map(t=>(0,R.jsx)(ds,{s:t,zahl:t.zaehlt?r[e.id].updates:0,onGewaehlt:n},t.to)),e.id===`box`&&i&&(0,R.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:ls,children:[(0,R.jsx)(ja,{className:`size-[18px] shrink-0 text-text-3`,"aria-hidden":!0}),`Hermes-Dashboard`]})]},e.id)}),t[9]=i,t[10]=n,t[11]=r,t[12]=f):f=t[12];let p;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(p=a(`/einstellungen`),t[13]=p):p=t[13];let m;t[14]===n?m=t[15]:(m=(0,R.jsx)(`div`,{className:`mt-auto border-t border-white/[0.06] pt-4`,children:(0,R.jsx)(ds,{s:p,onGewaehlt:n})}),t[14]=n,t[15]=m);let h;return t[16]!==d||t[17]!==f||t[18]!==m?(h=(0,R.jsxs)(`nav`,{"aria-label":`Hauptnavigation`,className:`flex flex-1 flex-col gap-7`,children:[d,f,m]}),t[16]=d,t[17]=f,t[18]=m,t[19]=h):h=t[19],h}function ps(e){return Yo.find(t=>t.to===e)}var ms=`modulepreload`,hs=function(e){return`/`+e},gs={},_s=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=hs(t,n),t=s(t),t in gs)return;gs[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:ms,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},vs=(0,I.lazy)(()=>_s(()=>import(`./MenueSchublade-mFJEpUye.js`).then(e=>({default:e.MenueSchublade})),__vite__mapDeps([0,1,2,3,4]))),ys=(0,I.lazy)(()=>_s(()=>import(`./Befehlssuche-BqZBO0pG.js`).then(e=>({default:e.Befehlssuche})),__vite__mapDeps([5,1,6]))),bs=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),xs=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:`Europe/Berlin`}),Ss=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`});function Cs(){let e=(0,z.c)(21),[t,n]=(0,I.useState)(ws),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=window.setInterval(()=>n(new Date),2e4);return()=>window.clearInterval(e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,I.useEffect)(r,i);let a;e[2]===t?a=e[3]:(a=bs.format(t),e[2]=t,e[3]=a);let o;e[4]===a?o=e[5]:(o=(0,R.jsx)(`span`,{className:`ziffern text-[20px] leading-none font-medium sm:text-[22px]`,children:a}),e[4]=a,e[5]=o);let s;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,R.jsx)(`span`,{"aria-hidden":!0,className:`hidden h-7 w-px bg-white/10 sm:block`}),e[6]=s):s=e[6];let c;e[7]===t?c=e[8]:(c=xs.format(t).replace(`.`,``),e[7]=t,e[8]=c);let l;e[9]===c?l=e[10]:(l=(0,R.jsx)(`span`,{children:c}),e[9]=c,e[10]=l);let u;e[11]===t?u=e[12]:(u=Ss.format(t),e[11]=t,e[12]=u);let d;e[13]===u?d=e[14]:(d=(0,R.jsx)(`span`,{className:`ziffern tracking-normal`,children:u}),e[13]=u,e[14]=d);let f;e[15]!==l||e[16]!==d?(f=(0,R.jsxs)(`span`,{className:`etikett hidden flex-col text-[10.5px] leading-[1.35] text-text-3 sm:flex`,children:[l,d]}),e[15]=l,e[16]=d,e[17]=f):f=e[17];let p;return e[18]!==o||e[19]!==f?(p=(0,R.jsxs)(`div`,{className:`flaeche flex items-center gap-3 rounded-2xl px-3 py-2 sm:px-4`,children:[o,s,f]}),e[18]=o,e[19]=f,e[20]=p):p=e[20],p}function ws(){return new Date}function Ts(){let e=(0,z.c)(14),t=b(),n=t===`live`,r=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,i=n?`text-text-3`:`text-bernstein`,a;e[0]===i?a=e[1]:(a=s(`etikett flex items-center gap-1.5 text-[11px] tracking-[0.12em]`,i),e[0]=i,e[1]=a);let o=n?`bg-gruen shadow-[0_0_8px_var(--gruen)]`:`bg-bernstein`,c;e[2]===o?c=e[3]:(c=s(`size-2 rounded-full`,o),e[2]=o,e[3]=c);let l;e[4]===c?l=e[5]:(l=(0,R.jsx)(`span`,{"aria-hidden":!0,className:c}),e[4]=c,e[5]=l);let u=n?`sr-only`:void 0,d=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,f;e[6]!==u||e[7]!==d?(f=(0,R.jsx)(`span`,{className:u,children:d}),e[6]=u,e[7]=d,e[8]=f):f=e[8];let p;return e[9]!==r||e[10]!==a||e[11]!==l||e[12]!==f?(p=(0,R.jsxs)(`span`,{role:`status`,title:r,className:a,children:[l,f]}),e[9]=r,e[10]=a,e[11]=l,e[12]=f,e[13]=p):p=e[13],p}var Es={uebersicht:`text-bernstein`,box:`text-box-text`,homelab:`text-lab-text`,system:`text-text-3`};function Ds(e){let t=(0,z.c)(3),n,r;t[0]===e?(n=t[1],r=t[2]):(n=()=>{let t=t=>{(t.ctrlKey||t.metaKey)&&!t.altKey&&t.key.toLowerCase()===`k`&&(t.preventDefault(),e())};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},r=[e],t[0]=e,t[1]=n,t[2]=r),(0,I.useEffect)(n,r)}function Os(){let e=(0,z.c)(33);S();let[t,n]=(0,I.useState)(!1),[r,i]=(0,I.useState)(!1),a=Zo(),o;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>i(!0),e[0]=o):o=e[0],Ds(o);let c;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsxs)(`aside`,{className:`sticky top-0 hidden h-dvh flex-col gap-9 overflow-y-auto border-r border-white/[0.06] bg-[rgb(8_11_17/0.72)] px-4 py-7 backdrop-blur-xl lg:flex`,children:[(0,R.jsx)(us,{}),(0,R.jsx)(fs,{})]}),e[1]=c):c=e[1];let l;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>n(!0),e[2]=l):l=e[2];let u;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,R.jsx)(`button`,{type:`button`,onClick:l,className:`-ml-2 flex size-11 shrink-0 items-center justify-center rounded-lg text-text-2 hover:bg-white/[0.06] hover:text-foreground lg:hidden`,"aria-label":`Menü öffnen`,children:(0,R.jsx)(Ya,{className:`size-6`})}),e[3]=u):u=e[3];let d=Es[a.ort],f;e[4]===d?f=e[5]:(f=s(`etikett truncate text-[11.5px] tracking-[0.22em] whitespace-nowrap`,d),e[4]=d,e[5]=f);let p=Xo[a.ort],m;e[6]!==f||e[7]!==p?(m=(0,R.jsx)(`span`,{className:f,children:p}),e[6]=f,e[7]=p,e[8]=m):m=e[8];let h;e[9]===a.label?h=e[10]:(h=(0,R.jsx)(`h1`,{className:`truncate text-[26px] leading-none font-semibold tracking-[-0.01em] md:text-[32px]`,children:a.label}),e[9]=a.label,e[10]=h);let g;e[11]!==m||e[12]!==h?(g=(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[u,(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5`,children:[m,h]})]}),e[11]=m,e[12]=h,e[13]=g):g=e[13];let _;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,R.jsx)(`span`,{className:`lg:hidden`,children:(0,R.jsx)(Ts,{})}),e[14]=_):_=e[14];let v;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(v=()=>i(!0),e[15]=v):v=e[15];let y;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,R.jsxs)(`div`,{className:`flex items-center gap-3 sm:gap-4`,children:[_,(0,R.jsxs)(`button`,{type:`button`,onClick:v,className:`flex size-11 shrink-0 items-center justify-center gap-2 rounded-xl text-text-2 hover:bg-white/[0.06] hover:text-foreground md:w-auto md:px-3`,"aria-label":`Suchen (Strg+K)`,title:`Suchen (Strg+K)`,children:[(0,R.jsx)(fo,{className:`size-5`,"aria-hidden":!0}),(0,R.jsx)(`kbd`,{className:`hidden rounded-md border border-white/10 px-1.5 py-0.5 font-sans text-[11px] text-text-3 md:block`,children:`Strg K`})]}),(0,R.jsx)(Cs,{})]}),e[16]=y):y=e[16];let b;e[17]===g?b=e[18]:(b=(0,R.jsxs)(`header`,{className:`flex items-center justify-between gap-4 md:pb-1`,children:[g,y]}),e[17]=g,e[18]=b);let x;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,R.jsx)(`main`,{className:`flex min-w-0 flex-col gap-5 md:gap-6`,children:(0,R.jsx)(Vi,{})}),e[19]=x):x=e[19];let C;e[20]===b?C=e[21]:(C=(0,R.jsxs)(`div`,{className:`mx-auto flex w-full max-w-[1360px] min-w-0 flex-col gap-5 px-4 pt-4 pb-12 sm:px-6 md:gap-6 md:px-10 md:pt-8`,children:[b,x]}),e[20]=b,e[21]=C);let w;e[22]===t?w=e[23]:(w=t&&(0,R.jsx)(vs,{onSchliessen:()=>n(!1)}),e[22]=t,e[23]=w);let T;e[24]===r?T=e[25]:(T=r&&(0,R.jsx)(ys,{onSchliessen:()=>i(!1)}),e[24]=r,e[25]=T);let E;e[26]!==w||e[27]!==T?(E=(0,R.jsxs)(I.Suspense,{fallback:null,children:[w,T]}),e[26]=w,e[27]=T,e[28]=E):E=e[28];let D;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,R.jsx)(is,{}),e[29]=D):D=e[29];let O;return e[30]!==C||e[31]!==E?(O=(0,R.jsxs)(`div`,{className:`min-h-dvh lg:grid lg:grid-cols-[272px_minmax(0,1fr)]`,children:[c,C,E,D]}),e[30]=C,e[31]=E,e[32]=O):O=e[32],O}var ks={gruen:`bg-gruen/10 text-gruen ring-gruen/30`,bernstein:`bg-bernstein/10 text-bernstein ring-bernstein/35`,cyan:`bg-cyan/10 text-cyan-text ring-cyan/30`,rot:`bg-rot/12 text-rot-text ring-rot/40`,grau:`bg-white/[0.04] text-text-2 ring-white/12`};function As(e){let t=(0,z.c)(6),{art:n,children:r}=e,i=ks[n===void 0?`grau`:n],a;t[0]===i?a=t[1]:(a=s(`etikett inline-flex h-6 items-center gap-1.5 rounded-full px-2.5 text-[11px] tracking-[0.08em] whitespace-nowrap ring-1 ring-inset`,i),t[0]=i,t[1]=a);let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 shrink-0 rounded-full bg-current opacity-90`}),t[2]=o):o=t[2];let c;return t[3]!==r||t[4]!==a?(c=(0,R.jsxs)(`span`,{className:a,children:[o,r]}),t[3]=r,t[4]=a,t[5]=c):c=t[5],c}function js(e){let t=(0,z.c)(6),{fehler:n,text:r}=e,i=n?`alert`:`status`,a=n?`border border-rot-rand bg-rot-grund text-rot-text`:`flaeche text-text-2`,o;t[0]===a?o=t[1]:(o=s(`rounded-2xl px-5 py-8 text-center text-[15px]`,a),t[0]=a,t[1]=o);let c;return t[2]!==i||t[3]!==o||t[4]!==r?(c=(0,R.jsx)(`div`,{role:i,className:o,children:r}),t[2]=i,t[3]=o,t[4]=r,t[5]=c):c=t[5],c}var Ms=new Set(`actual-budget.adguard-home.affine.alpine-linux.ansible.appflowy.apprise.arcane.audiobookshelf.authelia.authentik.baserow.bazarr.beszel.bitwarden.bookstack.borgmatic.caddy.calibre-web.changedetection.checkmk.claude.cloudflare.cockpit.comfyui.crafty-controller.crowdsec.debian.deluge.docker.dockge.docmost.dozzle.draw-io.duplicati.elasticsearch.element.emby.esphome.excalidraw.firefly-iii.flatnotes.forgejo.freshrss.frigate.gatus.gitea.github.gitlab.glance.glances.go2rtc.gotify.grafana.grocy.harbor.headscale.healthchecks.hedgedoc.heimdall.hermes-agent.homarr.home-assistant.homebridge.homepage.immich.immich-kiosk.influxdb.it-tools.jellyfin.jellyseerr.jenkins.jitsi-meet.joplin.kavita.keycloak.komga.komodo.kopia.kubernetes.librenms.librespeed.lidarr.linkding.linux.linux-containers-lxc.linuxserver-io.llama-cpp.logseq.loki.mariadb.matomo.matrix.mattermost.mealie.minecraft.miniflux.minio.mongodb.mosquitto.n8n.navidrome.netbird.netdata.nextcloud.nginx.nginx-proxy-manager.nocodb.node-red.ntfy.nzbget.obsidian.ollama.onlyoffice.open-webui.openai.openmediavault.openwrt.opnsense.outline.overseerr.paperless-ngx.penpot.pfsense.photoprism.pi-hole.pingvin-share.piwigo.planka.plausible.plex.portainer.postgresql.privatebin.prometheus.prowlarr.proxmox.proxmox-helper-scripts.pterodactyl.qbittorrent.qnap.rabbitmq.radarr.rancher.rclone.readarr.redis.rocket-chat.rustdesk.sabnzbd.scrutiny.scrypted.seafile.searxng.semaphore.sonarr.speedtest-tracker.stirling-pdf.syncthing.synology.tailscale.tautulli.telegram.traefik.transmission.ubuntu.umami.unraid.uptime-kuma.vaultwarden.vikunja.wallabag.watchtower.webmin.wekan.wiki-js.wireguard.woodpecker-ci.wordpress.zabbix.zigbee2mqtt`.split(`.`)),Ns={ok:`bg-gruen shadow-[0_0_8px_var(--gruen)]`,warn:`bg-bernstein shadow-[0_0_8px_var(--bernstein)]`,rot:`bg-rot shadow-[0_0_8px_var(--rot)]`,info:`bg-cyan shadow-[0_0_8px_var(--cyan)]`,aus:`bg-text-3`},Ps=[[/adguard|pi-?hole/i,vo],[/npm|nginx proxy/i,so,`nginx-proxy-manager`],[/traefik|caddy/i,so],[/netbird|wireguard|tailscale/i,aa],[/gitea|forgejo|gitlab/i,La],[/backup server|\bpbs\b/i,Da,`proxmox`],[/arcane|docker|portainer|dockge|komodo/i,Ca],[/pve scripts|helper.?scripts|community.?scripts/i,Na,`proxmox-helper-scripts`],[/scripts/i,Na],[/home ?assistant/i,Va],[/jellyfin|plex|emby/i,ya],[/\bnas\b|qnap|truenas|synology/i,za],[/postgres/i,ka,`postgresql`],[/mariadb|mysql|mongo|redis|valkey/i,ka]];function Fs(e){return e.toLowerCase().replace(/\(.*?\)/g,``).trim().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)}function Is(e,t){if(t&&Ms.has(t))return t;let n=Fs(e);if(Ms.has(n))return n;let r=n.split(`-`)[0];return r.length>2&&Ms.has(r)?r:void 0}function Ls(e){if(e.art===`ki-box`)return{Icon:da,bereich:`box`};if(e.art===`proxmox-host`)return{Icon:mo,bereich:`homelab`,logo:Is(`proxmox`)};let t=Ps.find(([t])=>t.test(e.name));return{Icon:t?.[1]??(e.art===`vm`?to:la),bereich:`homelab`,logo:Is(e.name,t?.[2])}}var Rs={os:[Ua,`ubuntu`],engine:[Oo,`llama-cpp`],motor:[Oo,`llama-cpp`],swap:[bo],hermes:[sa,`hermes-agent`],hirn:[da],coder:[xa],jobs:[Eo],sicherung:[Da],platte:[za],updates:[ro]},zs=[[/^hermes/,sa,`hermes-agent`],[/^llama-swap/,bo],[/^mc2-gateway/,so],[/^mc2-steward/,vo],[/^mission-control/,Ga],[/^voice/,$a],[/^lucy-stimme/,V]];function Bs(e){let t=zs.find(([t])=>t.test(e)),n=t?.[2];return{Icon:t?.[1]??la,bereich:`box`,logo:n&&Ms.has(n)?n:void 0}}function Vs(e){let[t,n]=Rs[e]??[la];return{Icon:t,bereich:`box`,logo:n&&Ms.has(n)?n:void 0}}var Hs={box:`from-box/30 to-box/[0.05] ring-box/35 text-box-text`,homelab:`from-lab/30 to-lab/[0.05] ring-lab/35 text-lab-text`},Us={box:`from-white/[0.1] to-white/[0.03] ring-box/30`,homelab:`from-white/[0.1] to-white/[0.03] ring-lab/30`},Ws={box:`shadow-[0_0_28px_-6px_var(--box)]`,homelab:`shadow-[0_0_28px_-6px_var(--lab)]`},Gs={sm:{kachel:`size-8 rounded-[10px]`,icon:`size-4`,logo:`size-5`,punkt:`size-2.5`},md:{kachel:`size-10 rounded-xl`,icon:`size-5`,logo:`size-6`,punkt:`size-2.5`},lg:{kachel:`size-12 rounded-2xl`,icon:`size-6`,logo:`size-7`,punkt:`size-3`}};function Ks(e){let t=(0,z.c)(17),{bild:n,groesse:r,punkt:i,leuchtet:a,className:o}=e,c=r===void 0?`md`:r,l=a!==void 0&&a,u=Gs[c],d=n.logo?Us[n.bereich]:Hs[n.bereich],f=l&&Ws[n.bereich],p;t[0]!==o||t[1]!==u.kachel||t[2]!==d||t[3]!==f?(p=s(`relative inline-flex shrink-0 items-center justify-center bg-gradient-to-br ring-1 ring-inset`,d,u.kachel,f,o),t[0]=o,t[1]=u.kachel,t[2]=d,t[3]=f,t[4]=p):p=t[4];let m;t[5]!==n.Icon||t[6]!==n.logo||t[7]!==u.icon||t[8]!==u.logo?(m=n.logo?(0,R.jsx)(`img`,{src:`/logos/${n.logo}.svg`,alt:``,className:s(`object-contain`,u.logo),loading:`lazy`,draggable:!1}):(0,R.jsx)(n.Icon,{className:u.icon,strokeWidth:1.75}),t[5]=n.Icon,t[6]=n.logo,t[7]=u.icon,t[8]=u.logo,t[9]=m):m=t[9];let h;t[10]!==u.punkt||t[11]!==i?(h=i&&(0,R.jsx)(`span`,{className:s(`absolute -right-0.5 -bottom-0.5 rounded-full ring-2 ring-[#0b0f16]`,u.punkt,Ns[i])}),t[10]=u.punkt,t[11]=i,t[12]=h):h=t[12];let g;return t[13]!==p||t[14]!==m||t[15]!==h?(g=(0,R.jsxs)(`span`,{"aria-hidden":!0,className:p,children:[m,h]}),t[13]=p,t[14]=m,t[15]=h,t[16]=g):g=t[16],g}var qs=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Js=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0});function Ys(e){return e<1e3?`${Js.format(e)} B/s`:e<1e6?`${qs.format(e/1e3)} KB/s`:e<1e9?`${qs.format(e/1e6)} MB/s`:`${qs.format(e/1e9)} GB/s`}function Xs(e,t){return e==null||Number.isNaN(e)?`–`:t===`prozent`?`${Js.format(e)} %`:t===`grad`?`${Js.format(e)} °C`:t===`bytes_s`?Ys(e):Js.format(e)}function Zs(e){if(!e)return null;for(let t=e.length-1;t>=0;t--){let n=e[t][1];if(n!==null)return n}return null}function Qs(e,t){if(t===`prozent`)return 100;let n=0;for(let t of e)for(let[,e]of t??[])e!==null&&e>n&&(n=e);if(t===`grad`)return Math.max(60,Math.ceil((n+5)/10)*10);if(n<=0)return 1;let r=10**Math.floor(Math.log10(n));for(let e of[1,2,2.5,5,10])if(e*r>=n)return e*r;return 10*r}function $s(e,t,n){return e===null?`ruhig`:e>=n?`rot`:e>=t?`gelb`:`ruhig`}var ec=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),tc=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function nc(e,t){let n=new Date(e*1e3);return(t?tc:ec).format(n).replace(`,`,``)}function rc(e){if(!e||e<0)return`–`;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t} T ${n} h`:n>0?`${n} h ${r} min`:`${r} min`}function ic(e){return e<1?`in weniger als einem Tag`:e<1.5?`in etwa einem Tag`:e<21?`in etwa ${Math.round(e)} Tagen`:e<90?`in etwa ${Math.round(e/7)} Wochen`:e<365?`in etwa ${Math.round(e/30)} Monaten`:`frühestens in einem Jahr`}function ac(e){return e?.tage==null?`ok`:e.tage<3?`rot`:e.tage<14?`gelb`:`ok`}function oc(e,t=1/0){return e?.tage==null||e.tage>=t?null:`voll ${ic(e.tage)}`}function sc(e){return e?.rate==null?null:`+${e.rate.toFixed(1).replace(`.`,`,`)} % am Tag`}var cc={ok:`text-text-3`,gelb:`text-bernstein`,rot:`text-rot-text`};function lc(e){let t=oc(e,60);return t?{text:t,stufe:ac(e)}:null}function uc(e,t,n){let r=``,i=!1;for(let[a,o]of e){if(o===null){i=!1;continue}r+=`${i?`L`:`M`}${t(a).toFixed(1)},${n(o).toFixed(1)}`,i=!0}return r}function dc(e,t,n,r){let i=``,a=[],o=()=>{a.length>1&&(i+=`M${a[0][0].toFixed(1)},${r}`+a.map(([e,t])=>`L${e.toFixed(1)},${t.toFixed(1)}`).join(``)+`L${a[a.length-1][0].toFixed(1)},${r}Z`),a=[]};for(let[r,i]of e)i===null?o():a.push([t(r),n(i)]);return o(),i}function fc(e){if(!Number.isFinite(e)||e<=0)return[0,1];for(let t=0;;t++)for(let n of[1,2,2.5,5]){let r=n*10**t;if(!Number.isInteger(r))continue;let i=Math.ceil(e/r);if(i<=4)return Array.from({length:i+1},(e,t)=>t*r)}}var pc=e=>Number(e.toFixed(1));function mc(e,t,n,r,i=4){let a=Math.max(0,Math.min(i,n/2,r));return`M${pc(e)},${pc(t+r)}V${pc(t+a)}Q${pc(e)},${pc(t)} ${pc(e+a)},${pc(t)}H${pc(e+n-a)}Q${pc(e+n)},${pc(t)} ${pc(e+n)},${pc(t+a)}V${pc(t+r)}Z`}function hc(e,t,n=2){let r=[],i=0;e.forEach((e,a)=>{if(!(e>0))return;let o=t(i);i+=e;let s=t(i);r.push({index:a,y:s,hoehe:Math.max(0,o-s-(r.length?n:0)),oben:!1})});let a=r.filter(e=>e.hoehe>=1).at(-1);return a&&(a.oben=!0),r}function gc(e){let t=(0,z.c)(26),{punkte:n,max:r,farbe:i,hoehe:a,beschriftung:o}=e,s=i===void 0?`var(--reihe-1)`:i,c=a===void 0?36:a,l=n[0]?.[0]??0,u=n[n.length-1]?.[0]??1,d;t[0]!==l||t[1]!==u?(d=e=>u>l?(e-l)/(u-l)*100:0,t[0]=l,t[1]=u,t[2]=d):d=t[2];let f=d,p;t[3]!==c||t[4]!==r?(p=e=>c-2-Math.min(e,r)/(r||1)*(c-4),t[3]=c,t[4]=r,t[5]=p):p=t[5];let m=p,h;t[6]===n?h=t[7]:(h=n.some(_c),t[6]=n,t[7]=h);let g=h,_=(0,I.useId)(),v;if(t[8]!==_){let e;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=/[^a-zA-Z0-9_-]/g,t[10]=e):e=t[10],v=_.replace(e,``),t[8]=_,t[9]=v}else v=t[9];let y=`sl${v}`,b=`0 0 100 ${c}`,x;t[11]===c?x=t[12]:(x={height:c},t[11]=c,t[12]=x);let S;t[13]!==s||t[14]!==g||t[15]!==c||t[16]!==n||t[17]!==y||t[18]!==f||t[19]!==m?(S=g&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`defs`,{children:(0,R.jsxs)(`linearGradient`,{id:y,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,R.jsx)(`stop`,{offset:`0`,stopColor:s,stopOpacity:.3}),(0,R.jsx)(`stop`,{offset:`1`,stopColor:s,stopOpacity:0})]})}),(0,R.jsx)(`path`,{d:dc(n,f,m,c),fill:`url(#${y})`}),(0,R.jsx)(`path`,{d:uc(n,f,m),fill:`none`,stroke:s,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,vectorEffect:`non-scaling-stroke`})]}),t[13]=s,t[14]=g,t[15]=c,t[16]=n,t[17]=y,t[18]=f,t[19]=m,t[20]=S):S=t[20];let C;return t[21]!==o||t[22]!==S||t[23]!==b||t[24]!==x?(C=(0,R.jsx)(`svg`,{role:`img`,"aria-label":o,viewBox:b,preserveAspectRatio:`none`,className:`block w-full`,style:x,children:S}),t[21]=o,t[22]=S,t[23]=b,t[24]=x,t[25]=C):C=t[25],C}function _c(e){let[,t]=e;return t!==null}var vc={ruhig:{wert:`text-foreground`,marke:null},gelb:{wert:`text-bernstein`,marke:`hoch`},rot:{wert:`text-rot-text`,marke:`kritisch`}},yc=48,bc=37,xc=2*Math.PI*bc,Sc=xc*.75;function Cc(e,t){let n=(135+270*e)*Math.PI/180;return{x:yc+t*Math.cos(n),y:yc+t*Math.sin(n)}}function wc(e){let t=(0,z.c)(49),{label:n,wert:r,einheit:i,punkte:a,zustand:o,bereich:c,grenzen:l,max:u,zeitraumText:d,i:f,hinweis:p}=e,m=o===void 0?`ruhig`:o,h=u===void 0?100:u,g=f===void 0?0:f,_=vc[m],v=m===`rot`?`var(--rot)`:m===`gelb`?`var(--bernstein)`:c===`box`?`var(--box)`:`var(--lab)`,y=r==null?0:Math.min(Math.max(r/h,0),1),b;t[0]!==i||t[1]!==r?(b=Xs(r,i).split(` `),t[0]=i,t[1]=r,t[2]=b):b=t[2];let[x,S]=b,C;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,R.jsx)(`circle`,{cx:yc,cy:yc,r:bc,fill:`none`,stroke:`rgb(255 255 255 / 0.07)`,strokeWidth:7,strokeLinecap:`round`,strokeDasharray:`${Sc} ${xc}`,transform:`rotate(135 ${yc} ${yc})`}),t[3]=C):C=t[3];let w;if(t[4]!==l||t[5]!==h){let e;t[7]===h?e=t[8]:(e=(e,t)=>{let n=Cc(Math.min(e/h,1),43),r=Cc(Math.min(e/h,1),46.5);return(0,R.jsx)(`line`,{x1:n.x,y1:n.y,x2:r.x,y2:r.y,strokeWidth:1.5,strokeLinecap:`round`,stroke:t===0?`var(--bernstein)`:`var(--rot)`,opacity:.55},e)},t[7]=h,t[8]=e),w=l.map(e),t[4]=l,t[5]=h,t[6]=w}else w=t[6];let T;t[9]!==y||t[10]!==v||t[11]!==g||t[12]!==r?(T=r!=null&&y>0&&(0,R.jsx)(`circle`,{cx:yc,cy:yc,r:bc,fill:`none`,stroke:v,strokeWidth:7,strokeLinecap:`round`,strokeDasharray:`${Math.max(Sc*y,.5)} ${xc}`,transform:`rotate(135 ${yc} ${yc})`,className:`ring-fuellt transition-[stroke-dasharray] duration-700`,style:{"--i":g,filter:`drop-shadow(0 0 5px color-mix(in srgb, ${v} 65%, transparent))`}}),t[9]=y,t[10]=v,t[11]=g,t[12]=r,t[13]=T):T=t[13];let E;t[14]!==w||t[15]!==T?(E=(0,R.jsxs)(`svg`,{viewBox:`0 0 96 96`,className:`size-full`,"aria-hidden":!0,children:[C,w,T]}),t[14]=w,t[15]=T,t[16]=E):E=t[16];let D;t[17]===_.wert?D=t[18]:(D=s(`font-anzeige text-[26px] leading-none font-semibold tabular-nums`,_.wert),t[17]=_.wert,t[18]=D);let O;t[19]!==D||t[20]!==x?(O=(0,R.jsx)(`span`,{className:D,children:x}),t[19]=D,t[20]=x,t[21]=O):O=t[21];let k;t[22]===S?k=t[23]:(k=S&&(0,R.jsx)(`span`,{className:`ml-0.5 self-center pt-1.5 text-[12px] font-medium text-text-3`,children:S}),t[22]=S,t[23]=k);let A;t[24]!==O||t[25]!==k?(A=(0,R.jsxs)(`span`,{className:`absolute inset-0 flex items-center justify-center pt-1`,children:[O,k]}),t[24]=O,t[25]=k,t[26]=A):A=t[26];let j;t[27]!==A||t[28]!==E?(j=(0,R.jsxs)(`div`,{className:`relative size-[88px]`,children:[E,A]}),t[27]=A,t[28]=E,t[29]=j):j=t[29];let ee;t[30]!==_.marke||t[31]!==_.wert?(ee=_.marke&&(0,R.jsxs)(`span`,{className:_.wert,children:[`· `,_.marke]}),t[30]=_.marke,t[31]=_.wert,t[32]=ee):ee=t[32];let te;t[33]!==n||t[34]!==ee?(te=(0,R.jsxs)(`span`,{className:`etikett -mt-1 flex items-center gap-1.5 text-[10.5px] text-text-3`,children:[n,ee]}),t[33]=n,t[34]=ee,t[35]=te):te=t[35];let M;t[36]!==v||t[37]!==n||t[38]!==h||t[39]!==a||t[40]!==d?(M=(0,R.jsx)(`div`,{className:`w-full px-1`,children:a&&a.length>1?(0,R.jsx)(gc,{punkte:a,max:h,farbe:v,hoehe:20,beschriftung:`${n}, ${d}`}):(0,R.jsx)(`span`,{className:`block h-5`,"aria-hidden":!0})}),t[36]=v,t[37]=n,t[38]=h,t[39]=a,t[40]=d,t[41]=M):M=t[41];let ne;t[42]===p?ne=t[43]:(ne=p&&(0,R.jsx)(`span`,{className:s(`text-center text-[11px] leading-tight`,cc[p.stufe]),children:p.text}),t[42]=p,t[43]=ne);let re;return t[44]!==j||t[45]!==te||t[46]!==M||t[47]!==ne?(re=(0,R.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 flex-col items-center gap-1 rounded-2xl px-2 pt-2.5 pb-2`,children:[j,te,M,ne]}),t[44]=j,t[45]=te,t[46]=M,t[47]=ne,t[48]=re):re=t[48],re}function Tc(e){let t=(0,z.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,R.jsx)(g,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function Ec(e){let t=(0,z.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,R.jsx)(p,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function Dc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(c,{"data-slot":`dialog-overlay`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Oc(e){let t=(0,z.c)(15),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({className:r,children:n,showCloseButton:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o=a===void 0||a,c;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsx)(Dc,{}),t[5]=c):c=t[5];let u;t[6]===r?u=t[7]:(u=s(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,r),t[6]=r,t[7]=u);let d;t[8]===o?d=t[9]:(d=o&&(0,R.jsx)(f,{"data-slot":`dialog-close`,asChild:!0,children:(0,R.jsxs)(He,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,R.jsx)(l,{}),(0,R.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[8]=o,t[9]=d);let p;return t[10]!==n||t[11]!==i||t[12]!==u||t[13]!==d?(p=(0,R.jsxs)(Ec,{children:[c,(0,R.jsxs)(m,{"data-slot":`dialog-content`,className:u,...i,children:[n,d]})]}),t[10]=n,t[11]=i,t[12]=u,t[13]=d,t[14]=p):p=t[14],p}function kc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`flex flex-col gap-2`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(`div`,{"data-slot":`dialog-header`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Ac(e){let t=(0,z.c)(14),n,r,i,a;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4]):({className:r,showCloseButton:a,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a);let o=a!==void 0&&a,c;t[5]===r?c=t[6]:(c=s(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,r),t[5]=r,t[6]=c);let l;t[7]===o?l=t[8]:(l=o&&(0,R.jsx)(f,{asChild:!0,children:(0,R.jsx)(He,{variant:`outline`,children:`Schließen`})}),t[7]=o,t[8]=l);let u;return t[9]!==n||t[10]!==i||t[11]!==c||t[12]!==l?(u=(0,R.jsxs)(`div`,{"data-slot":`dialog-footer`,className:c,...i,children:[n,l]}),t[9]=n,t[10]=i,t[11]=c,t[12]=l,t[13]=u):u=t[13],u}function jc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(h,{"data-slot":`dialog-title`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Mc(e){let t=(0,z.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=s(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,R.jsx)(u,{"data-slot":`dialog-description`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Nc=o({Bestaetigen:()=>Pc});function Pc(e){let t=(0,z.c)(32),{offen:n,titel:r,text:i,knopf:a,neinKnopf:o,gefahr:s,gesperrt:c,onJa:l,onNein:u,children:d}=e,f=o===void 0?`Abbrechen`:o,p;t[0]===u?p=t[1]:(p=e=>!e&&u(),t[0]=u,t[1]=p);let m;t[2]===r?m=t[3]:(m=(0,R.jsx)(jc,{className:`pr-10 text-[19px] leading-snug font-semibold break-words`,children:r}),t[2]=r,t[3]=m);let h;t[4]===i?h=t[5]:(h=(0,R.jsx)(Mc,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=h);let g;t[6]!==m||t[7]!==h?(g=(0,R.jsxs)(kc,{children:[m,h]}),t[6]=m,t[7]=h,t[8]=g):g=t[8];let _;t[9]!==f||t[10]!==u?(_=(0,R.jsx)(He,{variant:`outline`,onClick:u,children:f}),t[9]=f,t[10]=u,t[11]=_):_=t[11];let v=s?`gefahr`:`default`,y=c||void 0,b;t[12]!==c||t[13]!==l?(b=()=>{c||l()},t[12]=c,t[13]=l,t[14]=b):b=t[14];let x;t[15]!==c||t[16]!==a||t[17]!==v||t[18]!==y||t[19]!==b?(x=(0,R.jsx)(He,{variant:v,disabled:c,"aria-busy":y,onClick:b,children:a}),t[15]=c,t[16]=a,t[17]=v,t[18]=y,t[19]=b,t[20]=x):x=t[20];let S;t[21]!==x||t[22]!==_?(S=(0,R.jsxs)(Ac,{className:`sticky bottom-0 mb-0 gap-2 bg-[#121722] sm:gap-2`,children:[_,x]}),t[21]=x,t[22]=_,t[23]=S):S=t[23];let C;t[24]!==d||t[25]!==S||t[26]!==g?(C=(0,R.jsxs)(Oc,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-white/10 bg-[#0e121a] pb-0 sm:max-w-lg`,children:[g,d,S]}),t[24]=d,t[25]=S,t[26]=g,t[27]=C):C=t[27];let w;return t[28]!==n||t[29]!==C||t[30]!==p?(w=(0,R.jsx)(Tc,{open:n,onOpenChange:p,children:C}),t[28]=n,t[29]=C,t[30]=p,t[31]=w):w=t[31],w}function Fc(e){let t=(0,z.c)(12),{titel:n,rechts:r,children:i,className:a,id:o,symbol:c}=e,l;t[0]===a?l=t[1]:(l=s(`flaeche flex min-w-0 flex-col gap-4 rounded-2xl p-5 sm:p-6`,a),t[0]=a,t[1]=l);let u;t[2]!==c||t[3]!==r||t[4]!==n?(u=(n||r)&&(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n&&(0,R.jsxs)(`h2`,{className:`flex items-center gap-2.5 text-[17px] leading-tight font-semibold tracking-[0.005em] text-foreground`,children:[c&&(0,R.jsx)(c,{className:`size-[18px] text-text-3`,"aria-hidden":!0}),n]}),r]}),t[2]=c,t[3]=r,t[4]=n,t[5]=u):u=t[5];let d;return t[6]!==i||t[7]!==o||t[8]!==l||t[9]!==u||t[10]!==n?(d=(0,R.jsxs)(`section`,{id:o,"aria-label":n,className:l,children:[u,i]}),t[6]=i,t[7]=o,t[8]=l,t[9]=u,t[10]=n,t[11]=d):d=t[11],d}var Ic={lucy:`Lucy`,waechter:`Wächter`,wochenbericht:`Wochenbericht`,wartung:`Wartungsfenster`},Lc={offen:`offen`,laeuft:`läuft`,erledigt:`ausgeführt`,fehler:`gescheitert`,abgelehnt:`abgelehnt`,abgelaufen:`abgelaufen`,hinfaellig:`hatte sich erledigt`},Rc=e=>Ic[e]??e;function zc(e,t=Date.now()){let n=Math.max(0,Math.round(e-t/1e3));return n>=3600?`gilt noch ${Math.floor(n/3600)} h`:`gilt noch ${Math.max(1,Math.round(n/60))} min`}function Bc(e){let t=e.antwort?e.antwort.wer===`oberflaeche`?`hier`:e.antwort.wer===`lucy`?`per Telegram`:e.antwort.wer:null,n=[Lc[e.status]??e.status];return t&&e.status!==`abgelaufen`&&n.push(t),e.nachgeprueft===`besteht`&&n.push(`der Hinweis blieb`),n.join(` · `)}function Vc(e){let t=(0,z.c)(34),{r:n,gesperrt:r,onJa:i,onNein:a}=e,o=n.stufe===`dringend`&&`ring-1 ring-rot/40 ring-inset`,c;t[0]===o?c=t[1]:(c=s(`flaeche-innen flex flex-col gap-3 rounded-2xl p-4`,o),t[0]=o,t[1]=c);let l=n.nr,u;t[2]===n.von?u=t[3]:(u=Rc(n.von),t[2]=n.von,t[3]=u);let d;t[4]===n.zeit?d=t[5]:(d=y(n.zeit),t[4]=n.zeit,t[5]=d);let f;t[6]===n.ablauf?f=t[7]:(f=zc(n.ablauf),t[6]=n.ablauf,t[7]=f);let p;t[8]!==n.nr||t[9]!==u||t[10]!==d||t[11]!==f?(p=(0,R.jsxs)(`span`,{className:`etikett text-[10.5px] text-text-3`,children:[`Rückfrage `,l,` · `,u,` · `,d,` · `,f]}),t[8]=n.nr,t[9]=u,t[10]=d,t[11]=f,t[12]=p):p=t[12];let m;t[13]===n.frage?m=t[14]:(m=(0,R.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.frage}),t[13]=n.frage,t[14]=m);let h;t[15]===n.text?h=t[16]:(h=n.text&&(0,R.jsx)(`span`,{className:`text-sm break-words text-text-2`,children:n.text}),t[15]=n.text,t[16]=h);let g;t[17]!==p||t[18]!==m||t[19]!==h?(g=(0,R.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[p,m,h]}),t[17]=p,t[18]=m,t[19]=h,t[20]=g):g=t[20];let _;t[21]!==r||t[22]!==i?(_=(0,R.jsx)(He,{size:`sm`,disabled:r,onClick:i,children:`Ja, ausführen`}),t[21]=r,t[22]=i,t[23]=_):_=t[23];let v;t[24]!==r||t[25]!==a?(v=(0,R.jsx)(He,{variant:`outline`,size:`sm`,disabled:r,onClick:a,children:`Nein`}),t[24]=r,t[25]=a,t[26]=v):v=t[26];let b;t[27]!==_||t[28]!==v?(b=(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[_,v]}),t[27]=_,t[28]=v,t[29]=b):b=t[29];let x;return t[30]!==g||t[31]!==b||t[32]!==c?(x=(0,R.jsxs)(`li`,{className:c,children:[g,b]}),t[30]=g,t[31]=b,t[32]=c,t[33]=x):x=t[33],x}function Hc(e){let t=(0,z.c)(24),{leerText:n}=e,r=ie(),i=M(),[a,o]=(0,I.useState)(null),s;t[0]===r.data?.offen?s=t[1]:(s=r.data?.offen??[],t[0]=r.data?.offen,t[1]=s);let c=s;if(c.length===0){let e;return t[2]===n?e=t[3]:(e=n?(0,R.jsx)(`p`,{className:`text-sm text-text-2`,children:n}):null,t[2]=n,t[3]=e),e}let l;if(t[4]!==i||t[5]!==c){let e;t[7]===i?e=t[8]:(e=e=>(0,R.jsx)(Vc,{r:e,gesperrt:i.isPending,onJa:()=>o(e),onNein:()=>i.mutate({nr:e.nr,ja:!1})},e.nr),t[7]=i,t[8]=e),l=c.map(e),t[4]=i,t[5]=c,t[6]=l}else l=t[6];let u;t[9]===l?u=t[10]:(u=(0,R.jsx)(`ul`,{className:`m-0 grid list-none gap-3 p-0 md:grid-cols-2`,children:l}),t[9]=l,t[10]=u);let d=!!a,f=a?a.frage:``,p=a?`${a.text?`${a.text} `:``}Das führt genau diese Aktion aus — wie „ja ${a.nr}“ in Telegram.`:``,m;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>o(null),t[11]=m):m=t[11];let h;t[12]!==i||t[13]!==a?(h=()=>{a&&i.mutate({nr:a.nr,ja:!0}),o(null)},t[12]=i,t[13]=a,t[14]=h):h=t[14];let g;t[15]!==i.isPending||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==h?(g=(0,R.jsx)(Pc,{offen:d,titel:f,text:p,knopf:`Ja, ausführen`,gesperrt:i.isPending,onNein:m,onJa:h}),t[15]=i.isPending,t[16]=d,t[17]=f,t[18]=p,t[19]=h,t[20]=g):g=t[20];let _;return t[21]!==u||t[22]!==g?(_=(0,R.jsxs)(R.Fragment,{children:[u,g]}),t[21]=u,t[22]=g,t[23]=_):_=t[23],_}function Uc(){let e=(0,z.c)(4),t=ie().data?.offen.length??0;if(t===0)return null;let n=t===1?`Eine Rückfrage an dich`:`${t} Rückfragen an dich`,r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Lucy wartet auf dein Ja. In Telegram reicht „ja“ mit der Nummer — oder hier ein Klick.`}),i=(0,R.jsx)(Hc,{}),e[0]=r,e[1]=i):(r=e[0],i=e[1]);let a;return e[2]===n?a=e[3]:(a=(0,R.jsxs)(Fc,{titel:n,symbol:Za,id:`rueckfragen`,children:[r,i]}),e[2]=n,e[3]=a),a}function Wc(){let e=(0,z.c)(8),t=ie(),n,r,i;if(e[0]!==t.data?.zuletzt){i=Symbol.for(`react.early_return_sentinel`);bb0:{let a=(t.data?.zuletzt??[]).slice(0,8);if(a.length===0){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsx)(`p`,{className:`text-sm text-text-3`,children:`Noch keine beantwortete Rückfrage.`}),e[4]=t):t=e[4],i=t;break bb0}n=`m-0 flex list-none flex-col p-0`,r=a.map(Gc)}e[0]=t.data?.zuletzt,e[1]=n,e[2]=r,e[3]=i}else n=e[1],r=e[2],i=e[3];if(i!==Symbol.for(`react.early_return_sentinel`))return i;let a;return e[5]!==n||e[6]!==r?(a=(0,R.jsx)(`ul`,{className:n,children:r}),e[5]=n,e[6]=r,e[7]=a):a=e[7],a}function Gc(e){return(0,R.jsxs)(`li`,{className:`flex flex-col gap-0.5 border-t border-white/[0.06] py-2 first:border-t-0`,children:[(0,R.jsx)(`span`,{className:`text-sm break-words`,children:e.frage}),(0,R.jsxs)(`span`,{className:`text-xs text-text-3`,children:[`Rückfrage `,e.nr,` · `,Rc(e.von),` · `,y(e.zeit),` · `,Bc(e),e.status===`fehler`&&e.ergebnis?` — ${e.ergebnis}`:``]})]},e.nr)}var Kc={ok:`var(--gruen)`,rot:`var(--rot)`,aus:`rgb(135 146 164 / 0.45)`},qc={ok:`erreichbar`,rot:`antwortet nicht`,aus:`kein Stand`},Jc=90,Yc=72,Xc=9,Zc=2*Math.PI*Yc;function Qc(e){let t=(0,z.c)(32),{segmente:n,glut:r}=e,i=Math.max(n.length,1),a=Zc/i,o=i>1?14:0,s=Math.max(a-o,.5),c;t[0]===n?c=t[1]:(c=n.filter($c),t[0]=n,t[1]=c);let l=c.length,u=`drop-shadow(0 0 14px color-mix(in srgb, ${r} 40%, transparent))`,d;t[2]===u?d=t[3]:(d={filter:u},t[2]=u,t[3]=d);let f,p,m;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,R.jsx)(`g`,{className:`kreist`,children:(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:86,fill:`none`,stroke:`rgb(255 255 255 / 0.13)`,strokeWidth:1,strokeDasharray:`1.2 5.6`})}),p=(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:Yc,fill:`none`,stroke:`rgb(255 255 255 / 0.05)`,strokeWidth:Xc}),m=(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:58,fill:`none`,stroke:`rgb(255 255 255 / 0.06)`,strokeWidth:1}),t[4]=f,t[5]=p,t[6]=m):(f=t[4],p=t[5],m=t[6]);let h;if(t[7]!==s||t[8]!==o||t[9]!==n||t[10]!==a){let e;t[12]!==s||t[13]!==o||t[14]!==a?(e=(e,t)=>(0,R.jsx)(`circle`,{cx:Jc,cy:Jc,r:Yc,fill:`none`,stroke:Kc[e.zustand],strokeWidth:Xc,strokeLinecap:`round`,strokeDasharray:`${s} ${Zc-s}`,strokeDashoffset:-(t*a+o/2),className:`ring-fuellt`,style:{"--i":t},children:(0,R.jsx)(`title`,{children:`${e.name}: ${qc[e.zustand]}`})},e.id),t[12]=s,t[13]=o,t[14]=a,t[15]=e):e=t[15],h=n.map(e),t[7]=s,t[8]=o,t[9]=n,t[10]=a,t[11]=h}else h=t[11];let g;t[16]===h?g=t[17]:(g=(0,R.jsx)(`g`,{transform:`rotate(-90 ${Jc} ${Jc})`,children:h}),t[16]=h,t[17]=g);let _;t[18]!==d||t[19]!==g?(_=(0,R.jsxs)(`svg`,{viewBox:`0 0 180 180`,className:`size-full`,"aria-hidden":!0,style:d,children:[f,p,m,g]}),t[18]=d,t[19]=g,t[20]=_):_=t[20];let v;t[21]===n.length?v=t[22]:(v=(0,R.jsxs)(`span`,{className:`text-text-3`,children:[`/`,n.length]}),t[21]=n.length,t[22]=v);let y;t[23]!==l||t[24]!==v?(y=(0,R.jsxs)(`span`,{className:`font-anzeige text-[38px] leading-none font-semibold tabular-nums sm:text-[46px]`,children:[l,v]}),t[23]=l,t[24]=v,t[25]=y):y=t[25];let b;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,R.jsxs)(`span`,{className:`etikett mt-1.5 flex flex-col items-center text-[9.5px] leading-[1.35] text-text-3 sm:text-[10px]`,children:[(0,R.jsx)(`span`,{children:`Geräte`}),(0,R.jsx)(`span`,{children:`erreichbar`})]}),t[26]=b):b=t[26];let x;t[27]===y?x=t[28]:(x=(0,R.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center`,children:[y,b]}),t[27]=y,t[28]=x);let S;return t[29]!==x||t[30]!==_?(S=(0,R.jsxs)(`div`,{className:`relative size-[132px] shrink-0 sm:size-[168px]`,children:[_,x]}),t[29]=x,t[30]=_,t[31]=S):S=t[31],S}function $c(e){return e.zustand===`ok`}var el=new Set([`snapshot-anlegen`,`snapshot-loeschen`,`snapshot-zurueck`,`sicherung-loeschen`]),tl=e=>el.has(e.baustein),nl={update:{chip:`vor Update`,text:`Rückweg vor einem Update`},knopf:{chip:`per Knopf`,text:`Hier per Knopf angelegt`},proxmox:{chip:`von Hand`,text:`Von Hand in Proxmox angelegt`}};function rl(e,t){return e===null?`Zeitpunkt unbekannt`:ve(new Date(e*1e3).toISOString(),new Date(t*1e3))}function il(e,t){return e===null?``:y(e,t*1e3)}function al(e){return e===null||e<=0?null:e<1e9?`${Math.round(e/1e6)} MB`:`${(e/1e9).toFixed(1).replace(`.`,`,`)} GB`}function ol(e,t){let n=e.startsWith(`${t}: `)?e.slice(t.length+2):e;return n.charAt(0).toUpperCase()+n.slice(1)}function sl(e){let t=[`${e.snapshots} ${e.snapshots===1?`Snapshot`:`Snapshots`}`];return e.sicherungen>0&&t.push(`${e.sicherungen} ${e.sicherungen===1?`Sicherung`:`Sicherungen`}`),t.join(` · `)}var cl=(e,t=1)=>e.toFixed(t).replace(`.`,`,`);function ll(e){return e==null?`–`:e>=0xe8d4a51000?`${cl(e/0xe8d4a51000)} TB`:e>=1e10?`${Math.round(e/1e9)} GB`:`${cl(e/1e9)} GB`}function ul(e){return e?/^\s*\d{1,2}:\d{2}\s*$/.test(e)?`täglich ${e.trim()}`:`Zeitplan „${e}“`:`ohne Zeitplan`}function dl(e){return e.jobs.length===0?`Kein Sicherungsauftrag in Proxmox`:e.jobs.map(e=>`${ul(e.zeitplan)} auf ${e.speicher??`?`}`).join(`, `)}var fl={ok:`in Ordnung`,gelb:`wird knapp`,rot:`fast voll`};function pl(e){if(e.aktion)return null;let t=e.grund??``,n=t.match(/erst ab (\d{2}\.\d{2}\.(?:\d{4})? ?\d{2}:\d{2})/)?.[1];return n?`ab ${n}`:/eigene Oberfläche|eigenen Oberfläche|eigenes Update/i.test(t)?`über die App`:null}function ml(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);if(t.length===0)return null;let n=[],r=Fo(e);if(r?.zustand===`neu`){let e=pl(r);n.push(`App → ${r.verfuegbar??`neu`}${e?` (${e})`:``}`)}let i=Io(e);i?.zustand===`neu`&&n.push(`${i.kurz||(i.id===`docker`?`Images`:`Pakete`)}${Ho(i)}`);for(let e of t)e!==r&&e!==i&&n.push(`${e.name}${e.kurz?` · ${e.kurz}`:``}`);return{id:e.id,name:e.name,teile:n,knopf:t.some(e=>!!e.aktion)}}function hl(e){return e.getrennt.length>0?{stufe:`rot`,titel:`Verbindung weg`,text:`${e.getrennt.join(` und `)} antwortet nicht.`}:e.stumm.length>0||e.hinweiseRot>0?{stufe:`rot`,titel:`Störung`,text:`${e.stumm.length>0?`${e.stumm.join(`, `)} antwortet nicht`:`Ein roter Hinweis wartet`}.`}:e.hinweise>0?{stufe:`gelb`,titel:e.hinweise===1?`1 Hinweis`:`${e.hinweise} Hinweise`,text:`Bei Gelegenheit ansehen.`}:e.updates>0?{stufe:`info`,titel:`Alles läuft`,text:`${e.updates} ${e.updates===1?`Update steht`:`Updates stehen`} bereit.`}:{stufe:`ok`,titel:`Alles läuft`,text:`Keine Hinweise, keine offenen Updates.`}}var gl={ok:{glut:`var(--gruen)`,titel:`text-foreground`,symbol:`text-gruen`,Symbol:_a},info:{glut:`var(--gruen)`,titel:`text-foreground`,symbol:`text-gruen`,Symbol:_a},gelb:{glut:`var(--bernstein)`,titel:`text-bernstein`,symbol:`text-bernstein`,Symbol:ha},rot:{glut:`var(--rot)`,titel:`text-rot-text`,symbol:`text-rot`,Symbol:wo}},_l={online:{punkt:`ok`,text:`online`},verbinde:{punkt:`warn`,text:`verbinde`},getrennt:{punkt:`rot`,text:`getrennt`},fehlt:{punkt:`aus`,text:`nicht eingerichtet`}},W={box:{name:`KI-Box`,rand:`[--rand:color-mix(in_srgb,var(--box)_32%,transparent)]`,text:`text-box-text`,pille:`bg-box/10 text-box-text ring-box/30 hover:bg-box/20`,glut:`var(--box)`,cockpit:`/box`},homelab:{name:`Homelab`,rand:`[--rand:color-mix(in_srgb,var(--lab)_32%,transparent)]`,text:`text-lab-text`,pille:`bg-lab/10 text-lab-text ring-lab/30 hover:bg-lab/20`,glut:`var(--lab)`,cockpit:`/homelab`}},vl=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),yl=e=>({"--i":e}),bl={cyan:{kachel:`bg-cyan/10 text-cyan ring-cyan/25`,wert:`text-cyan`},gruen:{kachel:`bg-gruen/10 text-gruen ring-gruen/25`,wert:`text-gruen`},bernstein:{kachel:`bg-bernstein/10 text-bernstein ring-bernstein/30`,wert:`text-bernstein`},rot:{kachel:`bg-rot/12 text-rot ring-rot/35`,wert:`text-rot-text`},grau:{kachel:`bg-white/[0.05] text-text-2 ring-white/12`,wert:`text-foreground`}};function xl(e){let t=(0,z.c)(23),{Icon:n,label:r,wert:i,art:a,children:o}=e,c=bl[a],l;t[0]===c.kachel?l=t[1]:(l=s(`flex size-10 shrink-0 items-center justify-center rounded-xl ring-1 ring-inset`,c.kachel),t[0]=c.kachel,t[1]=l);let u;t[2]===n?u=t[3]:(u=(0,R.jsx)(n,{className:`size-[18px]`}),t[2]=n,t[3]=u);let d;t[4]!==l||t[5]!==u?(d=(0,R.jsx)(`span`,{"aria-hidden":!0,className:l,children:u}),t[4]=l,t[5]=u,t[6]=d):d=t[6];let f;t[7]===r?f=t[8]:(f=(0,R.jsx)(`span`,{className:`etikett text-[10.5px] text-text-3`,children:r}),t[7]=r,t[8]=f);let p;t[9]===o?p=t[10]:(p=(0,R.jsx)(`span`,{className:`truncate text-[13px] text-text-2`,children:o}),t[9]=o,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;t[14]===c.wert?h=t[15]:(h=s(`font-anzeige text-[30px] leading-none font-semibold tabular-nums`,c.wert),t[14]=c.wert,t[15]=h);let g;t[16]!==h||t[17]!==i?(g=(0,R.jsx)(`span`,{className:h,children:i}),t[16]=h,t[17]=i,t[18]=g):g=t[18];let _;return t[19]!==d||t[20]!==m||t[21]!==g?(_=(0,R.jsxs)(`div`,{className:`flaeche-innen flex min-w-0 items-center gap-3.5 rounded-2xl px-4 py-3`,children:[d,m,g]}),t[19]=d,t[20]=m,t[21]=g,t[22]=_):_=t[22],_}function Sl(e){let t=(0,z.c)(12),{bereich:n,verbindung:r}=e,i=W[n],a=_l[r],o=i.cockpit,c;t[0]===i.pille?c=t[1]:(c=s(`inline-flex h-8 items-center gap-2 rounded-full px-3 text-[13px] ring-1 ring-inset transition-colors`,i.pille),t[0]=i.pille,t[1]=c);let l=Ns[a.punkt],u;t[2]===l?u=t[3]:(u=s(`size-2 rounded-full`,l),t[2]=l,t[3]=u);let d;t[4]===u?d=t[5]:(d=(0,R.jsx)(`span`,{"aria-hidden":!0,className:u}),t[4]=u,t[5]=d);let f;return t[6]!==i.cockpit||t[7]!==i.name||t[8]!==c||t[9]!==d||t[10]!==a.text?(f=(0,R.jsxs)(wi,{to:o,className:c,children:[d,i.name,` `,a.text]}),t[6]=i.cockpit,t[7]=i.name,t[8]=c,t[9]=d,t[10]=a.text,t[11]=f):f=t[11],f}function Cl(e){let t=(0,z.c)(22),{bereich:n,titel:r,unterzeile:i,werte:a,basis:o}=e,c=W[n],l;t[0]===c.text?l=t[1]:(l=s(`etikett text-[11.5px] tracking-[0.16em]`,c.text),t[0]=c.text,t[1]=l);let u;t[2]!==l||t[3]!==r?(u=(0,R.jsx)(`h3`,{className:l,children:r}),t[2]=l,t[3]=r,t[4]=u):u=t[4];let d;t[5]===i?d=t[6]:(d=i&&(0,R.jsx)(`span`,{className:`truncate text-[12.5px] text-text-3`,children:i}),t[5]=i,t[6]=d);let f;t[7]!==u||t[8]!==d?(f=(0,R.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 px-0.5`,children:[u,d]}),t[7]=u,t[8]=d,t[9]=f):f=t[9];let p;if(t[10]!==o||t[11]!==n||t[12]!==a){let e;t[14]!==o||t[15]!==n?(e=(e,t)=>(0,R.jsx)(wc,{label:e.label,wert:e.wert,einheit:e.einheit,punkte:e.punkte,bereich:n,grenzen:[e.gelb,e.rot],zustand:$s(e.wert??null,e.gelb,e.rot),zeitraumText:`letzte Stunde`,i:o+t,hinweis:e.hinweis},e.label),t[14]=o,t[15]=n,t[16]=e):e=t[16],p=a.map(e),t[10]=o,t[11]=n,t[12]=a,t[13]=p}else p=t[13];let m;t[17]===p?m=t[18]:(m=(0,R.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-4`,children:p}),t[17]=p,t[18]=m);let h;return t[19]!==f||t[20]!==m?(h=(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[f,m]}),t[19]=f,t[20]=m,t[21]=h):h=t[21],h}function wl(e){let t=(0,z.c)(40),{homelabAktiv:n}=e,r=ce(),i=_e(`1h`),a=j(),o=A(`1h`,n),s=i.data?.reihen,c=r.data?.box,l=a?.ram??(c?.ram_used&&c.ram_total?c.ram_used/c.ram_total*100:null),u;if(t[0]!==c||t[1]!==n||t[2]!==o.data?.geraete||t[3]!==a?.cpu||t[4]!==a?.disk||t[5]!==a?.temp_cpu||t[6]!==i.data?.aktuell||t[7]!==i.data?.prognose?.platte||t[8]!==s?.cpu||t[9]!==s?.platte||t[10]!==s?.ram||t[11]!==s?.temp_cpu||t[12]!==l){let e=o.data?.geraete.find(Tl),r;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(r=yl(1),t[14]=r):r=t[14];let d;t[15]===c?d=t[16]:(d=c?.uptime_s?`läuft seit ${rc(c.uptime_s)}`:null,t[15]=c,t[16]=d);let f=a?.cpu??i.data?.aktuell.cpu,p=s?.cpu,m;t[17]!==f||t[18]!==p?(m={label:`CPU`,wert:f,einheit:`prozent`,punkte:p,gelb:85,rot:95},t[17]=f,t[18]=p,t[19]=m):m=t[19];let h=s?.ram,g;t[20]!==l||t[21]!==h?(g={label:`Speicher`,wert:l,einheit:`prozent`,punkte:h,gelb:85,rot:95},t[20]=l,t[21]=h,t[22]=g):g=t[22];let _=a?.temp_cpu??c?.temp_cpu,v=s?.temp_cpu,y;t[23]!==v||t[24]!==_?(y={label:`Temp.`,wert:_,einheit:`grad`,punkte:v,gelb:80,rot:90},t[23]=v,t[24]=_,t[25]=y):y=t[25];let b=a?.disk??c?.platte?.percent,x=s?.platte,S=i.data?.prognose?.platte??c?.platte?.vorhersage,C;t[26]===S?C=t[27]:(C=lc(S),t[26]=S,t[27]=C);let w;t[28]!==b||t[29]!==x||t[30]!==C?(w={label:`Platte`,wert:b,einheit:`prozent`,punkte:x,gelb:80,rot:90,hinweis:C},t[28]=b,t[29]=x,t[30]=C,t[31]=w):w=t[31];let T;t[32]!==y||t[33]!==w||t[34]!==m||t[35]!==g?(T=[m,g,y,w],t[32]=y,t[33]=w,t[34]=m,t[35]=g,t[36]=T):T=t[36];let E;t[37]!==T||t[38]!==d?(E=(0,R.jsx)(Cl,{bereich:`box`,titel:`KI-Box`,basis:0,unterzeile:d,werte:T}),t[37]=T,t[38]=d,t[39]=E):E=t[39],u=(0,R.jsxs)(`section`,{"aria-label":`Instrumente`,className:`auftauchen flaeche grid gap-6 rounded-3xl p-5 sm:p-6 xl:grid-cols-2 xl:gap-8`,style:r,children:[E,n?(0,R.jsx)(Cl,{bereich:`homelab`,titel:`Proxmox-Host`,basis:4,unterzeile:e?.aktuell.uptime_s?`läuft seit ${rc(e.aktuell.uptime_s)}`:null,werte:[{label:`CPU`,wert:e?.aktuell.cpu,einheit:`prozent`,punkte:e?.reihen.cpu,gelb:85,rot:95},{label:`Speicher`,wert:e?.aktuell.ram,einheit:`prozent`,punkte:e?.reihen.ram,gelb:90,rot:95},{label:`Temp.`,wert:e?.aktuell.temp_cpu,einheit:`grad`,punkte:e?.reihen.temp_cpu,gelb:80,rot:90},{label:`Platte`,wert:e?.aktuell.platte,einheit:`prozent`,punkte:e?.reihen.platte,gelb:80,rot:90,hinweis:lc(e?.prognose?.platte)}]}):(0,R.jsx)(`p`,{className:`self-center text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht; hier steht nichts Veraltetes.`})]}),t[0]=c,t[1]=n,t[2]=o.data?.geraete,t[3]=a?.cpu,t[4]=a?.disk,t[5]=a?.temp_cpu,t[6]=i.data?.aktuell,t[7]=i.data?.prognose?.platte,t[8]=s?.cpu,t[9]=s?.platte,t[10]=s?.ram,t[11]=s?.temp_cpu,t[12]=l,t[13]=u}else u=t[13];return u}function Tl(e){return e.art===`proxmox-host`}function El(e){let t=(0,z.c)(5),{titel:n,rechts:r}=e,i;t[0]===n?i=t[1]:(i=(0,R.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-3`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function Dl(e){let t=(0,z.c)(42),{bereich:n,verbindung:r,unterzeile:i,i:a,children:o}=e,c=W[n],l=_l[r],u=n===`box`?`ki-box`:`proxmox-host`,d;t[0]!==c.name||t[1]!==u?(d=Ls({art:u,name:c.name}),t[0]=c.name,t[1]=u,t[2]=d):d=t[2];let f;t[3]===d?f=t[4]:(f={...d,logo:void 0},t[3]=d,t[4]=f);let p=f,m=c.name,h;t[5]===c.rand?h=t[6]:(h=s(`auftauchen flaeche relative flex min-w-0 flex-col overflow-hidden rounded-3xl`,c.rand),t[5]=c.rand,t[6]=h);let g;t[7]===a?g=t[8]:(g=yl(a),t[7]=a,t[8]=g);let _=`radial-gradient(closest-side, color-mix(in srgb, ${c.glut} 20%, transparent), transparent)`,v;t[9]===_?v=t[10]:(v=(0,R.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute -top-44 -left-36 size-[460px] rounded-full`,style:{background:_}}),t[9]=_,t[10]=v);let y=c.cockpit,b;t[11]===p?b=t[12]:(b=(0,R.jsx)(Ks,{bild:p,groesse:`lg`,leuchtet:!0}),t[11]=p,t[12]=b);let x;t[13]===c.name?x=t[14]:(x=(0,R.jsx)(`span`,{className:`text-[21px] leading-none font-semibold`,children:c.name}),t[13]=c.name,t[14]=x);let S=Ns[l.punkt],C;t[15]===S?C=t[16]:(C=s(`size-2 shrink-0 rounded-full`,S),t[15]=S,t[16]=C);let w;t[17]===C?w=t[18]:(w=(0,R.jsx)(`span`,{"aria-hidden":!0,className:C}),t[17]=C,t[18]=w);let T;t[19]!==w||t[20]!==i||t[21]!==l.text?(T=(0,R.jsxs)(`span`,{className:`flex items-center gap-2 truncate text-[13px] text-text-3`,children:[w,l.text,` · `,i]}),t[19]=w,t[20]=i,t[21]=l.text,t[22]=T):T=t[22];let E;t[23]!==x||t[24]!==T?(E=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[x,T]}),t[23]=x,t[24]=T,t[25]=E):E=t[25];let D;t[26]!==b||t[27]!==E?(D=(0,R.jsxs)(`span`,{className:`flex min-w-0 items-center gap-3.5`,children:[b,E]}),t[26]=b,t[27]=E,t[28]=D):D=t[28];let O;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,R.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 rounded-full px-3 py-1.5 text-[13px] text-text-2 ring-1 ring-white/10 transition-colors ring-inset group-hover:bg-white/[0.06] group-hover:text-foreground`,children:[`Cockpit `,(0,R.jsx)(ra,{className:`size-3.5 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]}),t[29]=O):O=t[29];let k;t[30]!==c.cockpit||t[31]!==D?(k=(0,R.jsxs)(wi,{to:y,className:`group relative flex items-center justify-between gap-3 px-5 pt-5 pb-4 sm:px-6 sm:pt-6`,children:[D,O]}),t[30]=c.cockpit,t[31]=D,t[32]=k):k=t[32];let A;t[33]===o?A=t[34]:(A=(0,R.jsx)(`div`,{className:`relative flex flex-1 flex-col gap-6 px-5 pb-6 sm:px-6`,children:o}),t[33]=o,t[34]=A);let j;return t[35]!==c.name||t[36]!==k||t[37]!==A||t[38]!==h||t[39]!==g||t[40]!==v?(j=(0,R.jsxs)(`section`,{"aria-label":m,className:h,style:g,children:[v,k,A]}),t[35]=c.name,t[36]=k,t[37]=A,t[38]=h,t[39]=g,t[40]=v,t[41]=j):j=t[41],j}function Ol(e){let t=(0,z.c)(12),{hinweise:n,ziel:r}=e,i,a,o,c;if(t[0]!==n||t[1]!==r){c=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(Al);if(e.length===0){c=null;break bb0}let l=[...e].sort(kl);i=`Hinweise`,a=`m-0 flex list-none flex-col gap-1.5 p-0`;let u;t[6]===r?u=t[7]:(u=e=>{let t=e.stufe===`rot`,n=t?wo:ha;return(0,R.jsx)(`li`,{children:(0,R.jsxs)(wi,{to:r,className:s(`flex items-start gap-2.5 rounded-xl px-3 py-2.5 text-[14px] ring-1 ring-inset transition-colors`,t?`bg-rot/10 text-rot-text ring-rot/35 hover:bg-rot/15`:`bg-bernstein/[0.08] text-bernstein ring-bernstein/30 hover:bg-bernstein/[0.13]`),children:[(0,R.jsx)(n,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}),(0,R.jsx)(`span`,{className:`min-w-0 flex-1`,children:e.titel}),(0,R.jsx)(`span`,{className:`etikett shrink-0 pt-0.5 text-[10px] opacity-80`,children:t?`Störung`:`Hinweis`})]})},e.id)},t[6]=r,t[7]=u),o=l.slice(0,3).map(u)}t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=c}else i=t[2],a=t[3],o=t[4],c=t[5];if(c!==Symbol.for(`react.early_return_sentinel`))return c;let l;return t[8]!==i||t[9]!==a||t[10]!==o?(l=(0,R.jsx)(`ul`,{"aria-label":i,className:a,children:o}),t[8]=i,t[9]=a,t[10]=o,t[11]=l):l=t[11],l}function kl(e,t){return Number(t.stufe===`rot`)-Number(e.stufe===`rot`)}function Al(e){return e.zustand!==`stumm`}var jl=e=>/\((ab |über die App)/.test(e);function Ml(e){let t=(0,z.c)(27),{to:n,bild:r,name:i,unter:a,punkt:o,zustandText:c,rechts:l,updates:u,knopf:d}=e,f;t[0]===u?f=t[1]:(f=u===void 0?[]:u,t[0]=u,t[1]=f);let p=f,m=d!==void 0&&d,h;t[2]!==r||t[3]!==o?(h=(0,R.jsx)(Ks,{bild:r,punkt:o}),t[2]=r,t[3]=o,t[4]=h):h=t[4];let g;t[5]!==l||t[6]!==c?(g=c&&!l&&(0,R.jsxs)(`span`,{className:`sr-only`,children:[`, `,c]}),t[5]=l,t[6]=c,t[7]=g):g=t[7];let _;t[8]!==i||t[9]!==g?(_=(0,R.jsxs)(`span`,{className:`truncate text-[14.5px] leading-snug font-medium`,children:[i,g]}),t[8]=i,t[9]=g,t[10]=_):_=t[10];let v;t[11]===l?v=t[12]:(v=l&&(0,R.jsx)(`span`,{className:`shrink-0 text-[12px]`,children:l}),t[11]=l,t[12]=v);let y;t[13]!==_||t[14]!==v?(y=(0,R.jsxs)(`span`,{className:`flex min-w-0 items-baseline justify-between gap-2`,children:[_,v]}),t[13]=_,t[14]=v,t[15]=y):y=t[15];let b;t[16]!==m||t[17]!==a||t[18]!==p?(b=p.length>0?(0,R.jsx)(`span`,{className:`flex min-w-0 flex-wrap gap-x-2 text-[12.5px] leading-snug`,children:p.map(e=>(0,R.jsxs)(`span`,{className:s(`truncate`,m&&!jl(e)?`text-cyan-text`:`text-text-3`),children:[m&&!jl(e)&&(0,R.jsx)(ro,{className:`mr-1 inline size-3 -translate-y-px`,"aria-hidden":!0}),e]},e))}):(0,R.jsx)(`span`,{className:`truncate text-[12.5px] leading-snug text-text-3`,children:a}),t[16]=m,t[17]=a,t[18]=p,t[19]=b):b=t[19];let x;t[20]!==y||t[21]!==b?(x=(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[y,b]}),t[20]=y,t[21]=b,t[22]=x):x=t[22];let S;return t[23]!==x||t[24]!==h||t[25]!==n?(S=(0,R.jsxs)(wi,{to:n,className:`flaeche-innen group flex h-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 transition-colors hover:border-white/20 hover:bg-white/[0.05]`,children:[h,x]}),t[23]=x,t[24]=h,t[25]=n,t[26]=S):S=t[26],S}var Nl={ok:`ok`,aus:`aus`,warn:`warn`,info:`info`,fehler:`rot`};function Pl(e){return e.zustand===`neu`?{updates:[e.kurz||(e.verfuegbar?`→ ${e.verfuegbar}`:`neu`)],unter:``}:e.zustand===`festgehalten`?{updates:[],unter:`${e.installiert??`–`} · festgehalten`}:{updates:[],unter:e.installiert??`–`}}function Fl(e){let t=(0,z.c)(6),{eintraege:n}=e;if(n.length===0){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,R.jsx)(`p`,{className:`text-sm text-text-3`,children:`Nichts geplant.`}),t[0]=e):e=t[0],e}let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`span`,{"aria-hidden":!0,className:`absolute top-3 bottom-3 left-[5px] w-px bg-gradient-to-b from-white/20 to-white/0`}),t[1]=r):r=t[1];let i;t[2]===n?i=t[3]:(i=n.map(Il),t[2]=n,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,R.jsxs)(`ol`,{className:`relative m-0 flex list-none flex-col p-0`,children:[r,i]}),t[4]=i,t[5]=a),a}function Il(e){let[t,n]=Ll(ve(e.zeit)),r=/update/i.test(e.titel);return(0,R.jsxs)(`li`,{className:`relative grid grid-cols-[11px_minmax(0,1fr)_auto] items-center gap-x-3 py-1.5`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-[11px] rounded-full ring-[3px] ring-[#0d1119]`,r?`bg-cyan`:`bg-white/25`)}),(0,R.jsx)(`span`,{className:`truncate text-[14.5px]`,children:e.titel}),(0,R.jsxs)(`span`,{className:`ziffern text-[12.5px] whitespace-nowrap text-text-3`,children:[t&&(0,R.jsx)(`span`,{className:`etikett mr-1.5 text-[10px] tracking-[0.1em]`,children:t}),n]})]},`${e.titel}-${e.zeit}`)}function Ll(e){let t=e.match(/^(.*) (\d{2}:\d{2})$/);return t?[t[1].toLowerCase(),t[2]]:[``,e]}function Rl(e){let t=(0,z.c)(85),{verbindung:n}=e,r=ce(),i=fe(),a=E(),o,s,c,l,u,d,f,p,m,h,g,_;if(t[0]!==a.data?.models||t[1]!==a.data?.running||t[2]!==r.data||t[3]!==n||t[4]!==i.data?.ziele){let e=i.data?.ziele.find(Hl)?.bausteine??[],v=e.filter(Vl),y,b,x,S;if(t[17]!==a.data?.models||t[18]!==a.data?.running||t[19]!==r.data||t[20]!==n){let e=a.data?.models??[],i;t[32]===a.data?.running?i=t[33]:(i=a.data?.running??[],t[32]=a.data?.running,t[33]=i);let c=i,l=[`hirn`,`coder`].map(t=>({rolle:t,m:e.find(e=>k(e)===t)})),u;t[34]===r.data?.lampen?u=t[35]:(u=r.data?.lampen??[],t[34]=r.data?.lampen,t[35]=u);let d=u,f;t[36]===d?f=t[37]:(f=e=>d.find(t=>t.id===e),t[36]=d,t[37]=f),s=f,o=Dl,p=`box`,m=n,h=2,t[38]===r.data?g=t[39]:(g=r.data?.box.ram_total?`${Math.round(r.data.box.ram_total/1073741824)} GB gemeinsamer Speicher`:`Strix Halo`,t[38]=r.data,t[39]=g);let v;t[40]===r.data?.hinweise?v=t[41]:(v=r.data?.hinweise??[],t[40]=r.data?.hinweise,t[41]=v),t[42]===v?_=t[43]:(_=(0,R.jsx)(Ol,{hinweise:v,ziel:`/box`}),t[42]=v,t[43]=_),x=`flex flex-col gap-2.5`,t[44]===c.length?S=t[45]:(S=(0,R.jsx)(El,{titel:`Modelle`,rechts:(0,R.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[c.length,` geladen`]})}),t[44]=c.length,t[45]=S),y=`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-2`,b=l.map(e=>{let{rolle:t,m:n}=e,r=!!n&&c.includes(n.name);return(0,R.jsx)(`li`,{children:(0,R.jsx)(Ml,{to:`/box/modelle`,bild:Vs(t),name:t===`hirn`?`Hirn`:`Coder`,unter:n?.name??`nicht belegt`,punkt:r?`ok`:`aus`,rechts:(0,R.jsx)(`span`,{className:r?`text-gruen-text`:`text-text-3`,children:r?`geladen`:`auf Abruf`})})},t)}),t[17]=a.data?.models,t[18]=a.data?.running,t[19]=r.data,t[20]=n,t[21]=o,t[22]=s,t[23]=y,t[24]=b,t[25]=x,t[26]=S,t[27]=p,t[28]=m,t[29]=h,t[30]=g,t[31]=_}else o=t[21],s=t[22],y=t[23],b=t[24],x=t[25],S=t[26],p=t[27],m=t[28],h=t[29],g=t[30],_=t[31];let C;t[46]!==y||t[47]!==b?(C=(0,R.jsx)(`ul`,{className:y,children:b}),t[46]=y,t[47]=b,t[48]=C):C=t[48],t[49]!==x||t[50]!==S||t[51]!==C?(l=(0,R.jsxs)(`div`,{className:x,children:[S,C]}),t[49]=x,t[50]=S,t[51]=C,t[52]=l):l=t[52],d=`flex flex-col gap-2.5`;let w=v.length?(0,R.jsxs)(As,{art:`cyan`,children:[v.length,` bereit`]}):(0,R.jsx)(As,{children:`aktuell`});t[53]===w?f=t[54]:(f=(0,R.jsx)(El,{titel:`Bausteine`,rechts:w}),t[53]=w,t[54]=f),c=`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-2`;let T;t[55]===s?T=t[56]:(T=e=>{let t=Pl(e),n=s(e.id===`engine`?`motor`:e.id);return(0,R.jsx)(`li`,{children:(0,R.jsx)(Ml,{to:`/box/updates`,bild:Vs(e.id),name:e.name.replace(/ \(llama\.cpp\)$/,``),unter:t.unter,updates:t.updates,knopf:!!e.aktion,punkt:n?Nl[n.zustand]:null,zustandText:n?.wert})},e.id)},t[55]=s,t[56]=T),u=e.map(T),t[0]=a.data?.models,t[1]=a.data?.running,t[2]=r.data,t[3]=n,t[4]=i.data?.ziele,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h,t[15]=g,t[16]=_}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14],g=t[15],_=t[16];let v;t[57]!==c||t[58]!==u?(v=(0,R.jsx)(`ul`,{className:c,children:u}),t[57]=c,t[58]=u,t[59]=v):v=t[59];let y;t[60]!==v||t[61]!==d||t[62]!==f?(y=(0,R.jsxs)(`div`,{className:d,children:[f,v]}),t[60]=v,t[61]=d,t[62]=f,t[63]=y):y=t[63];let b;t[64]===s?b=t[65]:(b=(0,R.jsx)(El,{titel:`Als Nächstes`,rechts:[`jobs`,`sicherung`].map(e=>s(e)).filter(Bl).map(zl)}),t[64]=s,t[65]=b);let x;t[66]===r.data?.flugplan.geplant?x=t[67]:(x=r.data?.flugplan.geplant??[],t[66]=r.data?.flugplan.geplant,t[67]=x);let S;t[68]===x?S=t[69]:(S=x.slice(0,4),t[68]=x,t[69]=S);let C;t[70]===S?C=t[71]:(C=(0,R.jsx)(Fl,{eintraege:S}),t[70]=S,t[71]=C);let w;t[72]!==b||t[73]!==C?(w=(0,R.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[b,C]}),t[72]=b,t[73]=C,t[74]=w):w=t[74];let T;return t[75]!==o||t[76]!==l||t[77]!==y||t[78]!==w||t[79]!==p||t[80]!==m||t[81]!==h||t[82]!==g||t[83]!==_?(T=(0,R.jsxs)(o,{bereich:p,verbindung:m,i:h,unterzeile:g,children:[_,l,y,w]}),t[75]=o,t[76]=l,t[77]=y,t[78]=w,t[79]=p,t[80]=m,t[81]=h,t[82]=g,t[83]=_,t[84]=T):T=t[84],T}function zl(e){return(0,R.jsxs)(`span`,{className:`hidden items-center gap-1.5 text-[12.5px] text-text-3 sm:flex`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-1.5 rounded-full`,Ns[Nl[e.zustand]])}),e.label,` `,e.wert]},e.id)}function Bl(e){return!!e}function Vl(e){return e.zustand===`neu`}function Hl(e){return e.art===`ki-box`}var Ul={ok:`bg-lab`,gelb:`bg-bernstein`,rot:`bg-rot`,keine:`bg-text-3`};function Wl(e){let t=(0,z.c)(31),{speicher:n}=e;if(!n)return null;let r;t[0]===n.pools?r=t[1]:(r=n.pools.find(Kl)??n.pools[0],t[0]=n.pools,t[1]=r);let i=r,a=n.nas[0],o=n.sicherungen,s;if(t[2]!==a||t[3]!==i||t[4]!==o.stufe||t[5]!==o.zuletzt){if(s=[],i){let e=i.anteil,n;t[7]===i.anteil?n=t[8]:(n=Math.round(i.anteil*100),t[7]=i.anteil,t[8]=n);let r;t[9]===i.frei?r=t[10]:(r=ll(i.frei),t[9]=i.frei,t[10]=r);let a=`${n} % · ${r} frei`,o;t[11]!==i.anteil||t[12]!==i.stufe||t[13]!==a?(o={label:`Speicherpool`,anteil:e,text:a,stufe:i.stufe},t[11]=i.anteil,t[12]=i.stufe,t[13]=a,t[14]=o):o=t[14],s.push(o)}if(a){let e=a.gesamt!=null&&a.belegt!=null?a.gesamt-a.belegt:null,n;t[15]!==e||t[16]!==a.anteil||t[17]!==a.problem?(n=a.anteil==null?a.problem??`kein Stand`:`${Math.round(a.anteil*100)} % · ${ll(e)} frei`,t[15]=e,t[16]=a.anteil,t[17]=a.problem,t[18]=n):n=t[18];let r;t[19]!==a.anteil||t[20]!==a.stufe||t[21]!==n?(r={label:`NAS`,anteil:a.anteil,stufe:a.stufe,text:n},t[19]=a.anteil,t[20]=a.stufe,t[21]=n,t[22]=r):r=t[22],s.push(r)}let e;t[23]===o.zuletzt?e=t[24]:(e=o.zuletzt?ve(new Date(o.zuletzt*1e3).toISOString()).toLowerCase():`noch keine`,t[23]=o.zuletzt,t[24]=e);let n;t[25]!==o.stufe||t[26]!==e?(n={label:`Sicherungen`,anteil:null,stufe:o.stufe,text:e},t[25]=o.stufe,t[26]=e,t[27]=n):n=t[27],s.push(n),t[2]=a,t[3]=i,t[4]=o.stufe,t[5]=o.zuletzt,t[6]=s}else s=t[6];let c;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsx)(El,{titel:`Speicher und Sicherungen`}),t[28]=c):c=t[28];let l;return t[29]===s?l=t[30]:(l=(0,R.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[c,(0,R.jsx)(`ul`,{className:`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-3`,children:s.map(Gl)})]}),t[29]=s,t[30]=l),l}function Gl(e){return(0,R.jsx)(`li`,{children:(0,R.jsxs)(wi,{to:`/homelab`,className:`flaeche-innen flex h-full flex-col gap-2 rounded-xl px-3 py-2.5 transition-colors hover:border-white/20 hover:bg-white/[0.05]`,children:[(0,R.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,R.jsx)(`span`,{className:`text-[13.5px] font-medium`,children:e.label}),(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-1.5 rounded-full`,Ul[e.stufe])})]}),(0,R.jsx)(`span`,{className:`truncate text-[12.5px] text-text-3`,children:e.text}),e.anteil!=null&&(0,R.jsx)(`span`,{"aria-hidden":!0,className:`h-1 overflow-hidden rounded-full bg-white/[0.08]`,children:(0,R.jsx)(`span`,{className:s(`block h-full rounded-full`,e.stufe===`ok`?`bg-lab/80`:Ul[e.stufe]),style:{width:`${Math.max(2,Math.round(e.anteil*100))}%`}})})]})},e.label)}function Kl(e){return e.aktiv}function ql(e){let t=(0,z.c)(17),{verbindung:n}=e,r=n===`online`,i=oe(r),a=le(r),o=x(r),s;t[0]===i.data?.ziele?s=t[1]:(s=i.data?.ziele??[],t[0]=i.data?.ziele,t[1]=s);let c=s,l;t[2]===c?l=t[3]:(l=c.filter(Xl),t[2]=c,t[3]=l);let u=l.length,d;t[4]===c?d=t[5]:(d=c.filter(Yl),t[4]=c,t[5]=d);let f=d.length,p=c.length?`Proxmox VE · ${f} Gäste`:`Proxmox VE`,m;t[6]!==r||t[7]!==u||t[8]!==a||t[9]!==i.isPending||t[10]!==o||t[11]!==c?(m=r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Ol,{hinweise:a.data?.hinweise??[],ziel:`/homelab`}),(0,R.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,R.jsx)(El,{titel:`Geräte`,rechts:(0,R.jsxs)(`span`,{className:`text-[13px] text-text-3`,children:[u,` von `,c.length,` erreichbar`]})}),i.isPending&&c.length===0&&(0,R.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wird gelesen …`}),(0,R.jsx)(`ul`,{className:`m-0 grid list-none grid-cols-1 gap-2 p-0 sm:grid-cols-2`,children:c.map(Jl)})]}),(0,R.jsx)(Wl,{speicher:o.data})]}):(0,R.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht; die Karte zeigt nichts Veraltetes.`}),t[6]=r,t[7]=u,t[8]=a,t[9]=i.isPending,t[10]=o,t[11]=c,t[12]=m):m=t[12];let h;return t[13]!==p||t[14]!==m||t[15]!==n?(h=(0,R.jsx)(Dl,{bereich:`homelab`,verbindung:n,i:3,unterzeile:p,children:m}),t[13]=p,t[14]=m,t[15]=n,t[16]=h):h=t[16],h}function Jl(e){let t=ml(e),n=e.erreichbar===!1?`rot`:e.erreichbar?`ok`:`aus`;return(0,R.jsx)(`li`,{children:(0,R.jsx)(Ml,{to:t?`/homelab/updates`:`/homelab`,bild:Ls(e),name:No(e),unter:ko(e.kennzahl)??jo(e),punkt:n,zustandText:e.erreichbar===!1?`antwortet nicht`:e.erreichbar?`erreichbar`:`kein Stand`,updates:t?.teile??[],knopf:t?.knopf??!1})},e.id)}function Yl(e){return e.art!==`proxmox-host`}function Xl(e){return e.erreichbar}var Zl={eingespielt:`gruen`,gruen:`gruen`,zurueckgerollt:`bernstein`,gelb:`bernstein`,fehler:`rot`,rot:`rot`,neustart:`cyan`,info:`cyan`,aufgeraeumt:`gruen`},Ql={zurueckgerollt:`zurückgerollt`,aufgeraeumt:`aufgeräumt`,neustart:`Neustart`,fehler:`Fehler`,zurueckgesetzt:`zurückgesetzt`,geloescht:`gelöscht`},$l={gruen:`bg-gruen`,bernstein:`bg-bernstein`,rot:`bg-rot`,cyan:`bg-cyan`,grau:`bg-white/30`};function eu(e){let t=(0,z.c)(5),{homelabAktiv:n}=e,r=ue(),i=ye(n),a;if(t[0]!==r.data?.laeufe||t[1]!==i.data?.laeufe){let e=[...(r.data?.laeufe??[]).slice(0,8).map(iu),...(i.data?.laeufe??[]).filter(ru).slice(0,8).map(nu)].sort(tu).slice(0,8),n;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(n=yl(4),t[3]=n):n=t[3];let o;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,R.jsx)(`h2`,{className:`text-[17px] leading-tight font-semibold`,children:`Zuletzt eingespielt`}),(0,R.jsx)(`span`,{className:`hidden text-[13px] text-text-3 sm:inline`,children:`beide Bereiche, neueste zuerst`})]}),t[4]=o):o=t[4],a=(0,R.jsxs)(`section`,{"aria-label":`Zuletzt eingespielt`,className:`auftauchen flaeche flex flex-col gap-4 rounded-3xl p-5 sm:p-6`,style:n,children:[o,e.length===0?(0,R.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Updates aufgezeichnet.`}):(0,R.jsx)(`ol`,{className:`m-0 grid list-none gap-x-8 p-0 lg:grid-flow-col lg:grid-cols-2 lg:grid-rows-[repeat(var(--zeilen),auto)]`,style:{"--zeilen":Math.ceil(e.length/2)},children:e.map((t,n)=>(0,R.jsxs)(`li`,{className:s(`grid grid-cols-[10px_minmax(0,1fr)_auto] items-center gap-x-3 border-t border-white/[0.06] py-2.5`,n===0&&`border-t-0`,n===Math.ceil(e.length/2)&&`lg:border-t-0`),children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:s(`size-2.5 rounded-full`,$l[t.art])}),(0,R.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,R.jsxs)(`span`,{className:`truncate text-[14.5px]`,children:[(0,R.jsx)(`span`,{className:s(`etikett mr-2 text-[10px] tracking-[0.12em]`,W[t.bereich].text),children:W[t.bereich].name}),t.titel]}),(0,R.jsx)(`span`,{className:`ziffern text-[12px] text-text-3`,children:ve(new Date(t.zeit).toISOString()).toLowerCase()})]}),(0,R.jsx)(As,{art:t.art,children:t.chip})]},`${t.bereich}-${t.zeit}-${t.titel}`))})]}),t[0]=r.data?.laeufe,t[1]=i.data?.laeufe,t[2]=a}else a=t[2];return a}function tu(e,t){return t.zeit-e.zeit}function nu(e){return{zeit:e.start*1e3,bereich:`homelab`,titel:e.name,chip:e.ergebnis?Ql[e.ergebnis]??e.ergebnis:`unterbrochen`,art:(e.ergebnis?Zl[e.ergebnis]:`grau`)??`grau`}}function ru(e){return e.status!==`laeuft`&&!tl(e)&&e.baustein!==`probe`}function iu(e){return{zeit:new Date(e.start).getTime(),bereich:`box`,titel:e.anlass,chip:e.titel,art:Zl[e.stufe]??`grau`}}function G(){let e=(0,z.c)(121),t=$o(),n=ce(),r=fe(),i=t.homelab.verbindung===`online`,a=oe(i),o=le(i);if(n.isPending&&!n.data){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsx)(js,{text:`Die Übersicht sammelt sich gleich …`}),e[0]=t):t=e[0],t}let c,l,u,d,f,p,m,h,g,_;if(e[1]!==r.data?.ziele||e[2]!==a.data?.ziele||e[3]!==i||e[4]!==o.data?.hinweise||e[5]!==t.box.updates||e[6]!==t.box.verbindung||e[7]!==t.homelab.updates||e[8]!==t.homelab.verbindung||e[9]!==n.data||e[10]!==n.isError){let s=[...t.box.verbindung===`getrennt`&&n.isError?[`Die KI-Box`]:[],...t.homelab.verbindung===`getrennt`?[`Der Homelab-Teil`]:[]],v=a.data?.ziele??[],y=v.filter(uu).map(lu),b;e[21]===n.data?.hinweise?b=e[22]:(b=n.data?.hinweise??[],e[21]=n.data?.hinweise,e[22]=b);let x;e[23]===o.data?.hinweise?x=e[24]:(x=o.data?.hinweise??[],e[23]=o.data?.hinweise,e[24]=x);let S;e[25]!==b||e[26]!==x?(S=[...b,...x].filter(cu),e[25]=b,e[26]=x,e[27]=S):S=e[27],c=S,h=c.some(su),_=t.box.updates+t.homelab.updates;let C;e[28]===c?C=e[29]:(C=c.filter(ou),e[28]=c,e[29]=C),d=hl({getrennt:s,stumm:y,hinweiseRot:C.length,hinweise:c.length,updates:_}),u=gl[d.stufe],p=n.data?.flugplan.geplant[0];let w;e[30]===p?w=e[31]:(w=p?Ll(ve(p.zeit)):[``,`–`],e[30]=p,e[31]=w),[m,f]=w,l=n.data?.zustand.stand;let T;e[32]===r.data?.ziele?T=e[33]:(T=r.data?.ziele.find(au),e[32]=r.data?.ziele,e[33]=T);let E=T?.name??`KI-Box`,D=n.isError?`rot`:n.data?`ok`:`aus`,O;e[34]!==E||e[35]!==D?(O={id:`ki-box`,name:E,zustand:D},e[34]=E,e[35]=D,e[36]=O):O=e[36];let k;e[37]===i?k=e[38]:(k=e=>({id:e.id,name:e.name,zustand:i?e.erreichbar===!1?`rot`:e.erreichbar?`ok`:`aus`:`aus`}),e[37]=i,e[38]=k),g=[O,...v.map(k)],e[1]=r.data?.ziele,e[2]=a.data?.ziele,e[3]=i,e[4]=o.data?.hinweise,e[5]=t.box.updates,e[6]=t.box.verbindung,e[7]=t.homelab.updates,e[8]=t.homelab.verbindung,e[9]=n.data,e[10]=n.isError,e[11]=c,e[12]=l,e[13]=u,e[14]=d,e[15]=f,e[16]=p,e[17]=m,e[18]=h,e[19]=g,e[20]=_}else c=e[11],l=e[12],u=e[13],d=e[14],f=e[15],p=e[16],m=e[17],h=e[18],g=e[19],_=e[20];let v=g,y;e[39]===Symbol.for(`react.memo_cache_sentinel`)?(y=yl(0),e[39]=y):y=e[39];let b=`radial-gradient(closest-side, color-mix(in srgb, ${u.glut} 20%, transparent), transparent)`,x;e[40]===b?x=e[41]:(x=(0,R.jsx)(`div`,{"aria-hidden":!0,className:`glut-atmet pointer-events-none absolute -top-48 -left-40 size-[560px] rounded-full`,style:{background:b}}),e[40]=b,e[41]=x);let S;e[42]!==u.glut||e[43]!==v?(S=(0,R.jsx)(Qc,{segmente:v,glut:u.glut}),e[42]=u.glut,e[43]=v,e[44]=S):S=e[44];let C=u.Symbol,w;e[45]===u.symbol?w=e[46]:(w=s(`size-4`,u.symbol),e[45]=u.symbol,e[46]=w);let T;e[47]!==u.Symbol||e[48]!==w?(T=(0,R.jsx)(C,{className:w,"aria-hidden":!0}),e[47]=u.Symbol,e[48]=w,e[49]=T):T=e[49];let E;e[50]===l?E=e[51]:(E=l?` · geprüft ${vl.format(new Date(l*1e3))}`:``,e[50]=l,e[51]=E);let D;e[52]!==T||e[53]!==E?(D=(0,R.jsxs)(`span`,{className:`etikett flex items-center gap-2 text-[11px] text-text-3`,children:[T,`Gesamtlage`,E]}),e[52]=T,e[53]=E,e[54]=D):D=e[54];let O;e[55]===u.titel?O=e[56]:(O=s(`text-[32px] leading-[1.05] font-semibold tracking-[-0.015em] sm:text-[44px]`,u.titel),e[55]=u.titel,e[56]=O);let k;e[57]!==d.titel||e[58]!==O?(k=(0,R.jsx)(`h2`,{className:O,children:d.titel}),e[57]=d.titel,e[58]=O,e[59]=k):k=e[59];let A;e[60]===d.text?A=e[61]:(A=(0,R.jsx)(`p`,{className:`text-[15px] text-text-2 sm:text-base`,children:d.text}),e[60]=d.text,e[61]=A);let j;e[62]===t.box.verbindung?j=e[63]:(j=(0,R.jsx)(Sl,{bereich:`box`,verbindung:t.box.verbindung}),e[62]=t.box.verbindung,e[63]=j);let ee;e[64]===t.homelab.verbindung?ee=e[65]:(ee=(0,R.jsx)(Sl,{bereich:`homelab`,verbindung:t.homelab.verbindung}),e[64]=t.homelab.verbindung,e[65]=ee);let te;e[66]!==j||e[67]!==ee?(te=(0,R.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2`,children:[j,ee]}),e[66]=j,e[67]=ee,e[68]=te):te=e[68];let M;e[69]!==k||e[70]!==A||e[71]!==te||e[72]!==D?(M=(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2.5`,children:[D,k,A,te]}),e[69]=k,e[70]=A,e[71]=te,e[72]=D,e[73]=M):M=e[73];let ne;e[74]!==M||e[75]!==S?(ne=(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-5 sm:gap-8`,children:[S,M]}),e[74]=M,e[75]=S,e[76]=ne):ne=e[76];let re=String(_),ie=_?`cyan`:`grau`,ae;e[77]===t.box.updates?ae=e[78]:(ae=(0,R.jsxs)(wi,{to:`/box/updates`,className:`hover:text-foreground`,children:[`KI-Box `,t.box.updates]}),e[77]=t.box.updates,e[78]=ae);let se;e[79]===t.homelab.updates?se=e[80]:(se=(0,R.jsxs)(wi,{to:`/homelab/updates`,className:`hover:text-foreground`,children:[`Homelab `,t.homelab.updates]}),e[79]=t.homelab.updates,e[80]=se);let ue;e[81]!==re||e[82]!==ie||e[83]!==ae||e[84]!==se?(ue=(0,R.jsxs)(xl,{Icon:ro,label:`Updates bereit`,wert:re,art:ie,children:[ae,` · `,se]}),e[81]=re,e[82]=ie,e[83]=ae,e[84]=se,e[85]=ue):ue=e[85];let de=h?wo:ha,pe=String(c.length),me=h?`rot`:c.length?`bernstein`:`grau`,he=c.length?`stehen oben in den Karten`:`nichts offen`,ge;e[86]!==de||e[87]!==pe||e[88]!==me||e[89]!==he?(ge=(0,R.jsx)(xl,{Icon:de,label:`Hinweise`,wert:pe,art:me,children:he}),e[86]=de,e[87]=pe,e[88]=me,e[89]=he,e[90]=ge):ge=e[90];let N=p?`${p.titel}${m&&m!==`heute`?` · ${m}`:``}`:`nichts geplant`,P;e[91]!==f||e[92]!==N?(P=(0,R.jsx)(xl,{Icon:pa,label:`Als Nächstes`,wert:f,art:`grau`,children:N}),e[91]=f,e[92]=N,e[93]=P):P=e[93];let _e;e[94]!==ue||e[95]!==ge||e[96]!==P?(_e=(0,R.jsxs)(`div`,{className:`grid gap-2.5 sm:grid-cols-3 xl:grid-cols-1`,children:[ue,ge,P]}),e[94]=ue,e[95]=ge,e[96]=P,e[97]=_e):_e=e[97];let ye;e[98]!==ne||e[99]!==_e?(ye=(0,R.jsxs)(`div`,{className:`relative grid gap-6 p-5 sm:p-7 xl:grid-cols-[minmax(0,1fr)_minmax(0,340px)] xl:items-center xl:gap-10`,children:[ne,_e]}),e[98]=ne,e[99]=_e,e[100]=ye):ye=e[100];let be;e[101]!==x||e[102]!==ye?(be=(0,R.jsxs)(`section`,{"aria-label":`Gesamtlage`,className:`auftauchen flaeche relative overflow-hidden rounded-3xl`,style:y,children:[x,ye]}),e[101]=x,e[102]=ye,e[103]=be):be=e[103];let xe;e[104]===Symbol.for(`react.memo_cache_sentinel`)?(xe=(0,R.jsx)(Uc,{}),e[104]=xe):xe=e[104];let F;e[105]===i?F=e[106]:(F=(0,R.jsx)(wl,{homelabAktiv:i}),e[105]=i,e[106]=F);let Se;e[107]===t.box.verbindung?Se=e[108]:(Se=(0,R.jsx)(Rl,{verbindung:t.box.verbindung}),e[107]=t.box.verbindung,e[108]=Se);let Ce;e[109]===t.homelab.verbindung?Ce=e[110]:(Ce=(0,R.jsx)(ql,{verbindung:t.homelab.verbindung}),e[109]=t.homelab.verbindung,e[110]=Ce);let we;e[111]!==Se||e[112]!==Ce?(we=(0,R.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[Se,Ce]}),e[111]=Se,e[112]=Ce,e[113]=we):we=e[113];let Te;e[114]===i?Te=e[115]:(Te=(0,R.jsx)(eu,{homelabAktiv:i}),e[114]=i,e[115]=Te);let Ee;return e[116]!==be||e[117]!==F||e[118]!==we||e[119]!==Te?(Ee=(0,R.jsxs)(R.Fragment,{children:[be,xe,F,we,Te]}),e[116]=be,e[117]=F,e[118]=we,e[119]=Te,e[120]=Ee):Ee=e[120],Ee}function au(e){return e.art===`ki-box`}function ou(e){return e.stufe===`rot`}function su(e){return e.stufe===`rot`}function cu(e){return e.zustand!==`stumm`}function lu(e){return e.name}function uu(e){return e.erreichbar===!1}var du=ki({component:Os,notFoundComponent:()=>(0,R.jsx)(si,{to:`/`})}),fu=Di({getParentRoute:()=>du,path:`/`,component:G}),pu=Di({getParentRoute:()=>du,path:`/box`,component:Ai(()=>_s(()=>import(`./Start-X1vycEEP.js`),__vite__mapDeps([7,1,6,4,8])),`StartSeite`)}),mu=Di({getParentRoute:()=>du,path:`/box/updates`,component:Ai(()=>_s(()=>import(`./Updates-C1DGAQzb.js`),__vite__mapDeps([9,1,6,10,4,11])),`UpdatesSeite`)}),hu=Di({getParentRoute:()=>du,path:`/box/modelle`,component:Ai(()=>_s(()=>import(`./Modelle-qcKJnyDK.js`),__vite__mapDeps([12,1,6,13,14,10,4,2,3,11,15])),`ModelleSeite`)}),gu=Di({getParentRoute:()=>du,path:`/box/monitoring`,component:Ai(()=>_s(()=>import(`./Monitoring-CpuY6nlC.js`),__vite__mapDeps([16,1,6,17,13,14,15])),`BoxMonitoringSeite`)}),_u=Di({getParentRoute:()=>du,path:`/box/dienste`,component:Ai(()=>_s(()=>import(`./Dienste-BnFvX5-a.js`),__vite__mapDeps([18,1,6,4])),`DiensteSeite`)}),vu=Di({getParentRoute:()=>du,path:`/homelab`,component:Ai(()=>_s(()=>import(`./Homelab-B_yJb4MW.js`),__vite__mapDeps([19,1,6,10,20,4,8])),`HomelabSeite`)}),yu=Di({getParentRoute:()=>du,path:`/homelab/updates`,component:Ai(()=>_s(()=>import(`./Homelab-B_yJb4MW.js`),__vite__mapDeps([19,1,6,10,20,4,8])),`HomelabUpdatesSeite`)}),bu=Di({getParentRoute:()=>du,path:`/homelab/snapshots`,component:Ai(()=>_s(()=>import(`./HomelabSnapshots-3N_oyI54.js`),__vite__mapDeps([21,1,6,20,4])),`HomelabSnapshotsSeite`)}),xu=Di({getParentRoute:()=>du,path:`/homelab/monitoring`,component:Ai(()=>_s(()=>import(`./Monitoring-CpuY6nlC.js`),__vite__mapDeps([16,1,6,17,13,14,15])),`HomelabMonitoringSeite`)}),Su=Di({getParentRoute:()=>du,path:`/homelab/protokoll`,component:Ai(()=>_s(()=>import(`./HomelabProtokoll-Dc7ImWeS.js`),__vite__mapDeps([22,1,6,17,13,14,10])),`HomelabProtokollSeite`)}),Cu=Di({getParentRoute:()=>du,path:`/handy`,component:Ai(()=>_s(()=>import(`./Handy-DBkH-dQc.js`),__vite__mapDeps([23,1,6,4])),`HandySeite`)}),wu=Di({getParentRoute:()=>du,path:`/einstellungen`,component:Ai(()=>_s(()=>import(`./Einstellungen-DaFSM6VU.js`),__vite__mapDeps([24,1,6,4])),`EinstellungenSeite`)}),Tu=Di({getParentRoute:()=>du,path:`/updates`,beforeLoad:()=>{throw Nt({to:`/box/updates`})}}),Eu=Di({getParentRoute:()=>du,path:`/modelle`,beforeLoad:({location:e})=>{throw Nt({to:`/box/modelle`,hash:e.hash||void 0})}}),Du=qi({routeTree:du.addChildren([fu,pu,mu,hu,gu,_u,vu,yu,xu,Su,wu,Tu,Eu,bu,Cu]),defaultPreload:`intent`,defaultErrorComponent:Qi}),Ou=`mc_neuladen_wegen_version`;function ku(){window.addEventListener(`vite:preloadError`,e=>{sessionStorage.getItem(Ou)||(e.preventDefault(),sessionStorage.setItem(Ou,`1`),window.location.reload())}),window.addEventListener(`load`,()=>{window.setTimeout(()=>sessionStorage.removeItem(Ou),5e3)})}ku();var Au=new Xe({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1,staleTime:5e3}}});(0,Zi.createRoot)(document.getElementById(`root`)).render((0,R.jsx)(I.StrictMode,{children:(0,R.jsx)(se,{client:Au,children:(0,R.jsx)(Xi,{router:Du})})}));export{No as $,oc as A,Bs as B,uc as C,cc as D,fc as E,Xs as F,us as G,As as H,nc as I,Yo as J,fs as K,$s as L,rc as M,Zs as N,lc as O,Qs as P,ko as Q,Ks as R,dc as S,hc as T,js as U,Ls as V,_s as W,Fo as X,$o as Y,jo as Z,Tc as _,ha as _t,nl as a,zo as at,jc as b,oi as bt,tl as c,H as ct,ol as d,ao as dt,Ko as et,Hc as f,ro as ft,Nc as g,_a as gt,Pc as h,ja as ht,ll as i,Uo as it,ac as j,sc as k,sl as l,wo as lt,Fc as m,Fa as mt,fl as n,qo as nt,il as o,Io as ot,Wc as p,qa as pt,Xo as q,dl as r,Lo as rt,al as s,Ro as st,hl as t,Wo as tt,rl as u,fo as ut,Oc as v,ra as vt,mc as w,gc as x,Mc as y,wi as yt,Vs as z}; \ No newline at end of file diff --git a/frontend/dist/assets/index-CyAQuGX0.css b/frontend/dist/assets/index-CyAQuGX0.css new file mode 100644 index 0000000..e609350 --- /dev/null +++ b/frontend/dist/assets/index-CyAQuGX0.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-sans:"Barlow", "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-3xl:1.5rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Barlow", "Segoe UI", system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--font-anzeige:"Barlow Condensed", "Barlow", "Segoe UI", sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{-webkit-font-smoothing:antialiased;font-family:Barlow,Segoe UI,system-ui,sans-serif}body{background-color:var(--background);color:var(--foreground);min-height:100dvh;margin:0}body:before,body:after{content:"";z-index:-1;pointer-events:none;position:fixed;inset:0}body:before{background:radial-gradient(60rem 34rem at 4% -14%, var(--box), transparent 68%), radial-gradient(54rem 32rem at 104% -10%, var(--lab), transparent 64%), radial-gradient(50rem 30rem at 55% 120%, var(--cyan), transparent 70%)}@supports (color:color-mix(in lab, red, red)){body:before{background:radial-gradient(60rem 34rem at 4% -14%, color-mix(in srgb, var(--box) 17%, transparent), transparent 68%), radial-gradient(54rem 32rem at 104% -10%, color-mix(in srgb, var(--lab) 14%, transparent), transparent 64%), radial-gradient(50rem 30rem at 55% 120%, color-mix(in srgb, var(--cyan) 6%, transparent), transparent 70%)}}body:after{background-image:radial-gradient(#ffffff0e 1px,#0000 1.4px);background-size:26px 26px;-webkit-mask-image:linear-gradient(#000 0%,#0000 70%);mask-image:linear-gradient(#000 0%,#0000 70%)}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-1{inset:var(--spacing)}.inset-y-0{inset-block:0}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.-top-2\.5{top:calc(var(--spacing) * -2.5)}.-top-40{top:calc(var(--spacing) * -40)}.-top-44{top:calc(var(--spacing) * -44)}.-top-48{top:calc(var(--spacing) * -48)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-\[12vh\]{top:12vh}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.-bottom-1\.5{bottom:calc(var(--spacing) * -1.5)}.-bottom-2\.5{bottom:calc(var(--spacing) * -2.5)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-24{bottom:calc(var(--spacing) * 24)}.-left-32{left:calc(var(--spacing) * -32)}.-left-36{left:calc(var(--spacing) * -36)}.-left-40{left:calc(var(--spacing) * -40)}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[5px\]{left:5px}.left-\[80\%\]{left:80%}.left-\[90\%\]{left:90%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:0}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing) * -2)}.my-2{margin-block:calc(var(--spacing) * 2)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-\[0\.444em\]{margin-right:.444em}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-\[0\.111em\]{margin-left:.111em}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-\[11px\]{width:11px;height:11px}.size-\[18px\]{width:18px;height:18px}.size-\[88px\]{width:88px;height:88px}.size-\[132px\]{width:132px;height:132px}.size-\[400px\]{width:400px;height:400px}.size-\[460px\]{width:460px;height:460px}.size-\[560px\]{width:560px;height:560px}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\[1\.75em\]{height:1.75em}.h-\[min\(75cqw\,150px\)\]{height:min(75cqw,150px)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[132px\]{min-height:132px}.min-h-dvh{min-height:100dvh}.w-0\.5{width:calc(var(--spacing) * .5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-60{width:calc(var(--spacing) * 60)}.w-\[1\.1875em\]{width:1.1875em}.w-full{width:100%}.w-px{width:1px}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-\[200px\]{max-width:200px}.max-w-\[1360px\]{max-width:1360px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-44{min-width:calc(var(--spacing) * 44)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-40{flex-basis:calc(var(--spacing) * 40)}.basis-48{flex-basis:calc(var(--spacing) * 48)}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-px{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-4{scroll-margin-top:calc(var(--spacing) * 4)}.scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.scroll-mt-24{scroll-margin-top:calc(var(--spacing) * 24)}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:1.5rem minmax(0,1fr) auto}.grid-cols-\[10px_minmax\(0\,1fr\)_auto\]{grid-template-columns:10px minmax(0,1fr) auto}.grid-cols-\[11px_minmax\(0\,1fr\)_auto\]{grid-template-columns:11px minmax(0,1fr) auto}.grid-cols-\[64px_18px_minmax\(0\,1fr\)\]{grid-template-columns:64px 18px minmax(0,1fr)}.grid-cols-\[210px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:210px 100px 170px minmax(0,1fr) auto}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-9{gap:calc(var(--spacing) * 9)}.gap-\[0\.1875em\]{gap:.1875em}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-2\.5{row-gap:calc(var(--spacing) * 2.5)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-bernstein\/60{border-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.border-bernstein\/60{border-color:color-mix(in oklab, var(--bernstein) 60%, transparent)}}.border-box-rand{border-color:var(--box-rand)}.border-cyan-rand{border-color:var(--cyan-rand)}.border-cyan\/35{border-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.border-cyan\/35{border-color:color-mix(in oklab, var(--cyan) 35%, transparent)}}.border-gruen-rand{border-color:var(--gruen-rand)}.border-lab-rand{border-color:var(--lab-rand)}.border-lab\/50{border-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.border-lab\/50{border-color:color-mix(in oklab, var(--lab) 50%, transparent)}}.border-rot-rand{border-color:var(--rot-rand)}.border-rot\/40{border-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.border-rot\/40{border-color:color-mix(in oklab, var(--rot) 40%, transparent)}}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.border-white\/12{border-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.border-white\/12{border-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.border-white\/15{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.border-white\/15{border-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.flaeche{border:1px solid var(--rand,var(--flaeche-rand));-webkit-backdrop-filter:blur(18px)saturate(1.4);backdrop-filter:blur(18px)saturate(1.4);background-color:#0c10189e;background-image:linear-gradient(#ffffff0d,#ffffff03 45%,#0000);box-shadow:inset 0 1px #ffffff0e,0 1px 2px #00000059,0 24px 48px -28px #000000e6}.flaeche-innen{background-color:#ffffff07;border:1px solid #94a3c21a}.bg-\[\#0a0d14\]{background-color:#0a0d14}.bg-\[\#0b0d0f\]{background-color:#0b0d0f}.bg-\[\#0e121a\]{background-color:#0e121a}.bg-\[\#121722\]{background-color:#121722}.bg-\[rgb\(8_11_17\/0\.72\)\]{background-color:#080b11b8}.bg-bernstein{background-color:var(--bernstein)}.bg-bernstein-grund{background-color:var(--bernstein-grund)}.bg-bernstein\/10{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/10{background-color:color-mix(in oklab, var(--bernstein) 10%, transparent)}}.bg-bernstein\/15{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/15{background-color:color-mix(in oklab, var(--bernstein) 15%, transparent)}}.bg-bernstein\/35{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/35{background-color:color-mix(in oklab, var(--bernstein) 35%, transparent)}}.bg-bernstein\/70{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/70{background-color:color-mix(in oklab, var(--bernstein) 70%, transparent)}}.bg-bernstein\/\[0\.06\]{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/\[0\.06\]{background-color:color-mix(in oklab, var(--bernstein) 6%, transparent)}}.bg-bernstein\/\[0\.08\]{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/\[0\.08\]{background-color:color-mix(in oklab, var(--bernstein) 8%, transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-box-grund{background-color:var(--box-grund)}.bg-box\/10{background-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.bg-box\/10{background-color:color-mix(in oklab, var(--box) 10%, transparent)}}.bg-current{background-color:currentColor}.bg-cyan{background-color:var(--cyan)}.bg-cyan-grund{background-color:var(--cyan-grund)}.bg-cyan\/10{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/10{background-color:color-mix(in oklab, var(--cyan) 10%, transparent)}}.bg-cyan\/12{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/12{background-color:color-mix(in oklab, var(--cyan) 12%, transparent)}}.bg-cyan\/15{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/15{background-color:color-mix(in oklab, var(--cyan) 15%, transparent)}}.bg-cyan\/35{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/35{background-color:color-mix(in oklab, var(--cyan) 35%, transparent)}}.bg-cyan\/\[0\.06\]{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/\[0\.06\]{background-color:color-mix(in oklab, var(--cyan) 6%, transparent)}}.bg-cyan\/\[0\.07\]{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/\[0\.07\]{background-color:color-mix(in oklab, var(--cyan) 7.0%, transparent)}}.bg-cyan\/\[0\.08\]{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/\[0\.08\]{background-color:color-mix(in oklab, var(--cyan) 8%, transparent)}}.bg-gruen{background-color:var(--gruen)}.bg-gruen-grund{background-color:var(--gruen-grund)}.bg-gruen\/10{background-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.bg-gruen\/10{background-color:color-mix(in oklab, var(--gruen) 10%, transparent)}}.bg-gruen\/15{background-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.bg-gruen\/15{background-color:color-mix(in oklab, var(--gruen) 15%, transparent)}}.bg-gruen\/\[0\.07\]{background-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.bg-gruen\/\[0\.07\]{background-color:color-mix(in oklab, var(--gruen) 7.0%, transparent)}}.bg-lab{background-color:var(--lab)}.bg-lab-grund{background-color:var(--lab-grund)}.bg-lab\/10{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.bg-lab\/10{background-color:color-mix(in oklab, var(--lab) 10%, transparent)}}.bg-lab\/20{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.bg-lab\/20{background-color:color-mix(in oklab, var(--lab) 20%, transparent)}}.bg-lab\/80{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.bg-lab\/80{background-color:color-mix(in oklab, var(--lab) 80%, transparent)}}.bg-linie{background-color:var(--linie)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-rot{background-color:var(--rot)}.bg-rot-grund{background-color:var(--rot-grund)}.bg-rot\/10{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/10{background-color:color-mix(in oklab, var(--rot) 10%, transparent)}}.bg-rot\/12{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/12{background-color:color-mix(in oklab, var(--rot) 12%, transparent)}}.bg-rot\/15{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/15{background-color:color-mix(in oklab, var(--rot) 15%, transparent)}}.bg-rot\/80{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/80{background-color:color-mix(in oklab, var(--rot) 80%, transparent)}}.bg-rot\/\[0\.07\]{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/\[0\.07\]{background-color:color-mix(in oklab, var(--rot) 7.0%, transparent)}}.bg-text-3{background-color:var(--text-3)}.bg-transparent{background-color:#0000}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/25{background-color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.bg-white\/25{background-color:color-mix(in oklab, var(--color-white) 25%, transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.bg-white\/30{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.bg-white\/\[0\.05\]{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.05\]{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.bg-white\/\[0\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.06\]{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.bg-white\/\[0\.07\]{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.07\]{background-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-bernstein-hell{--tw-gradient-from:var(--bernstein-hell);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-box\/30{--tw-gradient-from:var(--box)}@supports (color:color-mix(in lab, red, red)){.from-box\/30{--tw-gradient-from:color-mix(in oklab, var(--box) 30%, transparent)}}.from-box\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-lab\/30{--tw-gradient-from:var(--lab)}@supports (color:color-mix(in lab, red, red)){.from-lab\/30{--tw-gradient-from:color-mix(in oklab, var(--lab) 30%, transparent)}}.from-lab\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/20{--tw-gradient-from:#fff3}@supports (color:color-mix(in lab, red, red)){.from-white\/20{--tw-gradient-from:color-mix(in oklab, var(--color-white) 20%, transparent)}}.from-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/\[0\.1\]{--tw-gradient-from:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.from-white\/\[0\.1\]{--tw-gradient-from:color-mix(in oklab, var(--color-white) 10%, transparent)}}.from-white\/\[0\.1\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/\[0\.07\]{--tw-gradient-from:#ffffff12}@supports (color:color-mix(in lab, red, red)){.from-white\/\[0\.07\]{--tw-gradient-from:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.from-white\/\[0\.07\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-bernstein{--tw-gradient-to:var(--bernstein);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-box\/\[0\.05\]{--tw-gradient-to:var(--box)}@supports (color:color-mix(in lab, red, red)){.to-box\/\[0\.05\]{--tw-gradient-to:color-mix(in oklab, var(--box) 5%, transparent)}}.to-box\/\[0\.05\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-lab\/\[0\.05\]{--tw-gradient-to:var(--lab)}@supports (color:color-mix(in lab, red, red)){.to-lab\/\[0\.05\]{--tw-gradient-to:color-mix(in oklab, var(--lab) 5%, transparent)}}.to-lab\/\[0\.05\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/0{--tw-gradient-to:#0000}@supports (color:color-mix(in lab, red, red)){.to-white\/0{--tw-gradient-to:color-mix(in oklab, var(--color-white) 0%, transparent)}}.to-white\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/\[0\.02\]{--tw-gradient-to:#ffffff05}@supports (color:color-mix(in lab, red, red)){.to-white\/\[0\.02\]{--tw-gradient-to:color-mix(in oklab, var(--color-white) 2%, transparent)}}.to-white\/\[0\.02\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/\[0\.03\]{--tw-gradient-to:#ffffff08}@supports (color:color-mix(in lab, red, red)){.to-white\/\[0\.03\]{--tw-gradient-to:color-mix(in oklab, var(--color-white) 3%, transparent)}}.to-white\/\[0\.03\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-padding{background-clip:padding-box}.fill-text-2{fill:var(--text-2)}.fill-text-3{fill:var(--text-3)}.object-contain{object-fit:contain}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-\[calc\(1\.25rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(1.25rem + env(safe-area-inset-bottom))}.pb-\[min\(10cqw\,20px\)\]{padding-bottom:min(10cqw,20px)}.pl-1{padding-left:var(--spacing)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.etikett{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.font-anzeige,.font-heading{font-family:Barlow Condensed,Barlow,Segoe UI,sans-serif}.font-mono{font-family:JetBrains Mono,ui-monospace,Cascadia Mono,Consolas,monospace}.font-sans{font-family:Barlow,Segoe UI,system-ui,sans-serif}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.5625em\]{font-size:.5625em}.text-\[9\.5px\]{font-size:9.5px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14\.5px\]{font-size:14.5px}.text-\[14px\]{font-size:14px}.text-\[15\.5px\]{font-size:15.5px}.text-\[15px\]{font-size:15px}.text-\[16\.5px\]{font-size:16.5px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[19px\]{font-size:19px}.text-\[20px\]{font-size:20px}.text-\[21px\]{font-size:21px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[30px\]{font-size:30px}.text-\[32px\]{font-size:32px}.text-\[38px\]{font-size:38px}.text-\[length\:clamp\(14px\,14\.5cqw\,32px\)\]{font-size:clamp(14px,14.5cqw,32px)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[1\.05\]{--tw-leading:1.05;line-height:1.05}.leading-\[1\.35\]{--tw-leading:1.35;line-height:1.35}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[-0\.015em\]{--tw-tracking:-.015em;letter-spacing:-.015em}.tracking-\[0\.01em\]{--tw-tracking:.01em;letter-spacing:.01em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.005em\]{--tw-tracking:.005em;letter-spacing:.005em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.32em\]{--tw-tracking:.32em;letter-spacing:.32em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-bernstein{color:var(--bernstein)}.text-box{color:var(--box)}.text-box-text{color:var(--box-text)}.text-cyan{color:var(--cyan)}.text-cyan-text{color:var(--cyan-text)}.text-foreground{color:var(--foreground)}.text-gruen{color:var(--gruen)}.text-gruen-text{color:var(--gruen-text)}.text-lab{color:var(--lab)}.text-lab-text{color:var(--lab-text)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-rot{color:var(--rot)}.text-rot-text{color:var(--rot-text)}.text-text-2{color:var(--text-2)}.text-text-3{color:var(--text-3)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.italic{font-style:italic}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-\[var\(--lab\)\]{accent-color:var(--lab)}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--bernstein\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--bernstein));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--cyan\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--cyan));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--gruen\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--gruen));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--rot\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--rot));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_10px_var\(--cyan\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,var(--cyan));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_28px_-6px_var\(--box\)\]{--tw-shadow:0 0 28px -6px var(--tw-shadow-color,var(--box));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_28px_-6px_var\(--lab\)\]{--tw-shadow:0 0 28px -6px var(--tw-shadow-color,var(--lab));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_rgb\(255_255_255\/0\.06\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,#ffffff0f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_rgb\(255_255_255\/0\.35\)\,0_8px_22px_-10px_var\(--bernstein\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,#ffffff59), 0 8px 22px -10px var(--tw-shadow-color,var(--bernstein));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[3px\]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[\#0b0f16\]{--tw-ring-color:#0b0f16}.ring-\[\#0d1119\]{--tw-ring-color:#0d1119}.ring-\[var\(--panel\)\]{--tw-ring-color:var(--panel)}.ring-bernstein\/30{--tw-ring-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.ring-bernstein\/30{--tw-ring-color:color-mix(in oklab, var(--bernstein) 30%, transparent)}}.ring-bernstein\/35{--tw-ring-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.ring-bernstein\/35{--tw-ring-color:color-mix(in oklab, var(--bernstein) 35%, transparent)}}.ring-bernstein\/45{--tw-ring-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.ring-bernstein\/45{--tw-ring-color:color-mix(in oklab, var(--bernstein) 45%, transparent)}}.ring-box\/30{--tw-ring-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.ring-box\/30{--tw-ring-color:color-mix(in oklab, var(--box) 30%, transparent)}}.ring-box\/35{--tw-ring-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.ring-box\/35{--tw-ring-color:color-mix(in oklab, var(--box) 35%, transparent)}}.ring-cyan\/25{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.ring-cyan\/25{--tw-ring-color:color-mix(in oklab, var(--cyan) 25%, transparent)}}.ring-cyan\/30{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.ring-cyan\/30{--tw-ring-color:color-mix(in oklab, var(--cyan) 30%, transparent)}}.ring-cyan\/40{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.ring-cyan\/40{--tw-ring-color:color-mix(in oklab, var(--cyan) 40%, transparent)}}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.ring-gruen\/25{--tw-ring-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.ring-gruen\/25{--tw-ring-color:color-mix(in oklab, var(--gruen) 25%, transparent)}}.ring-gruen\/30{--tw-ring-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.ring-gruen\/30{--tw-ring-color:color-mix(in oklab, var(--gruen) 30%, transparent)}}.ring-gruen\/40{--tw-ring-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.ring-gruen\/40{--tw-ring-color:color-mix(in oklab, var(--gruen) 40%, transparent)}}.ring-lab\/30{--tw-ring-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.ring-lab\/30{--tw-ring-color:color-mix(in oklab, var(--lab) 30%, transparent)}}.ring-lab\/35{--tw-ring-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.ring-lab\/35{--tw-ring-color:color-mix(in oklab, var(--lab) 35%, transparent)}}.ring-lab\/40{--tw-ring-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.ring-lab\/40{--tw-ring-color:color-mix(in oklab, var(--lab) 40%, transparent)}}.ring-rot\/35{--tw-ring-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.ring-rot\/35{--tw-ring-color:color-mix(in oklab, var(--rot) 35%, transparent)}}.ring-rot\/40{--tw-ring-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.ring-rot\/40{--tw-ring-color:color-mix(in oklab, var(--rot) 40%, transparent)}}.ring-rot\/50{--tw-ring-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.ring-rot\/50{--tw-ring-color:color-mix(in oklab, var(--rot) 50%, transparent)}}.ring-white\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ring-white\/10{--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.ring-white\/12{--tw-ring-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.ring-white\/12{--tw-ring-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.ring-white\/15{--tw-ring-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.ring-white\/15{--tw-ring-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.ring-white\/\[0\.07\]{--tw-ring-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.ring-white\/\[0\.07\]{--tw-ring-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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,)}.blur-xl{--tw-blur:blur(var(--blur-xl));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,)}.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,)}.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,)!important}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,border-color\,color\,box-shadow\,filter\]{transition-property:background-color,border-color,color,box-shadow,filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[filter\]{transition-property:filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[stroke-dasharray\]{transition-property:stroke-dasharray;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--rand\:color-mix\(in_srgb\,var\(--box\)_28\%\,transparent\)\]{--rand:var(--box)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--box\)_28\%\,transparent\)\]{--rand:color-mix(in srgb,var(--box) 28%,transparent)}}.\[--rand\:color-mix\(in_srgb\,var\(--box\)_32\%\,transparent\)\]{--rand:var(--box)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--box\)_32\%\,transparent\)\]{--rand:color-mix(in srgb,var(--box) 32%,transparent)}}.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_28\%\,transparent\)\]{--rand:var(--lab)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_28\%\,transparent\)\]{--rand:color-mix(in srgb,var(--lab) 28%,transparent)}}.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_32\%\,transparent\)\]{--rand:var(--lab)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_32\%\,transparent\)\]{--rand:color-mix(in srgb,var(--lab) 32%,transparent)}}.\[font-variant-ligatures\:none\]{font-variant-ligatures:none}.\[grid-area\:herkunft\]{grid-area:herkunft}.\[grid-area\:knoepfe\]{grid-area:knoepfe}.\[grid-area\:name\]{grid-area:name}.\[grid-area\:text\]{grid-area:text}.\[grid-area\:zeit\]{grid-area:zeit}.\[grid-template-areas\:\'name_herkunft\'_\'zeit_zeit\'_\'text_text\'_\'knoepfe_knoepfe\'\]{grid-template-areas:"name herkunft""zeit zeit""text text""knoepfe knoepfe"}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.running{animation-play-state:running}.zoom-in{--tw-enter-scale:0}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-white\/\[0\.06\]:is(:where(.group):hover *){background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-white\/\[0\.06\]:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:text-text-2:is(:where(.group):hover *){color:var(--text-2)}}.placeholder\:text-text-3::placeholder{color:var(--text-3)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-2\.5:before{content:var(--tw-content);top:calc(var(--spacing) * 2.5)}.before\:bottom-2\.5:before{content:var(--tw-content);bottom:calc(var(--spacing) * 2.5)}.before\:left-0:before{content:var(--tw-content);left:0}.before\:w-\[3px\]:before{content:var(--tw-content);width:3px}.before\:rounded-full:before{content:var(--tw-content);border-radius:2147483647px}.before\:bg-bernstein:before{content:var(--tw-content);background-color:var(--bernstein)}.before\:bg-box:before{content:var(--tw-content);background-color:var(--box)}.before\:bg-lab:before{content:var(--tw-content);background-color:var(--lab)}.before\:bg-text-2:before{content:var(--tw-content);background-color:var(--text-2)}.before\:opacity-0:before{content:var(--tw-content);opacity:0}.before\:shadow-\[0_0_12px_var\(--bernstein\)\]:before{content:var(--tw-content);--tw-shadow:0 0 12px var(--tw-shadow-color,var(--bernstein));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:shadow-\[0_0_12px_var\(--box\)\]:before{content:var(--tw-content);--tw-shadow:0 0 12px var(--tw-shadow-color,var(--box));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:shadow-\[0_0_12px_var\(--lab\)\]:before{content:var(--tw-content);--tw-shadow:0 0 12px var(--tw-shadow-color,var(--lab));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:transition-opacity:before{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.first\:pt-1:first-child{padding-top:var(--spacing)}.open\:pb-2:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 2)}.open\:pb-3:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 3)}@media (hover:hover){.hover\:border-white\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/20:hover{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.hover\:bg-bernstein\/\[0\.13\]:hover{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-bernstein\/\[0\.13\]:hover{background-color:color-mix(in oklab, var(--bernstein) 13%, transparent)}}.hover\:bg-box\/20:hover{background-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-box\/20:hover{background-color:color-mix(in oklab, var(--box) 20%, transparent)}}.hover\:bg-cyan\/15:hover{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan\/15:hover{background-color:color-mix(in oklab, var(--cyan) 15%, transparent)}}.hover\:bg-lab\/20:hover{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-lab\/20:hover{background-color:color-mix(in oklab, var(--lab) 20%, transparent)}}.hover\:bg-rot-grund:hover{background-color:var(--rot-grund)}.hover\:bg-rot\/15:hover{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-rot\/15:hover{background-color:color-mix(in oklab, var(--rot) 15%, transparent)}}.hover\:bg-rot\/\[0\.18\]:hover{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-rot\/\[0\.18\]:hover{background-color:color-mix(in oklab, var(--rot) 18%, transparent)}}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.05\]:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.06\]:hover{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.hover\:bg-white\/\[0\.045\]:hover{background-color:#ffffff0b}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.045\]:hover{background-color:color-mix(in oklab, var(--color-white) 4.5%, transparent)}}.hover\:text-cyan:hover{color:var(--cyan)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-lab-text:hover{color:var(--lab-text)}.hover\:text-rot-text:hover{color:var(--rot-text)}.hover\:text-text-2:hover{color:var(--text-2)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}.hover\:brightness-125:hover{--tw-brightness:brightness(125%);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,)}}.focus\:border-cyan\/60:focus{border-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.focus\:border-cyan\/60:focus{border-color:color-mix(in oklab, var(--cyan) 60%, transparent)}}.focus\:border-lab\/60:focus{border-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.focus\:border-lab\/60:focus{border-color:color-mix(in oklab, var(--lab) 60%, transparent)}}.focus\:bg-white\/\[0\.06\]:focus{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.focus\:bg-white\/\[0\.06\]:focus{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.focus-visible\:rounded-md:focus-visible{border-radius:calc(var(--radius) * .8)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--cyan) 60%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-45:disabled{opacity:.45}.data-\[side\=bottom\]\:inset-x-0[data-side=bottom]{inset-inline:0}.data-\[side\=bottom\]\:bottom-0[data-side=bottom]{bottom:0}.data-\[side\=bottom\]\:h-auto[data-side=bottom]{height:auto}.data-\[side\=bottom\]\:border-t[data-side=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[side\=left\]\:inset-y-0[data-side=left]{inset-block:0}.data-\[side\=left\]\:left-0[data-side=left]{left:0}.data-\[side\=left\]\:h-full[data-side=left]{height:100%}.data-\[side\=left\]\:w-3\/4[data-side=left]{width:75%}.data-\[side\=left\]\:w-\[300px\][data-side=left]{width:300px}.data-\[side\=left\]\:border-r[data-side=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[side\=right\]\:inset-y-0[data-side=right]{inset-block:0}.data-\[side\=right\]\:right-0[data-side=right]{right:0}.data-\[side\=right\]\:h-full[data-side=right]{height:100%}.data-\[side\=right\]\:w-3\/4[data-side=right]{width:75%}.data-\[side\=right\]\:w-full[data-side=right]{width:100%}.data-\[side\=right\]\:border-l[data-side=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[side\=top\]\:inset-x-0[data-side=top]{inset-inline:0}.data-\[side\=top\]\:top-0[data-side=top]{top:0}.data-\[side\=top\]\:h-auto[data-side=top]{height:auto}.data-\[side\=top\]\:border-b[data-side=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.data-\[status\=active\]\:from-bernstein\/\[0\.16\][data-status=active]{--tw-gradient-from:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-bernstein\/\[0\.16\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--bernstein) 16%, transparent)}}.data-\[status\=active\]\:from-bernstein\/\[0\.16\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:from-box\/\[0\.2\][data-status=active]{--tw-gradient-from:var(--box)}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-box\/\[0\.2\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--box) 20%, transparent)}}.data-\[status\=active\]\:from-box\/\[0\.2\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:from-lab\/\[0\.2\][data-status=active]{--tw-gradient-from:var(--lab)}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-lab\/\[0\.2\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--lab) 20%, transparent)}}.data-\[status\=active\]\:from-lab\/\[0\.2\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:from-white\/\[0\.08\][data-status=active]{--tw-gradient-from:#ffffff14}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-white\/\[0\.08\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--color-white) 8%, transparent)}}.data-\[status\=active\]\:from-white\/\[0\.08\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:text-foreground[data-status=active]{color:var(--foreground)}.data-\[status\=active\]\:before\:opacity-100[data-status=active]:before{content:var(--tw-content);opacity:1}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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,)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}.motion-safe\:animate-spin{animation:var(--animate-spin)}}@media (width>=480px){.min-\[480px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-start-3{grid-column-start:3}.sm\:row-start-1{grid-row-start:1}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:size-\[168px\]{width:168px;height:168px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1\.5fr\)_70px_130px_minmax\(0\,1\.5fr\)\]{grid-template-columns:minmax(0,1.5fr) 70px 130px minmax(0,1.5fr)}.sm\:grid-cols-\[minmax\(0\,1fr\)_120px_160px\]{grid-template-columns:minmax(0,1fr) 120px 160px}.sm\:flex-row{flex-direction:row}.sm\:items-baseline{align-items:baseline}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:self-start{align-self:flex-start}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-7{padding:calc(var(--spacing) * 7)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:pt-6{padding-top:calc(var(--spacing) * 6)}.sm\:text-left{text-align:left}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-\[10px\]{font-size:10px}.sm\:text-\[22px\]{font-size:22px}.sm\:text-\[34px\]{font-size:34px}.sm\:text-\[44px\]{font-size:44px}.sm\:text-\[46px\]{font-size:46px}.data-\[side\=left\]\:sm\:max-w-sm[data-side=left]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-2xl[data-side=right]{max-width:var(--container-2xl)}.data-\[side\=right\]\:sm\:max-w-sm[data-side=right]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-xl[data-side=right]{max-width:var(--container-xl)}}@media (width>=48rem){.md\:left-auto{left:auto}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-4{grid-column:span 4/span 4}.md\:block{display:block}.md\:grid{display:grid}.md\:hidden{display:none}.md\:w-\[420px\]{width:420px}.md\:w-auto{width:auto}.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-\[210px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:210px 100px 170px minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(0\,1\.3fr\)_minmax\(0\,1fr\)_minmax\(0\,0\.9fr\)_11\.5rem\]{grid-template-columns:minmax(0,1.1fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.9fr) 11.5rem}.md\:grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(0\,1fr\)_minmax\(0\,1\.1fr\)_minmax\(0\,1\.1fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.1fr)}.md\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)_110px\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) 110px}.md\:grid-cols-\[minmax\(0\,1\.6fr\)_minmax\(0\,1fr\)_minmax\(0\,1\.4fr\)\]{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1.4fr)}.md\:grid-cols-\[minmax\(0\,1\.35fr\)_110px_minmax\(0\,1fr\)_minmax\(0\,1\.2fr\)_minmax\(0\,1fr\)_90px\]{grid-template-columns:minmax(0,1.35fr) 110px minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr) 90px}.md\:grid-rows-\[auto_auto_1fr\]{grid-template-rows:auto auto 1fr}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:items-start{align-items:flex-start}.md\:items-stretch{align-items:stretch}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:gap-x-4{column-gap:calc(var(--spacing) * 4)}.md\:justify-self-end{justify-self:flex-end}.md\:px-3{padding-inline:calc(var(--spacing) * 3)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:pt-8{padding-top:calc(var(--spacing) * 8)}.md\:pb-1{padding-bottom:var(--spacing)}.md\:pl-\[18px\]{padding-left:18px}.md\:text-\[32px\]{font-size:32px}.md\:\[grid-template-areas\:\'name_herkunft\'_\'zeit_knoepfe\'_\'text_knoepfe\'\]{grid-template-areas:"name herkunft""zeit knoepfe""text knoepfe"}}@media (width>=64rem){.lg\:bottom-6{bottom:calc(var(--spacing) * 6)}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:grid-flow-col{grid-auto-flow:column}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[272px_minmax\(0\,1fr\)\]{grid-template-columns:272px minmax(0,1fr)}.lg\:grid-cols-\[280px_minmax\(0\,1fr\)\]{grid-template-columns:280px minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.5fr\)_minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)_minmax\(0\,1\.2fr\)_minmax\(0\,0\.8fr\)\]{grid-template-columns:minmax(0,1.5fr) minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr) minmax(0,.8fr)}.lg\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.lg\:grid-rows-\[repeat\(var\(--zeilen\)\,auto\)\]{grid-template-rows:repeat(var(--zeilen),auto)}.lg\:items-start{align-items:flex-start}.lg\:gap-5{gap:calc(var(--spacing) * 5)}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=80rem){.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-start-auto{grid-column-start:auto}.xl\:row-start-auto{grid-row-start:auto}.xl\:block{display:block}.xl\:grid{display:grid}.xl\:hidden{display:none}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1\.7fr\)_7rem_minmax\(0\,0\.7fr\)_minmax\(0\,1\.2fr\)_7\.5rem_5rem_9\.5rem\]{grid-template-columns:minmax(0,1.7fr) 7rem minmax(0,.7fr) minmax(0,1.2fr) 7.5rem 5rem 9.5rem}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,340px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,340px)}.xl\:grid-cols-\[minmax\(10\.5rem\,1\.1fr\)_7\.5rem_minmax\(0\,1fr\)_minmax\(0\,1\.4fr\)_11rem\]{grid-template-columns:minmax(10.5rem,1.1fr) 7.5rem minmax(0,1fr) minmax(0,1.4fr) 11rem}.xl\:grid-rows-none{grid-template-rows:none}.xl\:flex-col{flex-direction:column}.xl\:items-center{align-items:center}.xl\:items-stretch{align-items:stretch}.xl\:gap-8{gap:calc(var(--spacing) * 8)}.xl\:gap-10{gap:calc(var(--spacing) * 10)}.xl\:gap-x-3{column-gap:calc(var(--spacing) * 3)}.xl\:self-center{align-self:center}.xl\:justify-self-start{justify-self:flex-start}.xl\:justify-self-stretch{justify-self:stretch}.xl\:pt-0{padding-top:0}.xl\:\[grid-template-areas\:\'name_herkunft_zeit_text_knoepfe\'\]{grid-template-areas:"name herkunft zeit text knoepfe"}}@media (width>=87.5rem){.min-\[87\.5rem\]\:grid-cols-\[minmax\(0\,1\.7fr\)_7rem_minmax\(0\,0\.7fr\)_minmax\(0\,1\.2fr\)_7\.5rem_5rem_17\.5rem\]{grid-template-columns:minmax(0,1.7fr) 7rem minmax(0,.7fr) minmax(0,1.2fr) 7.5rem 5rem 17.5rem}.min-\[87\.5rem\]\:flex-row{flex-direction:row}.min-\[87\.5rem\]\:justify-end{justify-content:flex-end}}@media (width>=96rem){.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (width>=24rem){.\@sm\:col-span-1{grid-column:span 1/span 1}.\@sm\:col-start-2{grid-column-start:2}.\@sm\:col-start-3{grid-column-start:3}.\@sm\:row-start-1{grid-row-start:1}.\@sm\:grid-cols-\[112px_minmax\(0\,1fr\)_auto\]{grid-template-columns:112px minmax(0,1fr) auto}.\@sm\:pl-\[124px\]{padding-left:124px}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-state=open]),.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-state=open]),.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-state=open]),.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-state=open]),.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*-100%)}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-state=closed]),.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-state=closed]),.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-state=closed]),.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-state=closed]),.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*-100%)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}.data-\[status\=active\]\:\[\&\>svg\]\:text-bernstein[data-status=active]>svg{color:var(--bernstein)}.data-\[status\=active\]\:\[\&\>svg\]\:text-box[data-status=active]>svg{color:var(--box)}.data-\[status\=active\]\:\[\&\>svg\]\:text-foreground[data-status=active]>svg{color:var(--foreground)}.data-\[status\=active\]\:\[\&\>svg\]\:text-lab[data-status=active]>svg{color:var(--lab)}.schild{font-family:var(--font-anzeige);text-transform:uppercase;letter-spacing:.16em;font-weight:600}.ziffern{font-family:var(--font-mono);font-variant-numeric:tabular-nums}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-Dpl4UHAZ.woff2)format("woff2"),url(/assets/barlow-vietnamese-400-normal-BFeobeCK.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-HxX4XjxC.woff2)format("woff2"),url(/assets/barlow-latin-ext-400-normal-CvBsJvxq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-vietnamese-500-normal-zTViEIzf.woff2)format("woff2"),url(/assets/barlow-vietnamese-500-normal-GNfB7rCE.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-ext-500-normal-DOaysfXq.woff2)format("woff2"),url(/assets/barlow-latin-ext-500-normal-CJPcKP2Q.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BPAOfeC8.woff2)format("woff2"),url(/assets/barlow-latin-500-normal-C1h8hMer.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-DcjprdFV.woff2)format("woff2"),url(/assets/barlow-vietnamese-600-normal-CA_GiK2e.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-B8NK_A3D.woff2)format("woff2"),url(/assets/barlow-latin-ext-600-normal-DMVRjfRT.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-vietnamese-500-normal-DjeaNLFD.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-500-normal-CsrJDWc5.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-ext-500-normal-yA5ONLQ9.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-500-normal-B1RE8WP7.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-500-normal-BgYH2mbd.woff2)format("woff2"),url(/assets/barlow-condensed-latin-500-normal-HIEiP5Ov.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbUAA8AAAAACOgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgFwRca1NUQVQAAAIMAAAARgAAAF7mY9MfY21hcAAAAlQAAABRAAAAdAyHCodnYXNwAAACqAAAAAgAAAAIAAAAEGdseWYAAAKwAAAB6QAAAl7g5OpvaGVhZAAABJwAAAA2AAAANhSQ8UNoaGVhAAAE1AAAAB8AAAAkAcoBImhtdHgAAAT0AAAAHgAAADofBAM2bG9jYQAABRQAAAAgAAAAIATcBZ9tYXhwAAAFNAAAABwAAAAgAIcCb25hbWUAAAVQAAABEgAAAoA4pV3kcG9zdAAABmQAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpinMDAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWABNDDdYAAAB42kXIIQIBARQFwHl/QQIkWXInUAANXMOBJCcTd+KIGCjMNViq9/H0CM6P/S0j0bOwUqh08iEb8kPTXn3RiMoYhD90Nwc3AAB42lXIRwHCQBAF0JceehWAlTjhjikUgAVQA4mJLbdk5neUqHBVKWSv3XF2VCnt3AyevkVZv+sxBBbbq/6HfFP4hEcYQgEK82v1aHQ5RTs3FRQAAAAAAQAB//8AD3jabZA1tNRAFEDfTGDdfXHI2QQnZJJvK5ngDs13Welwt/78CtcS7xvcrcHKbXCtceh+wgtu437nXRCgC4BY9AGOXOAFYNHR0dzoKCGju8gJ6xiZaF3DWqcPBiSV5i2geaCgAlAJ77ghgjfiLC7KojvOZEmSXS63emXr5W7lsTLtXFMkRmks4ly+cYOEnvO2YLDNANv+9oJwhkpAAJAcHPG/1RC2BERc1ZGGMxYVWDyVSjc0NMaZELUf9e4JhCgNB3b2PiJRctuqZ0WPR8zilxutN/ji97vUBYMAnGjtzxjtK3wrDaMABo+R9KjWwNRUMppwuWS1QdfFZCIlMF2TxDGuJJlYW7OmVlvD+sx86b1hvC/l8yXf2hqZ66xbZ80yWzyD9/fzGaRzA58+nSOzYC+gw9AP+vyNqUAUhoD4lSnputbgUFPJ5O9Y+ReWlxkrc96naX08b3zk/KORb+E+VjYPmH1M6+UHeVlDtCzzGZ9FY8YMA8gPMsQA0jqaGkHT6cYSdVwl7Zs9Wzx+DyWUugPujd03T52ikrUvM26kF9PIcRmycuDBKcd3XRhPDgtnQACINzJ3fVl1tTB++3bc2S7kyD3cCQIQNMcSKaY2YOciE+d0zFbGjps6u0PILTFlRZHNJfAFnfeHtgAAAAABAAAAAjYEro52gl8PPPUAAwPoAAAAANvSppoAAAAA29rQ8vk5/tQEkgP8AAAABgACAAAAAAAAeNpjYGRgYP7z7woDA8uGn5Z/+1kmAUVQAR8Ar8AG6gB42mOKYIgCYiMkrAzCUHEbJJoBikHgCkMPAPDwCFUAAAAAABoAOwBGAFEAbwB3AKkAsQDmAQkBCQEJAQkBFgEveNpjYGRgYOBn3MGQx7CFgQ3MQwBmBiYALRoB+HjajJADbgVQEEXPZ20bQW3bthvXbr8Vp4to1KV0AV1Wb9JvZzJvzhvcB6CQL0wYzHnAj6E/yAYaDeVBNlJsMAfZxCy/QTbTy3eQLdTzGWQr3VwGuZhx2v/ZAIVUB9kc0TSUKJ8f5FIRHGPjnWs+2MKt+MYzt1xwr/jIk3JymR0X0wzIXKo7VbXjFvfLn3lTtCn7qPoB6+yyzb3qy8pdq/6hrj11fMj7OFbtEY+mrlU/516rVFCdVobplw/JEjVaCaqIYlUiUzOaW9aa/Q1idmlPXZHbCagW/B10XwaRi06VuVdMf+9DnIov6rlF8yzhUXxC/4c66Uz48UepqEN9N/Tzt2RwjOljsUUfj581AbaEXsIAAHjaY2BiAIP/qQxGQIqRAR3wA7EKw0lGJgYbRmZGFkZWRjZGdgZmRg5GTkYuRm42x6Si1LJU9tK8TAMTR1cI7WoB5btB+Zas6Ym5uYlgnoGjAZNzEF9icmlJanJ+bpJecmJxKg9IxtjADMwBAKDtHJg=)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbQAA8AAAAACMAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgF2hca1NUQVQAAAIMAAAAPQAAAEzpM8woY21hcAAAAkwAAABRAAAAdAyHCodnYXNwAAACoAAAAAgAAAAIAAAAEGdseWYAAAKoAAAB8AAAAl604cJFaGVhZAAABJgAAAA2AAAANhSS8UNoaGVhAAAE0AAAAB8AAAAkAcwBEGhtdHgAAATwAAAAHwAAADoe/QLmbG9jYQAABRAAAAAgAAAAIATcBZ9tYXhwAAAFMAAAABwAAAAgAIcCb25hbWUAAAVMAAABEwAAAmo0OV08cG9zdAAABmAAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpi/MLAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWADbPDjoAAAB42gXBsQ1AABQFwHsfiY5CYQBDaVVIlBL7mckA7kT0CpPCop79uIPz3q4MojUrSJePvNSKRlRGEH74hwYNAAAAeNpVyEcBwkAQBdCXHnoVgJU44Y4pFIAFUAOJiS23ZOZ3lKhwVSlkr91xdlQp7dwMnr5FWb/rMQQW26v+h3xT+IRHGEIBCvNr9Wh0OUU7NxUUAAAAAAEAAf//AA942mzQNZTUQAAG4H9mIDlbySoOt5I9HHZiL+vS4VDh7u40OFRo3+FQ464V7tbiUmHdJczicsm4fe/9YBgDEIc+BYOEeoArzUqyWSGkeQzZ6+wmfZwLot6nT1vVNM04oBlQ9AZoX3FHhh/gQR6Mp+JykKdUNSVJcu9T20/N73OrT3F/2qMw5vfWLp88SQL3rFE+3ygTrvv9BXaMqiCAkD3d2lr1ipagK4QqNDHjCuPBSCRqGGaQM+XLk0XrPX5GlaY1i54QD7nhvO/c3+Pp35mEHO58dN2fd6mEdgAYRrhfqEyfi7ei6AG0j6m6ohk8HQkrIUlKpQ1dj4dDEcZ1TY3HpDDpM3PZspkzl+lTqlbmZUYUy8o0LJtKSlOXLp3qnC9N1ieU7FWr7BIZPssuFm1hpt3BVBW/yPMPcwAUdEL8m6nqumbU1Eg4/Ceb+s2WpxrG1HKtnVKxcm9zolhWrkGbVN5RmqQJdGdpkj6ukGluzhTed7ULBRvkp4wAENVFUt1oNGrmaS2r8JcrCxfJjXWUUCo3yvMXXDlyhKrO3mhLj/qGhvoeLREyvvXpEYDgGutFDrFjYEDQ5PK1OcsWs15bt4JgM0uQe2LHAxCRHA9FeNoQnUS+Tsc7JkRXVV03JIZZJcBJRUdHxSmAAQCFZYU3AAEAAAACNgQJCtdkXw889QADA+gAAAAA29KmmgAAAADb2tDy+Tv+1ASSA/wAAAAGAAIAAAAAAAB42mNgZGBg/vPvCgMDy4af1n9rWSYBRVABHwCudAbaAHjaY4pgiAJibSQsC8WBQGyERDNAMQicZmgFAOeFB/4AAAAAGgA7AEYAUQBvAHcAqQCxAOYBCQEJAQkBCQEWAS942mNgZGBg4GfcwZDHsIWBDcxDAGYGJgAtGgH4eNqM0IFGQ2EUB/DfqqJMBZLAFUh0V0MoUBGllKQArHVtN9vu3HuH3iEAPUJP0cP0BD1D3D6zKQqHH9/5n885qHs1qza3iPfaenDNts/gGcs+gmcdeAuem+iZt+EleMGWx+Bl++Jv16jbDJ5Xtxa8om4peNUSbmT6WgbOlFp6Um2XEo9SI333EqmOrrKq0lDhQENDoS2XGioVYoVUTyyT62i4curCuUTpWK4lNVC4lBnI7Ez9dCeRK6TVa6Qp1rRnb0KHzh07/PfMG4mOkZ6W/JdUNM5FU7kTmaFn+Xj3SNNuVZFbXYnoj3nXcpkniXaVPzKqbpjJq86tH/fsSKuOkQextkzf1/Sx2KKPx/+aADN1XKsAeNpjYGIAg/+pDEZAipEBHfADsQrDSUYmBhtGZkYWRlZGNkZ2BmZGDkZORi5GbjbHpKLUslT20rxMAxNHVwjtagHlu0H5lqzpibm5iWCegaMBk3MQX2JyaUlqcn5ukl5yYnEqD0jG2MAMzAEAoO0cmA==)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAA/IABAAAAAALMwAAA9mAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhXAcghYGYD9TVEFUTACDBBEICrA8p1ILgjgAATYCJAOEKAQgBYUeB4xODAcbFCYzA/aDkxp0RMXmTMH/IcEUkaXZhe7qAVQoRhtRmOhkzaUYXs3lyzTUlwptwwNGy28PLP/oZewn39g4Jjp8YusISWZ9eNpW788MNQMI7jZprgsqRiJ7imCBYlEWIBhgoWjj7uJGcddednnRIQ/fX77n7i8NtLf08UwEQl3jq59XJCShypU4lMyz3Hb3X0omkAkZCYVNhfN/c3Pmf1nJcDqnj2VE35fYAx+8WYIJhZj4znn1Qbjp9+f4Pab0wOi7JSECzG0o6DRWu/MBgfu/NdPu5O8cUssKSJ1wUyTjq6oWZic7nUsKuIEySsIkzXvdKzArVNkCwvP1lQCgK4yu0BVWFp6vrWVm/6Nt7H82JGhxDyAteCbHZLRdzTsxJqNEUxb+txHysoxjwQzz2p8tU5uFtC4RmcGouCRX3v1195cCAYgBAECRIWSIVNsQCiqEhh6RpxRRzogwaUTYdSCc3AivAcSQCcSkacSCBbQlcbQ9DqAddgyNAFiZilAX9c1OSB/6ZyYgxQCwDgGQoVQGIYAIRvVlRAiR7Ax+jsqKIDacjVExNGWA/MQLk8VzJshTmOztrVbySNyHVnaAiUVpcgdvmnh9FNeAYYXkMl4AqisEoDtIZK0zs6lsSM8yAboEhZ5CFVqD23kNfor49QgAGWwFBeRAIZRCLdigBbqPFSIF+ABeQAfotUU0g+rL1gCMOnSNn4S0PWEL5Nw2QBqyIVvBT2Fe9wCSYDa3QH3Vt4cSaWSAug+NT0JKDgAKQOMLa96EFIKf/gOUWDQiE3EFgAB4aACxikhFAAwKZZ8DgHeiRQixRghm5n4HrCOOSrQAtqJU3LzpFAr/6TAHnDo8QQgszNHZ77FXwgom85JfwQOqMC8Ae/gYkSsURQ1AgQgAQAutAAoAALCdA3gIkv619L//vwb0H8nVgjz+bwLUlFoDaPGQkfqBjQcpc4R8ODxDAPwurhVJMbRRa7ksFTJAUJERK+RXgDxDi8az0D39NBJmMjGZP5MWgyH5+mYXeZg0kZOdJEIu5k1OaIYW0Rnqv/S2DtQxKCIjOSRMLuKNDjpwIXDRE0Y407zODF3/W/ovnvbiAz6YIOC0nZKaVrpMADK9/g8sQDORaaLiVmpCNj+DsAUJUg1SNBKpxbESqyNRj2XB2IWvmkANITOe42zRZqt223RIZbdRi00cNmu1QTMlFwWnTH2y+Gh4pemWrkeGXlpddgjYKUgnRG9Ajn55huQbViCiyKhiY0qMKzSiwpRykyrFGE0jSCIFAJwLADkD0AtMDvBegHkHug0AoFGJVK2qhCXG61AIrWWr8aYYT2zhWkVVD6EX62dQyHJqVGLicdAyTQtFjJgVi1Olw0wdI6eouC1SZjvL3umikG5h3BSHrTOMQKpkUgQu/aGoVC5VKLOjXKBIrWSy2FqmlB+dTKAUcDwJE5TwBkbFnJ/rY92ss4dzXxKbV1/T9hAJvBUu+bwOaq/XWDeXTEKvBMv+HYDYtSMXHI8lErBlDv1FvCF2yDfJcie3f1oWe+wCtb9HCZdshHBIfLC9FrNf60J4HGMKYkfC5TJ+lSNHd3NdZ5dNZ96o6OG8lOvpt5IcR3r2z61suaFBNQmrT0wrCXkvwKkNWenURddyk4+u1FuSiQRtRvQxxhEfxFo411PBvfbTQ1aCPSbA0yIczRIJRXEEQyYS4ocX/of1WiiyaY7SI3Z54u6pUe8m+30ZXB4f13V23XbupYoeLhwa5QqcRIKRdhwtDjdHX7sj8SSWqhgd2s25/B7OuTu4WLdz9FgQLtG55HhMlbFN/J5rrmGPXQWwZOVVLnn31VevgnPrfKt+IsHWeS5ZYVnCJZ9HIqem3z+aeAsjx92cK+7hnPGyVcarN47i9QctdADS864Xl+f2cM6E6W7jwyDLmWTlDNfAWRtN3eLupy1VuUoXA0Y9nDMwDm0aWWy8vkY6yniPTKmax1mFMSPTY+OyNo5gvPrMaWh+d6Yocqzobrh2BM+xO665gj12WQPSixm3X325OHNpey4+FiI+ViG4n+0mtkeDT6J77bK1vsLcqur1aMyF/u63T4xFx/V3vXhzq+VXFL7ypKwjPz+l4w2I7O1b21+wrz3XGCkzhqwKi3EwUtbo7w+YrLVVCuM8U1MAvrXrA5YXtX7tt5YAgoHTtp8WWF0eGHqRNVhUEjBba0v8h+bWaAV+c525JPC7Y/GXH19hrUyWl51baa04D0cn7Sp5qsze1VrwV7OyZHfSiyJTsZB0TFoerSjfW97MUD0Yt59oL3Kd4SNndY35u+St5yYTG575P1cpvWf3hskypgS/yB30tjjC3t6zi/Om4l/vjtYRYdOcpyc4FXQtRAZTN5h66vUdRpsxv/FMnSRHdzIYUWcg6vcHAtFOq8NmDm+l9r49tjYS2RI2O2zqvuITK5wVJxaXLhudxmXyUWt/K/Qiy0BJqb/mZHOpb6DEYg2VlPrMQWf+rheNhpOjo1zdfIfKkm6qMhsrTeZd234B2oMPB68Kyh+7OQi90BoqLvWbT6wt9YWKrdEKfLUnmkv9J2fxld9XeaLx3vKyZ40nVj6HfU/YdfKw79i9rQU1lSWHXuzBSScKzcZC3WPdlRcUl9xQeTh2aC6G9md6xnorxgsKd1f0dvkr/e7KQtNT/YHYFK691fHqc7z5WGnoTXPhm6HR0mnubTCFnYEJf7bfP+G0Ouw1k4QvuOw/rPsO97uflSxXKCuWS0rjlcrKePHlrYZWnH9AY9VoL03tATMa+kB/IGO1LLqakbF6sqvQHJhOLowm8cyBSHJmMonogaPJATpOOOweE/o99p7WWmfms1k7ns101lZHxtRBTefZMzIJkSsaNIZ6PReT/ohVl1uGg2e7ml3474DkI8kGTVtDZOe2TO2ONujXMk7TagqPrtGehm2f5GksNUqWOMsAC1JpXVMB8a265dwCWrecb+qjmcuF3pKhX/qEodrl80v5RPPuq9xGdUu9x3B2pnqrdvnB6Pe2BBpN7ap0nS5d1W7yN56QiB0YXTzQIWMqsVit2E1IJJ65TsI+KzVZbHmN6dJzkiro99t7Gqscyl/8nbTSUVWdjOByTedCSCZdr0kNW3MHcrWWxWmp1cp+yE6c98d0jC0lz4gdGXjRaLO92ffUHysp8pF3giv+eOcGjvsbGa11hkiW+PB5hmPdht38S67pmA9my+IbNmXULvS3VG07Lq136q4xnKz01oPhuZGJueMWrK31JofKklae1qlqKba7vg5yWnz3hzAuBOeGe+aQ8ur03gWhSNxQ3a/htqUcWzqxZsgptuwTcY3NaGzZLlTUKP8UW4zHk6oxHFFf9+F9MrFUwq/n52j06vNeGlmS9eyJU7A8ejA8F5uYO2Oh2i5K+uDcaxPRubvf6vbTxu85m5WnWqo9WbdqJUcOf3tSoNvCbrn09HJ9io6MjZ4Xny5qb2puApUNggl8KLVU1ACQTpMomG2HoEriLLkaejrIM8gzIx90Is8iz8bnjGNjNLQADHJcM4VcEXqXkOUhG7nIA5BvNJ+N9MKmYbuN05Tq5ZrWhcjqhmQ1IzdINamW1V4WrBhk29RG6FoDqfIt9wjkbNfvcq4XYOw1PHUJmquCZ03r3q6PSYNswHBLUJbKWbcHWUaWQZUN89AnAsi+EPxQrrIlEJnJIlUJM7HMcyIb2WdiwCYYhdkKuBjZ5gUYSBu2TYSNZEBQZ/dsLMogZAlqcMnlTpcszNOWC7LHy0oMpAd7JmhjAL8NbmRdayAVvDU+WxL5XR70AowhbINbkc7/KgLwLmPqTfwNBEUHCMBxmUhdQj6WUlkZlKnxu6pO1d9/v//3Q7rw+///2fMjAAB6oDb0HaH0b6GUJU8Y0eR64ojqUqm14Od8duRDHPKhFfZpiGupUNnzetjxdgRbK/5+l4IJ5JeSir8t3R+1IaFaa9AZitANXTvqUxavQ2TYeNmrYwP4det2tGuWgFpDejL9euYAfQfK28gGGIvbgQRcpXesotZIABUK/LoCMgX5tBzoUFiWbADfCNfMu98PsCghbdyeq6jgel07qoCDJjjsyIFY7MAODSYL1alQ9phCIRt3Ri4tbQVgE5dpkfhjGAkZMAWRYzPLNioh68Amvwwd4zGzodCRGaTlUjZqVdaBTSBDfJ6vWzoqG6lZhQKbFK6EAKgz5unB00f9KabfIE1/CcA764pzcPbvSz+DTdl+/xcAHwUACHwM3JK6lBL+d88HxAVfFHh3m1b6a8TWqK9qwVrRVjPaq6WqFSbUXqOOqrXXCkfN6KhWPgnndsCsD3CdZzHpoEPOX6wjz67FHso9aAqWW+ynpyeAc+VhtGMQgKDhk7pBGKUsAnBflEhlCV2wnFLxv2VpRo+QTFme7a4qy5cjUVaqjK2sjFJ+GTmx9FYE4M2hvDRKwSyXLSegQ9S4fhOazOT8YyJCPAaHHhY2o8XyD4iYNc7mNKNWTL+ICdO0Go+aiFqsGZM3ZyMDg2khMRGTZqrMfNN8LD/nqJhhBq3qNXN2r8LzGkBuHpMgYmkV2dpFChUKu08Vm1pVR9TBh+FjevSxMYZr7aNbRE1aFJsrvS1RcG1pOS9ocBJ8rTYx4yMuQj6W2WwW4VnSDJFz5tU/LKK0ZgWXCD2/qRmKRWuYh+47US6adX1FAOIfwbmATE+T2t4wLVab3eF0uT1eXz6MQKLQGCyuGE8gVpLIFCqNzmCy2Bwur54vEIrEEqlM3qxQqtTdSrU6vcFoMlusNjsz0q+WhVWdeg0aNfUmG7vmOrRwaNWmXYdOTi5uHl5deXXr0auPj19Av2C9QgYMGor2C4sYMWrMuAlRk6bETJsxa868BYuWxC3bbY+9EjhBUjTDcrwgSih88/y+eq/C13kHnXKhbTUDgISUCgNDoABXKLCL+2X27E/c2jAAQEKsFigx1qgLEbSeu+NyhcJGIECQNm9L567c3l7uZ5Wo3pkx4tYOhJANKw9dEonovRqVDb5dMKz515Ng+hci23hm4UQEs8eChwPB0BZYOBINbH3Erw0HECzUaokWa42eyGD3PIBIMBSOrfryBQ3G4oHQKi+/kEA0tuaDV40GP3h0+wuAAgXTKy0v5428xUDwksfm538juY9ni9fz2Ggy4iWLMz4qLklle7kcZvOLwy5bXp7fdYrRJlP4l5NDdZPiKVeLnJV7Ohg2VAs/aQwZNVtodX2jki6RU1e/j6GkgZbgAmmogZafuF4mZlb1t+COUyrcnF/CCZzS4MO/dX1T6QQAAAA=)format("woff2"),url(/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--radius:.625rem;--background:#07090e;--foreground:#e8ecf3;--card:#0f131a;--card-foreground:#e8ecf3;--popover:#111620;--popover-foreground:#e8ecf3;--primary:#ffb020;--primary-foreground:#1a1300;--secondary:#161b24;--secondary-foreground:#e8ecf3;--muted:#161b24;--muted-foreground:#8792a4;--accent:#161b24;--accent-foreground:#e8ecf3;--destructive:#ff5a4f;--border:#1e2430;--input:#333c4c;--ring:#5cc8ff;--panel:#0f131a;--erhaben:#161b24;--linie:#1e2430;--linie-stark:#333c4c;--text-2:#aab4c4;--text-3:#8792a4;--flaeche-rand:#94a3c224;--flaeche-rand-hell:#a8b6d642;--bernstein:#ffb020;--bernstein-hell:#ffc24d;--bernstein-grund:#2a1e05;--bernstein-lampe:#3a2a08;--gruen:#3ddc8a;--gruen-text:#7cc9a0;--gruen-grund:#0f2319;--gruen-rand:#1f5a3b;--cyan:#5cc8ff;--cyan-text:#93d5f8;--cyan-grund:#0c2230;--cyan-rand:#2f7fb0;--rot:#ff5a4f;--rot-text:#ff9a92;--rot-grund:#2e0f0d;--rot-rand:#a33a33;--box:#8b95ff;--box-text:#b4bbff;--box-grund:#151a36;--box-rand:#3f4aa8;--lab:#c98bff;--lab-text:#deb8ff;--lab-grund:#22163a;--lab-rand:#6d44a6;--reihe-1:#3987e5;--reihe-2:#d55181;--reihe-3:#c98500;--reihe-weitere:#9aa3ad;--aus-grund:#131821;--aus-rand:#2a3140;--aus-text:#9aa3ad}@keyframes lampe-atmen{0%,to{box-shadow:0 0 10px color-mix(in srgb, var(--bernstein) 25%, transparent)}50%{box-shadow:0 0 22px color-mix(in srgb, var(--bernstein) 45%, transparent)}}@media (prefers-reduced-motion:no-preference){.lampe-atmet{animation:3.2s ease-in-out infinite lampe-atmen}}@keyframes auftauchen{0%{opacity:0;transform:translateY(8px)}}@keyframes ring-fuellen{0%{stroke-dasharray:0 1000}}@keyframes glut-atmen{0%,to{opacity:.6}50%{opacity:1}}@keyframes kreisen{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:no-preference){.auftauchen{animation:.56s cubic-bezier(.2,.7,.2,1) both auftauchen;animation-delay:calc(var(--i,0) * 70ms)}.ring-fuellt{animation:1.1s cubic-bezier(.25,.8,.25,1) both ring-fuellen;animation-delay:calc(var(--i,0) * 45ms + .12s)}.glut-atmet{animation:6s ease-in-out infinite glut-atmen}.kreist{transform-box:fill-box;transform-origin:50%;animation:90s linear infinite kreisen}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/frontend/dist/assets/index-Cz-7Ak8T.css b/frontend/dist/assets/index-Cz-7Ak8T.css deleted file mode 100644 index 338f3f6..0000000 --- a/frontend/dist/assets/index-Cz-7Ak8T.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-sans:"Barlow", "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-3xl:1.5rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Barlow", "Segoe UI", system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--font-anzeige:"Barlow Condensed", "Barlow", "Segoe UI", sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{-webkit-font-smoothing:antialiased;font-family:Barlow,Segoe UI,system-ui,sans-serif}body{background-color:var(--background);color:var(--foreground);min-height:100dvh;margin:0}body:before,body:after{content:"";z-index:-1;pointer-events:none;position:fixed;inset:0}body:before{background:radial-gradient(60rem 34rem at 4% -14%, var(--box), transparent 68%), radial-gradient(54rem 32rem at 104% -10%, var(--lab), transparent 64%), radial-gradient(50rem 30rem at 55% 120%, var(--cyan), transparent 70%)}@supports (color:color-mix(in lab, red, red)){body:before{background:radial-gradient(60rem 34rem at 4% -14%, color-mix(in srgb, var(--box) 17%, transparent), transparent 68%), radial-gradient(54rem 32rem at 104% -10%, color-mix(in srgb, var(--lab) 14%, transparent), transparent 64%), radial-gradient(50rem 30rem at 55% 120%, color-mix(in srgb, var(--cyan) 6%, transparent), transparent 70%)}}body:after{background-image:radial-gradient(#ffffff0e 1px,#0000 1.4px);background-size:26px 26px;-webkit-mask-image:linear-gradient(#000 0%,#0000 70%);mask-image:linear-gradient(#000 0%,#0000 70%)}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-1{inset:var(--spacing)}.inset-y-0{inset-block:0}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.-top-2\.5{top:calc(var(--spacing) * -2.5)}.-top-40{top:calc(var(--spacing) * -40)}.-top-44{top:calc(var(--spacing) * -44)}.-top-48{top:calc(var(--spacing) * -48)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-\[12vh\]{top:12vh}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.-bottom-1\.5{bottom:calc(var(--spacing) * -1.5)}.-bottom-2\.5{bottom:calc(var(--spacing) * -2.5)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-24{bottom:calc(var(--spacing) * 24)}.-left-32{left:calc(var(--spacing) * -32)}.-left-36{left:calc(var(--spacing) * -36)}.-left-40{left:calc(var(--spacing) * -40)}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[5px\]{left:5px}.left-\[80\%\]{left:80%}.left-\[90\%\]{left:90%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:0}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing) * -2)}.my-2{margin-block:calc(var(--spacing) * 2)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-\[0\.444em\]{margin-right:.444em}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-\[0\.111em\]{margin-left:.111em}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-\[11px\]{width:11px;height:11px}.size-\[18px\]{width:18px;height:18px}.size-\[88px\]{width:88px;height:88px}.size-\[132px\]{width:132px;height:132px}.size-\[400px\]{width:400px;height:400px}.size-\[460px\]{width:460px;height:460px}.size-\[560px\]{width:560px;height:560px}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\[1\.75em\]{height:1.75em}.h-\[min\(75cqw\,150px\)\]{height:min(75cqw,150px)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[132px\]{min-height:132px}.min-h-dvh{min-height:100dvh}.w-0\.5{width:calc(var(--spacing) * .5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-60{width:calc(var(--spacing) * 60)}.w-\[1\.1875em\]{width:1.1875em}.w-full{width:100%}.w-px{width:1px}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-\[200px\]{max-width:200px}.max-w-\[1360px\]{max-width:1360px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-44{min-width:calc(var(--spacing) * 44)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-40{flex-basis:calc(var(--spacing) * 40)}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-px{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-4{scroll-margin-top:calc(var(--spacing) * 4)}.scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.scroll-mt-24{scroll-margin-top:calc(var(--spacing) * 24)}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:1.5rem minmax(0,1fr) auto}.grid-cols-\[10px_minmax\(0\,1fr\)_auto\]{grid-template-columns:10px minmax(0,1fr) auto}.grid-cols-\[11px_minmax\(0\,1fr\)_auto\]{grid-template-columns:11px minmax(0,1fr) auto}.grid-cols-\[64px_18px_minmax\(0\,1fr\)\]{grid-template-columns:64px 18px minmax(0,1fr)}.grid-cols-\[210px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:210px 100px 170px minmax(0,1fr) auto}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-9{gap:calc(var(--spacing) * 9)}.gap-\[0\.1875em\]{gap:.1875em}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-2\.5{row-gap:calc(var(--spacing) * 2.5)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-bernstein\/60{border-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.border-bernstein\/60{border-color:color-mix(in oklab, var(--bernstein) 60%, transparent)}}.border-box-rand{border-color:var(--box-rand)}.border-cyan-rand{border-color:var(--cyan-rand)}.border-cyan\/35{border-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.border-cyan\/35{border-color:color-mix(in oklab, var(--cyan) 35%, transparent)}}.border-gruen-rand{border-color:var(--gruen-rand)}.border-lab-rand{border-color:var(--lab-rand)}.border-lab\/50{border-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.border-lab\/50{border-color:color-mix(in oklab, var(--lab) 50%, transparent)}}.border-rot-rand{border-color:var(--rot-rand)}.border-rot\/40{border-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.border-rot\/40{border-color:color-mix(in oklab, var(--rot) 40%, transparent)}}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.border-white\/12{border-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.border-white\/12{border-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.border-white\/15{border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.border-white\/15{border-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.flaeche{border:1px solid var(--rand,var(--flaeche-rand));-webkit-backdrop-filter:blur(18px)saturate(1.4);backdrop-filter:blur(18px)saturate(1.4);background-color:#0c10189e;background-image:linear-gradient(#ffffff0d,#ffffff03 45%,#0000);box-shadow:inset 0 1px #ffffff0e,0 1px 2px #00000059,0 24px 48px -28px #000000e6}.flaeche-innen{background-color:#ffffff07;border:1px solid #94a3c21a}.bg-\[\#0a0d14\]{background-color:#0a0d14}.bg-\[\#0b0d0f\]{background-color:#0b0d0f}.bg-\[\#0e121a\]{background-color:#0e121a}.bg-\[\#121722\]{background-color:#121722}.bg-\[rgb\(8_11_17\/0\.72\)\]{background-color:#080b11b8}.bg-bernstein{background-color:var(--bernstein)}.bg-bernstein-grund{background-color:var(--bernstein-grund)}.bg-bernstein\/10{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/10{background-color:color-mix(in oklab, var(--bernstein) 10%, transparent)}}.bg-bernstein\/15{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/15{background-color:color-mix(in oklab, var(--bernstein) 15%, transparent)}}.bg-bernstein\/35{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/35{background-color:color-mix(in oklab, var(--bernstein) 35%, transparent)}}.bg-bernstein\/70{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/70{background-color:color-mix(in oklab, var(--bernstein) 70%, transparent)}}.bg-bernstein\/\[0\.06\]{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/\[0\.06\]{background-color:color-mix(in oklab, var(--bernstein) 6%, transparent)}}.bg-bernstein\/\[0\.08\]{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/\[0\.08\]{background-color:color-mix(in oklab, var(--bernstein) 8%, transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-box-grund{background-color:var(--box-grund)}.bg-box\/10{background-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.bg-box\/10{background-color:color-mix(in oklab, var(--box) 10%, transparent)}}.bg-current{background-color:currentColor}.bg-cyan{background-color:var(--cyan)}.bg-cyan-grund{background-color:var(--cyan-grund)}.bg-cyan\/10{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/10{background-color:color-mix(in oklab, var(--cyan) 10%, transparent)}}.bg-cyan\/12{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/12{background-color:color-mix(in oklab, var(--cyan) 12%, transparent)}}.bg-cyan\/15{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/15{background-color:color-mix(in oklab, var(--cyan) 15%, transparent)}}.bg-cyan\/35{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/35{background-color:color-mix(in oklab, var(--cyan) 35%, transparent)}}.bg-cyan\/\[0\.06\]{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/\[0\.06\]{background-color:color-mix(in oklab, var(--cyan) 6%, transparent)}}.bg-cyan\/\[0\.07\]{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/\[0\.07\]{background-color:color-mix(in oklab, var(--cyan) 7.0%, transparent)}}.bg-cyan\/\[0\.08\]{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/\[0\.08\]{background-color:color-mix(in oklab, var(--cyan) 8%, transparent)}}.bg-gruen{background-color:var(--gruen)}.bg-gruen-grund{background-color:var(--gruen-grund)}.bg-gruen\/10{background-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.bg-gruen\/10{background-color:color-mix(in oklab, var(--gruen) 10%, transparent)}}.bg-gruen\/15{background-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.bg-gruen\/15{background-color:color-mix(in oklab, var(--gruen) 15%, transparent)}}.bg-gruen\/\[0\.07\]{background-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.bg-gruen\/\[0\.07\]{background-color:color-mix(in oklab, var(--gruen) 7.0%, transparent)}}.bg-lab{background-color:var(--lab)}.bg-lab-grund{background-color:var(--lab-grund)}.bg-lab\/10{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.bg-lab\/10{background-color:color-mix(in oklab, var(--lab) 10%, transparent)}}.bg-lab\/20{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.bg-lab\/20{background-color:color-mix(in oklab, var(--lab) 20%, transparent)}}.bg-lab\/80{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.bg-lab\/80{background-color:color-mix(in oklab, var(--lab) 80%, transparent)}}.bg-linie{background-color:var(--linie)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-rot{background-color:var(--rot)}.bg-rot-grund{background-color:var(--rot-grund)}.bg-rot\/10{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/10{background-color:color-mix(in oklab, var(--rot) 10%, transparent)}}.bg-rot\/12{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/12{background-color:color-mix(in oklab, var(--rot) 12%, transparent)}}.bg-rot\/15{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/15{background-color:color-mix(in oklab, var(--rot) 15%, transparent)}}.bg-rot\/80{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/80{background-color:color-mix(in oklab, var(--rot) 80%, transparent)}}.bg-rot\/\[0\.07\]{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/\[0\.07\]{background-color:color-mix(in oklab, var(--rot) 7.0%, transparent)}}.bg-text-3{background-color:var(--text-3)}.bg-transparent{background-color:#0000}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/25{background-color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.bg-white\/25{background-color:color-mix(in oklab, var(--color-white) 25%, transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.bg-white\/30{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}.bg-white\/\[0\.05\]{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.05\]{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.bg-white\/\[0\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.06\]{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.bg-white\/\[0\.07\]{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.07\]{background-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-bernstein-hell{--tw-gradient-from:var(--bernstein-hell);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-box\/30{--tw-gradient-from:var(--box)}@supports (color:color-mix(in lab, red, red)){.from-box\/30{--tw-gradient-from:color-mix(in oklab, var(--box) 30%, transparent)}}.from-box\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-lab\/30{--tw-gradient-from:var(--lab)}@supports (color:color-mix(in lab, red, red)){.from-lab\/30{--tw-gradient-from:color-mix(in oklab, var(--lab) 30%, transparent)}}.from-lab\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/20{--tw-gradient-from:#fff3}@supports (color:color-mix(in lab, red, red)){.from-white\/20{--tw-gradient-from:color-mix(in oklab, var(--color-white) 20%, transparent)}}.from-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/\[0\.1\]{--tw-gradient-from:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.from-white\/\[0\.1\]{--tw-gradient-from:color-mix(in oklab, var(--color-white) 10%, transparent)}}.from-white\/\[0\.1\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/\[0\.07\]{--tw-gradient-from:#ffffff12}@supports (color:color-mix(in lab, red, red)){.from-white\/\[0\.07\]{--tw-gradient-from:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.from-white\/\[0\.07\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-bernstein{--tw-gradient-to:var(--bernstein);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-box\/\[0\.05\]{--tw-gradient-to:var(--box)}@supports (color:color-mix(in lab, red, red)){.to-box\/\[0\.05\]{--tw-gradient-to:color-mix(in oklab, var(--box) 5%, transparent)}}.to-box\/\[0\.05\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-lab\/\[0\.05\]{--tw-gradient-to:var(--lab)}@supports (color:color-mix(in lab, red, red)){.to-lab\/\[0\.05\]{--tw-gradient-to:color-mix(in oklab, var(--lab) 5%, transparent)}}.to-lab\/\[0\.05\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/0{--tw-gradient-to:#0000}@supports (color:color-mix(in lab, red, red)){.to-white\/0{--tw-gradient-to:color-mix(in oklab, var(--color-white) 0%, transparent)}}.to-white\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/\[0\.02\]{--tw-gradient-to:#ffffff05}@supports (color:color-mix(in lab, red, red)){.to-white\/\[0\.02\]{--tw-gradient-to:color-mix(in oklab, var(--color-white) 2%, transparent)}}.to-white\/\[0\.02\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white\/\[0\.03\]{--tw-gradient-to:#ffffff08}@supports (color:color-mix(in lab, red, red)){.to-white\/\[0\.03\]{--tw-gradient-to:color-mix(in oklab, var(--color-white) 3%, transparent)}}.to-white\/\[0\.03\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-padding{background-clip:padding-box}.fill-text-2{fill:var(--text-2)}.fill-text-3{fill:var(--text-3)}.object-contain{object-fit:contain}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-\[calc\(1\.25rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(1.25rem + env(safe-area-inset-bottom))}.pb-\[min\(10cqw\,20px\)\]{padding-bottom:min(10cqw,20px)}.pl-1{padding-left:var(--spacing)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.etikett{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.font-anzeige,.font-heading{font-family:Barlow Condensed,Barlow,Segoe UI,sans-serif}.font-mono{font-family:JetBrains Mono,ui-monospace,Cascadia Mono,Consolas,monospace}.font-sans{font-family:Barlow,Segoe UI,system-ui,sans-serif}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.5625em\]{font-size:.5625em}.text-\[9\.5px\]{font-size:9.5px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14\.5px\]{font-size:14.5px}.text-\[14px\]{font-size:14px}.text-\[15\.5px\]{font-size:15.5px}.text-\[15px\]{font-size:15px}.text-\[16\.5px\]{font-size:16.5px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[19px\]{font-size:19px}.text-\[20px\]{font-size:20px}.text-\[21px\]{font-size:21px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[30px\]{font-size:30px}.text-\[32px\]{font-size:32px}.text-\[38px\]{font-size:38px}.text-\[length\:clamp\(14px\,14\.5cqw\,32px\)\]{font-size:clamp(14px,14.5cqw,32px)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[1\.05\]{--tw-leading:1.05;line-height:1.05}.leading-\[1\.35\]{--tw-leading:1.35;line-height:1.35}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[-0\.015em\]{--tw-tracking:-.015em;letter-spacing:-.015em}.tracking-\[0\.01em\]{--tw-tracking:.01em;letter-spacing:.01em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.005em\]{--tw-tracking:.005em;letter-spacing:.005em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.32em\]{--tw-tracking:.32em;letter-spacing:.32em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-bernstein{color:var(--bernstein)}.text-box{color:var(--box)}.text-box-text{color:var(--box-text)}.text-cyan{color:var(--cyan)}.text-cyan-text{color:var(--cyan-text)}.text-foreground{color:var(--foreground)}.text-gruen{color:var(--gruen)}.text-gruen-text{color:var(--gruen-text)}.text-lab{color:var(--lab)}.text-lab-text{color:var(--lab-text)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-rot{color:var(--rot)}.text-rot-text{color:var(--rot-text)}.text-text-2{color:var(--text-2)}.text-text-3{color:var(--text-3)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.italic{font-style:italic}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-\[var\(--lab\)\]{accent-color:var(--lab)}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--bernstein\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--bernstein));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--cyan\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--cyan));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--gruen\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--gruen));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--rot\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--rot));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_10px_var\(--cyan\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,var(--cyan));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_28px_-6px_var\(--box\)\]{--tw-shadow:0 0 28px -6px var(--tw-shadow-color,var(--box));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_28px_-6px_var\(--lab\)\]{--tw-shadow:0 0 28px -6px var(--tw-shadow-color,var(--lab));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_rgb\(255_255_255\/0\.06\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,#ffffff0f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_rgb\(255_255_255\/0\.35\)\,0_8px_22px_-10px_var\(--bernstein\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,#ffffff59), 0 8px 22px -10px var(--tw-shadow-color,var(--bernstein));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[3px\]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[\#0b0f16\]{--tw-ring-color:#0b0f16}.ring-\[\#0d1119\]{--tw-ring-color:#0d1119}.ring-\[var\(--panel\)\]{--tw-ring-color:var(--panel)}.ring-bernstein\/30{--tw-ring-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.ring-bernstein\/30{--tw-ring-color:color-mix(in oklab, var(--bernstein) 30%, transparent)}}.ring-bernstein\/35{--tw-ring-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.ring-bernstein\/35{--tw-ring-color:color-mix(in oklab, var(--bernstein) 35%, transparent)}}.ring-bernstein\/45{--tw-ring-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.ring-bernstein\/45{--tw-ring-color:color-mix(in oklab, var(--bernstein) 45%, transparent)}}.ring-box\/30{--tw-ring-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.ring-box\/30{--tw-ring-color:color-mix(in oklab, var(--box) 30%, transparent)}}.ring-box\/35{--tw-ring-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.ring-box\/35{--tw-ring-color:color-mix(in oklab, var(--box) 35%, transparent)}}.ring-cyan\/25{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.ring-cyan\/25{--tw-ring-color:color-mix(in oklab, var(--cyan) 25%, transparent)}}.ring-cyan\/30{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.ring-cyan\/30{--tw-ring-color:color-mix(in oklab, var(--cyan) 30%, transparent)}}.ring-cyan\/40{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.ring-cyan\/40{--tw-ring-color:color-mix(in oklab, var(--cyan) 40%, transparent)}}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.ring-gruen\/25{--tw-ring-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.ring-gruen\/25{--tw-ring-color:color-mix(in oklab, var(--gruen) 25%, transparent)}}.ring-gruen\/30{--tw-ring-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.ring-gruen\/30{--tw-ring-color:color-mix(in oklab, var(--gruen) 30%, transparent)}}.ring-gruen\/40{--tw-ring-color:var(--gruen)}@supports (color:color-mix(in lab, red, red)){.ring-gruen\/40{--tw-ring-color:color-mix(in oklab, var(--gruen) 40%, transparent)}}.ring-lab\/30{--tw-ring-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.ring-lab\/30{--tw-ring-color:color-mix(in oklab, var(--lab) 30%, transparent)}}.ring-lab\/35{--tw-ring-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.ring-lab\/35{--tw-ring-color:color-mix(in oklab, var(--lab) 35%, transparent)}}.ring-lab\/40{--tw-ring-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.ring-lab\/40{--tw-ring-color:color-mix(in oklab, var(--lab) 40%, transparent)}}.ring-rot\/35{--tw-ring-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.ring-rot\/35{--tw-ring-color:color-mix(in oklab, var(--rot) 35%, transparent)}}.ring-rot\/40{--tw-ring-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.ring-rot\/40{--tw-ring-color:color-mix(in oklab, var(--rot) 40%, transparent)}}.ring-rot\/50{--tw-ring-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.ring-rot\/50{--tw-ring-color:color-mix(in oklab, var(--rot) 50%, transparent)}}.ring-white\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ring-white\/10{--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.ring-white\/12{--tw-ring-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.ring-white\/12{--tw-ring-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.ring-white\/15{--tw-ring-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.ring-white\/15{--tw-ring-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.ring-white\/\[0\.07\]{--tw-ring-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.ring-white\/\[0\.07\]{--tw-ring-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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,)}.blur-xl{--tw-blur:blur(var(--blur-xl));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,)}.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,)}.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,)!important}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,border-color\,color\,box-shadow\,filter\]{transition-property:background-color,border-color,color,box-shadow,filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[filter\]{transition-property:filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[stroke-dasharray\]{transition-property:stroke-dasharray;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--rand\:color-mix\(in_srgb\,var\(--box\)_28\%\,transparent\)\]{--rand:var(--box)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--box\)_28\%\,transparent\)\]{--rand:color-mix(in srgb,var(--box) 28%,transparent)}}.\[--rand\:color-mix\(in_srgb\,var\(--box\)_32\%\,transparent\)\]{--rand:var(--box)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--box\)_32\%\,transparent\)\]{--rand:color-mix(in srgb,var(--box) 32%,transparent)}}.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_28\%\,transparent\)\]{--rand:var(--lab)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_28\%\,transparent\)\]{--rand:color-mix(in srgb,var(--lab) 28%,transparent)}}.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_32\%\,transparent\)\]{--rand:var(--lab)}@supports (color:color-mix(in lab, red, red)){.\[--rand\:color-mix\(in_srgb\,var\(--lab\)_32\%\,transparent\)\]{--rand:color-mix(in srgb,var(--lab) 32%,transparent)}}.\[font-variant-ligatures\:none\]{font-variant-ligatures:none}.\[grid-area\:herkunft\]{grid-area:herkunft}.\[grid-area\:knoepfe\]{grid-area:knoepfe}.\[grid-area\:name\]{grid-area:name}.\[grid-area\:text\]{grid-area:text}.\[grid-area\:zeit\]{grid-area:zeit}.\[grid-template-areas\:\'name_herkunft\'_\'zeit_zeit\'_\'text_text\'_\'knoepfe_knoepfe\'\]{grid-template-areas:"name herkunft""zeit zeit""text text""knoepfe knoepfe"}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.running{animation-play-state:running}.zoom-in{--tw-enter-scale:0}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-white\/\[0\.06\]:is(:where(.group):hover *){background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-white\/\[0\.06\]:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:text-text-2:is(:where(.group):hover *){color:var(--text-2)}}.placeholder\:text-text-3::placeholder{color:var(--text-3)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-2\.5:before{content:var(--tw-content);top:calc(var(--spacing) * 2.5)}.before\:bottom-2\.5:before{content:var(--tw-content);bottom:calc(var(--spacing) * 2.5)}.before\:left-0:before{content:var(--tw-content);left:0}.before\:w-\[3px\]:before{content:var(--tw-content);width:3px}.before\:rounded-full:before{content:var(--tw-content);border-radius:2147483647px}.before\:bg-bernstein:before{content:var(--tw-content);background-color:var(--bernstein)}.before\:bg-box:before{content:var(--tw-content);background-color:var(--box)}.before\:bg-lab:before{content:var(--tw-content);background-color:var(--lab)}.before\:bg-text-2:before{content:var(--tw-content);background-color:var(--text-2)}.before\:opacity-0:before{content:var(--tw-content);opacity:0}.before\:shadow-\[0_0_12px_var\(--bernstein\)\]:before{content:var(--tw-content);--tw-shadow:0 0 12px var(--tw-shadow-color,var(--bernstein));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:shadow-\[0_0_12px_var\(--box\)\]:before{content:var(--tw-content);--tw-shadow:0 0 12px var(--tw-shadow-color,var(--box));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:shadow-\[0_0_12px_var\(--lab\)\]:before{content:var(--tw-content);--tw-shadow:0 0 12px var(--tw-shadow-color,var(--lab));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:transition-opacity:before{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.first\:pt-1:first-child{padding-top:var(--spacing)}.open\:pb-2:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 2)}.open\:pb-3:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 3)}@media (hover:hover){.hover\:border-white\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/20:hover{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.hover\:bg-bernstein\/\[0\.13\]:hover{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-bernstein\/\[0\.13\]:hover{background-color:color-mix(in oklab, var(--bernstein) 13%, transparent)}}.hover\:bg-box\/20:hover{background-color:var(--box)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-box\/20:hover{background-color:color-mix(in oklab, var(--box) 20%, transparent)}}.hover\:bg-cyan\/15:hover{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan\/15:hover{background-color:color-mix(in oklab, var(--cyan) 15%, transparent)}}.hover\:bg-lab\/20:hover{background-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-lab\/20:hover{background-color:color-mix(in oklab, var(--lab) 20%, transparent)}}.hover\:bg-rot-grund:hover{background-color:var(--rot-grund)}.hover\:bg-rot\/15:hover{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-rot\/15:hover{background-color:color-mix(in oklab, var(--rot) 15%, transparent)}}.hover\:bg-rot\/\[0\.18\]:hover{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-rot\/\[0\.18\]:hover{background-color:color-mix(in oklab, var(--rot) 18%, transparent)}}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.05\]:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.06\]:hover{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.hover\:bg-white\/\[0\.045\]:hover{background-color:#ffffff0b}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.045\]:hover{background-color:color-mix(in oklab, var(--color-white) 4.5%, transparent)}}.hover\:text-cyan:hover{color:var(--cyan)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-lab-text:hover{color:var(--lab-text)}.hover\:text-rot-text:hover{color:var(--rot-text)}.hover\:text-text-2:hover{color:var(--text-2)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}.hover\:brightness-125:hover{--tw-brightness:brightness(125%);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,)}}.focus\:border-cyan\/60:focus{border-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.focus\:border-cyan\/60:focus{border-color:color-mix(in oklab, var(--cyan) 60%, transparent)}}.focus\:border-lab\/60:focus{border-color:var(--lab)}@supports (color:color-mix(in lab, red, red)){.focus\:border-lab\/60:focus{border-color:color-mix(in oklab, var(--lab) 60%, transparent)}}.focus\:bg-white\/\[0\.06\]:focus{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.focus\:bg-white\/\[0\.06\]:focus{background-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.focus-visible\:rounded-md:focus-visible{border-radius:calc(var(--radius) * .8)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--cyan) 60%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-45:disabled{opacity:.45}.data-\[side\=bottom\]\:inset-x-0[data-side=bottom]{inset-inline:0}.data-\[side\=bottom\]\:bottom-0[data-side=bottom]{bottom:0}.data-\[side\=bottom\]\:h-auto[data-side=bottom]{height:auto}.data-\[side\=bottom\]\:border-t[data-side=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[side\=left\]\:inset-y-0[data-side=left]{inset-block:0}.data-\[side\=left\]\:left-0[data-side=left]{left:0}.data-\[side\=left\]\:h-full[data-side=left]{height:100%}.data-\[side\=left\]\:w-3\/4[data-side=left]{width:75%}.data-\[side\=left\]\:w-\[300px\][data-side=left]{width:300px}.data-\[side\=left\]\:border-r[data-side=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[side\=right\]\:inset-y-0[data-side=right]{inset-block:0}.data-\[side\=right\]\:right-0[data-side=right]{right:0}.data-\[side\=right\]\:h-full[data-side=right]{height:100%}.data-\[side\=right\]\:w-3\/4[data-side=right]{width:75%}.data-\[side\=right\]\:w-full[data-side=right]{width:100%}.data-\[side\=right\]\:border-l[data-side=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[side\=top\]\:inset-x-0[data-side=top]{inset-inline:0}.data-\[side\=top\]\:top-0[data-side=top]{top:0}.data-\[side\=top\]\:h-auto[data-side=top]{height:auto}.data-\[side\=top\]\:border-b[data-side=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.data-\[status\=active\]\:from-bernstein\/\[0\.16\][data-status=active]{--tw-gradient-from:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-bernstein\/\[0\.16\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--bernstein) 16%, transparent)}}.data-\[status\=active\]\:from-bernstein\/\[0\.16\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:from-box\/\[0\.2\][data-status=active]{--tw-gradient-from:var(--box)}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-box\/\[0\.2\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--box) 20%, transparent)}}.data-\[status\=active\]\:from-box\/\[0\.2\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:from-lab\/\[0\.2\][data-status=active]{--tw-gradient-from:var(--lab)}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-lab\/\[0\.2\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--lab) 20%, transparent)}}.data-\[status\=active\]\:from-lab\/\[0\.2\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:from-white\/\[0\.08\][data-status=active]{--tw-gradient-from:#ffffff14}@supports (color:color-mix(in lab, red, red)){.data-\[status\=active\]\:from-white\/\[0\.08\][data-status=active]{--tw-gradient-from:color-mix(in oklab, var(--color-white) 8%, transparent)}}.data-\[status\=active\]\:from-white\/\[0\.08\][data-status=active]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[status\=active\]\:text-foreground[data-status=active]{color:var(--foreground)}.data-\[status\=active\]\:before\:opacity-100[data-status=active]:before{content:var(--tw-content);opacity:1}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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,)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}.motion-safe\:animate-spin{animation:var(--animate-spin)}}@media (width>=480px){.min-\[480px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-start-3{grid-column-start:3}.sm\:row-start-1{grid-row-start:1}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:size-\[168px\]{width:168px;height:168px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1\.5fr\)_70px_130px_minmax\(0\,1\.5fr\)\]{grid-template-columns:minmax(0,1.5fr) 70px 130px minmax(0,1.5fr)}.sm\:grid-cols-\[minmax\(0\,1fr\)_120px_160px\]{grid-template-columns:minmax(0,1fr) 120px 160px}.sm\:flex-row{flex-direction:row}.sm\:items-baseline{align-items:baseline}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:self-start{align-self:flex-start}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-7{padding:calc(var(--spacing) * 7)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:pt-6{padding-top:calc(var(--spacing) * 6)}.sm\:text-left{text-align:left}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-\[10px\]{font-size:10px}.sm\:text-\[22px\]{font-size:22px}.sm\:text-\[34px\]{font-size:34px}.sm\:text-\[44px\]{font-size:44px}.sm\:text-\[46px\]{font-size:46px}.data-\[side\=left\]\:sm\:max-w-sm[data-side=left]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-2xl[data-side=right]{max-width:var(--container-2xl)}.data-\[side\=right\]\:sm\:max-w-sm[data-side=right]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-xl[data-side=right]{max-width:var(--container-xl)}}@media (width>=48rem){.md\:left-auto{left:auto}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-4{grid-column:span 4/span 4}.md\:block{display:block}.md\:grid{display:grid}.md\:hidden{display:none}.md\:w-\[420px\]{width:420px}.md\:w-auto{width:auto}.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-\[210px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:210px 100px 170px minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(0\,1\.3fr\)_minmax\(0\,1fr\)_minmax\(0\,0\.9fr\)_11\.5rem\]{grid-template-columns:minmax(0,1.1fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.9fr) 11.5rem}.md\:grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(0\,1fr\)_minmax\(0\,1\.1fr\)_minmax\(0\,1\.1fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.1fr)}.md\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)_110px\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) 110px}.md\:grid-cols-\[minmax\(0\,1\.6fr\)_minmax\(0\,1fr\)_minmax\(0\,1\.4fr\)\]{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1.4fr)}.md\:grid-cols-\[minmax\(0\,1\.35fr\)_110px_minmax\(0\,1fr\)_minmax\(0\,1\.2fr\)_minmax\(0\,1fr\)_90px\]{grid-template-columns:minmax(0,1.35fr) 110px minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr) 90px}.md\:grid-rows-\[auto_auto_1fr\]{grid-template-rows:auto auto 1fr}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:items-start{align-items:flex-start}.md\:items-stretch{align-items:stretch}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:gap-x-4{column-gap:calc(var(--spacing) * 4)}.md\:justify-self-end{justify-self:flex-end}.md\:px-3{padding-inline:calc(var(--spacing) * 3)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:pt-8{padding-top:calc(var(--spacing) * 8)}.md\:pb-1{padding-bottom:var(--spacing)}.md\:pl-\[18px\]{padding-left:18px}.md\:text-\[32px\]{font-size:32px}.md\:\[grid-template-areas\:\'name_herkunft\'_\'zeit_knoepfe\'_\'text_knoepfe\'\]{grid-template-areas:"name herkunft""zeit knoepfe""text knoepfe"}}@media (width>=64rem){.lg\:bottom-6{bottom:calc(var(--spacing) * 6)}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:grid-flow-col{grid-auto-flow:column}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[272px_minmax\(0\,1fr\)\]{grid-template-columns:272px minmax(0,1fr)}.lg\:grid-cols-\[280px_minmax\(0\,1fr\)\]{grid-template-columns:280px minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.5fr\)_minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)_minmax\(0\,1\.2fr\)_minmax\(0\,0\.8fr\)\]{grid-template-columns:minmax(0,1.5fr) minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr) minmax(0,.8fr)}.lg\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.lg\:grid-rows-\[repeat\(var\(--zeilen\)\,auto\)\]{grid-template-rows:repeat(var(--zeilen),auto)}.lg\:items-start{align-items:flex-start}.lg\:gap-5{gap:calc(var(--spacing) * 5)}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=80rem){.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-start-auto{grid-column-start:auto}.xl\:row-start-auto{grid-row-start:auto}.xl\:block{display:block}.xl\:grid{display:grid}.xl\:hidden{display:none}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1\.7fr\)_7rem_minmax\(0\,0\.7fr\)_minmax\(0\,1\.2fr\)_7\.5rem_5rem_9\.5rem\]{grid-template-columns:minmax(0,1.7fr) 7rem minmax(0,.7fr) minmax(0,1.2fr) 7.5rem 5rem 9.5rem}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,340px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,340px)}.xl\:grid-cols-\[minmax\(10\.5rem\,1\.1fr\)_7\.5rem_minmax\(0\,1fr\)_minmax\(0\,1\.4fr\)_11rem\]{grid-template-columns:minmax(10.5rem,1.1fr) 7.5rem minmax(0,1fr) minmax(0,1.4fr) 11rem}.xl\:grid-rows-none{grid-template-rows:none}.xl\:flex-col{flex-direction:column}.xl\:items-center{align-items:center}.xl\:items-stretch{align-items:stretch}.xl\:gap-8{gap:calc(var(--spacing) * 8)}.xl\:gap-10{gap:calc(var(--spacing) * 10)}.xl\:gap-x-3{column-gap:calc(var(--spacing) * 3)}.xl\:self-center{align-self:center}.xl\:justify-self-start{justify-self:flex-start}.xl\:justify-self-stretch{justify-self:stretch}.xl\:pt-0{padding-top:0}.xl\:\[grid-template-areas\:\'name_herkunft_zeit_text_knoepfe\'\]{grid-template-areas:"name herkunft zeit text knoepfe"}}@media (width>=87.5rem){.min-\[87\.5rem\]\:grid-cols-\[minmax\(0\,1\.7fr\)_7rem_minmax\(0\,0\.7fr\)_minmax\(0\,1\.2fr\)_7\.5rem_5rem_17\.5rem\]{grid-template-columns:minmax(0,1.7fr) 7rem minmax(0,.7fr) minmax(0,1.2fr) 7.5rem 5rem 17.5rem}.min-\[87\.5rem\]\:flex-row{flex-direction:row}.min-\[87\.5rem\]\:justify-end{justify-content:flex-end}}@media (width>=96rem){.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (width>=24rem){.\@sm\:col-span-1{grid-column:span 1/span 1}.\@sm\:col-start-2{grid-column-start:2}.\@sm\:col-start-3{grid-column-start:3}.\@sm\:row-start-1{grid-row-start:1}.\@sm\:grid-cols-\[112px_minmax\(0\,1fr\)_auto\]{grid-template-columns:112px minmax(0,1fr) auto}.\@sm\:pl-\[124px\]{padding-left:124px}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-state=open]),.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-state=open]),.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-state=open]),.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-state=open]),.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*-100%)}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-state=closed]),.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-state=closed]),.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-state=closed]),.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-state=closed]),.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*-100%)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}.data-\[status\=active\]\:\[\&\>svg\]\:text-bernstein[data-status=active]>svg{color:var(--bernstein)}.data-\[status\=active\]\:\[\&\>svg\]\:text-box[data-status=active]>svg{color:var(--box)}.data-\[status\=active\]\:\[\&\>svg\]\:text-foreground[data-status=active]>svg{color:var(--foreground)}.data-\[status\=active\]\:\[\&\>svg\]\:text-lab[data-status=active]>svg{color:var(--lab)}.schild{font-family:var(--font-anzeige);text-transform:uppercase;letter-spacing:.16em;font-weight:600}.ziffern{font-family:var(--font-mono);font-variant-numeric:tabular-nums}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-Dpl4UHAZ.woff2)format("woff2"),url(/assets/barlow-vietnamese-400-normal-BFeobeCK.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-HxX4XjxC.woff2)format("woff2"),url(/assets/barlow-latin-ext-400-normal-CvBsJvxq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-vietnamese-500-normal-zTViEIzf.woff2)format("woff2"),url(/assets/barlow-vietnamese-500-normal-GNfB7rCE.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-ext-500-normal-DOaysfXq.woff2)format("woff2"),url(/assets/barlow-latin-ext-500-normal-CJPcKP2Q.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BPAOfeC8.woff2)format("woff2"),url(/assets/barlow-latin-500-normal-C1h8hMer.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-DcjprdFV.woff2)format("woff2"),url(/assets/barlow-vietnamese-600-normal-CA_GiK2e.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-B8NK_A3D.woff2)format("woff2"),url(/assets/barlow-latin-ext-600-normal-DMVRjfRT.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-vietnamese-500-normal-DjeaNLFD.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-500-normal-CsrJDWc5.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-ext-500-normal-yA5ONLQ9.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-500-normal-B1RE8WP7.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-500-normal-BgYH2mbd.woff2)format("woff2"),url(/assets/barlow-condensed-latin-500-normal-HIEiP5Ov.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbUAA8AAAAACOgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgFwRca1NUQVQAAAIMAAAARgAAAF7mY9MfY21hcAAAAlQAAABRAAAAdAyHCodnYXNwAAACqAAAAAgAAAAIAAAAEGdseWYAAAKwAAAB6QAAAl7g5OpvaGVhZAAABJwAAAA2AAAANhSQ8UNoaGVhAAAE1AAAAB8AAAAkAcoBImhtdHgAAAT0AAAAHgAAADofBAM2bG9jYQAABRQAAAAgAAAAIATcBZ9tYXhwAAAFNAAAABwAAAAgAIcCb25hbWUAAAVQAAABEgAAAoA4pV3kcG9zdAAABmQAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpinMDAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWABNDDdYAAAB42kXIIQIBARQFwHl/QQIkWXInUAANXMOBJCcTd+KIGCjMNViq9/H0CM6P/S0j0bOwUqh08iEb8kPTXn3RiMoYhD90Nwc3AAB42lXIRwHCQBAF0JceehWAlTjhjikUgAVQA4mJLbdk5neUqHBVKWSv3XF2VCnt3AyevkVZv+sxBBbbq/6HfFP4hEcYQgEK82v1aHQ5RTs3FRQAAAAAAQAB//8AD3jabZA1tNRAFEDfTGDdfXHI2QQnZJJvK5ngDs13Welwt/78CtcS7xvcrcHKbXCtceh+wgtu437nXRCgC4BY9AGOXOAFYNHR0dzoKCGju8gJ6xiZaF3DWqcPBiSV5i2geaCgAlAJ77ghgjfiLC7KojvOZEmSXS63emXr5W7lsTLtXFMkRmks4ly+cYOEnvO2YLDNANv+9oJwhkpAAJAcHPG/1RC2BERc1ZGGMxYVWDyVSjc0NMaZELUf9e4JhCgNB3b2PiJRctuqZ0WPR8zilxutN/ji97vUBYMAnGjtzxjtK3wrDaMABo+R9KjWwNRUMppwuWS1QdfFZCIlMF2TxDGuJJlYW7OmVlvD+sx86b1hvC/l8yXf2hqZ66xbZ80yWzyD9/fzGaRzA58+nSOzYC+gw9AP+vyNqUAUhoD4lSnputbgUFPJ5O9Y+ReWlxkrc96naX08b3zk/KORb+E+VjYPmH1M6+UHeVlDtCzzGZ9FY8YMA8gPMsQA0jqaGkHT6cYSdVwl7Zs9Wzx+DyWUugPujd03T52ikrUvM26kF9PIcRmycuDBKcd3XRhPDgtnQACINzJ3fVl1tTB++3bc2S7kyD3cCQIQNMcSKaY2YOciE+d0zFbGjps6u0PILTFlRZHNJfAFnfeHtgAAAAABAAAAAjYEro52gl8PPPUAAwPoAAAAANvSppoAAAAA29rQ8vk5/tQEkgP8AAAABgACAAAAAAAAeNpjYGRgYP7z7woDA8uGn5Z/+1kmAUVQAR8Ar8AG6gB42mOKYIgCYiMkrAzCUHEbJJoBikHgCkMPAPDwCFUAAAAAABoAOwBGAFEAbwB3AKkAsQDmAQkBCQEJAQkBFgEveNpjYGRgYOBn3MGQx7CFgQ3MQwBmBiYALRoB+HjajJADbgVQEEXPZ20bQW3bthvXbr8Vp4to1KV0AV1Wb9JvZzJvzhvcB6CQL0wYzHnAj6E/yAYaDeVBNlJsMAfZxCy/QTbTy3eQLdTzGWQr3VwGuZhx2v/ZAIVUB9kc0TSUKJ8f5FIRHGPjnWs+2MKt+MYzt1xwr/jIk3JymR0X0wzIXKo7VbXjFvfLn3lTtCn7qPoB6+yyzb3qy8pdq/6hrj11fMj7OFbtEY+mrlU/516rVFCdVobplw/JEjVaCaqIYlUiUzOaW9aa/Q1idmlPXZHbCagW/B10XwaRi06VuVdMf+9DnIov6rlF8yzhUXxC/4c66Uz48UepqEN9N/Tzt2RwjOljsUUfj581AbaEXsIAAHjaY2BiAIP/qQxGQIqRAR3wA7EKw0lGJgYbRmZGFkZWRjZGdgZmRg5GTkYuRm42x6Si1LJU9tK8TAMTR1cI7WoB5btB+Zas6Ym5uYlgnoGjAZNzEF9icmlJanJ+bpJecmJxKg9IxtjADMwBAKDtHJg=)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbQAA8AAAAACMAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgF2hca1NUQVQAAAIMAAAAPQAAAEzpM8woY21hcAAAAkwAAABRAAAAdAyHCodnYXNwAAACoAAAAAgAAAAIAAAAEGdseWYAAAKoAAAB8AAAAl604cJFaGVhZAAABJgAAAA2AAAANhSS8UNoaGVhAAAE0AAAAB8AAAAkAcwBEGhtdHgAAATwAAAAHwAAADoe/QLmbG9jYQAABRAAAAAgAAAAIATcBZ9tYXhwAAAFMAAAABwAAAAgAIcCb25hbWUAAAVMAAABEwAAAmo0OV08cG9zdAAABmAAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpi/MLAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWADbPDjoAAAB42gXBsQ1AABQFwHsfiY5CYQBDaVVIlBL7mckA7kT0CpPCop79uIPz3q4MojUrSJePvNSKRlRGEH74hwYNAAAAeNpVyEcBwkAQBdCXHnoVgJU44Y4pFIAFUAOJiS23ZOZ3lKhwVSlkr91xdlQp7dwMnr5FWb/rMQQW26v+h3xT+IRHGEIBCvNr9Wh0OUU7NxUUAAAAAAEAAf//AA942mzQNZTUQAAG4H9mIDlbySoOt5I9HHZiL+vS4VDh7u40OFRo3+FQ464V7tbiUmHdJczicsm4fe/9YBgDEIc+BYOEeoArzUqyWSGkeQzZ6+wmfZwLot6nT1vVNM04oBlQ9AZoX3FHhh/gQR6Mp+JykKdUNSVJcu9T20/N73OrT3F/2qMw5vfWLp88SQL3rFE+3ygTrvv9BXaMqiCAkD3d2lr1ipagK4QqNDHjCuPBSCRqGGaQM+XLk0XrPX5GlaY1i54QD7nhvO/c3+Pp35mEHO58dN2fd6mEdgAYRrhfqEyfi7ei6AG0j6m6ohk8HQkrIUlKpQ1dj4dDEcZ1TY3HpDDpM3PZspkzl+lTqlbmZUYUy8o0LJtKSlOXLp3qnC9N1ieU7FWr7BIZPssuFm1hpt3BVBW/yPMPcwAUdEL8m6nqumbU1Eg4/Ceb+s2WpxrG1HKtnVKxcm9zolhWrkGbVN5RmqQJdGdpkj6ukGluzhTed7ULBRvkp4wAENVFUt1oNGrmaS2r8JcrCxfJjXWUUCo3yvMXXDlyhKrO3mhLj/qGhvoeLREyvvXpEYDgGutFDrFjYEDQ5PK1OcsWs15bt4JgM0uQe2LHAxCRHA9FeNoQnUS+Tsc7JkRXVV03JIZZJcBJRUdHxSmAAQCFZYU3AAEAAAACNgQJCtdkXw889QADA+gAAAAA29KmmgAAAADb2tDy+Tv+1ASSA/wAAAAGAAIAAAAAAAB42mNgZGBg/vPvCgMDy4af1n9rWSYBRVABHwCudAbaAHjaY4pgiAJibSQsC8WBQGyERDNAMQicZmgFAOeFB/4AAAAAGgA7AEYAUQBvAHcAqQCxAOYBCQEJAQkBCQEWAS942mNgZGBg4GfcwZDHsIWBDcxDAGYGJgAtGgH4eNqM0IFGQ2EUB/DfqqJMBZLAFUh0V0MoUBGllKQArHVtN9vu3HuH3iEAPUJP0cP0BD1D3D6zKQqHH9/5n885qHs1qza3iPfaenDNts/gGcs+gmcdeAuem+iZt+EleMGWx+Bl++Jv16jbDJ5Xtxa8om4peNUSbmT6WgbOlFp6Um2XEo9SI333EqmOrrKq0lDhQENDoS2XGioVYoVUTyyT62i4curCuUTpWK4lNVC4lBnI7Ez9dCeRK6TVa6Qp1rRnb0KHzh07/PfMG4mOkZ6W/JdUNM5FU7kTmaFn+Xj3SNNuVZFbXYnoj3nXcpkniXaVPzKqbpjJq86tH/fsSKuOkQextkzf1/Sx2KKPx/+aADN1XKsAeNpjYGIAg/+pDEZAipEBHfADsQrDSUYmBhtGZkYWRlZGNkZ2BmZGDkZORi5GbjbHpKLUslT20rxMAxNHVwjtagHlu0H5lqzpibm5iWCegaMBk3MQX2JyaUlqcn5ukl5yYnEqD0jG2MAMzAEAoO0cmA==)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAA/IABAAAAAALMwAAA9mAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhXAcghYGYD9TVEFUTACDBBEICrA8p1ILgjgAATYCJAOEKAQgBYUeB4xODAcbFCYzA/aDkxp0RMXmTMH/IcEUkaXZhe7qAVQoRhtRmOhkzaUYXs3lyzTUlwptwwNGy28PLP/oZewn39g4Jjp8YusISWZ9eNpW788MNQMI7jZprgsqRiJ7imCBYlEWIBhgoWjj7uJGcddednnRIQ/fX77n7i8NtLf08UwEQl3jq59XJCShypU4lMyz3Hb3X0omkAkZCYVNhfN/c3Pmf1nJcDqnj2VE35fYAx+8WYIJhZj4znn1Qbjp9+f4Pab0wOi7JSECzG0o6DRWu/MBgfu/NdPu5O8cUssKSJ1wUyTjq6oWZic7nUsKuIEySsIkzXvdKzArVNkCwvP1lQCgK4yu0BVWFp6vrWVm/6Nt7H82JGhxDyAteCbHZLRdzTsxJqNEUxb+txHysoxjwQzz2p8tU5uFtC4RmcGouCRX3v1195cCAYgBAECRIWSIVNsQCiqEhh6RpxRRzogwaUTYdSCc3AivAcSQCcSkacSCBbQlcbQ9DqAddgyNAFiZilAX9c1OSB/6ZyYgxQCwDgGQoVQGIYAIRvVlRAiR7Ax+jsqKIDacjVExNGWA/MQLk8VzJshTmOztrVbySNyHVnaAiUVpcgdvmnh9FNeAYYXkMl4AqisEoDtIZK0zs6lsSM8yAboEhZ5CFVqD23kNfor49QgAGWwFBeRAIZRCLdigBbqPFSIF+ABeQAfotUU0g+rL1gCMOnSNn4S0PWEL5Nw2QBqyIVvBT2Fe9wCSYDa3QH3Vt4cSaWSAug+NT0JKDgAKQOMLa96EFIKf/gOUWDQiE3EFgAB4aACxikhFAAwKZZ8DgHeiRQixRghm5n4HrCOOSrQAtqJU3LzpFAr/6TAHnDo8QQgszNHZ77FXwgom85JfwQOqMC8Ae/gYkSsURQ1AgQgAQAutAAoAALCdA3gIkv619L//vwb0H8nVgjz+bwLUlFoDaPGQkfqBjQcpc4R8ODxDAPwurhVJMbRRa7ksFTJAUJERK+RXgDxDi8az0D39NBJmMjGZP5MWgyH5+mYXeZg0kZOdJEIu5k1OaIYW0Rnqv/S2DtQxKCIjOSRMLuKNDjpwIXDRE0Y407zODF3/W/ovnvbiAz6YIOC0nZKaVrpMADK9/g8sQDORaaLiVmpCNj+DsAUJUg1SNBKpxbESqyNRj2XB2IWvmkANITOe42zRZqt223RIZbdRi00cNmu1QTMlFwWnTH2y+Gh4pemWrkeGXlpddgjYKUgnRG9Ajn55huQbViCiyKhiY0qMKzSiwpRykyrFGE0jSCIFAJwLADkD0AtMDvBegHkHug0AoFGJVK2qhCXG61AIrWWr8aYYT2zhWkVVD6EX62dQyHJqVGLicdAyTQtFjJgVi1Olw0wdI6eouC1SZjvL3umikG5h3BSHrTOMQKpkUgQu/aGoVC5VKLOjXKBIrWSy2FqmlB+dTKAUcDwJE5TwBkbFnJ/rY92ss4dzXxKbV1/T9hAJvBUu+bwOaq/XWDeXTEKvBMv+HYDYtSMXHI8lErBlDv1FvCF2yDfJcie3f1oWe+wCtb9HCZdshHBIfLC9FrNf60J4HGMKYkfC5TJ+lSNHd3NdZ5dNZ96o6OG8lOvpt5IcR3r2z61suaFBNQmrT0wrCXkvwKkNWenURddyk4+u1FuSiQRtRvQxxhEfxFo411PBvfbTQ1aCPSbA0yIczRIJRXEEQyYS4ocX/of1WiiyaY7SI3Z54u6pUe8m+30ZXB4f13V23XbupYoeLhwa5QqcRIKRdhwtDjdHX7sj8SSWqhgd2s25/B7OuTu4WLdz9FgQLtG55HhMlbFN/J5rrmGPXQWwZOVVLnn31VevgnPrfKt+IsHWeS5ZYVnCJZ9HIqem3z+aeAsjx92cK+7hnPGyVcarN47i9QctdADS864Xl+f2cM6E6W7jwyDLmWTlDNfAWRtN3eLupy1VuUoXA0Y9nDMwDm0aWWy8vkY6yniPTKmax1mFMSPTY+OyNo5gvPrMaWh+d6Yocqzobrh2BM+xO665gj12WQPSixm3X325OHNpey4+FiI+ViG4n+0mtkeDT6J77bK1vsLcqur1aMyF/u63T4xFx/V3vXhzq+VXFL7ypKwjPz+l4w2I7O1b21+wrz3XGCkzhqwKi3EwUtbo7w+YrLVVCuM8U1MAvrXrA5YXtX7tt5YAgoHTtp8WWF0eGHqRNVhUEjBba0v8h+bWaAV+c525JPC7Y/GXH19hrUyWl51baa04D0cn7Sp5qsze1VrwV7OyZHfSiyJTsZB0TFoerSjfW97MUD0Yt59oL3Kd4SNndY35u+St5yYTG575P1cpvWf3hskypgS/yB30tjjC3t6zi/Om4l/vjtYRYdOcpyc4FXQtRAZTN5h66vUdRpsxv/FMnSRHdzIYUWcg6vcHAtFOq8NmDm+l9r49tjYS2RI2O2zqvuITK5wVJxaXLhudxmXyUWt/K/Qiy0BJqb/mZHOpb6DEYg2VlPrMQWf+rheNhpOjo1zdfIfKkm6qMhsrTeZd234B2oMPB68Kyh+7OQi90BoqLvWbT6wt9YWKrdEKfLUnmkv9J2fxld9XeaLx3vKyZ40nVj6HfU/YdfKw79i9rQU1lSWHXuzBSScKzcZC3WPdlRcUl9xQeTh2aC6G9md6xnorxgsKd1f0dvkr/e7KQtNT/YHYFK691fHqc7z5WGnoTXPhm6HR0mnubTCFnYEJf7bfP+G0Ouw1k4QvuOw/rPsO97uflSxXKCuWS0rjlcrKePHlrYZWnH9AY9VoL03tATMa+kB/IGO1LLqakbF6sqvQHJhOLowm8cyBSHJmMonogaPJATpOOOweE/o99p7WWmfms1k7ns101lZHxtRBTefZMzIJkSsaNIZ6PReT/ohVl1uGg2e7ml3474DkI8kGTVtDZOe2TO2ONujXMk7TagqPrtGehm2f5GksNUqWOMsAC1JpXVMB8a265dwCWrecb+qjmcuF3pKhX/qEodrl80v5RPPuq9xGdUu9x3B2pnqrdvnB6Pe2BBpN7ap0nS5d1W7yN56QiB0YXTzQIWMqsVit2E1IJJ65TsI+KzVZbHmN6dJzkiro99t7Gqscyl/8nbTSUVWdjOByTedCSCZdr0kNW3MHcrWWxWmp1cp+yE6c98d0jC0lz4gdGXjRaLO92ffUHysp8pF3giv+eOcGjvsbGa11hkiW+PB5hmPdht38S67pmA9my+IbNmXULvS3VG07Lq136q4xnKz01oPhuZGJueMWrK31JofKklae1qlqKba7vg5yWnz3hzAuBOeGe+aQ8ur03gWhSNxQ3a/htqUcWzqxZsgptuwTcY3NaGzZLlTUKP8UW4zHk6oxHFFf9+F9MrFUwq/n52j06vNeGlmS9eyJU7A8ejA8F5uYO2Oh2i5K+uDcaxPRubvf6vbTxu85m5WnWqo9WbdqJUcOf3tSoNvCbrn09HJ9io6MjZ4Xny5qb2puApUNggl8KLVU1ACQTpMomG2HoEriLLkaejrIM8gzIx90Is8iz8bnjGNjNLQADHJcM4VcEXqXkOUhG7nIA5BvNJ+N9MKmYbuN05Tq5ZrWhcjqhmQ1IzdINamW1V4WrBhk29RG6FoDqfIt9wjkbNfvcq4XYOw1PHUJmquCZ03r3q6PSYNswHBLUJbKWbcHWUaWQZUN89AnAsi+EPxQrrIlEJnJIlUJM7HMcyIb2WdiwCYYhdkKuBjZ5gUYSBu2TYSNZEBQZ/dsLMogZAlqcMnlTpcszNOWC7LHy0oMpAd7JmhjAL8NbmRdayAVvDU+WxL5XR70AowhbINbkc7/KgLwLmPqTfwNBEUHCMBxmUhdQj6WUlkZlKnxu6pO1d9/v//3Q7rw+///2fMjAAB6oDb0HaH0b6GUJU8Y0eR64ojqUqm14Od8duRDHPKhFfZpiGupUNnzetjxdgRbK/5+l4IJ5JeSir8t3R+1IaFaa9AZitANXTvqUxavQ2TYeNmrYwP4det2tGuWgFpDejL9euYAfQfK28gGGIvbgQRcpXesotZIABUK/LoCMgX5tBzoUFiWbADfCNfMu98PsCghbdyeq6jgel07qoCDJjjsyIFY7MAODSYL1alQ9phCIRt3Ri4tbQVgE5dpkfhjGAkZMAWRYzPLNioh68Amvwwd4zGzodCRGaTlUjZqVdaBTSBDfJ6vWzoqG6lZhQKbFK6EAKgz5unB00f9KabfIE1/CcA764pzcPbvSz+DTdl+/xcAHwUACHwM3JK6lBL+d88HxAVfFHh3m1b6a8TWqK9qwVrRVjPaq6WqFSbUXqOOqrXXCkfN6KhWPgnndsCsD3CdZzHpoEPOX6wjz67FHso9aAqWW+ynpyeAc+VhtGMQgKDhk7pBGKUsAnBflEhlCV2wnFLxv2VpRo+QTFme7a4qy5cjUVaqjK2sjFJ+GTmx9FYE4M2hvDRKwSyXLSegQ9S4fhOazOT8YyJCPAaHHhY2o8XyD4iYNc7mNKNWTL+ICdO0Go+aiFqsGZM3ZyMDg2khMRGTZqrMfNN8LD/nqJhhBq3qNXN2r8LzGkBuHpMgYmkV2dpFChUKu08Vm1pVR9TBh+FjevSxMYZr7aNbRE1aFJsrvS1RcG1pOS9ocBJ8rTYx4yMuQj6W2WwW4VnSDJFz5tU/LKK0ZgWXCD2/qRmKRWuYh+47US6adX1FAOIfwbmATE+T2t4wLVab3eF0uT1eXz6MQKLQGCyuGE8gVpLIFCqNzmCy2Bwur54vEIrEEqlM3qxQqtTdSrU6vcFoMlusNjsz0q+WhVWdeg0aNfUmG7vmOrRwaNWmXYdOTi5uHl5deXXr0auPj19Av2C9QgYMGor2C4sYMWrMuAlRk6bETJsxa868BYuWxC3bbY+9EjhBUjTDcrwgSih88/y+eq/C13kHnXKhbTUDgISUCgNDoABXKLCL+2X27E/c2jAAQEKsFigx1qgLEbSeu+NyhcJGIECQNm9L567c3l7uZ5Wo3pkx4tYOhJANKw9dEonovRqVDb5dMKz515Ng+hci23hm4UQEs8eChwPB0BZYOBINbH3Erw0HECzUaokWa42eyGD3PIBIMBSOrfryBQ3G4oHQKi+/kEA0tuaDV40GP3h0+wuAAgXTKy0v5428xUDwksfm538juY9ni9fz2Ggy4iWLMz4qLklle7kcZvOLwy5bXp7fdYrRJlP4l5NDdZPiKVeLnJV7Ohg2VAs/aQwZNVtodX2jki6RU1e/j6GkgZbgAmmogZafuF4mZlb1t+COUyrcnF/CCZzS4MO/dX1T6QQAAAA=)format("woff2"),url(/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--radius:.625rem;--background:#07090e;--foreground:#e8ecf3;--card:#0f131a;--card-foreground:#e8ecf3;--popover:#111620;--popover-foreground:#e8ecf3;--primary:#ffb020;--primary-foreground:#1a1300;--secondary:#161b24;--secondary-foreground:#e8ecf3;--muted:#161b24;--muted-foreground:#8792a4;--accent:#161b24;--accent-foreground:#e8ecf3;--destructive:#ff5a4f;--border:#1e2430;--input:#333c4c;--ring:#5cc8ff;--panel:#0f131a;--erhaben:#161b24;--linie:#1e2430;--linie-stark:#333c4c;--text-2:#aab4c4;--text-3:#8792a4;--flaeche-rand:#94a3c224;--flaeche-rand-hell:#a8b6d642;--bernstein:#ffb020;--bernstein-hell:#ffc24d;--bernstein-grund:#2a1e05;--bernstein-lampe:#3a2a08;--gruen:#3ddc8a;--gruen-text:#7cc9a0;--gruen-grund:#0f2319;--gruen-rand:#1f5a3b;--cyan:#5cc8ff;--cyan-text:#93d5f8;--cyan-grund:#0c2230;--cyan-rand:#2f7fb0;--rot:#ff5a4f;--rot-text:#ff9a92;--rot-grund:#2e0f0d;--rot-rand:#a33a33;--box:#8b95ff;--box-text:#b4bbff;--box-grund:#151a36;--box-rand:#3f4aa8;--lab:#c98bff;--lab-text:#deb8ff;--lab-grund:#22163a;--lab-rand:#6d44a6;--reihe-1:#3987e5;--reihe-2:#d55181;--reihe-3:#c98500;--reihe-weitere:#9aa3ad;--aus-grund:#131821;--aus-rand:#2a3140;--aus-text:#9aa3ad}@keyframes lampe-atmen{0%,to{box-shadow:0 0 10px color-mix(in srgb, var(--bernstein) 25%, transparent)}50%{box-shadow:0 0 22px color-mix(in srgb, var(--bernstein) 45%, transparent)}}@media (prefers-reduced-motion:no-preference){.lampe-atmet{animation:3.2s ease-in-out infinite lampe-atmen}}@keyframes auftauchen{0%{opacity:0;transform:translateY(8px)}}@keyframes ring-fuellen{0%{stroke-dasharray:0 1000}}@keyframes glut-atmen{0%,to{opacity:.6}50%{opacity:1}}@keyframes kreisen{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:no-preference){.auftauchen{animation:.56s cubic-bezier(.2,.7,.2,1) both auftauchen;animation-delay:calc(var(--i,0) * 70ms)}.ring-fuellt{animation:1.1s cubic-bezier(.25,.8,.25,1) both ring-fuellen;animation-delay:calc(var(--i,0) * 45ms + .12s)}.glut-atmet{animation:6s ease-in-out infinite glut-atmen}.kreist{transform-box:fill-box;transform-origin:50%;animation:90s linear infinite kreisen}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/frontend/dist/index.html b/frontend/dist/index.html index f3e9e0a..8a4894b 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -9,15 +9,15 @@ Homelab Orchestrator - + - + - +
diff --git a/frontend/src/components/cockpit/Plattenliste.test.tsx b/frontend/src/components/cockpit/Plattenliste.test.tsx new file mode 100644 index 0000000..60cfb4e --- /dev/null +++ b/frontend/src/components/cockpit/Plattenliste.test.tsx @@ -0,0 +1,30 @@ +import { render, screen } from "@testing-library/react" +import type { Platte } from "@/lib/typen" +import { Plattenliste } from "./Plattenliste" + +// Plattengesundheit (Ausbauplan „Später“, Punkt 18, 26.09.2026): die echte Host-NVMe und eine kränkelnde NAS-Platte. +const platte = (mehr: Partial): Platte => ({ + id: "pve:1", name: "PELADN 512GB", wo: "Proxmox-Host /dev/nvme0n1", typ: "nvme", groesse: 512110190592, + gesund: true, verbraucht: 2, temperatur: 41, stunden: 9992, fehler: { medien: 0 }, stufe: "ok", saetze: [], ...mehr, +}) + +describe("Plattenliste", () => { + it("gesunde Platte: Zustand, Verbrauch, Wärme, Laufzeit", () => { + render() + expect(screen.getByText("Proxmox-Host /dev/nvme0n1 · NVMe · 512 GB")).toBeInTheDocument() + expect(screen.getByText(/meldet sich gesund/)).toBeInTheDocument() + expect(screen.getByText(/2 % verbraucht · 41 °C · läuft seit 1,1 Jahren/)).toBeInTheDocument() + }) + + it("was schlechter wird, steht als Satz in der Zeile", () => { + render() + expect(screen.getByText(/meldet sich selbst als defekt \(SMART\)/)).toHaveClass("text-rot-text") + expect(screen.getByText("NAS HDD2 · Festplatte")).toBeInTheDocument() + }) + + it("ohne Werte ein Satz", () => { + render() + expect(screen.getByText("Noch keine Werte.")).toBeInTheDocument() + }) +}) diff --git a/frontend/src/components/cockpit/Plattenliste.tsx b/frontend/src/components/cockpit/Plattenliste.tsx new file mode 100644 index 0000000..a548635 --- /dev/null +++ b/frontend/src/components/cockpit/Plattenliste.tsx @@ -0,0 +1,54 @@ +import { cn } from "cn" +import type { Platte } from "@/lib/typen" + +// Plattengesundheit (Ausbauplan „Später“, Punkt 18, seit 26.09.2026): je Platte, ob sie sich gesund meldet, wie viel +// verbraucht ist, wie warm sie ist und seit wann sie läuft. Gemeldet wird nur, was schlecht ist oder schlechter wird +// (backend/kern/platten.py) — dann steht der Satz dazu in der Zeile. + +const PUNKT = { ok: "bg-gruen", gelb: "bg-bernstein", rot: "bg-rot shadow-[0_0_8px_var(--rot)]" } as const +const TEXT = { ok: "text-text-3", gelb: "text-bernstein", rot: "text-rot-text" } as const +const TYP: Record = { nvme: "NVMe", ssd: "SSD", hdd: "Festplatte" } + +function groesse(bytes: number | null): string | null { + if (!bytes) return null + const tb = bytes / 1e12 + return tb >= 1 ? `${tb.toLocaleString("de-DE", { maximumFractionDigits: 1 })} TB` : `${Math.round(bytes / 1e9)} GB` +} + +function laufzeit(stunden: number | null): string | null { + if (!stunden) return null + const jahre = stunden / 8766 + return jahre >= 1 ? `läuft seit ${jahre.toLocaleString("de-DE", { maximumFractionDigits: 1 })} Jahren` + : `läuft seit ${Math.round(stunden / 24)} Tagen` +} + +export function Plattenliste({ platten }: { platten: Platte[] }) { + if (platten.length === 0) return

Noch keine Werte.

+ return ( +
    + {platten.map((p) => { + const gesund = p.gesund === true ? "meldet sich gesund" : p.gesund === false ? "meldet sich krank" : "Zustand unbekannt" + const werte = [ + p.verbraucht != null ? `${p.verbraucht} % verbraucht` : null, + p.temperatur != null ? `${p.temperatur} °C` : null, + laufzeit(p.stunden), + ].filter(Boolean) + return ( +
  • + + + {p.name} + + {[p.wo, TYP[p.typ] ?? null, groesse(p.groesse)].filter(Boolean).join(" · ")} + + + {p.saetze.length ? p.saetze.join("; ") : gesund} + {werte.length ? · {werte.join(" · ")} : null} + + +
  • + ) + })} +
+ ) +} diff --git a/frontend/src/lib/abfragen.ts b/frontend/src/lib/abfragen.ts index b317af3..a326ea1 100644 --- a/frontend/src/lib/abfragen.ts +++ b/frontend/src/lib/abfragen.ts @@ -11,7 +11,7 @@ import { stromVerbunden } from "./strom" import type { Ablauf, AktionsErgebnis, Altrest, AufraeumKandidat, BoxMesswerte, EinstellungenStand, Hinweis, HomelabEinstellungen, HomelabLauf, HomelabMesswerte, HomelabSpeicher, HomelabStand, HomelabZertifikate, NeuesGeraet, NeuerStack, NeuWahl, DockerLage, Neuerungen, HomelabWartung, WartungsRegel, - LucyAutonomie, LucyStufe, Rueckfragen, Wochenbericht, Instanz, InstanzMitStand, Job, Modell, Nutzung, PartnerStatus, + LucyAutonomie, LucyStufe, Rueckfragen, Wochenbericht, Platte, HomelabPlatten, Instanz, InstanzMitStand, Job, Modell, Nutzung, PartnerStatus, ProtokollEintrag, Radar, SammelPlanSchritt, Sammellauf, Sicherung, Start, TelegramTest, UpdateDetails, ZielAktion, ZielStand, Zeitraum, } from "./typen" @@ -512,6 +512,32 @@ export const useNeuerungen = (zid: string, baustein: string, aktiv: boolean) => retry: false, }) +/** Plattengesundheit (seit 26.09.2026): die KI-Box selbst und das Homelab (Proxmox-Host, NAS über SNMP). */ +export const useBoxPlatten = () => + useQuery({ queryKey: ["platten"], queryFn: () => api<{ platten: Platte[] }>("/api/platten"), refetchInterval: 600_000, retry: false }) + +export const useHomelabPlatten = (aktiv: boolean) => + useQuery({ + queryKey: ["homelab-platten"], + queryFn: () => api("/api/homelab/platten"), + enabled: aktiv, + refetchInterval: 600_000, + retry: false, + }) + +/** SNMP-Zugang des NAS: speichern (erst prüft der Homelab-Teil das NAS damit) oder mit null entfernen. */ +export const useNasSnmp = () => + useAktion( + (zugang: { community: string; adresse: string } | null) => + zugang === null + ? api("/api/homelab/einstellungen/nas-snmp", { method: "DELETE" }) + : post("/api/homelab/einstellungen/nas-snmp", zugang), + { + erfolg: (v, e) => (e as AktionsErgebnis).text ?? (v === null ? "SNMP-Zugang entfernt." : "SNMP-Zugang gespeichert."), + neuLaden: ["homelab-einstellungen", "homelab-platten"], + }, + ) + /** Lucys Freiheiten je Aktionsart (seit 25.09.2026, Einstellungen → Lucy). */ export const useLucyAutonomie = (aktiv = true) => useQuery({ diff --git a/frontend/src/lib/typen.ts b/frontend/src/lib/typen.ts index 27a5da9..93667bf 100644 --- a/frontend/src/lib/typen.ts +++ b/frontend/src/lib/typen.ts @@ -555,6 +555,8 @@ export interface HomelabEinstellungen { } /** Zugang für die Statistik von AdGuard („% geblockt“ auf der Kachel, seit 25.09.2026). */ adguard?: { url: string; zugang: "hinterlegt" | "fehlt"; benutzer: string | null } + /** Seit 26.09.2026: SNMP-Zugang des NAS (nie der Zugangsname selbst). */ + nas_snmp?: { zugang: "hinterlegt" | "fehlt"; adresse: string | null } karenz_h: number ausfuehrer: { verbunden: boolean; zuletzt: number | null; nur_lesen: boolean; sicherung_speicher: string | null } } @@ -891,3 +893,25 @@ export interface Wochenbericht { zuletzt: { zeit: number; text: string } | null naechster: number } + +// --- Plattengesundheit (GET /api/platten, /api/homelab/platten; seit 26.09.2026) ----------------------------------- + +export interface Platte { + id: string + name: string + wo: string + typ: string + groesse: number | null + gesund: boolean | null + verbraucht: number | null + temperatur: number | null + stunden: number | null + fehler: Record + stufe: "ok" | "gelb" | "rot" + saetze: string[] +} + +export interface HomelabPlatten { + platten: Platte[] + nas: { eingerichtet: boolean; ok: boolean; detail: string | null; system: string | null } +} diff --git a/frontend/src/views/Einstellungen.tsx b/frontend/src/views/Einstellungen.tsx index 49ba23b..c00dd75 100644 --- a/frontend/src/views/Einstellungen.tsx +++ b/frontend/src/views/Einstellungen.tsx @@ -9,7 +9,7 @@ import { Freiheiten, WochenberichtAbschnitt } from "@/components/lucy/LucyEinste import { OffeneRueckfragen, RueckfragenVerlauf } from "@/components/lucy/Rueckfragen" import { Button } from "@/components/ui/button" import { - useAdguardZugang, useArcaneEcht, useArcaneSchluessel, useEinstellungenStand, useHomelabEinstellungen, useInstanz, usePartner, + useAdguardZugang, useArcaneEcht, useNasSnmp, useArcaneSchluessel, useEinstellungenStand, useHomelabEinstellungen, useInstanz, usePartner, useRadarSchalten, useSoftwareStand, useTelegramTest, useUpdateFensterSetzen, } from "@/lib/abfragen" import { api, post } from "@/lib/api" @@ -584,6 +584,65 @@ function AdguardZugang({ h }: { h: HomelabEinstellungen }) { ) } +/** NAS-Platten über SNMP (seit 26.09.2026): der Zugangsname („Community“), vorher fragt der Homelab-Teil das NAS. */ +function NasSnmp({ h }: { h: HomelabEinstellungen }) { + const speichern = useNasSnmp() + const [community, setCommunity] = useState("") + const [adresse, setAdresse] = useState("") + const [loeschFrage, setLoeschFrage] = useState(false) + const n = h.nas_snmp + if (!n) return null + const feld = "h-11 w-full rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-lab/60 focus:bg-white/[0.06]" + return ( + +
+ Zugang {n.zugang === "hinterlegt" ? hinterlegt : keiner} + {n.adresse && NAS {n.adresse}} +
+

+ Damit meldet der Orchestrator, wenn eine Platte im NAS kränkelt. Am QNAP: Systemsteuerung → Netzwerk- und + Dateidienste → SNMP → „SNMP-Dienst aktivieren“, Version SNMP v1/v2, einen Zugangsnamen („Community“) wählen, der + nicht „public“ heißt — und ihn hier eintragen. +

+
{ + e.preventDefault() + if (community.trim()) { + speichern.mutate({ community: community.trim(), adresse: adresse.trim() }, + { onSuccess: () => { setCommunity(""); setAdresse("") } }) + } + }} + > + + setCommunity(e.target.value)} placeholder="Zugangsname (Community)" className={cn(feld, "min-w-0 flex-1 basis-48")} /> + + setAdresse(e.target.value)} + placeholder={n.adresse ? `Adresse (${n.adresse})` : "Adresse des NAS"} className={cn(feld, "min-w-0 flex-1 basis-40")} /> + +
+

+ Vor dem Speichern fragt der Homelab-Teil das NAS damit. Antwortet es nicht, wird nichts gespeichert. Der + Zugangsname wird nie wieder angezeigt; die Adresse nur ändern, wenn sie von der angezeigten abweicht. +

+ {n.zugang === "hinterlegt" && ( + loeschFrage ? ( + + + + + ) : ( + + ) + )} +
+ ) +} + function HomelabBetrieb({ h }: { h: HomelabEinstellungen }) { const f = h.ausfuehrer return ( @@ -620,6 +679,7 @@ function HomelabKarte() { <> + diff --git a/frontend/src/views/Homelab.tsx b/frontend/src/views/Homelab.tsx index 9f515d6..024f92c 100644 --- a/frontend/src/views/Homelab.tsx +++ b/frontend/src/views/Homelab.tsx @@ -11,9 +11,10 @@ import { Speicher } from "@/components/homelab/Speicher" import { AlleKnopf, SammellaufFortschritt } from "@/components/homelab/Sammellauf" import { UpdateTabelle } from "@/components/homelab/UpdateTabelle" import { Zertifikate } from "@/components/homelab/Zertifikate" +import { Plattenliste } from "@/components/cockpit/Plattenliste" import { useHomelab, useHomelabDocker, useHomelabHinweise, useHomelabLaeufe, useHomelabMesswerte, useHomelabSpeicher, - useHomelabZertifikate, + useHomelabPlatten, useHomelabZertifikate, useInstanz, useNeuEntdeckt, useNeuUebernehmen, usePartner, useSammellauf, useSammellaufQuittieren, useSicherungsProbe, useZielAktion, } from "@/lib/abfragen" @@ -198,6 +199,7 @@ export function HomelabSeite() { const mess = useHomelabMesswerte("1h", !!stand) const speicher = useHomelabSpeicher(!!stand) const zertifikate = useHomelabZertifikate(!!stand) + const platten = useHomelabPlatten(!!stand) const probe = useSicherungsProbe() const neu = useNeuEntdeckt(!!stand) const docker = useHomelabDocker(!!stand) @@ -267,6 +269,20 @@ export function HomelabSeite() { /> )} + {platten.data && (platten.data.platten.length > 0 || platten.data.nas.eingerichtet) && ( + + + {platten.data.nas.eingerichtet && !platten.data.nas.ok && platten.data.nas.detail && ( +

{platten.data.nas.detail}

+ )} + {!platten.data.nas.eingerichtet && ( +

+ Die Platten des NAS erscheinen, sobald am QNAP SNMP an ist und der Zugangsname unter Einstellungen → Homelab + steht. +

+ )} +
+ )} {zertifikate.data?.gelesen && zertifikate.data.zertifikate.length > 0 && ( diff --git a/frontend/src/views/Start.tsx b/frontend/src/views/Start.tsx index 1efb56a..cb64d08 100644 --- a/frontend/src/views/Start.tsx +++ b/frontend/src/views/Start.tsx @@ -5,10 +5,11 @@ import { Chip, Zustandsfeld } from "@/components/cockpit/Chip" import { Flugplan } from "@/components/cockpit/Flugplan" import { Instrument } from "@/components/cockpit/Instrument" import { Panel } from "@/components/cockpit/Panel" +import { Plattenliste } from "@/components/cockpit/Plattenliste" import { Warnpanel } from "@/components/cockpit/Warnpanel" import { Zaehlwerk } from "@/components/cockpit/Zaehlwerk" import { Button } from "@/components/ui/button" -import { useRadar, useStart } from "@/lib/abfragen" +import { useBoxPlatten, useRadar, useStart } from "@/lib/abfragen" import { RADAR_STATUS_TEXT, temperaturFarbe } from "@/lib/anzeige" import { knappeVorhersage, STUFE_FARBE } from "@/lib/prognose" import { useLetzteMetrik } from "@/lib/strom" @@ -94,6 +95,7 @@ function RadarKasten({ radar }: { radar: Radar | undefined }) { export function StartSeite() { const { data: start, error, isPending } = useStart() const radar = useRadar() + const platten = useBoxPlatten() if (isPending) return // Scheitert nur ein späteres Nachladen, bleibt der letzte Stand stehen — die Verbindungsanzeige @@ -122,6 +124,11 @@ export function StartSeite() { + {platten.data && platten.data.platten.length > 0 && ( + + + + )} ) }